programma commando motori
Dependencies: mbed HCSR04 mbed-rtos
main.cpp
- Committer:
- Wonderjack996
- Date:
- 2017-05-23
- Revision:
- 1:009a67d6875f
- Parent:
- 0:637e2ec8d164
- Child:
- 2:7df0fc7d8d3c
File content as of revision 1:009a67d6875f:
#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 #define PWMA PB_4 //D5 #define DIRA D4 //D4 PwmOut motorBpower(PWMB); DigitalOut motorBdirection(DIRB); 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(); void sinistra(); void fermo(); int main() { unsigned char rx; motorBpower.period_ms(10); motorApower.period_ms(10); 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; } } } } void avanti() { motorBdirection = 1; motorAdirection = 0; motorBpower.pulsewidth(0.01); // 100% motorApower.pulsewidth(0.01); // 100% } void indietro() { motorBdirection = 0; motorAdirection = 1; motorBpower.pulsewidth(0.01); // 100% motorApower.pulsewidth(0.01); // 100% } void destra() { motorBdirection = 0; motorAdirection = 0; motorBpower.pulsewidth(0.01); // 100% motorApower.pulsewidth(0.007); // 70% } void sinistra() { motorBdirection = 1; motorAdirection = 1; motorBpower.pulsewidth(0.007); // 100% motorApower.pulsewidth(0.01); // 100% } void fermo() { motorBpower.pulsewidth(0); // fermo motorApower.pulsewidth(0); // fermo }