' ========================================================================= ' ' File....... Random_Servos.BS1 ' Purpose.... ' Author..... Vern Graner (updated by Jon Williams) ' E-mail..... ' Started.... ' Updated.... 02 MAY 2005 ' ' {$STAMP BS1} ' {$PBASIC 1.0} ' ' ========================================================================= ' -----[ Program Description ]--------------------------------------------- ' -----[ Revision History ]------------------------------------------------ ' -----[ I/O Definitions ]------------------------------------------------- SYMBOL Servo1 = 0 SYMBOL Servo2 = 1 SYMBOL Servo3 = 2 SYMBOL Servo4 = 3 SYMBOL Servo5 = 4 SYMBOL Servo6 = 5 ' -----[ Constants ]------------------------------------------------------- SYMBOL LastServo = 6 ' -----[ Variables ]------------------------------------------------------- SYMBOL lottery = W0 ' random number SYMBOL pos1 = B2 ' servo postion 1 SYMBOL dest1 = B3 ' destination 1 SYMBOL pos2 = B4 SYMBOL dest2 = B5 SYMBOL pos3 = B6 SYMBOL dest3 = B7 SYMBOL pos4 = B8 SYMBOL dest4 = B9 SYMBOL pos5 = B10 SYMBOL dest5 = B11 SYMBOL pos6 = B12 SYMBOL dest6 = B13 ' -----[ EEPROM Data ]----------------------------------------------------- ' -----[ Initialization ]-------------------------------------------------- Reset: lottery = 1031 ' -----[ Program Code ]---------------------------------------------------- Main: RANDOM lottery ' stir the pot ' ========= ' Servo 1 ' ========= Check_Dest1: IF pos1 <> dest1 THEN Update_Pos1 ' are we there yet? dest1 = lottery // 101 + 100 ' scale to 100 - 200 Update_Pos1: IF pos1 < dest1 THEN Go_CW1 pos1 = pos1 - 2 Go_CW1: pos1 = pos1 + 1 ' ========= ' Servo 2 ' ========= Check_Dest2: IF pos2 <> dest2 THEN Update_Pos2 dest2 = lottery // 101 + 100 Update_Pos2: IF pos2 < dest2 THEN Go_CW2 pos2 = pos2 - 2 Go_CW2: pos2 = pos2 + 1 ' ========= ' Servo 3 ' ========= Check_Dest3: IF pos3 <> dest3 THEN Update_Pos3 dest3 = lottery // 101 + 100 Update_Pos3: IF pos3 < dest3 THEN Go_CW3 pos3 = pos3 - 2 Go_CW3: pos3 = pos3 + 1 ' ========= ' Servo 4 ' ========= Check_Dest4: IF pos4 <> dest4 THEN Update_Pos4 dest4 = lottery // 101 + 100 Update_Pos4: IF pos4 < dest4 THEN Go_CW4 pos4 = pos4 - 2 Go_CW4: pos4 = pos4 + 1 ' ========= ' Servo 5 ' ========= Check_Dest5: IF pos5 <> dest5 THEN Update_Pos5 dest5 = lottery // 101 + 100 Update_Pos5: IF pos5 < dest5 THEN Go_CW5 pos5 = pos5 - 2 Go_CW5: pos5 = pos5 + 1 ' ========= ' Servo 6 ' ========= Check_Dest6: IF pos6 <> dest6 THEN Update_Pos6 dest6 = lottery // 101 + 100 Update_Pos6: IF pos6 < dest6 THEN Go_CW6 pos6 = pos6 - 2 Go_CW6: pos6 = pos6 + 1 Update_Servos: PULSOUT Servo1, pos1 PULSOUT Servo2, pos2 PULSOUT Servo3, pos3 PULSOUT Servo4, pos4 PULSOUT Servo5, pos5 PULSOUT Servo6, pos6 PAUSE 15 GOTO Main END ' -----[ Subroutines ]-----------------------------------------------------