'EXAMPLE PROGRAM #1. 'QBASIC 'HTTP://WWW.ROBOTICS.COM/TRILOBOT 'READS SENSORS UNTIL KEYPRESS. 'OPEN THE SERIAL PORT. '(MAY BE NECESSARY TO CHANGE THIS) OPEN "COM1:9600,N,8,1" FOR RANDOM AS #1 'SETUP SCREEN. CLS LOCATE 1, 1: PRINT "Whiskers: "; LOCATE 2, 1: PRINT " Sonar: "; LOCATE 3, 1: PRINT " Battery: "; LOCATE 4, 1: PRINT " Compass: "; LOCATE 5, 1: PRINT " Light: "; LOCATE 6, 1: PRINT " Temp: "; DO 'WHISKERS. PRINT #1, "!1GW1"; R0$ = INPUT$(2, #1) GOSUB BYTETODEC LOCATE 1, 12 IF R0 = 0 THEN PRINT "Off"; ELSE PRINT "On "; 'SONAR. PRINT #1, "!1GS1"; R0$ = INPUT$(2, #1) LOCATE 2, 12 GOSUB BYTETODEC PRINT R0; " " 'BATTERY VOLTAGE. PRINT #1, "!1GV1"; R0$ = INPUT$(2, #1) 'VOLTS. T$ = INPUT$(2, #1) 'TENTHS. LOCATE 3, 12 GOSUB BYTETODEC PRINT R0; "."; R0$ = T$ GOSUB BYTETODEC PRINT R0; " " 'COMPASS HEADING. PRINT #1, "!1GC2"; R0$ = INPUT$(2, #1) LOCATE 4, 12 GOSUB BYTETODEC IF R0 = 0 THEN PRINT "North "; IF R0 = 1 THEN PRINT "North/East"; IF R0 = 2 THEN PRINT "East "; IF R0 = 3 THEN PRINT "South/East"; IF R0 = 4 THEN PRINT "South "; IF R0 = 5 THEN PRINT "South/West"; IF R0 = 6 THEN PRINT "West "; IF R0 = 7 THEN PRINT "North/West"; 'LIGHT LEVEL. PRINT #1, "!1GL1"; R0$ = INPUT$(2, #1) A$ = INPUT$(2, #1) A$ = INPUT$(2, #1) A$ = INPUT$(2, #1) LOCATE 5, 12 GOSUB BYTETODEC PRINT R0; " " 'TEMPERATURE. PRINT #1, "!1GF1"; R0$ = INPUT$(2, #1) LOCATE 6, 12 GOSUB BYTETODEC PRINT R0; " " 'STOP IF KEY PRESSED. LOOP WHILE INKEY$ = "" END 'Convert a hexadecimal word in R0$ to decimal in R0 WORDTODEC: R1$ = MID$(R0$, 1, 1) GOSUB NIBTODEC R0 = R1 * 4096 R1$ = MID$(R0$, 2, 1) GOSUB NIBTODEC R0 = R0 + (R1 * 256) R1$ = MID$(R0$, 3, 1) GOSUB NIBTODEC R0 = R0 + (R1 * 16) R1$ = MID$(R0$, 4, 1) GOSUB NIBTODEC R0 = R0 + R1 RETURN 'Convert a hexadecimal byte in R0$ to decimal in R0 BYTETODEC: R1$ = MID$(R0$, 1, 1) GOSUB NIBTODEC R0 = R1 * 16 R1$ = MID$(R0$, 2, 1) GOSUB NIBTODEC R0 = R0 + R1 RETURN 'Convert a hexadecimal nibble in R1$ to decimal in R1 NIBTODEC: IF R1$ = "A" THEN R1 = 10: RETURN IF R1$ = "B" THEN R1 = 11: RETURN IF R1$ = "C" THEN R1 = 12: RETURN IF R1$ = "D" THEN R1 = 13: RETURN IF R1$ = "E" THEN R1 = 14: RETURN IF R1$ = "F" THEN R1 = 15: RETURN R1 = VAL(R1$) RETURN END