Pages: 1 [2] 3   Go Down
Author Topic: problemi i2c e comunicazione seriale tra 2 arduino  (Read 2520 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 2
Posts: 555
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Full Member
***
Karma: 1
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

no solamente una uno e una leonardo
Logged

Offline Offline
God Member
*****
Karma: 2
Posts: 555
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Full Member
***
Karma: 1
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

una resistenza per pin ovviamente
Logged

Offline Offline
God Member
*****
Karma: 2
Posts: 555
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Full Member
***
Karma: 1
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
God Member
*****
Karma: 2
Posts: 555
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok
Ora carica questo sketch sul master.
Code:
// 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?
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
God Member
*****
Karma: 2
Posts: 555
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Full Member
***
Karma: 1
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

magari smiley-sad 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)
Logged

Offline Offline
God Member
*****
Karma: 2
Posts: 555
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

messi comunque non si accende niente smiley-sad
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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)
Logged

Offline Offline
God Member
*****
Karma: 2
Posts: 555
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: 1 [2] 3   Go Up
Jump to: