program for RoPiT

Dependencies:   Servo mbed

Files at this revision

API Documentation at this revision

Comitter:
s1222546
Date:
Wed Aug 27 08:32:11 2014 +0000
Commit message:
program for RoPiT

Changed in this revision

Servo.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Servo.lib	Wed Aug 27 08:32:11 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/simon/code/Servo/#36b69a7ced07
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Aug 27 08:32:11 2014 +0000
@@ -0,0 +1,678 @@
+#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;
+        }
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Aug 27 08:32:11 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/6213f644d804
\ No newline at end of file