Rube Goldberg machine

Dependencies:   4DGL-uLCD-SE mbed PinDetect

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?

UserRevisionLine numberNew 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 }