Ciao ragazzi, vi volevo chiedere dei consigli. Molti giorni fa ho comprato un modulo bluetooth hc-05, che si collega con un’applicazione sviluppata con appInventor. Ho imparato ad usare il mio modulo bluetooth per ricevere dei dati ma non so come mandarli dal modulo alla mia app. Nel mio caso il mio listato, che vi lascio in allegato, deve muovere due motori di un cingolato avanti, dietro, destra e sinistra sulla base dei dati inviati dall’applicazione. Ma come detto in precedenza vorrei che il modulo inviasse del testo come “avanti” alla mia applicazione.
Così come li ricevi puoi anche trasmetterli ... hai una porta seriale aperta, quello che l'App invia viene inviato al BT e tu lo ricevi sulla seriale, quello che tu scrivi sulla seriale passa attraverso il modulo BT ed arriva all'App collegata.
Ah ... perché non usi la SoftwareSerial? Avresti la vera seriale libera per fare "debug" ed avresti una seconda seriale interamente dedicata al modulo BT. Non solo, il modulo BT collegato direttamente alla porta seriale di Arduino, nel 90% dei casi crea dei problemi (causa i livellidi tensione ... la vera Seriale spesso è ... più "permalosa" delle porte digitali).
Il modulo BT è solo un "canale" di trasferimento dei dati ... come dei fili che, virtualmente (via radio) collegano la tua porta seriale (sia TX che RX) alla tua applicazione che può trasmettere ed anche ricevere i dati
Beh, intanto no, usala la SoftwareSerial perché senza questa non hai modo di fare debug usando la seriale USB.
Passiamo anche a qualche piccolo consiglio generale.
pinMode(MDXR, OUTPUT);
pinMode(MDXN, OUTPUT);
Perché nella setup() hi messo due volte questa impostazione?
Serial.begin(96000); // for serial monitor output
96.000 baud? Hai uno zero di troppo, la velocità standard è 9600…
Poi hai i comandi indentati “a caso”, in alcuni punti anche a “scaletta”…
Devi cercare di indentare decentemente il codice, perché altrimenti diventa difficile comprenderlo (sia per te che sviluppi e fai debug, sia per noi). Nell’IDE premi Ctrl-T e te lo fa lui, poi cerca di mantenerlo in quel modo.
if (comando == 'A'){
avanti();
}
if (comando == 'B'){
dietro();
}
if (comando == 'C'){
stop1();
}
if (comando == 'D'){
sinistra();
}
if (comando == 'E'){
destra();
}
Sempre per migliorare la leggibilità, togli tutte le linee vuote inutili (lasciane solo UNA quando ci sono singoli blocchi di codice che vuoi “vedere” separati). Inoltre tutte queste if() puoi sostituirle da uno switch(), vedi come è più leggibile ed immediato;
switch (comando) {
case 'A':
avanti();
break;
case 'B':
dietro();
break;
case 'C':
stop1();
break;
case 'D':
sinistra();
break;
case 'E':
destra();
break;
}
Inizia con tutte queste cose a rivedere il tuo codice, poi posta nuovamente quello che avrai fatto, e vediamo se riesci a trovare come risolvere.