Die erste Version.
Dependencies: Diplomarbeit_Augimeter_V1 dPrell mbed
main.cpp@0:66b2f1a46940, 2018-04-05 (annotated)
- Committer:
- sophia
- Date:
- Thu Apr 05 06:48:53 2018 +0000
- Revision:
- 0:66b2f1a46940
Die erste Version der Diplomarbeit.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sophia | 0:66b2f1a46940 | 1 | #include "mbed.h" |
sophia | 0:66b2f1a46940 | 2 | #include "Servo.h" // Servo |
sophia | 0:66b2f1a46940 | 3 | #include "dPrell.h" // entprelltes Interrupt von Schmiedi |
sophia | 0:66b2f1a46940 | 4 | |
sophia | 0:66b2f1a46940 | 5 | Servo servo_radius(p26); |
sophia | 0:66b2f1a46940 | 6 | Servo servo_phi(p25); |
sophia | 0:66b2f1a46940 | 7 | dPrell btn (p20); |
sophia | 0:66b2f1a46940 | 8 | dPrell btn_start(P1_16); // Zum hochzählen umd das case zu ändern |
sophia | 0:66b2f1a46940 | 9 | DigitalOut laser(p21); |
sophia | 0:66b2f1a46940 | 10 | Serial pc(USBTX, USBRX); |
sophia | 0:66b2f1a46940 | 11 | double _posr; //für auslesen Position aktueller Radius (-90,-80,...,80,90) |
sophia | 0:66b2f1a46940 | 12 | double _posphi; //für auslesen Position aktueller Winkel Phi(-90,-70,...,70,90) |
sophia | 0:66b2f1a46940 | 13 | |
sophia | 0:66b2f1a46940 | 14 | void readthebutton(); //auslesen Position |
sophia | 0:66b2f1a46940 | 15 | void zahlen(); // ISR zum hochzählen zum case ändern |
sophia | 0:66b2f1a46940 | 16 | void straightoben(); //Radius von -90 bis 0) |
sophia | 0:66b2f1a46940 | 17 | void straightunten(); //Radius von 90 bis 0) |
sophia | 0:66b2f1a46940 | 18 | void muster(); // abgefahrenes Muster |
sophia | 0:66b2f1a46940 | 19 | int zahler = 0; // zähler zum hochzählen und case ändern |
sophia | 0:66b2f1a46940 | 20 | |
sophia | 0:66b2f1a46940 | 21 | |
sophia | 0:66b2f1a46940 | 22 | int main() |
sophia | 0:66b2f1a46940 | 23 | { |
sophia | 0:66b2f1a46940 | 24 | pc.baud(9600); |
sophia | 0:66b2f1a46940 | 25 | btn.rise(&readthebutton); |
sophia | 0:66b2f1a46940 | 26 | btn_start.rise(&zahlen); |
sophia | 0:66b2f1a46940 | 27 | bool f=false; |
sophia | 0:66b2f1a46940 | 28 | while(1) { |
sophia | 0:66b2f1a46940 | 29 | |
sophia | 0:66b2f1a46940 | 30 | switch(zahler) { |
sophia | 0:66b2f1a46940 | 31 | case 0: |
sophia | 0:66b2f1a46940 | 32 | if(!f) |
sophia | 0:66b2f1a46940 | 33 | { |
sophia | 0:66b2f1a46940 | 34 | pc.printf("xCase 0\n"); |
sophia | 0:66b2f1a46940 | 35 | pc.printf("xRichten Sie ihr linkes Auge auf das Kreuz.\nRoten Knopf fuer Start druecken.\n Pressen sie den schwarzen Knopf, sobald Sie den Laser sehen."); |
sophia | 0:66b2f1a46940 | 36 | f=true; |
sophia | 0:66b2f1a46940 | 37 | } |
sophia | 0:66b2f1a46940 | 38 | break; |
sophia | 0:66b2f1a46940 | 39 | |
sophia | 0:66b2f1a46940 | 40 | case 1: // linkes Auge |
sophia | 0:66b2f1a46940 | 41 | if(f) |
sophia | 0:66b2f1a46940 | 42 | { |
sophia | 0:66b2f1a46940 | 43 | pc.printf("xCase 1\n"); |
sophia | 0:66b2f1a46940 | 44 | muster(); |
sophia | 0:66b2f1a46940 | 45 | pc.printf("xRichten Sie ihr rechtes Auge auf das Kreuz. Roten Knopf fuer Start druecken.\n"); |
sophia | 0:66b2f1a46940 | 46 | f=false; |
sophia | 0:66b2f1a46940 | 47 | } |
sophia | 0:66b2f1a46940 | 48 | break; |
sophia | 0:66b2f1a46940 | 49 | |
sophia | 0:66b2f1a46940 | 50 | case 2: //rechtes Auge |
sophia | 0:66b2f1a46940 | 51 | pc.printf("xCase 2\n"); |
sophia | 0:66b2f1a46940 | 52 | muster(); |
sophia | 0:66b2f1a46940 | 53 | pc.printf("xFertig.\n"); |
sophia | 0:66b2f1a46940 | 54 | zahler = 0; |
sophia | 0:66b2f1a46940 | 55 | break; |
sophia | 0:66b2f1a46940 | 56 | |
sophia | 0:66b2f1a46940 | 57 | } |
sophia | 0:66b2f1a46940 | 58 | } |
sophia | 0:66b2f1a46940 | 59 | } |
sophia | 0:66b2f1a46940 | 60 | void readthebutton() //auslesen Position |
sophia | 0:66b2f1a46940 | 61 | { |
sophia | 0:66b2f1a46940 | 62 | int x = (_posr * cos(_posphi * 3.1415/180) + 100); |
sophia | 0:66b2f1a46940 | 63 | int y = 100-(_posr * sin(_posphi * 3.1415/180)) + 100; |
sophia | 0:66b2f1a46940 | 64 | pc.printf("%d %d\n", x, y); |
sophia | 0:66b2f1a46940 | 65 | } |
sophia | 0:66b2f1a46940 | 66 | |
sophia | 0:66b2f1a46940 | 67 | void zahlen() |
sophia | 0:66b2f1a46940 | 68 | { |
sophia | 0:66b2f1a46940 | 69 | zahler++; |
sophia | 0:66b2f1a46940 | 70 | wait(1); |
sophia | 0:66b2f1a46940 | 71 | } |
sophia | 0:66b2f1a46940 | 72 | |
sophia | 0:66b2f1a46940 | 73 | void straightoben() //Radius von -90 bis 0) |
sophia | 0:66b2f1a46940 | 74 | { |
sophia | 0:66b2f1a46940 | 75 | for (int i = -90; i <= 0; i+=10) { |
sophia | 0:66b2f1a46940 | 76 | servo_radius.position(i); |
sophia | 0:66b2f1a46940 | 77 | _posr = -i; // fürs umrechnen (Radius ist somit immer zwischen 0 und 90 |
sophia | 0:66b2f1a46940 | 78 | laser = 1; |
sophia | 0:66b2f1a46940 | 79 | readthebutton(); |
sophia | 0:66b2f1a46940 | 80 | wait(1); |
sophia | 0:66b2f1a46940 | 81 | laser = 0; |
sophia | 0:66b2f1a46940 | 82 | wait(1); |
sophia | 0:66b2f1a46940 | 83 | |
sophia | 0:66b2f1a46940 | 84 | } |
sophia | 0:66b2f1a46940 | 85 | } |
sophia | 0:66b2f1a46940 | 86 | |
sophia | 0:66b2f1a46940 | 87 | void straightunten() //Radius von 90 bis 0) |
sophia | 0:66b2f1a46940 | 88 | { |
sophia | 0:66b2f1a46940 | 89 | for (int i = 90; i >=0; i-=10) { |
sophia | 0:66b2f1a46940 | 90 | servo_radius.position(i); |
sophia | 0:66b2f1a46940 | 91 | _posr = i; |
sophia | 0:66b2f1a46940 | 92 | laser = 1; |
sophia | 0:66b2f1a46940 | 93 | readthebutton(); |
sophia | 0:66b2f1a46940 | 94 | wait(1); |
sophia | 0:66b2f1a46940 | 95 | laser = 0; |
sophia | 0:66b2f1a46940 | 96 | wait(1); |
sophia | 0:66b2f1a46940 | 97 | |
sophia | 0:66b2f1a46940 | 98 | } |
sophia | 0:66b2f1a46940 | 99 | } |
sophia | 0:66b2f1a46940 | 100 | |
sophia | 0:66b2f1a46940 | 101 | void muster() // abgefahrenes Muster |
sophia | 0:66b2f1a46940 | 102 | { |
sophia | 0:66b2f1a46940 | 103 | for(int i = -90; i< 90; i+= 15) { //Winkel |
sophia | 0:66b2f1a46940 | 104 | servo_phi.position(i); |
sophia | 0:66b2f1a46940 | 105 | //_posphi = i; |
sophia | 0:66b2f1a46940 | 106 | _posphi = 360-(i + 90); // für Berechnung, die Winkel gehen nun von 0 bis 180 |
sophia | 0:66b2f1a46940 | 107 | //straightoben(); |
sophia | 0:66b2f1a46940 | 108 | straightunten(); |
sophia | 0:66b2f1a46940 | 109 | |
sophia | 0:66b2f1a46940 | 110 | } |
sophia | 0:66b2f1a46940 | 111 | |
sophia | 0:66b2f1a46940 | 112 | for(int i = -90; i< 90; i+= 15) { //Winkel |
sophia | 0:66b2f1a46940 | 113 | servo_phi.position(i); |
sophia | 0:66b2f1a46940 | 114 | //_posphi = i; |
sophia | 0:66b2f1a46940 | 115 | _posphi = 360-(i + 270); // für Berechnung, die Winkel gehen nun von 180 bis 360 |
sophia | 0:66b2f1a46940 | 116 | //straightunten(); |
sophia | 0:66b2f1a46940 | 117 | straightoben(); |
sophia | 0:66b2f1a46940 | 118 | |
sophia | 0:66b2f1a46940 | 119 | } |
sophia | 0:66b2f1a46940 | 120 | } |