Cricket (Handy Cricket)
Kyeongseo Hwang (Mike)Nicholas Ver Hoeve
Agenda About Cricket (HW) History of Logo (Built in
interpreter) Intro to Cricket Logo Demo
About Cricket
LIGHT SENSOR
MAG. REED SWITCH
DC MOTOR
TOUCH SENSOR
IR SENSOR
BREAK BEAM SENSOR
History of Logo Logo: Developed in BBN (a Cambridge
University research firm), in 1966 By Seymour Papert, Wally Feurzeig Modeled after LISP Now in multiple dialects; ExperLogo,
ARLogo, MIT StarLogo, NetLogo, etc. Cricket Logo developed in MIT by Brian
Silverman with Fred Martin beginning in 1995
Intro to Cricket Logo Procedure definition with inputs and return values Global variables and local procedure inputs Control structures: if, repeat, and loop 16-bit number system: addition, subtraction,
multiplication, division, remainder, comparison, bit-wise operations, random function
Motor and sensor primitives Timing functions and tone-playing functions Data recording and playback primitives IR Communications primitives
Intro to Cricket Logo
Motor Command a, Motor A b, Motor B ab, Motor A and B on Selected motor On off Selected motor Off onfor # Selected motor
will turn on for #/10 secs.
thisway/ thatway Sets direction rd Reverses the
direction setpower # set power level
Sensor Command switcha
return 1 if switched plugged into sensor A is pressed
switchb return 1 if switched plugged into
sensor A is pressed sensora
Report the value of sensor A 0~255 sensorb
Report the value of sensor B 0~255
Timing and tone-playing Timing
ab, on wait 20 off ab, onfor 20 wait # timer resett
Tone-playing beep note 110 30
www.handyboard.com/cricket/program
Control Structures repeat times [body] loop [body] if condition [body] ifelse condition [body-1] [body-2] waituntil [condition] stop(!) output returning_value
Numbers 16 bit number system
-32768 ~ +32767 All arithmetic operators separated by a
space 3 + 4
Normal expression precedence rules are not used, evaluated left to right 3 + 5 * 7 = ?
(3 + (4 * 5)) = ?
Number Operator (cont) + Infix addition - Infix subtraction * Infix multiplication / Infix division % Infix modulus (remainder after integer
division). < Infix LESS-THAN test.
Results in 1 if left-hand value is less than right-hand value; 0 otherwise.
Number Operator (cont) > Infix GREATER-THAN test. Results in 1 if left-hand
value is greater-than than right-hand value; 0 otherwise. = Infix equality test.
Results in 1 if left-hand value is equal to right-hand value; 0 otherwise.
and Infix AND operation (bitwise). or Infix OR operation (bitwise). xor Infix exclusive-OR operation (bitwise). not prefix NOT operation (logical inversion, not bitwise). random Reports pseudo-random number from 0 to
32767. Use the modulus operator to reduce the range; e.g., (random %
100) yields a number from 0 to 99.
Procedure Definition with inputto flash1 repeat 10 [a, onfor 5 wait 5] end
to flash2 :n repeat :n [a, onfor 5 wait 5] end
global [temp] to detect settemp sensora if temp < 30 [output 1] if temp < 50 [output 2] output 3 end
Variables Global variable
global [variable-list] e.g. global [cat dog] Stored in RAM -> data recording and playback functions Integer only
Global-setting primitive setcar, setdog e.g. setcat 3 setcat cat + 1
Global Array array [clicks 10 clacks 15] Array indices start at 0 aget name index aset name index No buffer-overrun checking Stored consecutively in memory stored in the Cricket's non-volatile memory
Data Recording and Playback
to take-data resetdp repeat 2500 [record sensora
wait 10] end resetdp setdp position erase # record value Recall
Recursion
to fact :n if :n = 1 [output 1] output n * fact :n – 1 end -> repeat fact 3 [beep wait 1]
Normal Recursion has uncertain max depth, can be as low as 5
Supports Tail Recursion converting the recursive call into a goto statementto beep-forever beep wait 1 beep-forever end
Multi-Tasking supports a limited form of multi-tasking One “background task”
repeatedly checks a condition When true it interrupts and processes
when [switcha] [beep] loop [a, onfor 5 rd] only one background task operating at any given
time. If a when statement is executed after the
background task has already been started, the subsequent when task supercedes the earlier one
To stop the background task from operating, use the primitive “whenoff”.
Samples Files at
www.cs.rit.edu/~kxh7583/PLC/ Demo the multi-taking
IR communication between crickets Background Operation
Reference www.handyboard.com/cricket http://gleasonresearch.com/ http://
lcs.www.media.mit.edu/people/fredm/projects/cricket/redlogo.html
http://www.papert.org/ http://www.mathsnet.net/logo/turtl
elogo/