Go Down

Topic: problemi i2c e comunicazione seriale tra 2 arduino (Read 3222 times) previous topic - next topic

superzaffo

Non hai un altro UNO al posto del leonardo ? Cosi andiamo a piccoli step...


superzaffo

ok.. quindi hai collegato i pin SDA-->SDA e SCL-->SCL
Hai collegato i due pin GND (GND dell'UNO e GND del Leonardo) tra di loro ?

lupo95

praticamente nella breadboard ho collegato i pin e trammite una resistenza da 4,7k ai 5V e poi ho collegato i GND dei due arduino


superzaffo

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.
Code: [Select]

// 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

lupo95

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

superzaffo

ok
Ora carica questo sketch sul master.
Code: [Select]

// 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?

lupo95

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?

superzaffo

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

lupo95

magari :( 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)

superzaffo

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

lupo95


lupo95

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)

superzaffo

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

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy