8.18
#lang rokit-racket🔗ℹ 
This language allows you to code the Rokit SmartInventor 2 robotics kit from Robolink (robolink.com).
We use this in robotics classes at ThoughtSTEM.
This doc just contains a bunch of example code.
1 Basic Movement🔗ℹ 
| #lang rokit-racket | 
|  | 
| (define (wait) | 
| (delay 5000)) | 
|  | 
| (define (setup) | 
| (enable-motors)) | 
|  | 
| (define (loop) | 
| (move forward 127) | 
| (wait) | 
| (move stop 127) | 
| (wait)) | 
2 Remote Control🔗ℹ 
| #lang rokit-racket | 
|  | 
| (define (setup) | 
| (enable-motors) | 
| (enable-remote) | 
|  | 
| (buzz NOTE_C4 8) | 
| (buzz NOTE_E4 8) | 
| (buzz NOTE_G4 8)) | 
|  | 
| (define (boost) | 
| (move forward 127) | 
| (delay 1000)) | 
|  | 
| (define (spin180) | 
| (motor M1 CW 127) | 
| (motor M2 CW 127) | 
| (delay 650) | 
| (move stop 0) | 
| (delay 200)) | 
|  | 
| (define (zig-zag) | 
| (repeat 2 | 
| (motor M1 CCW 127) | 
| (motor M2 STOP 0) | 
| (delay 400) | 
| (motor M1 STOP 0) | 
| (motor M2 CW 127) | 
| (delay 400))) | 
|  | 
| (define (loop) | 
| (cond | 
| [(= (read-remote) KEY_U) | 
| (move forward 50)] | 
| [(= (read-remote) KEY_D) | 
| (move backward 50)] | 
| [(= (read-remote) KEY_L) | 
| (move left 50)] | 
| [(= (read-remote) KEY_R) | 
| (move right 50)] | 
| [(= (read-remote) KEY_C) | 
| (boost)] | 
| [(= (read-remote) KEY_F1) | 
| (spin180)] | 
| [(= (read-remote) KEY_F2) | 
| (zig-zag)] | 
| [else | 
| (move loose 50)])) | 
|  | 
| #lang rokit-racket | 
|  | 
| (define left-sensor 0) | 
| (define center-sensor 0) | 
| (define right-sensor 0) | 
|  | 
| (define (setup) | 
| (enable-motors)) | 
|  | 
| (define (loop) | 
| (set! left-sensor   (analog-read 19)) | 
| (set! center-sensor (analog-read 20)) | 
| (set! right-sensor  (analog-read 21)) | 
|  | 
| (cond | 
| [(< left-sensor   500) (move right 50)] | 
| [(< right-sensor  500) (move left 50)] | 
| [(< center-sensor 500) (move left 50)] | 
| [else                 (move forward 50)])) | 
4 Digital Write🔗ℹ 
| #lang rokit-racket | 
|  | 
| (define (setup) | 
| (enable-motors) | 
|  | 
| (pin-mode 13 OUTPUT) | 
| (pin-mode 14 OUTPUT) | 
| (pin-mode 15 OUTPUT) | 
| (pin-mode 16 OUTPUT) | 
| (enable-remote) | 
|  | 
| (digital-write 13 HIGH) | 
| (digital-write 14 HIGH) | 
| (digital-write 15 HIGH) | 
| (digital-write 16 HIGH)) | 
|  | 
| (define (loop)) | 
| #lang rokit-racket | 
|  | 
| (define left-line-sensor #f) | 
| (define right-line-sensor #t) | 
|  | 
| (define (setup) | 
| (enable-motors) | 
|  | 
| (pin-mode 13 INPUT) | 
| (pin-mode 16 INPUT)) | 
|  | 
| (define (loop) | 
| (set! left-line-sensor  (digital-read 13)) | 
| (set! right-line-sensor (digital-read 16)) | 
|  | 
| (while (= left-line-sensor HIGH) | 
| (motor M1 CCW 50) | 
| (motor M2 STOP 0) | 
| (set! left-line-sensor (digital-read 13))) | 
|  | 
| (while (= right-line-sensor HIGH) | 
| (motor M1 STOP 0) | 
| (motor M2 CW 50) | 
| (set! right-line-sensor (digital-read 16)))) | 
| #lang rokit-racket | 
|  | 
| (define left-sensor  #f) | 
| (define right-sensor #f) | 
|  | 
| (define (setup) | 
| (enable-motors) | 
| (pin-mode 11 INPUT) | 
| (pin-mode 18 INPUT)) | 
|  | 
| (define (backup-and-turn-right) | 
| (motor M1 CW 50) | 
| (motor M2 CCW 50) | 
| (delay 333) | 
| (motor M1 CCW 50) | 
| (motor M2 CCW 50) | 
| (delay 333)) | 
|  | 
| (define (backup-and-turn-left) | 
| (motor M1 CW 50) | 
| (motor M2 CCW 50) | 
| (delay 333) | 
| (motor M1 CW 50) | 
| (motor M2 CW 50) | 
| (delay 333)) | 
|  | 
| (define (go-forward) | 
| (motor M1 CCW 50) | 
| (motor M2 CW 50)) | 
|  | 
| (define (loop) | 
| (set! left-sensor   (digital-read 11)) | 
| (set! right-sensor  (digital-read 18)) | 
|  | 
| (cond | 
| [(= left-sensor   #f) (backup-and-turn-right)] | 
| [(= right-sensor  #f) (backup-and-turn-left)] | 
| [else (go-forward)])) |