Private Sub Download_LichtRobot() ' aangepaste versie lichtsnuffelaar ' tbv. demo 31 aug 2002 HCC ' 1 keer flash = stoppen ' 2 keer flash = starten ' 3 keer flash = richting omkeren ' ' verder sturen door linker of rechter LDR te belichten ' noodstop/start: staart bewegen Const tel = 12 'naam Var 12 Const break = 11 'naam Var 11 Const flash = 10 Const Command = 9 Const reverse = 8 With RCX .SelectPrgm SLOT5 .BeginOfTask MAIN .SetSensorType SENSOR_1, LIGHT_TYPE 'lichtverschilsensor .SetSensorMode SENSOR_1, PERCENT_MODE, 0 .SetSensorType SENSOR_2, LIGHT_TYPE ' lego lichtsensor .SetSensorMode SENSOR_2, RAW_MODE, 0 .SetSensorType SENSOR_3, SWITCH_TYPE 'noodstop/staart .SetSensorMode SENSOR_3, BOOL_MODE, 0 .SetVar break, CON, 0 .SetVar flash, CON, 500 'lichtnivo waarbij robot de zaklamp ziet .SetVar Command, CON, 0 .SetVar tel, CON, 0 .SetVar reverse, CON, 0 .StartTask 1 'NOODSTOP .StartTask 2 'MAIN LOOP .StartTask 3 'commando interpreter .EndOfTask Rem *********************************************** Rem controleert of de aan/uit schakelaar wordt gedrukt Rem *********************************************** .BeginOfTask 1 .SetVar break, CON, 0 .Loop CON, FOREVER .If SENVAL, SENSOR_3, EQ, CON, 1 'sensor staart active .SumVar break, CON, 1 .If VAR, break, EQ, CON, 2 .SetVar break, CON, 0 .EndIf .EndIf .Wait CON, MS_300 .EndLoop .EndOfTask Rem *********************************************** Rem main program loop Rem *********************************************** .BeginOfTask 2 .Loop CON, FOREVER .If VAR, break, EQ, CON, 0 Rem stop het programma .Off MOTOR_A + MOTOR_C .EndIf '*******main program *********** .If VAR, break, EQ, CON, 1 'start program .If SENVAL, SENSOR_1, LT, CON, 30 'volg naar links .SetRwd MOTOR_C .SetFwd MOTOR_A .On MOTOR_A + MOTOR_C .Else .If SENVAL, SENSOR_1, GT, CON, 70 'volg naar rechts .SetRwd MOTOR_A .SetFwd MOTOR_C .On MOTOR_A + MOTOR_C .Else .If VAR, reverse, EQ, CON, 0 .SetFwd MOTOR_C .SetFwd MOTOR_A .On MOTOR_A + MOTOR_C 'anders rechtdoor .Else .SetRwd MOTOR_C .SetRwd MOTOR_A .On MOTOR_A + MOTOR_C 'anders rechtdoor .EndIf .EndIf .EndIf .EndIf '**** einde main program **** .Wait CON, MS_300 .EndLoop .EndOfTask Rem --------------------------------------- Rem wachten tot lamp uit is of max. 1 sec Rem --------------------------------------- .BeginOfSub 1 .SetVar tel, CON, 0 .While CON, tel, LT, CON, 100 .Wait VAR, MS_10 .SumVar tel, CON, 1 .If SENVAL, SENSOR_2, GT, VAR, flash 'lamp is uit .SetVar tel, CON, 500 .EndIf .EndWhile .EndOfSub Rem --------------------------------------- Rem wachten tot lamp aan is of max. 1 sec Rem --------------------------------------- .BeginOfSub 2 .SetVar tel, CON, 0 .While CON, tel, LT, CON, 100 .Wait VAR, MS_10 .SumVar tel, CON, 1 .If SENVAL, SENSOR_2, LT, VAR, flash 'lamp is aan .SetVar tel, CON, 500 .EndIf .EndWhile .EndOfSub Rem --------------------------------------- Rem commando interpreter Rem --------------------------------------- .BeginOfTask 3 .Loop CON, FOREVER .SetVar Command, CON, 0 .If SENVAL, SENSOR_2, LT, VAR, flash Rem commando 1 .SumVar Command, CON, 1 .GoSub 1 'wacht tot lamp weer uit is .Wait VAR, MS_700 .If SENVAL, SENSOR_2, LT, VAR, flash Rem commando 2 .SumVar Command, CON, 1 .GoSub 1 .EndIf .If SENVAL, SENSOR_2, LT, VAR, flash Rem commando 3 .SumVar Command, CON, 1 .GoSub 1 .EndIf .EndIf Rem voer commando uit .If VAR, Command, EQ, CON, 1 .PlaySystemSound 0 .SetVar break, CON, 0 ' stop programma .EndIf .If VAR, Command, EQ, CON, 2 .PlaySystemSound 1 .SetVar break, CON, 1 ' start programma .EndIf .If VAR, Command, EQ, CON, 3 .PlaySystemSound 2 .If VAR, reverse, EQ, CON, 0 .SetVar reverse, CON, 1 ' achteruit rijden .Else .SetVar reverse, CON, 0 ' vooruit rijden .EndIf .EndIf .EndLoop .EndOfTask End With End Sub