Rube Goldberg machine
Dependencies: 4DGL-uLCD-SE mbed PinDetect
Diff: main.cpp
- Revision:
- 0:26331a8bcec1
- Child:
- 1:5315c3a587a0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Sep 24 23:52:02 2016 +0000 @@ -0,0 +1,63 @@ +#include "mbed.h" +#include "uLCD_4DGL.h" + +Timer t; //timer to generate number + +InterruptIn begin(p5); //start of it all +volatile bool stop = 0; +int num; + +DigitalOut d1(p21); //display number in binary +DigitalOut d2(p22); +DigitalOut d3(p23); + +uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin; + +void start() //make random numbers and fast lights until flip value +{ + while(!stop) + { + d1 = !d1; + d2 = !d2; + d3 = !d3; + num = t.read_us()%8; + wait(0.2); + } +} + +void stopper() //flip the value +{ + stop = 1; +} + +void lights() +{ + if (num > 3) + { + d1 = 1; + } + if (num == 2 || num == 3 || num == 6 || num == 7) + { + d2 = 1; + } + if ((num % 2) == 1) + { + d3 = 1; + } +} + +int main() +{ + t.start(); //start timer + uLCD.cls(); //prepare screen + uLCD.baudrate(3000000); + wait(.1); //wait just in case + uLCD.printf("pls1"); //debug + uLCD.printf("pls2"); + begin.rise(&stopper); //attach interrupt + uLCD.printf("starting \n"); + start(); //begin the choosing + uLCD.printf("got the number \n"); + lights(); //light lights according to generated number + uLCD.printf("did the lights \n"); +}