Buon sabato,
eccomi con un'altra delle mie idee strampalate! Devo smetterla di andare a camminare nei boschi, l'aria buona produce idee malsane
Obiettivo
pilotare una striscia led alternativamente da due Arduino senza utilizzare un deviatore meccanico (nel senso interruttore manuale).
L'idea
Arduino A comanda una striscia led.
Al bisogno, Arduino A:
smette di inviare dati alla striscia
comanda a X (L1) di ricevere i dati da Arduino B (devia la linea dati)
comanda ad Arduino B (L2) di inviare dati alla striscia
Al bisogno, Arduino A:
comanda ad Arduino B (L2) di non inviare dati alla striscia
comanda a X (L1) di ricevere i dati da Arduino A (devia la linea dati)
invia dati alla striscia
Di seguito uno schemino
Quesito
Si può fare? Se si, come? Cos'è X?
Ho provato a fare qualche ricerca, ma non ho trovato nulla di utile, a parte questo, ma non è proprio lo stesso principio.
Nota
Chi ha seguito i miei ultimi esperimenti, ha sicuramente capito cosa voglio fare, comunque il problema è che non posso più aggiungere funzionalità ad Arduino A, quindi pensavo di utilizzare un secondo Arduino.
Chiaramente potrei sostituire Arduino con altro, ma questo mi sembra un buon esperimento, sempre che si possa fare, in ogni caso non è un upgrade fondamentale al progetto.
Tenete presente le mie conoscenze, e sentitevi liberi di dirmi di lasciar perdere, la cosa non mi offende affatto
Un qualsiasi multiplexer digitale ... gli dai quale ingresso buttare in uscita e colleghi i due pin di dati a due differenti ingressi. Ah ... immagino parli di una striscia di LED intelligenti tipo WS2812 che comandi con UN pin
Ho appena letto questo, mi sembra anche molto semplice da usare, ma trovo solo moduli a 16 canali!!
Per quel che mi serve mi basterebbe un 2x1, al max 4x1, continuo a cercare.
In merito alla striscia... immagini bene, un cavo dati
Per chiarire, io ho bisogno di due ingressi e una uscita, quindi mi basterebbe un solo pin come selettore.
L'SN74LS151 ha tre pin per la selezione (avendo otto ingressi), facendo riferimento alla tabella di verità, ipotizzo di poter avere questa configurazione:
uso D0 e D7 come ingressi, Y come uscita e collego i pin A, B e C (selettori) ad un unico pin arduino in modo da poter utilizzare le sole combinazioni LLL (D0) e HHH (D7), questo perchè immagino di non poter lasciare liberi due dei selettori.
Corretto? o ho detto una sciocchezza?
Basterebbe fare una logica OR: le due uscite sono collegate insieme attraverso due diodi e poi c'è una resistenza di pulldown: quello che è attivo passa. Se necessario, puoi aggiungere un buffer (o due inverter in cascata) CMOS serie 40 o serie 74.
Al posto di tutto quanto detto, puoi anche usare una sola porta OR (o, se più facilmente disponibili, due NAND, di cui una usata come inverter in uscita, forzando alta l'uscita dell'Arduino che è bloccato).
Puoi usare un 74LS32 o CD4071, oppure puoi usare un 74LS02 o CD4001 invertendo l'uscita con una delle 3 porte rimanenti.
Tra l'altro, se metti il pin di Arduino che è bloccato in alta impedenza impostandolo come ingresso, puoi collegarli brutalmente in parallelo! 8) Si fanno interi bus in questo modo...
Si, ma immagino lui utilizzi due istanze di qualche libreria per pilotare i Neopixel e quindi ... meglio avere la separazione totale che offre un mux rispetto alle altre soluzioni ... non si sa mai cosa combinano le librerie sui pin
gpb01:
Si, ma immagino lui utilizzi due istanze di qualche libreria per pilotare i Neopixel ...
Ovviamente, una libreria per ogni Arduino
Datman:
Le librerie: gioie e dolori degl'ignari sperimentatori!
sai che per me è un passatempo, a volte leggo e a volte gioco con Arduino
e poi, sono uno un programmatore, le librerie, se le conosci, sai anche come usarle, e se non ci sono, te le crei
Ho già ricevuto l'SN74LS151, spero di riuscire a fare qualche test nel fine settimana.
Adesso nasce un altro dubbio
(Non apro un altro un altro thread, ma se preferisci, lo sposto).
"Arduino A" comanda ad "Arduino B" (L2) di inviare/non inviare dati alla striscia, perchè vorrei evitare di di far lavorare "Arduino B" inutilmente
Visto che già uso AltSoftSerial, pensavo di creare un'altra istanza per la sola trasmissione, ma pensavo male!
AltSoftSerial può usare solo i pin 8 e 9 che sono già utilizzati, ed in ogni caso non prevede la sola trasmissione, quindi ne dovrei usare due pin!
Visto che io devo solo trasmettere due comandi (start/stop), potrei collegare tra loro due pin?
Naturalmente il GND è già in comune tra i due Arduino (stessa alimentazione), e quindi, indicativamente qualcosa del genere:
Metti in serie una resistenza da 470Ω così, anche se dovessi sbagliare qualche cosa, NON potresti mai far scorrere più corrente di quanta al massimo ne regge un pin
gpb01:
Metti in serie una resistenza da 470Ω così, anche se dovessi sbagliare qualche cosa, NON potresti mai far scorrere più corrente di quanta al massimo ne regge un pin
Grazie!
Effettivamente, il software lo scrivo io, e dovrei essere in grado di non invertire il flusso