Tapton school eds robot project mbed2
Dependencies: SDFileSystem SRF05 mbed wave_player_appbd
main.cpp
- Committer:
- matt8174
- Date:
- 2017-03-14
- Revision:
- 1:fdf0c4de9039
- Parent:
- 0:5482b23752a8
File content as of revision 1:fdf0c4de9039:
// Mbed 2 Additional sensors and Audio control #include "mbed.h" #include "SRF05.h" #include "SDFileSystem.h" #include "wave_player.h" #include "string" #include <stdio.h> #include <stdlib.h> #include <iostream> //Serial pc(USBTX, USBRX); // for terminal diagnostics Serial communicate(p28, p27);// serial comms to mbed 1 tx and rx SRF05 srf(p9, p10);// serial comms to distance sensor tx, rx SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card AnalogOut DACout(p18); //to audio amplifier and speaker PwmOut PWMout(p26); wave_player waver(&DACout,&PWMout); DigitalOut myled1(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); DigitalOut myled4(LED4); DigitalOut stopgo (p20); // sends signal to mbed1 to move forward or not char receivedchar[10]; //array used for received characters from mbed1 int command_num; int distcheck; int b; void rxCallback() //interrupt from rx serial port { myled3=!myled3; receivedchar[0]=communicate.getc(); // put received character from mbed2 into array for later command_num=receivedchar[0]; // pc.printf("%d ",receivedchar[0]); } void txCallback() //interrupt from rx serial port { myled4=!myled4; // pc.printf("%d ",receivedchar[0]); } int main () { bool nerror = true; communicate.baud(19200); //to mbed 1 // pc.baud(19200); //for diagnostics setbuf(stdin,NULL); //clear serial input buffer //for serial interrupt callback function communicate.attach(&txCallback, Serial::TxIrq); communicate.attach(&rxCallback, Serial::RxIrq); FILE *wave_file; command_num=0; receivedchar[0]=0; distcheck=0; stopgo=0; char buffer [20]; buffer[0]=0; myled1=0; //enter infinite loop wait(1); while(nerror) { distcheck = srf.read(); // pc.printf(" %d",distcheck); if (distcheck<=15) //too close { myled1=stopgo; stopgo=1; // not ok to move forward, raise p20 // pc.printf("%d NOT OK\n", distcheck); } else { stopgo=0; myled1=stopgo; } // pc.printf(" %d",distcheck); // if (command_num!=0) // { if(command_num >= 49 && command_num <= 53) // 1 to 5 (MOVEMENT) { switch(command_num) { case '1': // sprintf(buffer, "/sd/voice%d.wav", command_num); sprintf(buffer, "/sd/voice42.wav"); //Forward wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case '2': // sprintf(buffer, "/sd/voice%d.wav", command_num); sprintf(buffer, "/sd/voice43.wav"); //Right wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case '3': // sprintf(buffer, "/sd/voice%d.wav", command_num); sprintf(buffer, "/sd/voice44.wav"); //Reverse wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case '4': // sprintf(buffer, "/sd/voice%d.wav", command_num); sprintf(buffer, "/sd/voice45.wav"); //Left wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case '5': // cant move forward // sprintf(buffer, "/sd/voice%d.wav", command_num); sprintf(buffer, "/sd/voice46.wav"); // Blocked wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; } } if(command_num >= 97 && command_num <= 106) // a to j (NUMBERS) { switch(command_num) { case 'a': sprintf(buffer,"/sd/voice41.wav"); // 0 wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'b': sprintf(buffer,"/sd/voice31.wav"); // 1 wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'c': sprintf(buffer,"/sd/voice32.wav"); // 2 wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'd': sprintf(buffer,"/sd/voice33.wav"); // 3 wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'e': sprintf(buffer,"/sd/voice34.wav"); // 4 wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'f': sprintf(buffer,"/sd/voice35.wav"); // 5 wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'g': sprintf(buffer,"/sd/voice36.wav"); // 6 wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'h': sprintf(buffer,"/sd/voice37.wav"); // 7 wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'i': sprintf(buffer,"/sd/voice38.wav"); // 8 wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'j': sprintf(buffer,"/sd/voice39.wav"); // 9 wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; } } if(command_num >= 65 && command_num <= 90) // A to Z (LETTERS) { switch(command_num) { case 'A': sprintf(buffer,"/sd/voice5.wav"); // A wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'B': sprintf(buffer,"/sd/voice6.wav"); // B wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'C': sprintf(buffer,"/sd/voice7.wav"); // C wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'D': sprintf(buffer,"/sd/voice8.wav"); // D wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'E': sprintf(buffer,"/sd/voice9.wav"); // E wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'F': sprintf(buffer,"/sd/voice10.wav"); // F wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'G': sprintf(buffer,"/sd/voice11.wav"); // G wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'H': sprintf(buffer,"/sd/voice12.wav"); // H wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'I': sprintf(buffer,"/sd/voice13.wav"); // I wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'J': sprintf(buffer,"/sd/voice14.wav"); // J wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'K': sprintf(buffer,"/sd/voice15.wav"); // K wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'L': sprintf(buffer,"/sd/voice16.wav"); // L wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'M': sprintf(buffer,"/sd/voice17.wav"); // M wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'N': sprintf(buffer,"/sd/voice18.wav"); // N wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'O': sprintf(buffer,"/sd/voice19.wav"); // O wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'P': sprintf(buffer,"/sd/voice20.wav"); // P wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'Q': sprintf(buffer,"/sd/voice21.wav"); // Q wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'R': sprintf(buffer,"/sd/voice22.wav"); // R wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'S': sprintf(buffer,"/sd/voice23.wav"); // S wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'T': sprintf(buffer,"/sd/voice24.wav"); // T wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'U': sprintf(buffer,"/sd/voice25.wav"); // U wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'V': sprintf(buffer,"/sd/voice26.wav"); // V wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'W': sprintf(buffer,"/sd/voice27.wav"); // W wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'X': sprintf(buffer,"/sd/voice28.wav"); // X wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'Y': sprintf(buffer,"/sd/voice29.wav"); // Y wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; case 'Z': sprintf(buffer,"/sd/voice30.wav"); // Z wave_file=fopen(buffer ,"r"); waver.play(wave_file); fclose(wave_file); wait(0.1); command_num=0; break; } //switch } // // } // lower if command num } //while }//main