Comunicazione Tra Due Arduini

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... :frowning: :frowning: :frowning:
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!
:neutral_face:

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