Domanda
Così sto facendo uno schizzo che richiede un numero a due cifre dalla porta USB, controlla lo stato del perno che corrisponde al numero, poi alterna il perno di on / off.
Per qualche ragione, quando invio 13 attraverso il monitor di serie Arduino, ottengo questo messaggio di nuovo:
Pin number is greater than 14, details:
490
51
541
Il che significa che l'IDE è l'invio di numeri strani, o Arduino sta elaborando loro torto. Qualcuno di voi vedere un problema perché questo non funziona correttamente?
Soluzione
Se si immette il ASCII i caratteri "1", quindi "3" poi Serial.read()
torneranno 49 e 51. Questo perché in ASCII tabella di caratteri "1" e "3" sono rappresentate dai numeri rispettivamente 49 e 51,. Se si desidera trovare il numero che l'utente ha digitato fuori devi convertirlo da ASCII .
Io non sono molto familiare con il linguaggio Arduino, ma ammesso che sia simile a C si possono trovare i cambiamenti necessari Qui .
Ho riscritto il programma in un altro modo, che possono essere più chiaro a Leggi .
Il '0' utilizzato nella sorgente è semplicemente un altro modo di dire "il numero utilizzato per rappresentare il carattere '0'", così è 48. In C-come le lingue '0' == 48
, '1' == 49
, ecc, ecc.