Go Down

Topic: Leggere stato pin di uscita e altro  (Read 1 time) previous topic - next topic

-zef-

Salve a tutti,
presentazioni a parte questo è il mio primo messaggio, sto iniziando la mia avventura con arduino scontrandomi fin da subito con un linguaggio a me ignoto, in tutte quelle parentesi graffe mi perdo, punti e virgola che perdo per strada ecc. ecc.
Ma veniamo alla domanda in oggetto, tramite la ricezione con la seriale accendo dei led ma poi più avanti nel programma ho bisogno di vedere se qui led sono accesi per abilitare altre uscite, provando con un If (digitalRead(pin)) l'unica cosa che ottengo è questo errore quando verifico il codice:

Code: [Select]
collect2.exe: error: ld returned 5 exit status

exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Mega or Mega 2560.


Ora la cosa che proprio non capisco è che quell'errore mi esce anche in altre circostanze, basta che aggiungo anche solo un delay(50) e compare il messaggio di errore, tolgo il delay() e la verifica va a buon fine oppure aggiungo altro codice con tutto il delay di prima e funziona. Cercando su internet mi sembra di capire sia dovuto a windows xp ma quello che non capisco è il perché a volte compare per un'istruzione e poi togliendola o aggiungendo altre scompare c'è modo per risolverla in modo definitivo?

Sempre su internet il fatto di poter leggere lo stato di una porta impostata come output mi sa che non è fattibile ma un vostro parere è sempre gradito :)

Per concludere spiego brevemente cosa sto cercando di fare.... Come scrivevo nella presentazione prima di arduino utilizzavo i pic, con essi avevo realizzato la centralina per muovere un braccio robotico realizzato interamente da me con motori passo passo, parte di quello che avevo fatto con i pic in settimane l'ho rifatto con arduino in pochi giorni, linguaggio di programmazione a parte è davvero molto versatile e produttivo lavorare con arduino.... comunque... ho questa scheda con 8 controller  per motori pp e in parallelo una con un led per indicare asse selezionato, step e dir, ora io devo prima selezionare i motori che voglio utilizzare e si accendono i led, ma poi quando muovo un joystick vedendo i led dei motori selezionati si devono anche abilitare gli Enable dei controller per i motori pp, ecco perché volevo poter leggere lo stato di un pin configurato come uscita, questa era una delle poche cose che a quanto i pic possono fare e arduino a quanto sembra no  :smiley-confuse:

 

gpb01

Sei su Windows vero ? ... purtroppo è un problema noto e verrà risolto dalla 1.8.2

Fai una cosa, vai sulla pagina di download e scaricati la "Hourly Buid" ... è una pre-release, ma è abbastanza stabile e puoi usarla per fare le tue prove.

Guglielmo
Search is Your friend ... or I am Your enemy !

brunello22

Quote
volevo poter leggere lo stato di un pin configurato come uscita, questa era una delle poche cose che a quanto i pic possono fare e arduino a quanto sembra no
Perchè dici questo ?
Un digitalRead(pin) ti riporta lo stato del pin, indipendentemente da come è impostato

-zef-

@Guglielmo
grazie per la risposta, si uso un vecchio portatile con windows xp (l'avevo scritto nel precedente post) ma quindi è un problema generale di windows e non legato specificamente a xp? Provo la pre-release come mi hai indicato, spero di risolvere in quanto tra gli errori che faccio io e quello a volte fare un passo avanti è davvero snervante

@Brunello
grazie per la risposta.... tra l'errore della verifica e il fatto che anche cercando su internet ormai ci avevo messo una pietra sopra sul leggere lo stato di  un pin impostato come Output, spero che con la pre-release riesco a farlo funzionare, altimenti pensavo di salvare i dati ricevuti dalla seriale su una variabile invece che accendere direttamente i led


-zef-

Salve,
ho seguito il consiglio di Guglielmo installano la pre-release di Hourly Buid e non solo il messagio di errore è scomparso ma è anche molto più veloce sia a compilare che a programmare la arduino mega, almeno adesso compaiono solo i messaggi di errore che sono io a scrivere :)
Grazie anche a Brunello in quanto ho ritentato con il leggere lo stato di un pin impostato come output e adesso funziona perfettamente... il programma piano piano prende forma

Go Up