Buonasera,
Devo far comunicare due arduini.. su internet trovo immagini che mi dicono di connettere i due analogici A4 e A5 dei due arduini, di mettere in comune la massa e di utilizzare due resistenza per pull-down... qualcuno sa spiegarmi bene come farli comunicare dato che questo metodo non funziona...
![]()
Grazieee
... evidentemente sono esempi che usano il bus I2C ... quindi devi studiarti come funziona un bus I2C e come si usa la libreria Wire.
Guglielmo
esatto ma non capisco come sono i collegamenti veri e propri! io ho collegato come ho visto in rete e non va ed è esattamente uguale a quello che lei ha linkato. un altra cosa non chiara è l'alimentazione.. deve essere data ad un arduino solo o ad entrambi?
Non solo l'alimentazione va ovviamnete data ad entrambi, ma su uno devi scrivere un programma che colloquia su I2C come MASTER e sull'altro un programma che colloquia su I2C come SLAVE nonchè implementare, su I2C, un meccanismo per lo scambio di dati.
Non è che li colleghi e per magia tutto funziona eh ...
Ripeto che ... devi STUDIARE come funziona l'I2C, come funziona la Wire e cercare esempi su google di Arduino I2C Master/Slave.
Guglielmo
Non è che li colleghi e per magia tutto funziona eh ...
Io non voglio essere preso in giro. Non sto usando arduino da oggi ma da 3 anni ormai. so per certo che ci vuole un programma su entrambi e glielo metto anche:
#include <Wire.h>
//Master Code
void setup() {
Wire.begin();
pinMode(2,OUTPUT);
}
void loop() {
Wire.requestFrom(2,1);
String b="";
char c= Wire.read();
b=b+c;
delay(100);
if(b=="a")
{digitalWrite(2,HIGH);}
else
{
digitalWrite(2,LOW);
}
delay(10);
}
#include <Wire.h>
//Slave Code
void setup() {
// put your setup code here, to run once:
pinMode(2,INPUT);
pinMode(13,OUTPUT);
Wire.begin(2);
Wire.onRequest(requestEvent);
}
void loop() {
// put your main code here, to run repeatedly:
delay(100);
}
void requestEvent()
{
if(digitalRead(2)==HIGH)
{
Wire.write("a");
digitalWrite(13,HIGH);
}
else
{
Wire.write("s");
digitalWrite(13,LOW);
}
}
Anche se mi sono già studiato la classe Wire, non mi funziona.
Un arduino non è originale. é questo
Se vuole aiutarmi, sono molto felice.
Grazie
LucaAlba98:
Io non voglio essere preso in giro ...
E chi ti ci sta prendendo ? ... del resto, uno che mi domanda ...
LucaAlba98:
... un altra cosa non chiara è l'alimentazione.. deve essere data ad un arduino solo o ad entrambi?
... mi da l'idea che sia la prima volta che prende un Arduino in mano !
Se poi non è così ... io non posso immaginarlo !
Guglielmo
ASSOLUTAMENTE NO
l'ho chiesto solo perchè alimentando uno si accendeva anche l'altro!
Scusi se non siamo tutti ai suoi livelli!
![]()
l'ho chiesto solo perchè alimentando uno si accendeva anche l'altro!
Non si deve MAI, DICO MAI dare tensioni su dei Pin senza un alimentazione collegata; si rischia di rompere L' arduino.
DEVI alimentare entrambe le schede. Puoi collegare una al USB e pure l' altra oppure collegare uan al USB e collegare i Pin 5V.
Non devi mettere delle resistenze Pull down (Da pin A4 e A5 a massa) ma Pullup ( da ciascuno dei 2 pin una resistenaz a +5V)
Poi lasciatelo dire fai errori da prinicpiante e non da una persona che ci lavora da 3 anni.
Ciao Uwe