Racing robots
Dependencies: EthernetInterface SPI_TFT_ILI9341 Stopwatch TFT_fonts TextLCD mbed-rtos mbed
Fork of rtos_basic by
main.cpp
- Committer:
- mbed5_khbo
- Date:
- 2015-04-08
- Revision:
- 7:925f0328c938
- Parent:
- 3:c92e21f305d8
- Child:
- 8:0499c9bedfca
File content as of revision 7:925f0328c938:
#include "mbed.h" #include "rtos.h" #include "EthernetInterface.h" #include "stdio.h" #include "SPI_TFT_ILI9341.h" #include "string" #include "Arial12x12.h" #include "Arial24x23.h" #include "Arial28x28.h" #include "font_big.h" #include "Stopwatch.h" DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); DigitalOut led4(LED4); DigitalOut rst1(p30); DigitalIn sensorBasis(p12); DigitalIn up(p15); I2C i2c(p28, p27); Serial xbee1(p9, p10); const int addr = 0x90; string rondeTijden[3]; int stukCircuit=0; int tellerS=0,tellerM=0,data=125,status,i=3; int start,i2cinfo1,i2cinfo2,i2cinfo3; bool send; char cmd[2]; Stopwatch klok; LocalFileSystem local("local"); extern unsigned char p1[]; // the mbed logo graphic // the display has a backlight switch on board DigitalOut LCD_LED(p21); // the TFT is connected to SPI pin 5-7 SPI_TFT_ILI9341 TFT(p5, p6, p7, p8, p15, p16,"TFT"); // mosi, miso, sclk, cs, reset, dc void rondeTijden_thread(void const *args) { while (true) { if(sensorBasis == 1) { if(start == 0) { Thread::wait(500); klok=Stopwatch(); klok.start(); start=1; } else { start=0; send=true; rondeTijden[2]=rondeTijden[1]; rondeTijden[1]=rondeTijden[0]; rondeTijden[0]=klok.getTime(); } } else { led4=0; } } } void meetStation_thread(void const *args) { while (true) { i2c.read(addr, cmd, 2); switch(cmd[0]) { case 0: if(cmd[1]==1) { tellerS=1; } break; case 1: if(cmd[1]==1) { tellerS=2; } break; case 2: if(cmd[1]==1) { tellerS=3; } break; } } } void ethernet_receive_thread(void const *args) { while(1) { EthernetInterface eth; eth.init(); //Use DHCP eth.connect(); //lcd.locate(0,10); //lcd.printf("IP Address is %s\n", eth.getIPAddress()); TCPSocketConnection sock; sock.connect("192.168.0.100", 8006); char buffer[10]; int ret; ret = sock.receive(buffer, sizeof(buffer)-1); if(buffer[0]==1) { switch(buffer[1]) { case 'G': xbee1.putc(0x01); break; case 'S': xbee1.putc(0x02); break; } } } } void ethernet_transmit_thread(void const *args) { while(1) { EthernetInterface eth; eth.init(); //Use DHCP eth.connect(); //lcd.locate(0,10); //lcd.printf("IP Address is %s\n", eth.getIPAddress()); TCPSocketConnection sock; sock.connect("192.168.0.100", 8005); if(send) { char http_cmd[] = "12.56"; sock.send_all(http_cmd, sizeof(http_cmd)-1); send=false; } } } int main() { xbee1.baud(115200); Thread thread1(rondeTijden_thread); Thread thread2(meetStation_thread); rst1 = 0; wait_ms(1); rst1 = 1; wait_ms(1); LCD_LED = 1; // backlite on TFT.claim(stdout); // send stdout to the TFT display TFT.set_orientation(1); TFT.background(White); // set background to black TFT.foreground(Black); // set chars to white TFT.cls(); // clear the screen TFT.set_font((unsigned char*) Neu42x35); TFT.locate(5,5); TFT.printf("Racing robot"); TFT.line(0,50,320,50,White); TFT.set_font((unsigned char*) Arial24x23); TFT.locate(5,55); TFT.printf("LAPTIJDEN:"); xbee1.baud(115200); //thread3=new Thread(ethernet_receive_thread); //thread4=new Thread(ethernet_transmit_thread); while(1) { TFT.set_font((unsigned char*) Arial28x28); TFT.locate(30,90); TFT.printf(klok.getTime()); TFT.set_font((unsigned char*) Arial12x12); TFT.rect(10,170,110,210,Black); TFT.fillrect(11,171,109,209,Green); TFT.rect(110,170,210,210,Black); TFT.fillrect(111,171,209,209,Red); TFT.rect(210,170,310,210,Black); TFT.fillrect(211,171,309,209,Red); wait_ms(100); } }