Un sensore, due arduino?

Ciao a tutti. Avrei due problemi da risolvere. Il primo è questo: volevo sapere se era possibile usare uno stesso sensore con due schede arduino contemporaneamente, poichè ho finito le uscite di una scheda e vorrei usarne una seconda, però devo implementare la stessa funzione in entrambe. Si tratta di un sensore infrarossi di un telecomando. Il secondo problema riguarda un relè, che inizialmente con solo il programma per lui dedicato riuscivo ad attivarlo semplicemente collegando le uscite di arduino al relè. Adesso con il programma al completo, compreso di display ecc, non riesco più a farlo funzionare. Quando si attiva l'uscita sento un leggero rumore come di 'sforzo' ma il relè non scatta. Come se la corrente non fosse sufficiente. Ho provato anche con un transistor, ma il relè ancora non si attiva. è un relè che ho smontato da un termostato. Forse comprandone uno nuovo risolvo tutto?

1) un ricevitore di un telecomando infrarosso puoi collegarlo a delle entrate di 2 Arduini diverse. 2) Secondo me accendi e spegni di continuo il relé. Non puoi collegare direttamente un relé con un uscita ma devi usare un transistor. Ciao Uwe

In alternativa, potresti anche collegare il sensore ad una sola scheda ed implementare una comunicazione fra le due schede via softserial o i2c.

Se invece volessi far sì che quando ho un uscita attiva di un Arduino, mi si attiva contemporaneamente un uscita anche sulla altro Arduino devo usare sempre la comunicazione i2c? Ho provato a guardarla ma non ci ho capito molto dal punto di vista di programmazione. In questo caso non è sufficiente collegare (non so come) l'uscita del primo Arduino a un ingresso digitale del secondo Arduino?

Scusa, ma senza complicarti la vita, se sul secondo Arduino leggi l'uscita del primo e ... ti comporti di conseguenza ? Non è più semplice e veloce ?

Prendi il pin di uscita del primo, lo colleghi ad un pin in ingresso sul secondo e con una semplice digitalRead() vedi se è HIGH o LOW e fai quello che devi fare ...

Guglielmo

Certo, se ti basta comunicare solo un bit.

paulus1969: Certo, se ti basta comunicare solo un bit.

Lui parla di UN uscita ... e comunque lo fai anche per più pin ... nei limiti di quelli disponibili ;)

Guglielmo

Già... ma da due in poi credo sia meglio farsi un bel softserial ed usarne solo due per poter comunicare quello che si vuole :)

Cioè fatemi capire meglio. Io prendo l'uscita di una scheda e la collego direttamente all'ingresso dell'altro Arduino? Non servono resistenze? Se così fosse avevo già realizzato lo sketch, ma per sicurezza non avevo provato i collegamenti...

Perché vorresti aggiungere una resistenza? ? ? Gli ingressi di Arduino, sono ad alta impedenza quindi la corrente che assorbono è trascurabile ... anzi, praticamente nulla.

Ah ... ovviamente tra i due Arduino le masse devono essere in comune.

Guglielmo

Tornando invece al problema del relè. Neanche con il transistor riesco a farlo partire. Poi non ho capito perché se lo collego direttamente all’uscita lo continuo ad accendere e spegnere. Se l’uscita è a 0 perché dovrebbe accendersi?

Per pilotare un relè con un transistor segui lo schema allegato, in alto a sinistra.

Guglielmo

scheda_3.pdf (408 KB)

Grazie. Ma per la massa in comune basta portare entrambe le masse dei due Arduino sulla stessa 'fila' della basetta?

Giuso: Grazie. Ma per la massa in comune basta portare entrambe le masse dei due Arduino sulla stessa 'fila' della basetta?

Si, certo o con un filo colleghi il pin GND di uno con il pin GND dell'altro. Ma se sono alimentati dallo stesso alimentatore, hanno già le masse in comune ... se invece ci sono due alimentatori, allora occorre fare il collegamento.

Guglielmo

Ok ora mi funziona. Ma se il relè mi funziona anche collegandolo direttamente ad Arduino posso lasciarlo così o metto comunque i transistor? Già che ci sono né approfitto per un altra cosa. Nel mio programma faccio la lettura di temperatura da un termistore, però volevo sapere come fare per inserire dei delay senza che mi arrestino tutto il programma. Così come è adesso la temperatura varia troppo velocemente, quidni vorrei ‘rallentare’ o la lettura o la scrittura del valore. Se però metto un delay mi rallenta tutto il programma…potrei usare lesempio del blink without delay?

Con i relè è sempre meglio usare il transistor ... salvo non siano su una board che già lo include.

Per la tua seconda domanda, SI, devi usare la millis() ... studia prima QUI, poi QUI ed infine leggi anche QUI e QUI ... ;)

Guglielmo

Grazie Guglielmo!!! Se poi avete curiosità vi posto qualche foto della mia tesina per la maturità :slight_smile: