programma commando motori

Dependencies:   mbed HCSR04 mbed-rtos

Revision:
1:009a67d6875f
Parent:
0:637e2ec8d164
Child:
2:7df0fc7d8d3c
diff -r 637e2ec8d164 -r 009a67d6875f main.cpp
--- a/main.cpp	Mon May 22 08:42:32 2017 +0000
+++ b/main.cpp	Tue May 23 10:46:00 2017 +0000
@@ -1,5 +1,9 @@
 #include "mbed.h"
 
+/*I pin utilizzati per TX e RX sono pin morfo, a livello hardware collegare il pin TX dell HC05 al PA_12 e quello RX a PA_11 ( a livello harware vanno invertiti )*/
+#define TX PA_11
+#define RX PA_12
+
 #define PWMB PC_7  //D9
 #define DIRB D8    //D8
 
@@ -12,6 +16,10 @@
 PwmOut motorApower(PWMA);
 DigitalOut motorAdirection(DIRA);
 
+Serial pc(USBTX, USBRX); //istanzio oggetto per utilizzo monitor seriale
+
+Serial device(TX, RX); //oggetto per gestione seriale bluethoot
+
 void avanti();
 void indietro();
 void destra();
@@ -20,16 +28,35 @@
 
 int main() {
     
+    unsigned char rx;
+    
     motorBpower.period_ms(10);
     motorApower.period_ms(10);
     
-    wait(2);
+    while(true){
+        if( device.readable() ) { //funzione simile alla Serial.available() di arduino, solo se il monitor e` attivo permette di utilizzarlo
+            rx = device.getc(); //funzione simile alla Serial.read() di arduino, legge il carattere dal seriale del bluethoot
+            pc.printf("recived: %c \r\n",rx); //stampa a video
+            switch(rx){ //in base alla lettera che riceve sa cosa deve fare
+                case 'a':
+                    avanti();
+                    break;
+                case 'b':
+                    indietro();
+                    break;
+                case 'c':
+                    destra();
+                    break;
+                case 'd':
+                    sinistra();
+                    break;
+                case 'e':
+                    fermo();
+                    break;
+            }
+        }
+    }
     
-    avanti();
-    wait(2);
-    fermo();
-    
-    while(true);
 }
 
 void avanti()