problemi i2c e comunicazione seriale tra 2 arduino

una resistenza per pin ovviamente

Aspetta... intanto le resistenze le puoi togliere.. per adesso non sono indispensabili ...
Salta la breadboard e collega direttamente con i cavi i pin dei due arduino.

Poi sullo slave (penso il leonardo) fai girare questo sketch.

// Written by Nick Gammon
// February 2012

#include <Wire.h>

const byte MY_ADDRESS = 42;

#define BETA_ARDUINO ARDUINO < 100

void setup () 
{
  Wire.begin (MY_ADDRESS);
  for (byte i = 2; i <= 7; i++)
    pinMode (i, OUTPUT);
  Wire.onReceive (receiveEvent);
}  // end of setup

void loop() 
{
// nothing in main loop
}

// called by interrupt service routine when incoming data arrives
void receiveEvent (int howMany)
 {
  while (Wire.available () > 0)
  {
    byte c;
#if BETA_ARDUINO    
    c = Wire.receive ();
#else
    c = Wire.read ();
#endif 
    // toggle requested LED
    if (digitalRead (c) == LOW)
      digitalWrite (c, HIGH);
    else
      digitalWrite (c, LOW);
  }
}  // end of receiveEvent

caricato visto che uso l'arduino uno come slave l'ho caricato su quello

ok
Ora carica questo sketch sul master.

// Written by Nick Gammon
// February 2012

#include <Wire.h>

const byte SLAVE_ADDRESS = 42;
const byte LED = 13;

#define BETA_ARDUINO ARDUINO < 100

void setup () 
{
  Wire.begin ();
  pinMode (LED, OUTPUT);     
}  // end of setup

void loop () 
{

  for (int x = 2; x <= 7; x++)
    {  
    Wire.beginTransmission (SLAVE_ADDRESS);
#if BETA_ARDUINO    
    Wire.send (x);
#else
    Wire.write (x);
#endif
    if (Wire.endTransmission () == 0)
      digitalWrite (LED, HIGH); 
    else
      digitalWrite (LED, LOW); 
      
    delay (200);
    }
}  // end of loop

Quindo lo farai partire si dovrebbe vedere il led dello slave accendere.

Riesci a fare una foto dei collegamenti e postarla?

ok ho caricato
il led 13 si accende subito indipendentemente che i cavi siano collegati o no e se attacco un led esterno quest'ultimo non si accende e si spegne alche quello interno all'arduino uno.
per la foto non so se riesco a metterla comunque posso provare ma i due arduini sono montati su un robot ed è tuto abbastanza incasinato tra fili e roba varia quindi non so se ti può servire a qualcosa
vuoi lo stesso che provo a fare delle foto?

non è che puoi fare la prova con i due arduini sulla scrivania solo collegati tra loro ?

magari :frowning: ma li ho avvitati al telaio e comunque non potrei togliere tutti gli altri cavetti dalle schede perche poi diventerei pazzo per riuscire a ricollegare tutto (sempre se ci riuscissi)
comunque non posso aver sbagliato a collegare i fili 2(leonardo)-->4 (uno) 3(leonardo)-->5(uno), 5V collegate su breadboard e anche GND (arriva la corrente su entrambe le schede)

Ok... hai messo dei led nei pin D2-D7 (o almeno un led in un pin di questi) dello slave ?

This was displayed on LEDs plugged into pins D2 through to D7 using an appropriate resistor in series with each one (eg. 470 ohms).

Il codice slave, se riceve i dati, accende o spegne i led collegati ai pin D2-D7

messi comunque non si accende niente :frowning:

però ho notato che se inverto i programmi mi parte un motore che dovrebbe essere collegato al pin 2 (intendo leonardo slave e uno master)

prova a mettere i led nel leonardo... almeno dove i pin non sono già impegnati... come il D2 (se ho capito bene)

della leonardo ho liberi i pin 11,9,8,1,0 quindi dove collego i led?
e per i programmi quali carico?

metti i led sul 8 e sul 9.

Poi carica il codice dello slave.

ricarica poi il codice master su arduino uno modificandolo così.
e dimmi se si accendono.

// Written by Nick Gammon
// February 2012

#include <Wire.h>

const byte SLAVE_ADDRESS = 42;
const byte LED = 13;

#define BETA_ARDUINO ARDUINO < 100

void setup () 
{
  Wire.begin ();
  pinMode (LED, OUTPUT);     
}  // end of setup

void loop () 
{

  for (int x = 8; x <= 9; x++)
    {  
    Wire.beginTransmission (SLAVE_ADDRESS);
#if BETA_ARDUINO    
    Wire.send (x);
#else
    Wire.write (x);
#endif
    if (Wire.endTransmission () == 0)
      digitalWrite (LED, HIGH); 
    else
      digitalWrite (LED, LOW); 
      
    delay (200);
    }
}  // end of loop

no niente da fare :frowning: non si accendono :frowning:

Prova a fare un piccolo sketch che accenda solamente i led... direttamente sul leonardo.

ho caricato l'esempio blink e funzionano entrambi logicamente ho lasciato i led nei pin 8 e 9

Allora lasciami un po' di tempo che faccio qualche prova io.. anche se non ho un leonardo, ma lo farò con con 2 UNO poi vediamo di portarlo su un leonardo.

ok tranquillo :slight_smile:
ma non dovrebbe cambiare niente tra una leonardo e una uno x la comunicazione i2c giusto?

ok ho trovato il mio errore ora funziona tutto :slight_smile:
praticamente io sia sull'arduino leonardo che uno sopa al pin 13 e al GND ho SDA e SCL e io non collegavo quelli ma i pin analogici bè era questo il mio errore :slight_smile:
@superzaffo grazie mille per il tuo aiuto e per il tuo tempo ti devo un favore :grin: