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 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
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 non si accendono
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
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
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
@superzaffo grazie mille per il tuo aiuto e per il tuo tempo ti devo un favore