Robot that currently does nothing

Dependencies:   4DGL-uLCD-SE SDFileSystem ShiftBrite mbed-rtos mbed wave_player Motor

Committer:
CRaslawski
Date:
Wed Mar 15 04:46:24 2017 +0000
Revision:
2:693b0fe96793
Parent:
1:4eeea974ff65
Child:
3:86cc67dbf731
gogogo;

Who changed what in which revision?

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