![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Racing robots
Dependencies: EthernetInterface SPI_TFT_ILI9341 Stopwatch TFT_fonts TextLCD mbed-rtos mbed
Fork of rtos_basic by
main.cpp
00001 #include "mbed.h" 00002 #include "rtos.h" 00003 #include "EthernetInterface.h" 00004 #include "stdio.h" 00005 #include "SPI_TFT_ILI9341.h" 00006 #include "string" 00007 #include "Arial12x12.h" 00008 #include "Arial24x23.h" 00009 #include "Arial28x28.h" 00010 #include "font_big.h" 00011 00012 00013 Timer t; 00014 DigitalOut led1(p25); 00015 DigitalOut led2(LED2); 00016 DigitalOut led3(LED3); 00017 DigitalOut led4(LED4); 00018 DigitalOut rst1(p30); 00019 DigitalOut buzzer(p17); 00020 DigitalOut startl(p21); 00021 DigitalIn sensorBasis(p12); 00022 DigitalIn test(p23); 00023 DigitalIn starta(p12); 00024 I2C i2c(p28, p27); 00025 Serial xbee1(p9, p10); 00026 const int addr = 0x90; 00027 int rondeTijden[3]; 00028 int rondeTijdenMilli[3]; 00029 int rondeTijdenM[3]; 00030 int stukCircuit=0; 00031 int lapcounter; 00032 int overzicht; 00033 int circuit; 00034 int tijds,tijdmilli,tijdm; 00035 int tellerS=0,tellerM=0,data=125,status,i=3; 00036 int start,i2cinfo1,i2cinfo2,i2cinfo3; 00037 bool send; 00038 char cmd[2]; 00039 00040 LocalFileSystem local("local"); 00041 00042 extern unsigned char p1[]; // the mbed logo graphic 00043 00044 // the display has a backlight switch on board 00045 DigitalOut LCD_LED(p21); 00046 00047 // the TFT is connected to SPI pin 5-7 00048 SPI_TFT_ILI9341 TFT(p5, p6, p7, p8, p15, p16,"TFT"); // mosi, miso, sclk, cs, reset, dc 00049 00050 00051 void rondeTijden_thread(void const *args) { 00052 while (true) { 00053 if(sensorBasis == 1) 00054 { 00055 send=false; 00056 if(start == 0) 00057 { 00058 buzzer=1; 00059 if(lapcounter < 99) 00060 { 00061 lapcounter++; 00062 } 00063 else{ 00064 lapcounter=0; 00065 } 00066 t.reset(); 00067 t.start(); 00068 tijdm=0; 00069 Thread::wait(500); 00070 buzzer=0; 00071 start=1; 00072 } 00073 else 00074 { 00075 start=0; 00076 buzzer=0; 00077 send=true; 00078 rondeTijden[2]=rondeTijden[1]; 00079 rondeTijden[1]=rondeTijden[0]; 00080 rondeTijden[0]=tijds; 00081 rondeTijdenMilli[2]=rondeTijdenMilli[1]; 00082 rondeTijdenMilli[1]=rondeTijdenMilli[0]; 00083 int tijd=t.read(); 00084 rondeTijdenMilli[0]=tijdmilli; 00085 rondeTijdenM[2]=rondeTijdenM[1]; 00086 rondeTijdenM[1]=rondeTijdenM[0]; 00087 rondeTijdenM[0]=tijdm; 00088 t.stop(); 00089 } 00090 } 00091 else 00092 { 00093 led4=0; 00094 } 00095 } 00096 } 00097 00098 00099 void meetStation_thread(void const *args) { 00100 while(1) 00101 { 00102 //startl=0; 00103 //Thread::wait(500); 00104 if(starta==1) 00105 { 00106 led1=0; 00107 for(int i=0 ; i<5; i++) 00108 { 00109 Thread::wait(500); 00110 startl=0; 00111 Thread::wait(500); 00112 startl=1; 00113 00114 } 00115 Thread::wait(500); 00116 startl=0; 00117 Thread::wait(500); 00118 startl=1; 00119 led1=1; 00120 } 00121 led1=1; 00122 //for(int i=0 ; i<5; i++) 00123 //{ 00124 //startl=1; 00125 //Thread::wait(0.1); 00126 //startl=0; 00127 //Thread::wait(0.1); 00128 //} 00129 00130 } 00131 } 00132 00133 void ethernet_receive_thread(void const *args) { 00134 while(1) 00135 { 00136 00137 EthernetInterface eth; 00138 eth.init(); //Use DHCP 00139 eth.connect(); 00140 //lcd.locate(0,10); 00141 //lcd.printf("IP Address is %s\n", eth.getIPAddress()); 00142 TCPSocketConnection sock; 00143 sock.connect("192.168.0.100", 8006); 00144 char buffer[10]; 00145 string ret; 00146 ret = sock.receive(buffer, sizeof(buffer)-1); 00147 TFT.locate(30,85); 00148 TFT.set_font((unsigned char*) Arial12x12); 00149 TFT.printf("%s",ret); 00150 00151 } 00152 } 00153 00154 00155 00156 void ethernet_transmit_thread(void const *args) { 00157 EthernetInterface eth; 00158 eth.init(); //Use DHCP 00159 eth.connect(); 00160 00161 UDPSocket sock; 00162 sock.init(); 00163 00164 Endpoint nist; 00165 nist.set_address("192.168.0.100", 8005); 00166 while(1) 00167 { 00168 if(send) 00169 { 00170 //string buffer=snprintf("2%3d", lapcounter); 00171 //string buffer2=snprintf("3%3d.%3d", rondeTijden[0],rondeTijdenM[0]); 00172 00173 //char out_buffer[] = {snprintf("1: %3d:%3d", rondeTijden[0],rondeTijdenM[0])}; // Does not matter 00174 //sock.sendTo(nist, out_buffer, sizeof(out_buffer)); 00175 send=false; 00176 } 00177 } 00178 } 00179 00180 00181 int main() { 00182 00183 xbee1.baud(115200); 00184 Thread thread1(rondeTijden_thread); 00185 Thread thread2(meetStation_thread); 00186 //Thread thread3(ethernet_receive_thread); 00187 //Thread thread4(ethernet_transmit_thread); 00188 rst1 = 0; 00189 wait_ms(1); 00190 rst1 = 1; 00191 wait_ms(1); 00192 00193 00194 00195 00196 LCD_LED = 1; // backlite on 00197 TFT.claim(stdout); // send stdout to the TFT display 00198 TFT.set_orientation(1); 00199 TFT.background(White); // set background to black 00200 TFT.foreground(Black); // set chars to white 00201 TFT.cls(); // clear the screen 00202 TFT.set_font((unsigned char*) Neu42x35); 00203 TFT.locate(5,5); 00204 TFT.printf("Racing robot"); 00205 TFT.locate(30,150); 00206 TFT.set_font((unsigned char*) Arial12x12); 00207 TFT.printf("Overzicht Circuit:"); 00208 TFT.locate(250,95); 00209 TFT.printf("Ronde:"); 00210 TFT.locate(10,215); 00211 TFT.printf("© Ei:Joriek Rogge, Arne DeBergh"); 00212 TFT.locate(10,227); 00213 TFT.printf("© Eo:Sven Priker, Alexander De Geeter"); 00214 TFT.line(0,50,320,50,White); 00215 xbee1.baud(115200); 00216 00217 while(1) 00218 { 00219 TFT.locate(20,40); 00220 tijds = (t.read()-(tijdm*60)); 00221 tijdmilli = ((t.read()*100)-(tijds*100)-(tijdm*6000)); 00222 //tijdm = tijds/60; 00223 if(tijds>=60) 00224 { 00225 tijdm++; 00226 tijds=0; 00227 } 00228 TFT.set_font((unsigned char*) Neu42x35); 00229 TFT.printf("%-2d:%-2d:%-2d ",tijdm, tijds,tijdmilli); 00230 TFT.locate(240,110); 00231 TFT.printf("%-2d", lapcounter); 00232 //TFT.locate(30,85); 00233 //TFT.set_font((unsigned char*) Arial28x28); 00234 //TFT.printf("1: %-2d:%-2d:%-2d ",rondeTijdenM[0],rondeTijden[0],rondeTijdenMilli[0]); 00235 //TFT.locate(30,115); 00236 //TFT.printf("2: %-2d:%-2d:%-2d ",rondeTijdenM[1],rondeTijden[1],rondeTijdenMilli[1]); 00237 TFT.set_font((unsigned char*) Arial12x12); 00238 TFT.circle(275,65,15,Black); 00239 if(tijdmilli<80) 00240 { 00241 TFT.fillcircle(275,65,14,Black); 00242 } 00243 else 00244 { 00245 TFT.fillcircle(275,65,14,Red); 00246 } 00247 TFT.rect(10,170,110,210,Black); 00248 TFT.rect(110,170,210,210,Black); 00249 TFT.rect(210,170,310,210,Black); 00250 switch(circuit) 00251 { 00252 case 0: 00253 TFT.fillrect(11,171,109,209,Red); 00254 TFT.fillrect(111,171,209,209,Red); 00255 TFT.fillrect(211,171,309,209,Red); 00256 break; 00257 case 1: 00258 TFT.fillrect(11,171,109,209,Green); 00259 TFT.fillrect(111,171,209,209,Red); 00260 TFT.fillrect(211,171,309,209,Red); 00261 break; 00262 case 2: 00263 TFT.fillrect(11,171,109,209,Green); 00264 TFT.fillrect(111,171,209,209,Green); 00265 TFT.fillrect(211,171,309,209,Red); 00266 break; 00267 case 3: 00268 TFT.fillrect(11,171,109,209,Green); 00269 TFT.fillrect(111,171,209,209,Green); 00270 TFT.fillrect(211,171,309,209,Green); 00271 break; 00272 } 00273 //wait_ms(20); 00274 } 00275 }
Generated on Mon Jul 18 2022 01:18:41 by
![doxygen](doxygen.png)