Buongiorno a tutti , mi sono avvicinato da poco ad Arduino e sto sviluppando il mio primo progetto e questo è il mio primo Topic .
Sto utilizzando due Arduino Mega 2560 Rev3 originali ( ci tengo a precisarlo) in quanto il numero di ingressi e uscite del progetto sono maggiori di quelle contenute in una sola scheda ,in entrambe le schede utilizzo i canali sda scl dove ho collegato una scheda I2C per controllare uno schermo LCD 4*20 ( questo mi permette con lcd.print di avere un controllo visivo di quello che sto facendo) .
Ho la necessità che quando , ad un certo ingresso della scheda A, viene riconosciuto un valore Alto (+5v) , devo comunicare alla scheda B che dovrà fare una certa azione , ad esempio sulla scheda A all'ingresso 32 ci sarà un livello alto significa che c'è un allarme e va comunicato alla scheda B che riconoscendo questa azione farà lampeggiare determinati led collegati a varie uscite , allo stesso tempo se la scheda A all'ingresso 20 ci sarà un livello alto dovrà comunicare alla scheda B portare tutte le uscite ad un livello basso .
Credo di aver capito di utilizzare i canali TX e RX con i comandi Serial.read , Serial.print, Serial.available
cioè vorrei inviare dalla scheda A alla B due stringhe "Allarme" e "Spegni tutto" e dato che la RX della scheda B è una sola dovrà riconoscere le due stringhe per poter agire in maniera differente
ho cercato nei vari topic di trovare qualcosa che mi potesse aiutare ma non ho trovato quello giusto , sapreste indicarmi dove posso guardare per avere risposte ? non vi chiedo di scrivermi il programma , non ci sarebbe gusto in questo , devo capire.
Spero di essermi spiegato correttamente sulla mia necessità.
Grazie a tutti per la disponibilità
Prova a guardare se QUESTA mia libreria fa al caso tuo... è presente su GitHub ed installabile dal Library Manager di Arduino.
Guglielmo
Grazie mille Guglielmo , proverò la sua strada ... le comunicherò successo o insuccesso .
Curiosità... Che progetto è per superare i pin di una mega? Sono veramente tanti...
Buonasera Fratt , effettivamente se non erro Arduino mega ha 54 ingressi/uscite e sono veramente tante ... momentaneamente ( perchè ancora in fase di progettazione ) sto utilizzando circa 70 ingressi/uscite quindi ho la necessità di utilizzare due Arduino Mega . Dato che non voglio utilizzare le analogiche per poi sfruttarle come ingressi di lettura sensori ( è il mio primo progetto e spero di aver capito qualcosa ma ne dubito) la scelta è ricaduta su due Mega . Sicuramente dovrò metterne un terzo per sezionare il progetto da qui la necessità di capire come far comunicare due o più Arduino senza utilizzare SDA e SCL che utilizzo con I2C per semplificare la scrittura su LCD ....
Guarda che il I2C è un bus e puoi cntemporaneamente collegarci più cose (ciascuna con il suo indirizzo univoco), come il tuo LCD ed una board MEGA che fa da slave I2C e fai parlare le due poard via I2C (che è sicuramente più veloce).
Guglielmo
In che senso?
Sulla MEGA tutti i pin analogici possono tranquillamente essere utilizzati come pin digitali ...
... difatti i vari pin possono andare o alle varie porte o al convetritore ADC.
Guglielmo
capisco quello che intende dire Guglielmo ma essendo il mio primo progetto devo capire tante cose su Arduino , sono veramente alle prime armi quindi vado un pò a caso ma devo capire , ho collegato le uscite SDA e SCL alla scheda I2C per scrivere su LCD , quindi mi pongo la domanda di come poter usare i medesimi pin se già sono collegati ad un altra scheda , conosco il funzionamento della tecnologia Bus , praticamente sono in serie ed ognuno ha il proprio codice di riconoscimento , con Arduino ho collegato tramite i classici Jumper le due schede mega e I2C , quindi come posso collegare alle medesime uscite due o più schede ? ...... non conoscendo questo modo di lavorare ho pensato di utilizzare una trasmissione seriale con RX TX per comunicare due eventi ( che in futuro potrebbero essere di più) , comunque il cercare di capire e la curiosità rimangono sempre un bel divertimento per la mente .
questo è una parte di cui mi ero informato , potevo benissimo utilizzare gli ingressi/uscite analogiche come digitali .... ma avendo già bisogno di più ingressi e uscite delle complessive di una scheda perchè utilizzare le analagiche come digitali se poi un domani le vorrò sfruttare come analogiche a cui collegare dei sensori che lavorano in base alla tensione ? a volte parto con un concetto che potrebbe essere completamente sbagliato , ma sono qui per capire , grazie mille dell'interessamento
Ma esattamente cos vuoi fare?
Perché è un bel casino partire da zero con oltre 100 tra ingresdi e uscite è una bella scommessa
No, in parallelo. Tutti gli SDA collegati tra loro, tutti gli SCL collegati tra loro. I segnali sono bidirezionali e composti da chiusure verso GND generate dall'unità che in quel momento deve trasmettere. Si tratta di un bus seriale sincrono perché è presente il clock (SCL) generato dal master.
Grazie a tutti e come ho già detto mi manca la teoria quindi cercherò di capire , studiando seguendo le vostre indicazioni.
Di nuovo grazie per i vostri consigli.
effettivamente partire da zero non è facile , ho già provato ed è funzionante ho solo da capire come far comunicare due schede , comunque è un progetto in BBT .
Bbt big bang theory
Bbt galleria base del brennero
Bbt...
Non sei stato chiaro
BBT è un progetto in bassissima tensione inferiore ai 50 v ..... , scusa pensavo lo sapessi .
che comunque non spiega "cosa" ne "perchè"
Quindi riepilogando, il problema è la carenza di pin I/O della scheda MEGA.
I principali protocolli di comunicazione seriale sono:
- Seriale 232 TTL - 2 pin RX e TX
- I2c o TwoWire - 2 pin A4 e A5. Protocollo master multi-slave
- SPI 4 pin MISO, MOSI, SCK e SS. SS sta per Slave Select. Protocollo master multi-slave
Tra due MEGA con SPI e I2c una MEGA deve essere il master il quale può impegnare il bus quando gli pare in trasmissione. L'altra MEGA è lo slave il quale non può impegnare il bus quando gli pare ma si limita a rispondere alla interrogazione del Master.
Esistono in commercio dei port expander che accettano in ingresso le informazioni via SPI o I2c e le trasformano in I/O parallele. Questi dispositivi non sono intelligenti come la MEGA.
Se decidi per i port expander userai una solo scheda MEGA connesso a uno più mcp23017. Ad esempio 2 moduli mcp23... espandi gli I/O a 32 pin.
Ciao.
vero, ma serve sempre sapere "cosa" deve fare
tipicamente la velocità richiesta in trasmissione e la distanza tra le varie macchine
perché scegliere SPI su alcuni metri è da suicidio
ora non ricordo le distanze IIC, ma anche un metro e' troppo
... in effetti ... l'OP continua a parlare di un grande numero di I/O, ma non spiega COSA deve fare così che magari gli si possa suggerire una strada migliore
Guglielmo