ControllerBox directs electromechanical equipment in restaurants to display information.
Dependencies: TextLCD MbedJSONValue libMotiv picojson mbed-rtos mbed
Fork of Mbed_MotiVControllerBox by
main.cpp@0:2279181caaa1, 2014-10-25 (annotated)
- Committer:
- TimWoo
- Date:
- Sat Oct 25 00:11:12 2014 +0000
- Revision:
- 0:2279181caaa1
- Child:
- 1:d54aed10ddf3
Initial Version,; Bare classes made for the main application and the devices that will be controlled.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
TimWoo | 0:2279181caaa1 | 1 | #include "mbed.h" |
TimWoo | 0:2279181caaa1 | 2 | //the library "TextLCD.h" was slightly altered to work with the GDM2004D LCD |
TimWoo | 0:2279181caaa1 | 3 | #include "TextLCD/TextLCD.h" |
TimWoo | 0:2279181caaa1 | 4 | #include "Controller.h" |
TimWoo | 0:2279181caaa1 | 5 | #include "MODSERIAL.h" |
TimWoo | 0:2279181caaa1 | 6 | #include <string> |
TimWoo | 0:2279181caaa1 | 7 | |
TimWoo | 0:2279181caaa1 | 8 | //the object "lcd" is initialized to act as a TextLCD with 20x4 characters |
TimWoo | 0:2279181caaa1 | 9 | TextLCD lcd(p26, p25, p24, p23, p22, p20, p19, TextLCD::LCD20x4); |
TimWoo | 0:2279181caaa1 | 10 | |
TimWoo | 0:2279181caaa1 | 11 | |
TimWoo | 0:2279181caaa1 | 12 | //inputs |
TimWoo | 0:2279181caaa1 | 13 | DigitalIn Up(p8); |
TimWoo | 0:2279181caaa1 | 14 | DigitalIn Down(p14); |
TimWoo | 0:2279181caaa1 | 15 | |
TimWoo | 0:2279181caaa1 | 16 | //outputs |
TimWoo | 0:2279181caaa1 | 17 | DigitalOut led(p6); |
TimWoo | 0:2279181caaa1 | 18 | |
TimWoo | 0:2279181caaa1 | 19 | //Comms |
TimWoo | 0:2279181caaa1 | 20 | Serial pc(USBTX, USBRX); //tx, rx |
TimWoo | 0:2279181caaa1 | 21 | MODSERIAL rfd(p9, p10); //tx, rx |
TimWoo | 0:2279181caaa1 | 22 | |
TimWoo | 0:2279181caaa1 | 23 | // |
TimWoo | 0:2279181caaa1 | 24 | string displayLines[26] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}; |
TimWoo | 0:2279181caaa1 | 25 | |
TimWoo | 0:2279181caaa1 | 26 | //Main functionality in here |
TimWoo | 0:2279181caaa1 | 27 | Controller c(&lcd); |
TimWoo | 0:2279181caaa1 | 28 | |
TimWoo | 0:2279181caaa1 | 29 | void setup(); //Called once to setup |
TimWoo | 0:2279181caaa1 | 30 | void runProgram(); //Program with loop |
TimWoo | 0:2279181caaa1 | 31 | |
TimWoo | 0:2279181caaa1 | 32 | int main() |
TimWoo | 0:2279181caaa1 | 33 | { |
TimWoo | 0:2279181caaa1 | 34 | setup(); |
TimWoo | 0:2279181caaa1 | 35 | |
TimWoo | 0:2279181caaa1 | 36 | //the LCD is cleared using function .cls() |
TimWoo | 0:2279181caaa1 | 37 | lcd.cls(); |
TimWoo | 0:2279181caaa1 | 38 | //a "\n" in a text string causes a line feed |
TimWoo | 0:2279181caaa1 | 39 | lcd.printf("HELLO WORLDZ\n"); |
TimWoo | 0:2279181caaa1 | 40 | //if the end of a line is reached, the text is written to the next line automatically |
TimWoo | 0:2279181caaa1 | 41 | //lcd.printf("Testbed for mbed\nLCD example software with altered library"); |
TimWoo | 0:2279181caaa1 | 42 | |
TimWoo | 0:2279181caaa1 | 43 | pc.printf("Entering loop\r\n"); |
TimWoo | 0:2279181caaa1 | 44 | |
TimWoo | 0:2279181caaa1 | 45 | //the endless loop keeps mbed in low power mode |
TimWoo | 0:2279181caaa1 | 46 | runProgram(); |
TimWoo | 0:2279181caaa1 | 47 | } |
TimWoo | 0:2279181caaa1 | 48 | |
TimWoo | 0:2279181caaa1 | 49 | |
TimWoo | 0:2279181caaa1 | 50 | void setup() |
TimWoo | 0:2279181caaa1 | 51 | { |
TimWoo | 0:2279181caaa1 | 52 | pc.printf("Setup Controller Box\r\n"); |
TimWoo | 0:2279181caaa1 | 53 | rfd.baud(9600); |
TimWoo | 0:2279181caaa1 | 54 | } |
TimWoo | 0:2279181caaa1 | 55 | |
TimWoo | 0:2279181caaa1 | 56 | void runProgram() |
TimWoo | 0:2279181caaa1 | 57 | { |
TimWoo | 0:2279181caaa1 | 58 | c._lcd->cls(); |
TimWoo | 0:2279181caaa1 | 59 | c._lcd->locate(0,0); |
TimWoo | 0:2279181caaa1 | 60 | c.displayStatus(); |
TimWoo | 0:2279181caaa1 | 61 | |
TimWoo | 0:2279181caaa1 | 62 | if(!rfd.writeable()) |
TimWoo | 0:2279181caaa1 | 63 | { |
TimWoo | 0:2279181caaa1 | 64 | c._lcd->locate(0,1); |
TimWoo | 0:2279181caaa1 | 65 | c._lcd->clearLine(); |
TimWoo | 0:2279181caaa1 | 66 | c._lcd->printf("rfd not writeable"); |
TimWoo | 0:2279181caaa1 | 67 | } else { |
TimWoo | 0:2279181caaa1 | 68 | c._lcd->locate(0,1); |
TimWoo | 0:2279181caaa1 | 69 | c._lcd->clearLine(); |
TimWoo | 0:2279181caaa1 | 70 | c._lcd->printf("rfd writeable"); |
TimWoo | 0:2279181caaa1 | 71 | if(!rfd.txBufferSane()) |
TimWoo | 0:2279181caaa1 | 72 | { |
TimWoo | 0:2279181caaa1 | 73 | c._lcd->locate(0,3); |
TimWoo | 0:2279181caaa1 | 74 | c._lcd->printf("buffer not sane"); |
TimWoo | 0:2279181caaa1 | 75 | } |
TimWoo | 0:2279181caaa1 | 76 | } |
TimWoo | 0:2279181caaa1 | 77 | |
TimWoo | 0:2279181caaa1 | 78 | char received = 'a'; |
TimWoo | 0:2279181caaa1 | 79 | |
TimWoo | 0:2279181caaa1 | 80 | |
TimWoo | 0:2279181caaa1 | 81 | while(1) { |
TimWoo | 0:2279181caaa1 | 82 | // rfd.printf("aaiPoesjes"); //TEST broadcast text |
TimWoo | 0:2279181caaa1 | 83 | received = rfd.txGetLastChar(); |
TimWoo | 0:2279181caaa1 | 84 | c.displWriteLine(3, 'a'); |
TimWoo | 0:2279181caaa1 | 85 | pc.printf("%c", received); |
TimWoo | 0:2279181caaa1 | 86 | received = 'b'; |
TimWoo | 0:2279181caaa1 | 87 | if(!Up) |
TimWoo | 0:2279181caaa1 | 88 | { |
TimWoo | 0:2279181caaa1 | 89 | c.setStatus(c.BUSY); |
TimWoo | 0:2279181caaa1 | 90 | wait(1); |
TimWoo | 0:2279181caaa1 | 91 | rfd.printf("%s","161;"); |
TimWoo | 0:2279181caaa1 | 92 | wait_ms(100); |
TimWoo | 0:2279181caaa1 | 93 | rfd.printf("%s","308;"); |
TimWoo | 0:2279181caaa1 | 94 | } else { |
TimWoo | 0:2279181caaa1 | 95 | c.setStatus(c.READY); |
TimWoo | 0:2279181caaa1 | 96 | } |
TimWoo | 0:2279181caaa1 | 97 | wait_ms(1000); |
TimWoo | 0:2279181caaa1 | 98 | //__WFI(); |
TimWoo | 0:2279181caaa1 | 99 | } |
TimWoo | 0:2279181caaa1 | 100 | } |