Rube Goldberg machine
Dependencies: 4DGL-uLCD-SE mbed PinDetect
main.cpp@3:f108df5ad90b, 2016-09-25 (annotated)
- Committer:
- mvaca3
- Date:
- Sun Sep 25 00:27:45 2016 +0000
- Revision:
- 3:f108df5ad90b
- Parent:
- 2:2bb8f06b7924
- Child:
- 4:c38d2a1fb99d
added starting location to screen. changed baudrate to default
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nhardy6 | 0:26331a8bcec1 | 1 | #include "mbed.h" |
nhardy6 | 1:5315c3a587a0 | 2 | #include "PinDetect.h" |
nhardy6 | 0:26331a8bcec1 | 3 | #include "uLCD_4DGL.h" |
nhardy6 | 0:26331a8bcec1 | 4 | |
nhardy6 | 0:26331a8bcec1 | 5 | Timer t; //timer to generate number |
nhardy6 | 0:26331a8bcec1 | 6 | |
nhardy6 | 1:5315c3a587a0 | 7 | PinDetect begin(p5); //start of it all |
mvaca3 | 2:2bb8f06b7924 | 8 | bool volatile stop = 0; |
nhardy6 | 0:26331a8bcec1 | 9 | int num; |
nhardy6 | 0:26331a8bcec1 | 10 | |
nhardy6 | 0:26331a8bcec1 | 11 | DigitalOut d1(p21); //display number in binary |
nhardy6 | 0:26331a8bcec1 | 12 | DigitalOut d2(p22); |
nhardy6 | 0:26331a8bcec1 | 13 | DigitalOut d3(p23); |
nhardy6 | 0:26331a8bcec1 | 14 | |
nhardy6 | 0:26331a8bcec1 | 15 | uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin; |
nhardy6 | 0:26331a8bcec1 | 16 | |
nhardy6 | 0:26331a8bcec1 | 17 | void start() //make random numbers and fast lights until flip value |
nhardy6 | 0:26331a8bcec1 | 18 | { |
nhardy6 | 0:26331a8bcec1 | 19 | while(!stop) |
nhardy6 | 0:26331a8bcec1 | 20 | { |
nhardy6 | 0:26331a8bcec1 | 21 | d1 = !d1; |
nhardy6 | 0:26331a8bcec1 | 22 | d2 = !d2; |
nhardy6 | 0:26331a8bcec1 | 23 | d3 = !d3; |
nhardy6 | 0:26331a8bcec1 | 24 | num = t.read_us()%8; |
nhardy6 | 0:26331a8bcec1 | 25 | wait(0.2); |
nhardy6 | 0:26331a8bcec1 | 26 | } |
nhardy6 | 0:26331a8bcec1 | 27 | } |
nhardy6 | 0:26331a8bcec1 | 28 | |
mvaca3 | 2:2bb8f06b7924 | 29 | void stopper(void) //flip the value |
nhardy6 | 0:26331a8bcec1 | 30 | { |
nhardy6 | 0:26331a8bcec1 | 31 | stop = 1; |
nhardy6 | 0:26331a8bcec1 | 32 | } |
nhardy6 | 0:26331a8bcec1 | 33 | |
nhardy6 | 0:26331a8bcec1 | 34 | void lights() |
nhardy6 | 0:26331a8bcec1 | 35 | { |
nhardy6 | 0:26331a8bcec1 | 36 | if (num > 3) |
nhardy6 | 0:26331a8bcec1 | 37 | { |
nhardy6 | 0:26331a8bcec1 | 38 | d1 = 1; |
nhardy6 | 0:26331a8bcec1 | 39 | } |
nhardy6 | 0:26331a8bcec1 | 40 | if (num == 2 || num == 3 || num == 6 || num == 7) |
nhardy6 | 0:26331a8bcec1 | 41 | { |
nhardy6 | 0:26331a8bcec1 | 42 | d2 = 1; |
nhardy6 | 0:26331a8bcec1 | 43 | } |
nhardy6 | 0:26331a8bcec1 | 44 | if ((num % 2) == 1) |
nhardy6 | 0:26331a8bcec1 | 45 | { |
nhardy6 | 0:26331a8bcec1 | 46 | d3 = 1; |
nhardy6 | 0:26331a8bcec1 | 47 | } |
nhardy6 | 0:26331a8bcec1 | 48 | } |
nhardy6 | 0:26331a8bcec1 | 49 | |
nhardy6 | 0:26331a8bcec1 | 50 | int main() |
nhardy6 | 0:26331a8bcec1 | 51 | { |
nhardy6 | 0:26331a8bcec1 | 52 | t.start(); //start timer |
nhardy6 | 0:26331a8bcec1 | 53 | uLCD.cls(); //prepare screen |
mvaca3 | 3:f108df5ad90b | 54 | //uLCD.baudrate(3000000); |
nhardy6 | 0:26331a8bcec1 | 55 | wait(.1); //wait just in case |
mvaca3 | 3:f108df5ad90b | 56 | uLCD.locate(0,0); |
mvaca3 | 3:f108df5ad90b | 57 | uLCD.color(WHITE); |
mvaca3 | 3:f108df5ad90b | 58 | uLCD.printf("pls1\n"); //debug |
mvaca3 | 3:f108df5ad90b | 59 | uLCD.printf("pls2\n"); |
nhardy6 | 1:5315c3a587a0 | 60 | begin.mode(PullUp); //attach interrupt |
mvaca3 | 2:2bb8f06b7924 | 61 | wait(.01); //setup delay |
nhardy6 | 1:5315c3a587a0 | 62 | begin.attach_deasserted(&stopper); |
mvaca3 | 2:2bb8f06b7924 | 63 | begin.setSampleFrequency(); |
nhardy6 | 0:26331a8bcec1 | 64 | uLCD.printf("starting \n"); |
nhardy6 | 0:26331a8bcec1 | 65 | start(); //begin the choosing |
mvaca3 | 2:2bb8f06b7924 | 66 | uLCD.printf("got the number %d\n", num); |
nhardy6 | 0:26331a8bcec1 | 67 | lights(); //light lights according to generated number |
nhardy6 | 0:26331a8bcec1 | 68 | uLCD.printf("did the lights \n"); |
nhardy6 | 0:26331a8bcec1 | 69 | } |