Salve a tutti! volevo chiedere un parere su un programmino che ho intenzione di fare per l'esame di stato e cioè voglio creare un piccolo braccio robotico(prototipo) che scriva una parola data in input, per fare ciò userò due semplici motorini passo passo nel quale uno servirà per muovere la penna verso l'alto e il basso e l'altro motorino per muovere la penna a destra e a sinistra. Per fare ciò sto utilizzando arduino mega. Inizialmente ho pensato di dare questa parola in input(tramite porta seriale) e metterla in una variabile, dopo fatto ciò volevo dividere questa parola in caratteri e il programma andava ad interrogare un database( switch case) e se la prima parola era ad esempio la C faceva quei determinati spostamenti e così via dicendo! Ma per semplificarmi le cose utilizzerò un Array! La domanda che vi pongo è: Con quale codice riempio l'array utilizzando la porta seriale? cioè voglio ad esempio scrivere CIAO e la mette automaticamente in questo array e dopo fatto ciò va a vedere all'interno dello switch case ogni singola lettera. Grazie
char caratteri[20];
byte indice = 0;
while (Serial.available()) caratteri[indice++] = Serial.read();
Attento, però, che per riconoscere una stringa in un array di caratteri, l'ultimo elemento della stringa deve essere '\0', ma da seriale non ti arriva quel carattere. Sta a te decidere quando e dove metterlo. Un esempio potremme essere questo:
char caratteri[20];
byte indice = 0;
unsigned long int ultimaRicez = 0;
while (Serial.available()) {
caratteri[indice++] = Serial.read();
ultimaRicezione = millis();
}
if (ultimaRicezione != 0 && millis() - ultimaRicezione >= 1000) {
//Se non ricevi nulla per un secondo hai ricevuto tutta la stringa
ultimaRicezione = 0;
caratteri[indice] = '\0';
indice = 0;
}
Se non sai cosa fa l'operatore ++ cerca su google "operatori unari"...
Gentilissimo! invece riguardo allo switch posso mettere all'interno della funzione switch : switch(caratteri[indice]){
case A: va tutto il movimento del braccio;
break; ecc...?? (ovviamente messo all'interno di un ciclo).
Certo. All'interno dello switch di deve essere un dato (in quel caso un char), che poi quel char sia parte di un array allo switch non gliene frega niente...
ok perfetto! grazie mille per avermi dedicato un po del tuo tempo se ho problemi posso chiederti qua?
Certamente...