Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed QEI HIDScope biquadFilter MODSERIAL FastPWM
Revision 15:80b3ac2b8448, committed 2019-09-23
- Comitter:
- Hendrikvg
- Date:
- Mon Sep 23 11:08:17 2019 +0000
- Parent:
- 14:20f11bb58244
- Child:
- 16:40183eeadb6d
- Commit message:
- Motor 2 richtingen en uit;
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Mon Sep 23 08:17:52 2019 +0000
+++ b/main.cpp Mon Sep 23 11:08:17 2019 +0000
@@ -1,10 +1,19 @@
-#include "mbed.h"
+#include "mbed.h"
+#include "MODSERIAL.h"
#include "FastPWM.h"
// Motor 1 aan zetten en uit zetten dmv button 1 en 2 werkt.
// Snelheid aansturen nog niet.
-Serial pc(USBTX,USBRX);
+MODSERIAL pc(USBTX, USBRX);
+DigitalOut ledr(LED_RED);
+DigitalOut ledg(LED_GREEN);
+DigitalOut ledb(LED_BLUE);
+Ticker RE;
+Timer R;
+Timer G;
+Timer B;
+
InterruptIn BUT1(D1);
InterruptIn BUT2(D0);
FastPWM lichtje(D3);
@@ -12,40 +21,143 @@
DigitalOut direction(D6);
DigitalOut speed(D7);
-float getal;
+// variables
+
+volatile char command = 'r';
+enum states {red, green, blue};
+
+states CurrentState = red;
+bool StateChanged = true;
+
+double numerator;
+double denominator;
+double brightness;
+
int n=5;
+float speedy;
+
+// functions
+
+void ES()
+{
+ command = 'r';
+}
+
+void CheckCommandFromTerminal(void)
+{
+ command = pc.getcNb();
+}
+
+void StateMachine(void)
+{
+ switch(CurrentState) {
+ case red:
+ if (StateChanged) {
+ pc.printf("Initiating turning LED red\n\r");
+ StateChanged= false;
+ ledr = 0;
+ ledg = 1;
+ ledb = 1;
+ R.start();
+ direction = 0;
+ pc.printf("LED is now red!\n\r");
+ }
+ if (command == 'g') {
+ R.stop();
+ pc.printf("The LED has been red for %f seconds!\n\r", R.read());
+ CurrentState= green;
+ StateChanged= true;
+ }
+ if (command == 'b') {
+ R.stop();
+ pc.printf("The LED has been red for %f seconds!\n\r", R.read());
+ CurrentState= blue;
+ StateChanged= true;
+ }
+ break;
+ case green:
+ if (StateChanged) {
+ pc.printf("Initiating turning LED green\n\r");
+ StateChanged= false;
+ ledr = 1;
+ ledg = 0;
+ ledb = 1;
+ G.start();
+ direction = 1;
+ pc.printf("LED is now green!\n\r");
+ }
+ if (command == 'r') {
+ G.stop();
+ pc.printf("The LED has been green for %f seconds!\n\r", G.read());
+ CurrentState= red;
+ StateChanged= true;
+ }
+ if (command == 'b') {
+ G.stop();
+ pc.printf("The LED has been green for %f seconds!\n\r", G.read());
+ CurrentState= blue;
+ StateChanged= true;
+ }
+ break;
+ case blue:
+ if (StateChanged) {
+ pc.printf("Initiating turning LED blue\n\r");
+ StateChanged= false;
+ ledr = 1;
+ ledg = 1;
+ ledb = 0;
+ B.start();
+ //direction = 1;
+ speed = 255;
+ pc.printf("LED is now blue!\n\r");
+ }
+ if (command == 'r') {
+ B.stop();
+ pc.printf("The LED has been blue for %f seconds!\n\r", B.read());
+ CurrentState= red;
+ StateChanged= true;
+ }
+ if (command == 'g') {
+ B.stop();
+ pc.printf("The LED has been blue for %f seconds!\n\r", B.read());
+ CurrentState= green;
+ StateChanged= true;
+ }
+ break;
+ default:
+ pc.printf("Unknown or unimplemented state reached!\n\r");
+ }
+}
+
void plus()
{
n++; // n=n+1
- direction = 1;
- if (n>10){
+ if (n>10) {
n=10;
- }
}
-
+}
+
void min()
{
n--;
- direction = 0;
- if (n<0){
+ if (n<0) {
n=0;
- }
}
+}
-int main() {
+// main
+
+int main()
+{
pc.baud(115200);
- lichtje=1;
+ RE.attach(ES,3);
BUT1.fall(plus);
BUT2.fall(min);
- while(true)
- {
- getal = 0.1*n*ain.read();
- speed = 0.1*n*ain.read();
- lichtje.period_ms(20); // 4 second period
- lichtje.write(getal); // duty cycle
- speed.write(getal);
- pc.printf("%3.3f%\n\r", getal);
-
+ //lichtje.period_ms(20); // Wat is hier het praktisch nu van?
+ while(true) {
+ CheckCommandFromTerminal();
+ StateMachine();
+ lichtje.write(ain.read()); // duty cycle
}
}
\ No newline at end of file