lololololol
Dependencies: mbed QEI HIDScope biquadFilter MODSERIAL FastPWM
main.cpp@15:80b3ac2b8448, 2019-09-23 (annotated)
- Committer:
- Hendrikvg
- Date:
- Mon Sep 23 11:08:17 2019 +0000
- Revision:
- 15:80b3ac2b8448
- Parent:
- 14:20f11bb58244
- Child:
- 16:40183eeadb6d
Motor 2 richtingen en uit;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Hendrikvg | 15:80b3ac2b8448 | 1 | #include "mbed.h" |
Hendrikvg | 15:80b3ac2b8448 | 2 | #include "MODSERIAL.h" |
Hendrikvg | 14:20f11bb58244 | 3 | #include "FastPWM.h" |
Hendrikvg | 14:20f11bb58244 | 4 | |
Hendrikvg | 14:20f11bb58244 | 5 | // Motor 1 aan zetten en uit zetten dmv button 1 en 2 werkt. |
Hendrikvg | 14:20f11bb58244 | 6 | // Snelheid aansturen nog niet. |
Hendrikvg | 9:12b9865e7373 | 7 | |
Hendrikvg | 15:80b3ac2b8448 | 8 | MODSERIAL pc(USBTX, USBRX); |
Hendrikvg | 15:80b3ac2b8448 | 9 | DigitalOut ledr(LED_RED); |
Hendrikvg | 15:80b3ac2b8448 | 10 | DigitalOut ledg(LED_GREEN); |
Hendrikvg | 15:80b3ac2b8448 | 11 | DigitalOut ledb(LED_BLUE); |
Hendrikvg | 15:80b3ac2b8448 | 12 | Ticker RE; |
Hendrikvg | 15:80b3ac2b8448 | 13 | Timer R; |
Hendrikvg | 15:80b3ac2b8448 | 14 | Timer G; |
Hendrikvg | 15:80b3ac2b8448 | 15 | Timer B; |
Hendrikvg | 15:80b3ac2b8448 | 16 | |
Hendrikvg | 9:12b9865e7373 | 17 | InterruptIn BUT1(D1); |
Hendrikvg | 9:12b9865e7373 | 18 | InterruptIn BUT2(D0); |
Hendrikvg | 14:20f11bb58244 | 19 | FastPWM lichtje(D3); |
Hendrikvg | 9:12b9865e7373 | 20 | AnalogIn ain(A0); |
Hendrikvg | 14:20f11bb58244 | 21 | DigitalOut direction(D6); |
Hendrikvg | 14:20f11bb58244 | 22 | DigitalOut speed(D7); |
RobertoO | 0:67c50348f842 | 23 | |
Hendrikvg | 15:80b3ac2b8448 | 24 | // variables |
Hendrikvg | 15:80b3ac2b8448 | 25 | |
Hendrikvg | 15:80b3ac2b8448 | 26 | volatile char command = 'r'; |
Hendrikvg | 15:80b3ac2b8448 | 27 | enum states {red, green, blue}; |
Hendrikvg | 15:80b3ac2b8448 | 28 | |
Hendrikvg | 15:80b3ac2b8448 | 29 | states CurrentState = red; |
Hendrikvg | 15:80b3ac2b8448 | 30 | bool StateChanged = true; |
Hendrikvg | 15:80b3ac2b8448 | 31 | |
Hendrikvg | 15:80b3ac2b8448 | 32 | double numerator; |
Hendrikvg | 15:80b3ac2b8448 | 33 | double denominator; |
Hendrikvg | 15:80b3ac2b8448 | 34 | double brightness; |
Hendrikvg | 15:80b3ac2b8448 | 35 | |
Hendrikvg | 9:12b9865e7373 | 36 | int n=5; |
Hendrikvg | 2:d9b0ebf3fcca | 37 | |
Hendrikvg | 15:80b3ac2b8448 | 38 | float speedy; |
Hendrikvg | 15:80b3ac2b8448 | 39 | |
Hendrikvg | 15:80b3ac2b8448 | 40 | // functions |
Hendrikvg | 15:80b3ac2b8448 | 41 | |
Hendrikvg | 15:80b3ac2b8448 | 42 | void ES() |
Hendrikvg | 15:80b3ac2b8448 | 43 | { |
Hendrikvg | 15:80b3ac2b8448 | 44 | command = 'r'; |
Hendrikvg | 15:80b3ac2b8448 | 45 | } |
Hendrikvg | 15:80b3ac2b8448 | 46 | |
Hendrikvg | 15:80b3ac2b8448 | 47 | void CheckCommandFromTerminal(void) |
Hendrikvg | 15:80b3ac2b8448 | 48 | { |
Hendrikvg | 15:80b3ac2b8448 | 49 | command = pc.getcNb(); |
Hendrikvg | 15:80b3ac2b8448 | 50 | } |
Hendrikvg | 15:80b3ac2b8448 | 51 | |
Hendrikvg | 15:80b3ac2b8448 | 52 | void StateMachine(void) |
Hendrikvg | 15:80b3ac2b8448 | 53 | { |
Hendrikvg | 15:80b3ac2b8448 | 54 | switch(CurrentState) { |
Hendrikvg | 15:80b3ac2b8448 | 55 | case red: |
Hendrikvg | 15:80b3ac2b8448 | 56 | if (StateChanged) { |
Hendrikvg | 15:80b3ac2b8448 | 57 | pc.printf("Initiating turning LED red\n\r"); |
Hendrikvg | 15:80b3ac2b8448 | 58 | StateChanged= false; |
Hendrikvg | 15:80b3ac2b8448 | 59 | ledr = 0; |
Hendrikvg | 15:80b3ac2b8448 | 60 | ledg = 1; |
Hendrikvg | 15:80b3ac2b8448 | 61 | ledb = 1; |
Hendrikvg | 15:80b3ac2b8448 | 62 | R.start(); |
Hendrikvg | 15:80b3ac2b8448 | 63 | direction = 0; |
Hendrikvg | 15:80b3ac2b8448 | 64 | pc.printf("LED is now red!\n\r"); |
Hendrikvg | 15:80b3ac2b8448 | 65 | } |
Hendrikvg | 15:80b3ac2b8448 | 66 | if (command == 'g') { |
Hendrikvg | 15:80b3ac2b8448 | 67 | R.stop(); |
Hendrikvg | 15:80b3ac2b8448 | 68 | pc.printf("The LED has been red for %f seconds!\n\r", R.read()); |
Hendrikvg | 15:80b3ac2b8448 | 69 | CurrentState= green; |
Hendrikvg | 15:80b3ac2b8448 | 70 | StateChanged= true; |
Hendrikvg | 15:80b3ac2b8448 | 71 | } |
Hendrikvg | 15:80b3ac2b8448 | 72 | if (command == 'b') { |
Hendrikvg | 15:80b3ac2b8448 | 73 | R.stop(); |
Hendrikvg | 15:80b3ac2b8448 | 74 | pc.printf("The LED has been red for %f seconds!\n\r", R.read()); |
Hendrikvg | 15:80b3ac2b8448 | 75 | CurrentState= blue; |
Hendrikvg | 15:80b3ac2b8448 | 76 | StateChanged= true; |
Hendrikvg | 15:80b3ac2b8448 | 77 | } |
Hendrikvg | 15:80b3ac2b8448 | 78 | break; |
Hendrikvg | 15:80b3ac2b8448 | 79 | case green: |
Hendrikvg | 15:80b3ac2b8448 | 80 | if (StateChanged) { |
Hendrikvg | 15:80b3ac2b8448 | 81 | pc.printf("Initiating turning LED green\n\r"); |
Hendrikvg | 15:80b3ac2b8448 | 82 | StateChanged= false; |
Hendrikvg | 15:80b3ac2b8448 | 83 | ledr = 1; |
Hendrikvg | 15:80b3ac2b8448 | 84 | ledg = 0; |
Hendrikvg | 15:80b3ac2b8448 | 85 | ledb = 1; |
Hendrikvg | 15:80b3ac2b8448 | 86 | G.start(); |
Hendrikvg | 15:80b3ac2b8448 | 87 | direction = 1; |
Hendrikvg | 15:80b3ac2b8448 | 88 | pc.printf("LED is now green!\n\r"); |
Hendrikvg | 15:80b3ac2b8448 | 89 | } |
Hendrikvg | 15:80b3ac2b8448 | 90 | if (command == 'r') { |
Hendrikvg | 15:80b3ac2b8448 | 91 | G.stop(); |
Hendrikvg | 15:80b3ac2b8448 | 92 | pc.printf("The LED has been green for %f seconds!\n\r", G.read()); |
Hendrikvg | 15:80b3ac2b8448 | 93 | CurrentState= red; |
Hendrikvg | 15:80b3ac2b8448 | 94 | StateChanged= true; |
Hendrikvg | 15:80b3ac2b8448 | 95 | } |
Hendrikvg | 15:80b3ac2b8448 | 96 | if (command == 'b') { |
Hendrikvg | 15:80b3ac2b8448 | 97 | G.stop(); |
Hendrikvg | 15:80b3ac2b8448 | 98 | pc.printf("The LED has been green for %f seconds!\n\r", G.read()); |
Hendrikvg | 15:80b3ac2b8448 | 99 | CurrentState= blue; |
Hendrikvg | 15:80b3ac2b8448 | 100 | StateChanged= true; |
Hendrikvg | 15:80b3ac2b8448 | 101 | } |
Hendrikvg | 15:80b3ac2b8448 | 102 | break; |
Hendrikvg | 15:80b3ac2b8448 | 103 | case blue: |
Hendrikvg | 15:80b3ac2b8448 | 104 | if (StateChanged) { |
Hendrikvg | 15:80b3ac2b8448 | 105 | pc.printf("Initiating turning LED blue\n\r"); |
Hendrikvg | 15:80b3ac2b8448 | 106 | StateChanged= false; |
Hendrikvg | 15:80b3ac2b8448 | 107 | ledr = 1; |
Hendrikvg | 15:80b3ac2b8448 | 108 | ledg = 1; |
Hendrikvg | 15:80b3ac2b8448 | 109 | ledb = 0; |
Hendrikvg | 15:80b3ac2b8448 | 110 | B.start(); |
Hendrikvg | 15:80b3ac2b8448 | 111 | //direction = 1; |
Hendrikvg | 15:80b3ac2b8448 | 112 | speed = 255; |
Hendrikvg | 15:80b3ac2b8448 | 113 | pc.printf("LED is now blue!\n\r"); |
Hendrikvg | 15:80b3ac2b8448 | 114 | } |
Hendrikvg | 15:80b3ac2b8448 | 115 | if (command == 'r') { |
Hendrikvg | 15:80b3ac2b8448 | 116 | B.stop(); |
Hendrikvg | 15:80b3ac2b8448 | 117 | pc.printf("The LED has been blue for %f seconds!\n\r", B.read()); |
Hendrikvg | 15:80b3ac2b8448 | 118 | CurrentState= red; |
Hendrikvg | 15:80b3ac2b8448 | 119 | StateChanged= true; |
Hendrikvg | 15:80b3ac2b8448 | 120 | } |
Hendrikvg | 15:80b3ac2b8448 | 121 | if (command == 'g') { |
Hendrikvg | 15:80b3ac2b8448 | 122 | B.stop(); |
Hendrikvg | 15:80b3ac2b8448 | 123 | pc.printf("The LED has been blue for %f seconds!\n\r", B.read()); |
Hendrikvg | 15:80b3ac2b8448 | 124 | CurrentState= green; |
Hendrikvg | 15:80b3ac2b8448 | 125 | StateChanged= true; |
Hendrikvg | 15:80b3ac2b8448 | 126 | } |
Hendrikvg | 15:80b3ac2b8448 | 127 | break; |
Hendrikvg | 15:80b3ac2b8448 | 128 | default: |
Hendrikvg | 15:80b3ac2b8448 | 129 | pc.printf("Unknown or unimplemented state reached!\n\r"); |
Hendrikvg | 15:80b3ac2b8448 | 130 | } |
Hendrikvg | 15:80b3ac2b8448 | 131 | } |
Hendrikvg | 15:80b3ac2b8448 | 132 | |
Hendrikvg | 9:12b9865e7373 | 133 | void plus() |
Hendrikvg | 9:12b9865e7373 | 134 | { |
Hendrikvg | 9:12b9865e7373 | 135 | n++; // n=n+1 |
Hendrikvg | 15:80b3ac2b8448 | 136 | if (n>10) { |
Hendrikvg | 9:12b9865e7373 | 137 | n=10; |
Hendrikvg | 9:12b9865e7373 | 138 | } |
Hendrikvg | 15:80b3ac2b8448 | 139 | } |
Hendrikvg | 15:80b3ac2b8448 | 140 | |
Hendrikvg | 9:12b9865e7373 | 141 | void min() |
Hendrikvg | 8:d1794f225fff | 142 | { |
Hendrikvg | 9:12b9865e7373 | 143 | n--; |
Hendrikvg | 15:80b3ac2b8448 | 144 | if (n<0) { |
Hendrikvg | 9:12b9865e7373 | 145 | n=0; |
Hendrikvg | 7:d307e31f7391 | 146 | } |
Hendrikvg | 15:80b3ac2b8448 | 147 | } |
Hendrikvg | 7:d307e31f7391 | 148 | |
Hendrikvg | 15:80b3ac2b8448 | 149 | // main |
Hendrikvg | 15:80b3ac2b8448 | 150 | |
Hendrikvg | 15:80b3ac2b8448 | 151 | int main() |
Hendrikvg | 15:80b3ac2b8448 | 152 | { |
RobertoO | 0:67c50348f842 | 153 | pc.baud(115200); |
Hendrikvg | 15:80b3ac2b8448 | 154 | RE.attach(ES,3); |
Hendrikvg | 9:12b9865e7373 | 155 | BUT1.fall(plus); |
Hendrikvg | 9:12b9865e7373 | 156 | BUT2.fall(min); |
Hendrikvg | 15:80b3ac2b8448 | 157 | //lichtje.period_ms(20); // Wat is hier het praktisch nu van? |
Hendrikvg | 15:80b3ac2b8448 | 158 | while(true) { |
Hendrikvg | 15:80b3ac2b8448 | 159 | CheckCommandFromTerminal(); |
Hendrikvg | 15:80b3ac2b8448 | 160 | StateMachine(); |
Hendrikvg | 15:80b3ac2b8448 | 161 | lichtje.write(ain.read()); // duty cycle |
Hendrikvg | 9:12b9865e7373 | 162 | } |
Hendrikvg | 2:d9b0ebf3fcca | 163 | } |