Robot that currently does nothing

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

main.cpp

Committer:
CRaslawski
Date:
2017-03-15
Revision:
5:6ca141fc6c4e
Parent:
4:589e4a2028a7
Child:
6:21c5a7cf63de

File content as of revision 5:6ca141fc6c4e:

#include "mbed.h"
#include "rtos.h"
#include "uLCD_4DGL.h"
//#include "ShiftBrite.h"
#include "SDFileSystem.h"
#include "wave_player.h"

Mutex mutex;    //
Mutex mutex2;   //
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);
Thread thread1;
Thread thread2;
Thread thread3;
Thread thread4;
//DigitalOut latch(p15);
//DigitalOut enable(p16);
SPI spi(p11, p12, p13);
//uLCD_4DGL uLCD(p28,p27,p29); //(p27, p28, p30);    //tx, rx, rst
uLCD_4DGL uLCD(p28, p27, p30); 
//ShiftBrite myBrite(p15,p16,spi); //latch, enable, spi
SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
AnalogOut DACout(p18);      //must be p18
AnalogIn IR(p20);
//RawSerial BT(p9, p10);  //bluetooth pinout
FILE *wave_file = NULL;         //global bc its gotta be changed by Main while running in child thread
wave_player waver(&DACout);     //create wave_player object for speaker

void LCD_thread1() {
    while(1){    
        mutex.lock();
        uLCD.filled_circle(64, 64, 12, 0xFF0000);
        mutex.unlock();
        wait(.5);
        mutex.lock();
        uLCD.filled_circle(64, 64, 12, 0x0000FF);
        mutex.unlock();
        wait(.5);
    }     
} 
void sound_thread(){
    while(1) {
        //FILE *wave_file;
        wave_file=fopen("/sd/vacuum.wav","r");    
        if (wave_file == NULL){
               led1=led2=led3=led4 = 1;     // if file read error, all LEDs ON
        }
        waver.play(wave_file);
        fclose(wave_file);  
    }
}

int main() {
    //thread1.start(IR_thread); // read in IR data
    thread2.start(LCD_thread1);   
    //thread3.start(Motor_thread);
    thread4.start(sound_thread);
    
    while(1){
        //IR testing
        if(IR>0.3 && IR<0.5) {
            led1=1;
            led2=led3=led4=0;
        } else if (IR>0.5 && IR< 0.7) {
            led1=led2=1;
            led3=led4=0;
        } else if (IR>0.7 && IR<0.9) {
            led1=led2=led3=1;
            led4=0;
        } else if (IR>0.95) { //collision threshold seems to be the same from IR=0.8 to IR=0.95
            led1=led2=led3=led4=1;    
        } else led1=led2=led3=led4=0;
    }
    // use mutex to lock getc(), printf(), scanf()
    // don't unlock until you've checked that it's readable()  
}