Robot that currently does nothing
Dependencies: 4DGL-uLCD-SE SDFileSystem ShiftBrite mbed-rtos mbed wave_player Motor
main.cpp@0:ada50658d850, 2017-03-15 (annotated)
- Committer:
- jplager3
- Date:
- Wed Mar 15 04:39:15 2017 +0000
- Revision:
- 0:ada50658d850
- Child:
- 1:4eeea974ff65
Roomba robot program. Currently displays on LCD and plays sounds.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jplager3 | 0:ada50658d850 | 1 | #include "mbed.h" |
jplager3 | 0:ada50658d850 | 2 | #include "rtos.h" |
jplager3 | 0:ada50658d850 | 3 | #include "uLCD_4DGL.h" |
jplager3 | 0:ada50658d850 | 4 | //#include "ShiftBrite.h" |
jplager3 | 0:ada50658d850 | 5 | #include "SDFileSystem.h" |
jplager3 | 0:ada50658d850 | 6 | #include "wave_player.h" |
jplager3 | 0:ada50658d850 | 7 | |
jplager3 | 0:ada50658d850 | 8 | Mutex mutex; // |
jplager3 | 0:ada50658d850 | 9 | Mutex mutex2; // |
jplager3 | 0:ada50658d850 | 10 | DigitalOut led1(LED1); |
jplager3 | 0:ada50658d850 | 11 | DigitalOut led2(LED2); |
jplager3 | 0:ada50658d850 | 12 | DigitalOut led3(LED3); |
jplager3 | 0:ada50658d850 | 13 | DigitalOut led4(LED4); |
jplager3 | 0:ada50658d850 | 14 | Thread thread1; |
jplager3 | 0:ada50658d850 | 15 | Thread thread2; |
jplager3 | 0:ada50658d850 | 16 | Thread thread3; |
jplager3 | 0:ada50658d850 | 17 | Thread thread4; |
jplager3 | 0:ada50658d850 | 18 | //DigitalOut latch(p15); |
jplager3 | 0:ada50658d850 | 19 | //DigitalOut enable(p16); |
jplager3 | 0:ada50658d850 | 20 | SPI spi(p11, p12, p13); |
jplager3 | 0:ada50658d850 | 21 | //uLCD_4DGL uLCD(p28,p27,p29); //(p27, p28, p30); //tx, rx, rst |
jplager3 | 0:ada50658d850 | 22 | uLCD_4DGL uLCD(p28, p27, p30); |
jplager3 | 0:ada50658d850 | 23 | //ShiftBrite myBrite(p15,p16,spi); //latch, enable, spi |
jplager3 | 0:ada50658d850 | 24 | SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card |
jplager3 | 0:ada50658d850 | 25 | AnalogOut DACout(p18); //must be p18 |
jplager3 | 0:ada50658d850 | 26 | //RawSerial BT(p9, p10); //bluetooth pinout |
jplager3 | 0:ada50658d850 | 27 | FILE *wave_file = NULL; //global bc its gotta be changed by Main while running in child thread |
jplager3 | 0:ada50658d850 | 28 | wave_player waver(&DACout); //create wave_player object for speaker |
jplager3 | 0:ada50658d850 | 29 | |
jplager3 | 0:ada50658d850 | 30 | void LCD_thread1() { |
jplager3 | 0:ada50658d850 | 31 | while(1){ |
jplager3 | 0:ada50658d850 | 32 | mutex.lock(); |
jplager3 | 0:ada50658d850 | 33 | uLCD.filled_circle(64, 64, 12, 0xFF0000); |
jplager3 | 0:ada50658d850 | 34 | mutex.unlock(); |
jplager3 | 0:ada50658d850 | 35 | wait(.5); |
jplager3 | 0:ada50658d850 | 36 | mutex.lock(); |
jplager3 | 0:ada50658d850 | 37 | uLCD.filled_circle(64, 64, 12, 0x0000FF); |
jplager3 | 0:ada50658d850 | 38 | mutex.unlock(); |
jplager3 | 0:ada50658d850 | 39 | wait(.5); |
jplager3 | 0:ada50658d850 | 40 | } |
jplager3 | 0:ada50658d850 | 41 | } |
jplager3 | 0:ada50658d850 | 42 | void sound_thread(){ |
jplager3 | 0:ada50658d850 | 43 | //FILE *wave_file; |
jplager3 | 0:ada50658d850 | 44 | wave_file=fopen("/sd/Police_Siren.wav","r"); |
jplager3 | 0:ada50658d850 | 45 | if (wave_file == NULL){ |
jplager3 | 0:ada50658d850 | 46 | led1=led2=led3=led4 = 1; // if file read error, all LEDs ON |
jplager3 | 0:ada50658d850 | 47 | } |
jplager3 | 0:ada50658d850 | 48 | waver.play(wave_file); |
jplager3 | 0:ada50658d850 | 49 | fclose(wave_file); |
jplager3 | 0:ada50658d850 | 50 | } |
jplager3 | 0:ada50658d850 | 51 | int main() { |
jplager3 | 0:ada50658d850 | 52 | //thread1.start(IR_thread); // read in IR data |
jplager3 | 0:ada50658d850 | 53 | thread2.start(LCD_thread1); |
jplager3 | 0:ada50658d850 | 54 | //thread3.start(Motor_thread); |
jplager3 | 0:ada50658d850 | 55 | thread4.start(sound_thread); |
jplager3 | 0:ada50658d850 | 56 | |
jplager3 | 0:ada50658d850 | 57 | while(1){ // poor coding practice, I know |
jplager3 | 0:ada50658d850 | 58 | |
jplager3 | 0:ada50658d850 | 59 | } |
jplager3 | 0:ada50658d850 | 60 | // use mutex to lock getc(), printf(), scanf() |
jplager3 | 0:ada50658d850 | 61 | // don't unlock until you've checked that it's readable() |
jplager3 | 0:ada50658d850 | 62 | |
jplager3 | 0:ada50658d850 | 63 | } |