Grazie per i tuoi video, sto premendo su tutte le pubblicità che mi escono nella speranza di farti avere qualche cosa per il tuo tempo. Veramente grazie ancora!
I know im asking the wrong place but does someone know a trick to get back into an Instagram account? I was stupid forgot my login password. I love any assistance you can give me
@Rocco Ali I really appreciate your reply. I found the site through google and I'm in the hacking process now. I see it takes quite some time so I will reply here later when my account password hopefully is recovered.
Molto interessante e ben spiegato. Domanda: i 2 comandi Wire.requestFrom(8, 6); e Wire.beginTransmission(8) sono utilizzabili solo sul Master, o possono essere utilizzati anche sullo Slave, ovvero su quest'ultimo vanno usati solo i corrispettivi 2 comandi Wire.onRequest(requestEvent); e Wire.onReceive(receiveEvent); ? Molte grazie.
I metodi Wire.requestFrom e Wire.beginTransmission sono comandi per il Master, in quanto è sua responsabilità comandare le conversazioni con i vari servo collegati.
Interessante ! Ma è possibile far assegnare l'indirizzo bus ic2 in modo che il sistema diventi automatico e modulare senza dover intervenire sul codice? Non ho trovato nulla in merito.
Puoi salvare l'indirizzo in una variabile e successivamente prevedere la sua modifica tramite degli input ricevuti dall'esterno (per esempio inviando l'indirizzo sul monitor seriale)
Ciao, i tuoi tutorial sono sempre ben esposti e spiegati in modo molto esauriente. Mi chiedevo però quale sia la distanza massima (metri) per collegare tue arduino con il sistema I2C. Grazie
Il protocollo I²C è stato ideato per la comunicazione locale tra i componenti e quindi non ha grande portata. Per la comunicazione su lunga distanza potresti prendere in considerazione per esempio Ethernet.
Si, nella puntata n° 12 del tutorial di Arduino su questo canale viene mostrato come collegare il classico display LCD ad Arduino grazie ad un'interfaccia I²C.
ciao scusa una domanda. quando scrivi nella decima frase Wire.requestFrom(7, 2); il 7 è il numero dei 127 collegamenti? cioè deve essere tra 1 e 127? grazie mille.
Si, il primo parametro del metodo "Wire.requestFrom" è l'indirizzo I²C dello slave. Il numero scelto deve corrispondere con il numero impostato nello slave nel metodo "Wire.begin".
Ciao. Come mai quando assegni allo SLAVE l'indirizzo di comunicazione parti dal numero sette e non magari dal numero uno??? è una regola o cos'altro??? salutoni e complimenti per il tutorial.
Ciao, l'indirizzo dello slave può essere scelto a piacere, quindi è sufficiente scegliere un numero qualsiasi inferiore a 128 e che non è usato da nessun altro slave sullo stesso bus I²C.
Interessante video, è vicino a quanto mi serviva, ho però una domanda E spero tu possa aiutarmi nello slave ho due sensori di temperatura, Come mi consigli di trasferire al master i due dati distinti? Grazie
Puoi inviarli tramite un unico messaggio, concatenando i due dati all'invio e successivamente separandoli alla ricezione. Oppure puoi inviare messaggi distinti, utilizzando un prefisso per capire da quale sensore è arrivato il dato.
ciao bel video , ti volevo chiedere potre inviare il valore di una variabile? cioè io leggo il valore di un potenziometro poi ho applicato un delay e rileggo il potenziometro dopo di che faccio la differenza tra i due valori e quindi la variabile mi varia in funzione della velocita di rotazione, poi senza dilungarmi attiva un servo e lo stesso valore va ad un ponte ad h per un motorino , ti devo controllare altri 2 servi e motorini pensavo di usare un arduino per servo , senza usare piu potenziometri posso inviare il valore della variabile senza aggiungere delay per non rallentare ulteriormente il programma? grazie ancora
salve, volevo chiedere se esiste un modo per far comunicare due schede arduino senza connessione. mi servirebbe creare una sveglia programmabile tramite un altro apparecchio non collegato tra di loro. è possibile?
Si, è possibile. Puoi collegare il pulsante al master e inviare i comandi "accendi" e "spegni" non a intervalli regolari come mostrato nel video ma in base allo stato del pulsante.
@@TechMaker mi scusi se approfitto ma lo slave a sua volta può trasmettere al master? Cioè schiaccio pulsante in master, aziono relè in slave e un contatto del relè posso usarlo per mandare un segnale di avvenuta chiusura al master e accendere un led? Grazie ancora
È sempre il master a prendere l'iniziativa. Tuttavia dopo aver inviato il comando, puoi inviare la richiesta di risposta allo slave, per ricevere lo stato di esecuzione del comando.
Salve . Bel video complimenti . Ho una domanda quando compilo il codice restituisce "no matching function for call to 'onReceive(void (&)())' " per lo slave mentre per il master " no matching function for call to 'TwoWire::write(String&)'" . Cosa può essere?
Ciao un altra cosa nel slave quando metti comando+=char ( Wire.read()); si poteva anche fare in questo modo: char s; s= Wire.read(); comando +=s; grazie
Ciao Italian Tech Proect! Complimenti per i video, molto ben fatti! Avrei bisogno di qualche info. Ho un laboratorio fai da te con alcune macchine autocostruite comandate da schede arduino. Come ben saprete per farle funzionare bisogna collegare le schede singolarmente al pc e quindi usarle una alla volta. Avendo bisogno di fare più lavori allo stesso tempo ed avendo l'intenzione di fare un upgrade del mio laboratorio, pensavo di unire le macchine (arduino) ad un unica scheda di controllo arduino "centrale" programmando e comandando le schede (da una postazione fissa) in modo tale da farle andare in modo autonomo allo stesso tempo. Con il sistema I2C è possibile farlo? e se sì, come potrei impostare il lavoro? Ti ringrazio in anticipo!
Ciao, avendo più porte USB sul computer è possibile collegare più schede di Arduino allo stesso tempo (con porte USB limitate, si possono comunque comprare degli sdoppiatori USB in modo da aumentare il numero di ingressi). Inoltre, se non viene usata la comunicazione seriale, una volta trasferito lo sketch sulla scheda, non è indispensabile tenerla collegata al computer, ma è sufficiente alimentarla, per esempio con delle batterie, per farla funzionare. In ogni caso puoi usare il protocollo I²C per creare una rete, impostando Arduino "centrale" come master e tutte le altre schede di Arduino come slave, ognuna con il proprio compito da svolgere. Il master lo colleghi al computer tramite cavo USB, in modo da poter inviare dei comandi, mentre tutti gli slave non devono necessariamente essere collegati al computer. Se usi più di una fonte di alimentazione (per esempio USB e le batterie), devi ricordarti di collegare la messa a terra in comune tra tutte le schede collegate.
Italian Tech Project ok! tra questi (progetti) pensavo ad un programma di diagnostica dei sistemi come verifica del buon funzionamento delle componenti sensorie e cablaggio, dici che può essere vincente il sistema i2c?
Ciao! Grazie sempre per le lezioni! Finora nessun problema, ma in questa lezione ne riscontro 2! Premetto che sto utilizzando Tinkercad come simulatore e due schede Arduino Uno R3 perchè non presente la scheda Arduino Mega. 1) Nel primo esempio, il master riceve correttamente il messaggio "No", ma continua così anche premendo il pulsante; 2) Nel secondo esempio invece mi ritorna questo errore: "invalid conversion from 'void (*)()' to 'void (*)(int)' [-fpermissive]", segnando come errore la riga del comando "Wire.onReceive" e interrompendo così la compilazione. Questi errri li fa anche usando i tuoi sketch (pensando fosse un mio problema di scrittura del codice). Quale potrebbe essere il problema? Grazie per la disponibilità!
Verifica che il numero del pin del pulsante sia giusto nello sketch. Per la segnalazione "invalid conversion from 'void (*)()' to 'void (*)(int)' [-fpermissive]" è solo un warning. Per evitarlo puoi aggiungere un parametro int alla dichiarazione della funzione "ricevi". Il parametro rappresenta il numero di byte letti.
Ciao, complimenti per il video e più in generale per il corso. Avrei una domanda da porti. Premetto che mi sto convincendo a prendere Arduino guardando proprio questi video quindi non ce l'ho ancora, ma la mia domanda è: se volessi comunicare sul bus non un valore singolo o una stringa bensì un vettore, array lista o comunque qualsiasi cosa non sia appunto una stringa o un valore numerico, lo posso fare? I2c me lo permette? Grazie mille in anticipo!
Si, con il protocollo I²C si possono trasmettere anche dei dati che non sono stringhe. Tuttavia la comunicazione I²C si basa sulla trasmissione dei byte, quindi chi riceve deve saper interpretare i byte ricevuti, per poter ricostruire le informazioni trasmesse.
Molto utile, ma se volessi caricare uno sketch da pc e poi fare eseguire i comandi dopo scollegato la scheda dal pc stesso senza I2C è indispensabile avere un display e una scheda SD?
Una volta caricato lo sketch su Arduino, la scheda è in grado di funzionare autonomamente senza la necessità di essere collegata ad un computer, e non sono indispensabili né un display né una scheda SD (che ovviamente possono essere utilizzati se si vuole). L'unica cosa di cui la scheda ha bisogno è l'alimentazione, quindi se Arduino non è collegato ad un computer, serve fornirla separatamente attraverso un jack di alimentazione oppure il pin VIN. In entrambi i casi la tensione deve essere tra i 7V e 12V.
@@TechMaker Grazie, ho provato un collegamento con alimentatore 12V 5A e non succede niente, con alimentatore 12V 200 mA o miei led lampeggiano. Forse dovrei cercare una via di mezzo con l'uso di qualche resistenza?
In alcuni linguaggi di programmazione, come Java, è necessario utilizzare il metodo equals() per confrontare le stringhe. Negli sketch Arduino, invece, l'operatore == è equivalente a equals().
@@TechMaker perfetto, grazie. Credevo fosse come in Java o il C++. Ho ricontrollato la documentazione ed effettivamente si può usare == che è identico al metodo equals. Buono a sapersi, si risparmia codice e tempo.
ciao... i tuoi tutorial sono veramente fatti bene per chi è alle prime armi come me... ho una domanda da farti... ho eseguito tutto alla perfezione ma non riesco ad assegnare la scheda Arduino mega allo slave se sul master ho assegnato Arduino uno o viceversa... cioè se assegno una scheda ad uno sketch, me la assegna anche all'altro di conseguenza... come posso risolvere questo problema? grazie
Prova ad aprire una nuova istanza dell'IDE di Arduino, non dal pulsante "Nuovo" all'interno del software, ma cliccando di nuovo sul lanciatore nel sistema operativo.
Come sempre, tutto ben spiegato. Attendo un tutorial sulla trasmissione di stringhe su più display dello stesso tipo collegati in I2C su una rete che comprende due Arduini (master/slave) ovviamente SE POSSIBILE. Grazie!
Ciao complimenti bel video chiaro come sempre, però mi sfugge una cosa nel setup nel slave la funzione Wire.onRequest (rispondi) perché nel setup non viene avviato 1 sola volta avvio? Wire.onRequest e la richiesta master che la fa ogni delay (500) ? grazie
Agostino Russo, quando chiami il metodo "Wire.onRequest" (lo stesso vale per "Wire.onReceive"), la funzione passata come parametro non viene eseguita immediatamente, ma viene creato soltanto un legame tra l'evento e la funzione da chiamare. In questo modo, tutte le volte quando il master chiama "Wire.requestFrom", l'esecuzione del loop dello slave viene interrotta e viene eseguita la funzione associata a quell'evento, ovvero la funzione impostata con il metodo "Wire.onRequest".
Davvero, grazie! È che la questione è sorta poiché ci sono alcuni moduli I2C (per display LCD ad esempio) sui quali ponticellando con lo stagno le opportune piazzole è possibile cambiare l'indirizzo mentre altri tipi di display non permettono questa scelta. Attendo il prossimo episodio!!!
Italian Tech Project ok grazie, in pratica quello che ho capito che la funzione Wire.onRequest(rispondi) nel setup del slave e un collegamento con il master, in teoria nel slave se c'era qualche codice nel loop esso veniva eseguito normalmente,ma nel momento che nel master viene eseguito il Wire.requestFrom ,esecuzione del loop slave si blocca e passa la funzione void rispondi(). Giusto? mi scuso sé non uso proprio un linguaggio tecnico, che sto imparando insieme a voi... grazie mille 😊
CIAO, MOLTO BELLI I TUOI TUTORIAL... SONO LUCA NON ESPERTO NEL CAMPO, MA SAREI INTERESSATO A CREARE UN CIRCUITO CHE POSSA ACCENDERE E SPEGNERE SIA DA PULSANTE CHE DA BLUETOOTH , PENSI SIA FATTIBILE? GRAZIE E ANCORA COMPLIMENTI
Si, è possibile gestire il LED sia da pulsante che da bluetooth. Prossimamente ci saranno anche dei video tutorial sulla comunicazione bluetooth con Arduino.
@@TechMaker ti ringrazio per la risposta, di fatto ho 2 ds18b20 in 2 slave che inviano la temperatura, simulando un guasto ho notato che inviano -127 ma il master riceve +129, mi piacerebbe sistemarlo. invio i dati come interi perchè non interessato ai decimali della temperatura.
Usando I2C, i messaggi vengono scambiati tramite l'invio di byte. Per inviare altri tipi di dati, diversi dai caratteri, è necessario convertirli in byte. Ad esempio, per inviare un numero intero puoi aggiungere, lato trasmettitore: int value = -127; Wire.write((byte *)&value, sizeof(value)); mentre sul lato ricevitore: int value = 0; Wire.requestFrom(address, sizeof(value)); while (Wire.available() < sizeof(value)); Wire.readBytes((byte *)&value, sizeof(value)); Serial.println(value);
ciao funziona tutto bene ti volevo chiedere vorrei attaccare dei sensori alla scheda slave DS18B20 per verificare temperatura acqua caldaia mi potresti fare un tutorial quando puoi per spiegare come leggere i sensori grazie di nuovo
Alcuni sensori sono già stati affrontati nella serie "Sensori con Arduino". Pian piano cerchiamo di aggiungerne altri. Se ti va puoi diventare un Patreon di questo canale, perché così puoi darci una mano a pubblicare nuovi video tutorial.
Ogni volta che devo inviare dati dal Master allo slave, sotto la condizione "if" di un pulsante (ad esempio) devo sempre scrivere: "Wire.beginTransmission(indirizzo), Wire.write("messagio") e Wire.endTransmission()" ? Devo sempre inizializzare la comunicazione tra Master e Slave ? Se devo inviare lo stesso dato a due slave ripeto due volte: Wire.beginTransmission(indirizzo 1) e Wire.beginTransmission(indirizzo 2) ? Le procedure sono sempre queste ? Ci sono metodi più efficaci ? Grazie ! ;D PS ! Utilissimi i tuoi video ! Spieghi da DIO ! :D ♥♥♥
Sarebbe bello usarli per monitorare le apertura finestre con due fili evitando passaggi di molti fili nelle canalone. Ad ogni led il nome della finestra è collegarlo poi all'antifurto.
Grazie per i tuoi video, sto premendo su tutte le pubblicità che mi escono nella speranza di farti avere qualche cosa per il tuo tempo. Veramente grazie ancora!
Grazie, siamo molto contenti che i video ti siano piaciuti.
Grazie 🌟
Grazie a te per aver guardato il video.
Grazie spiegazione molto chiara e dettagliata :-)
Grazie per i complimenti.
I know im asking the wrong place but does someone know a trick to get back into an Instagram account?
I was stupid forgot my login password. I love any assistance you can give me
@Kyle Jayden Instablaster :)
@Rocco Ali I really appreciate your reply. I found the site through google and I'm in the hacking process now.
I see it takes quite some time so I will reply here later when my account password hopefully is recovered.
@Rocco Ali It worked and I finally got access to my account again. I am so happy:D
Thanks so much, you saved my account :D
Molto interessante e ben spiegato. Domanda: i 2 comandi Wire.requestFrom(8, 6); e Wire.beginTransmission(8) sono utilizzabili solo sul Master, o possono essere utilizzati anche sullo Slave, ovvero su quest'ultimo vanno usati solo i corrispettivi 2 comandi Wire.onRequest(requestEvent); e Wire.onReceive(receiveEvent); ? Molte grazie.
I metodi Wire.requestFrom e Wire.beginTransmission sono comandi per il Master, in quanto è sua responsabilità comandare le conversazioni con i vari servo collegati.
Interessante ! Ma è possibile far assegnare l'indirizzo bus ic2 in modo che il sistema diventi automatico e modulare senza dover intervenire sul codice? Non ho trovato nulla in merito.
Puoi salvare l'indirizzo in una variabile e successivamente prevedere la sua modifica tramite degli input ricevuti dall'esterno (per esempio inviando l'indirizzo sul monitor seriale)
@@TechMaker grazie mille proverò ad approfondire.
Ciao, i tuoi tutorial sono sempre ben esposti e spiegati in modo molto esauriente. Mi chiedevo però quale sia la distanza massima (metri) per collegare tue arduino con il sistema I2C. Grazie
Il protocollo I²C è stato ideato per la comunicazione locale tra i componenti e quindi non ha grande portata. Per la comunicazione su lunga distanza potresti prendere in considerazione per esempio Ethernet.
complimenti per il tutorial. Se acquisto la scheda i2c posso collegarla direttamente al mio display classico visto nel vostro tutorial numero 10 ?
Si, nella puntata n° 12 del tutorial di Arduino su questo canale viene mostrato come collegare il classico display LCD ad Arduino grazie ad un'interfaccia I²C.
ciao scusa una domanda. quando scrivi nella decima frase Wire.requestFrom(7, 2); il 7 è il numero dei 127 collegamenti? cioè deve essere tra 1 e 127? grazie mille.
Si, il primo parametro del metodo "Wire.requestFrom" è l'indirizzo I²C dello slave. Il numero scelto deve corrispondere con il numero impostato nello slave nel metodo "Wire.begin".
Ciao. Come mai quando assegni allo SLAVE l'indirizzo di comunicazione parti dal numero sette e non magari dal numero uno??? è una regola o cos'altro??? salutoni e complimenti per il tutorial.
Ciao, l'indirizzo dello slave può essere scelto a piacere, quindi è sufficiente scegliere un numero qualsiasi inferiore a 128 e che non è usato da nessun altro slave sullo stesso bus I²C.
Perfetto! Grazie per la risposta celere! Ho aggiunto il video ai miei preferiti... davvero ottimo!
Grazie, ci fa piacere.
Interessante video, è vicino a quanto mi serviva, ho però una domanda E spero tu possa aiutarmi nello slave ho due sensori di temperatura, Come mi consigli di trasferire al master i due dati distinti? Grazie
Puoi inviarli tramite un unico messaggio, concatenando i due dati all'invio e successivamente separandoli alla ricezione. Oppure puoi inviare messaggi distinti, utilizzando un prefisso per capire da quale sensore è arrivato il dato.
ciao bel video , ti volevo chiedere potre inviare il valore di una variabile? cioè io leggo il valore di un potenziometro poi ho applicato un delay e rileggo il potenziometro dopo di che faccio la differenza tra i due valori e quindi la variabile mi varia in funzione della velocita di rotazione, poi senza dilungarmi attiva un servo e lo stesso valore va ad un ponte ad h per un motorino , ti devo controllare altri 2 servi e motorini pensavo di usare un arduino per servo , senza usare piu potenziometri posso inviare il valore della variabile senza aggiungere delay per non rallentare ulteriormente il programma? grazie ancora
Con il protocollo I2C è possibile inviare e ricevere una qualsiasi sequenza di bit, quindi anche il contenuto di una variabile.
salve, volevo chiedere se esiste un modo per far comunicare due schede arduino senza connessione. mi servirebbe creare una sveglia programmabile tramite un altro apparecchio non collegato tra di loro. è possibile?
Puoi prendere in considerazione le comunicazioni senza filo come bluetooth, wifi o radio frequenze.
salve bel video molto interessante ma se volessi mettere un pulsante in master e accendere un led in slave? sarebbe possibile?
Si, è possibile. Puoi collegare il pulsante al master e inviare i comandi "accendi" e "spegni" non a intervalli regolari come mostrato nel video ma in base allo stato del pulsante.
@@TechMaker mi scusi se approfitto ma lo slave a sua volta può trasmettere al master? Cioè schiaccio pulsante in master, aziono relè in slave e un contatto del relè posso usarlo per mandare un segnale di avvenuta chiusura al master e accendere un led? Grazie ancora
È sempre il master a prendere l'iniziativa. Tuttavia dopo aver inviato il comando, puoi inviare la richiesta di risposta allo slave, per ricevere lo stato di esecuzione del comando.
@@TechMaker salve posso contattarla in privato?
Puoi contattarci tramite l'email info@techmaker.it
Salve . Bel video complimenti . Ho una domanda quando compilo il codice restituisce "no matching function for call to 'onReceive(void (&)())' " per lo slave mentre per il master " no matching function for call to 'TwoWire::write(String&)'" .
Cosa può essere?
Quale versione dell'IDE stai usando?
Ciao un altra cosa nel slave quando metti comando+=char ( Wire.read());
si poteva anche fare in questo modo:
char s;
s= Wire.read();
comando +=s;
grazie
Si, l'istruzione può essere anche scomposta in singoli passaggi, producendo lo stesso risultato.
Ciao Italian Tech Proect! Complimenti per i video, molto ben fatti!
Avrei bisogno di qualche info.
Ho un laboratorio fai da te con alcune macchine autocostruite comandate
da schede arduino. Come ben saprete per farle funzionare bisogna
collegare le schede singolarmente al pc e quindi usarle una alla volta.
Avendo bisogno di fare più lavori allo stesso tempo ed avendo
l'intenzione di fare un upgrade del mio laboratorio, pensavo di unire le
macchine (arduino) ad un unica scheda di controllo arduino "centrale"
programmando e comandando le schede (da una postazione fissa) in modo
tale da farle andare in modo autonomo allo stesso tempo.
Con il sistema I2C è possibile farlo? e se sì, come potrei impostare il
lavoro?
Ti ringrazio in anticipo!
Ciao, avendo più porte USB sul computer è possibile collegare più schede di Arduino allo stesso tempo (con porte USB limitate, si possono comunque comprare degli sdoppiatori USB in modo da aumentare il numero di ingressi). Inoltre, se non viene usata la comunicazione seriale, una volta trasferito lo sketch sulla scheda, non è indispensabile tenerla collegata al computer, ma è sufficiente alimentarla, per esempio con delle batterie, per farla funzionare.
In ogni caso puoi usare il protocollo I²C per creare una rete, impostando Arduino "centrale" come master e tutte le altre schede di Arduino come slave, ognuna con il proprio compito da svolgere. Il master lo colleghi al computer tramite cavo USB, in modo da poter inviare dei comandi, mentre tutti gli slave non devono necessariamente essere collegati al computer.
Se usi più di una fonte di alimentazione (per esempio USB e le batterie), devi ricordarti di collegare la messa a terra in comune tra tutte le schede collegate.
Italian Tech Project ok! tra questi (progetti) pensavo ad un programma di diagnostica dei sistemi come verifica del buon funzionamento delle componenti sensorie e cablaggio, dici che può essere vincente il sistema i2c?
Si, può essere un'idea.
Ciao! Grazie sempre per le lezioni!
Finora nessun problema, ma in questa lezione ne riscontro 2!
Premetto che sto utilizzando Tinkercad come simulatore e due schede Arduino Uno R3 perchè non presente la scheda Arduino Mega.
1) Nel primo esempio, il master riceve correttamente il messaggio "No", ma continua così anche premendo il pulsante;
2) Nel secondo esempio invece mi ritorna questo errore: "invalid conversion from 'void (*)()' to 'void (*)(int)' [-fpermissive]", segnando come errore la riga del comando "Wire.onReceive" e interrompendo così la compilazione.
Questi errri li fa anche usando i tuoi sketch (pensando fosse un mio problema di scrittura del codice).
Quale potrebbe essere il problema?
Grazie per la disponibilità!
Verifica che il numero del pin del pulsante sia giusto nello sketch.
Per la segnalazione "invalid conversion from 'void (*)()' to 'void (*)(int)' [-fpermissive]" è solo un warning. Per evitarlo puoi aggiungere un parametro int alla dichiarazione della funzione "ricevi". Il parametro rappresenta il numero di byte letti.
Ciao, complimenti per il video e più in generale per il corso. Avrei una domanda da porti. Premetto che mi sto convincendo a prendere Arduino guardando proprio questi video quindi non ce l'ho ancora, ma la mia domanda è: se volessi comunicare sul bus non un valore singolo o una stringa bensì un vettore, array lista o comunque qualsiasi cosa non sia appunto una stringa o un valore numerico, lo posso fare? I2c me lo permette? Grazie mille in anticipo!
Si, con il protocollo I²C si possono trasmettere anche dei dati che non sono stringhe. Tuttavia la comunicazione I²C si basa sulla trasmissione dei byte, quindi chi riceve deve saper interpretare i byte ricevuti, per poter ricostruire le informazioni trasmesse.
Molto utile, ma se volessi caricare uno sketch da pc e poi fare eseguire i comandi dopo scollegato la scheda dal pc stesso senza I2C è indispensabile avere un display e una scheda SD?
Una volta caricato lo sketch su Arduino, la scheda è in grado di funzionare autonomamente senza la necessità di essere collegata ad un computer, e non sono indispensabili né un display né una scheda SD (che ovviamente possono essere utilizzati se si vuole). L'unica cosa di cui la scheda ha bisogno è l'alimentazione, quindi se Arduino non è collegato ad un computer, serve fornirla separatamente attraverso un jack di alimentazione oppure il pin VIN. In entrambi i casi la tensione deve essere tra i 7V e 12V.
@@TechMaker Grazie, ho provato un collegamento con alimentatore 12V 5A e non succede niente, con alimentatore 12V 200 mA o miei led lampeggiano. Forse dovrei cercare una via di mezzo con l'uso di qualche resistenza?
Per alimentare la scheda di Arduino dovrebbe essere sufficiente un alimentatore con l'amperaggio massimo da 1A in su.
Ciao, il confronto tra le stringhe con l'operatore di confronto == non funziona, bisognerebbe utilizzare il metodo equals, o mi sbaglio?
In alcuni linguaggi di programmazione, come Java, è necessario utilizzare il metodo equals() per confrontare le stringhe. Negli sketch Arduino, invece, l'operatore == è equivalente a equals().
@@TechMaker perfetto, grazie. Credevo fosse come in Java o il C++. Ho ricontrollato la documentazione ed effettivamente si può usare == che è identico al metodo equals. Buono a sapersi, si risparmia codice e tempo.
ciao... i tuoi tutorial sono veramente fatti bene per chi è alle prime armi come me... ho una domanda da farti... ho eseguito tutto alla perfezione ma non riesco ad assegnare la scheda Arduino mega allo slave se sul master ho assegnato Arduino uno o viceversa... cioè se assegno una scheda ad uno sketch, me la assegna anche all'altro di conseguenza... come posso risolvere questo problema? grazie
Prova ad aprire una nuova istanza dell'IDE di Arduino, non dal pulsante "Nuovo" all'interno del software, ma cliccando di nuovo sul lanciatore nel sistema operativo.
@@TechMaker ha funzionato...
grazie
Come sempre, tutto ben spiegato. Attendo un tutorial sulla trasmissione di stringhe su più display dello stesso tipo collegati in I2C su una rete che comprende due Arduini (master/slave) ovviamente SE POSSIBILE.
Grazie!
Ciao complimenti bel video chiaro come sempre, però mi sfugge una cosa nel setup nel slave
la funzione Wire.onRequest (rispondi)
perché nel setup non viene avviato 1 sola volta avvio?
Wire.onRequest e la richiesta master che la fa ogni delay (500)
?
grazie
Gigi Alfaromeo Giulietta, in futuro cercheremo di pubblicare anche dei tutorial su I²C con strutture più complesse.
Agostino Russo, quando chiami il metodo "Wire.onRequest" (lo stesso vale per "Wire.onReceive"), la funzione passata come parametro non viene eseguita immediatamente, ma viene creato soltanto un legame tra l'evento e la funzione da chiamare. In questo modo, tutte le volte quando il master chiama "Wire.requestFrom", l'esecuzione del loop dello slave viene interrotta e viene eseguita la funzione associata a quell'evento, ovvero la funzione impostata con il metodo "Wire.onRequest".
Davvero, grazie! È che la questione è sorta poiché ci sono alcuni moduli I2C (per display LCD ad esempio) sui quali ponticellando con lo stagno le opportune piazzole è possibile cambiare l'indirizzo mentre altri tipi di display non permettono questa scelta. Attendo il prossimo episodio!!!
Italian Tech Project ok grazie, in pratica quello che ho capito che la funzione Wire.onRequest(rispondi) nel setup del slave e un collegamento con il master,
in teoria nel slave se c'era qualche codice nel loop esso veniva eseguito normalmente,ma nel momento che nel master viene eseguito il Wire.requestFrom ,esecuzione del loop slave si blocca e passa la funzione void rispondi().
Giusto? mi scuso sé non uso proprio un linguaggio tecnico, che sto imparando insieme a voi...
grazie mille 😊
CIAO, MOLTO BELLI I TUOI TUTORIAL... SONO LUCA NON ESPERTO NEL CAMPO, MA SAREI INTERESSATO A CREARE UN CIRCUITO CHE POSSA ACCENDERE E SPEGNERE SIA DA PULSANTE CHE DA BLUETOOTH , PENSI SIA FATTIBILE? GRAZIE E ANCORA COMPLIMENTI
Si, è possibile gestire il LED sia da pulsante che da bluetooth. Prossimamente ci saranno anche dei video tutorial sulla comunicazione bluetooth con Arduino.
MILLE GRAZIE !!! E UN VERO PIACERE SEGUIRE I TUOI PROGRAMMI!!! CIAO
ciao, ottimo..non riesco a scaricare gli script...mi da file danneggiato. puoi verificare . Grazie
Grazie per la segnalazione, ora dovresti riuscire a scaricare i file senza problemi.
@@TechMaker ---ok, ora ho scaricato correttamente. Grazie e complimenti
Bravo ma come inviare al master temperature negative ?
Puoi aggiungere un simbolo "-" alla stringa da trasmettere e, sul lato ricevente, controllare se la stringa comincia con quel carattere.
@@TechMaker ti ringrazio per la risposta, di fatto ho 2 ds18b20 in 2 slave che inviano la temperatura, simulando un guasto ho notato che inviano -127 ma il master riceve +129, mi piacerebbe sistemarlo. invio i dati come interi perchè non interessato ai decimali della temperatura.
Usando I2C, i messaggi vengono scambiati tramite l'invio di byte. Per inviare altri tipi di dati, diversi dai caratteri, è necessario convertirli in byte. Ad esempio, per inviare un numero intero puoi aggiungere, lato trasmettitore:
int value = -127;
Wire.write((byte *)&value, sizeof(value));
mentre sul lato ricevitore:
int value = 0;
Wire.requestFrom(address, sizeof(value));
while (Wire.available() < sizeof(value));
Wire.readBytes((byte *)&value, sizeof(value));
Serial.println(value);
@@TechMaker proverò il tuo suggerimento. Ti ringrazio molto ciao
@@TechMaker Ci provo grazie !
ciao funziona tutto bene ti volevo chiedere vorrei attaccare dei sensori alla scheda slave DS18B20 per verificare temperatura acqua caldaia mi potresti fare un tutorial quando puoi per spiegare come leggere i sensori grazie di nuovo
Alcuni sensori sono già stati affrontati nella serie "Sensori con Arduino". Pian piano cerchiamo di aggiungerne altri. Se ti va puoi diventare un Patreon di questo canale, perché così puoi darci una mano a pubblicare nuovi video tutorial.
Ogni volta che devo inviare dati dal Master allo slave, sotto la condizione "if" di un pulsante (ad esempio) devo sempre scrivere: "Wire.beginTransmission(indirizzo), Wire.write("messagio") e Wire.endTransmission()" ? Devo sempre inizializzare la comunicazione tra Master e Slave ? Se devo inviare lo stesso dato a due slave ripeto due volte:
Wire.beginTransmission(indirizzo 1) e Wire.beginTransmission(indirizzo 2) ? Le procedure sono sempre queste ? Ci sono metodi più efficaci ? Grazie ! ;D
PS ! Utilissimi i tuoi video ! Spieghi da DIO ! :D ♥♥♥
Il protocollo I²C prevede questo. Comunque puoi crearti delle funzioni che racchiudono le istruzioni ripetitive.
Italian Tech Project Gisto farò !! Grazie !!!
Sarebbe bello usarli per monitorare le apertura finestre con due fili evitando passaggi di molti fili nelle canalone. Ad ogni led il nome della finestra è collegarlo poi all'antifurto.
Si, la comunicazione I²C può essere usata in tanti ambiti del fai da te e della domotica.
un po' di vita, su
Cercheremo di migliorare nei prossimi video.