Vivian van Voorthuizen
/
KL25Z_compleet_test_4
program for RoPiT
main.cpp
- Committer:
- s1222546
- Date:
- 2014-08-27
- Revision:
- 0:5e1d466088b4
File content as of revision 0:5e1d466088b4:
#include "mbed.h" #include "Servo.h" //pushbuttons InterruptIn interruptbutton(D8); DigitalIn button1(D7); DigitalIn button2(D6); DigitalIn button3(D5); //LEDs DigitalOut ledon(D4); DigitalOut led1(D1); DigitalOut led2(D2); DigitalOut led3(D3); //myleds DigitalOut myled1(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); //buzzer DigitalOut buzzer(PTC5); //servo's Servo servo1(D13); Servo servo2(D10); Servo servo3(D11); Servo servo4(D12); Servo servo5(D9); //transistoren DigitalOut transistor1(PTA17); DigitalOut transistor2(PTC16); DigitalOut transistor3(PTC17); DigitalOut transistor4(PTA16); DigitalOut transistor5(PTC13); //potmeters AnalogIn POT1(A1); AnalogIn POT2(A2); AnalogIn POT3(A3); AnalogIn POT4(A4); AnalogIn POT5(A5); //timer Timer timer; //variabelen float bnp=0; float menu=1; float song; float learning; float m; float tellen; float finger; float a; float p; float transistors; float o; float c; float servo_melody_run; float feedback_melody_run; float POT_melody_run; float hoek1a; float hoek2a; float hoek3a; float hoek4a; float hoek5a; float hoek1b; float hoek2b; float hoek3b; float hoek4b; float hoek5b; float hoek1; float hoek2; float hoek3; float hoek4; float hoek5; extern "C" void NVIC_SystemReset(); //programma reset void startover() { led1=1; wait(0.2); led2=1; wait(0.2); led3=1; wait(0.5); led1=0; led2=0; led3=0; menu=1; NVIC_SystemReset(); } //programma onderdelen aansturing servo's // transistors_on void transistors_on() { transistor1=1; transistor2=1; transistor3=1; transistor4=1; transistor5=1; } // transistors_off void transistors_off() { transistor1=0; transistor2=0; transistor3=0; transistor4=0; transistor5=0; } // aftellen void aftellen() { buzzer=1; wait(0.2); buzzer=0; wait(c-0.2); buzzer=1; wait(0.2); buzzer=0; wait(c-0.2); buzzer=1; wait(0.2); buzzer=0; wait(c-0.2); buzzer=1; wait(0.2); buzzer=0; wait(c-0.2); m=1; } //aftellen_kalibreren void aftellen_kalibreren() { buzzer=1; wait(0.2); buzzer=0; wait(0.8); buzzer=1; wait(0.2); buzzer=0; wait(0.8); buzzer=1; wait(0.2); buzzer=0; wait(0.8); buzzer=1; wait(0.2); buzzer=0; wait(0.8); } //kalibreren void kalibreren() { aftellen_kalibreren(); hoek1a=POT1.read(); hoek2a=POT2.read(); hoek3a=POT3.read(); hoek4a=POT4.read(); hoek5a=POT5.read(); wait(5); aftellen_kalibreren(); hoek1b=POT1.read(); hoek2b=POT2.read(); hoek3b=POT3.read(); hoek4b=POT4.read(); hoek5b=POT5.read(); hoek1=0.75*(hoek1a-hoek1b); hoek2=0.75*(hoek2a-hoek2b); hoek3=0.75*(hoek3a-hoek3b); hoek4=0.75*(hoek4a-hoek4b); hoek5=0.75*(hoek5a-hoek5b); led1=0; led2=0; led3=0; } // melody_1 void melody_1() { if(m==0) { aftellen(); } if(m==1) { finger=1; ++o; } if(m==2) { finger=2; ++o; } if(m==3) { finger=3; ++o; } if(m==4) { finger=4; ++o; } if(m==5) { finger=5; ++o; } if(m==6) { finger=0; feedback_melody_run=0; servo_melody_run=0; POT_melody_run=0; tellen=1; timer.stop(); timer.reset(); } } // melody_2 void melody_2() { if(m==0) { aftellen(); } if(m==1) { finger=1; ++o; } if(m==2) { finger=5; ++o; } if(m==3) { finger=2; } if(m==4) { finger=4; ++o; } if(m==5) { finger=3; ++o; } if(m==6) { finger=0; feedback_melody_run=0; servo_melody_run=0; POT_melody_run=0; tellen=1; timer.stop(); timer.reset(); } } // melody_3 void melody_3() { if(m==0) { aftellen(); } if(m==1) { finger=1; ++o; } if(m==2) { finger=2; ++o; } if(m==3) { finger=5; ++o; } if(m==4) { finger=4; ++o; } if(m==5) { finger=3; ++o; } if(m==6) { finger=0; feedback_melody_run=0; servo_melody_run=0; POT_melody_run=0; tellen=1; m=0; timer.stop(); timer.reset(); } } // melody void melody() { if(song==1) { melody_1(); } if(song==2) { melody_2(); } if(song==3) { melody_3(); } } //POT void POT() { melody(); if(finger==1) { if(POT1.read()>=hoek1) { ++m; } } if(finger==2) { if(POT2.read()>=hoek2) { ++m; } } if(finger==3) { if(POT3.read()>=hoek3) { ++m; } } if(finger==4) { if(POT4.read()>=hoek4) { ++m; } } if(finger==5) { if(POT5.read()>=hoek5) { ++m; } } } // servo void servo() { melody(); if(finger==1) { transistor1=1; servo1=1; wait(a); servo1=0.5; } if(finger==2) { transistor2=1; servo2=1; wait(a); servo2=0.5; } if(finger==3) { transistor3=1; servo3=1; wait(a); servo3=0.5; } if(finger==4) { transistor4=1; servo4=0; wait(a); servo4=0.5; } if(finger==5) { transistor5=1; servo5=0; wait(a); servo5=0.5; } ++m; } //feedback void feedback() { melody(); if(finger==1) { timer.start(); while(m==o) { if(POT1.read()>=hoek1) { ++m; } if(timer.read()>=c+a) { transistor1=1; servo1=1; wait(a); servo1=0.5; wait(a); transistor1=0; ++m; } } } if(finger==2) { timer.start(); while(m==o) { if(POT2.read()>=hoek2) { ++m; } if(timer.read()>=2*c+a) { transistor2=1; servo2=1; wait(a); servo2=0.5; wait(a); transistor2=0; ++m; } } } if(finger==3) { timer.start(); while(m==o) { if(POT3.read()>=hoek3) { ++m; } if(timer.read()>=2*c+a) { transistor3=1; servo3=1; wait(a); servo3=0.5; wait(a); transistor3=0; ++m; } } } if(finger==4) { timer.start(); while(m==o) { if(POT4.read()>=hoek4) { ++m; } if(timer.read()>=3*c+a) { transistor4=1; servo4=1; wait(a); servo4=0.5; wait(a); transistor4=0; ++m; } } } if(finger==5) { timer.start(); while(m==o) { if(POT5.read()>=hoek5) { ++m; } if(timer.read()>=4*c+a) { transistor5=1; servo5=1; wait(a); servo5=0.5; wait(a); transistor5=0; ++m; } } } } //servo_melody() void servo_melody() { if(transistors==1) { transistors_on(); transistors=0; servo_melody_run=1; m=0; } while(servo_melody_run==1) { servo(); } } //POT_melody() void POT_melody() { if(transistors==1) { transistors_off(); transistors=0; POT_melody_run=1; m=0; } while(POT_melody_run==1) { POT(); } } //feedback_melody() void feedback_melody() { if(transistors==1) { transistors_off(); transistors=0; feedback_melody_run=1; m=0; o=0; } while(feedback_melody_run==1) { feedback(); } } int main() { led1=0; led2=0; led3=0; myled1=1; myled2=1; myled3=1; while(1) { ledon=1; interruptbutton.fall(&startover); //menu if(button1==0) { if(bnp==1 && menu==1) { led1=1; song=1; menu=2; wait(0.5); led1=0; bnp=0; } if(bnp==1 && menu==2) { led1=1; learning=1; menu=3; wait(0.5); led1=0; bnp=0; } if(bnp==1 && menu==3) { led1=1; p=60; menu=4; wait(0.5); led1=0; bnp=0; } } if(button2==0) { if(bnp==1 && menu==1) { led2=1; song=2; menu=2; wait(0.5); led2=0; bnp=0; } if(bnp==1 && menu==2) { led2=1; learning=2; menu=3; wait(0.5); led2=0; bnp=0; } if(bnp==1 && menu==3) { led2=1; p=100; menu=4; wait(0.5); led2=0; bnp=0; } } if(button3==0) { if(bnp==1 && menu==1) { led3=1; song=3; menu=2; wait(0.5); led3=0; bnp=0; } if(bnp==1 && menu==2) { led3=1; learning=3; menu=3; wait(0.5); led3=0; bnp=0; } if(bnp==1 && menu==3) { led3=1; p=120; menu=4; wait(0.5); led3=0; bnp=0; } if(button2==0 && bnp==0) { led3=1; led2=1; if(button1==0 &&bnp==0) { led1=1; p=100; kalibreren(); } } } if(button1==1 && button2==1 && button3==1) { bnp=1; } //programma if(menu==4) { c=60/p; a=0.5*c; if(learning==1) { transistors=1; POT_melody(); } if(learning==2) { transistors=1; servo_melody(); wait(3); transistors=1; feedback_melody(); wait(3); transistors=1; servo_melody(); wait(3); transistors=1; feedback_melody(); wait(3); transistors=1; servo_melody(); wait(3); transistors=1; feedback_melody(); } if(learning==3) { transistors=1; servo_melody(); wait(3); transistors=1; POT_melody(); wait(3); transistors=1; servo_melody(); wait(3); transistors=1; POT_melody(); wait(3); transistors=1; servo_melody(); wait(3); transistors=1; POT_melody(); } menu=1; } } }