mag niet van hendrik D:

Dependencies:   mbed MatrixMath QEI HIDScope Matrix biquadFilter MODSERIAL FastPWM

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?

UserRevisionLine numberNew 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 }