Communication entre un Arduino Uno et un Arduino Nano Every

Bonjour,

Je voudrais faire communiquer un Arduino Uno avec un Arduino Nano Every en i2c. Le problème est que lorsque j’utilise un code permettant de détecter les adresses i2c présentes sur la liaison, je ne détecte que celle de mes capteurs (baromètre et thermomètre également branchés en i2c) mais pas celle de l’autre board…

Dans mon montage chaque carte est alimentée séparément et les broches de SDA, SCL et masse sont mises en commun.

Si l’un/l’une de vous pourrait me venir en aide ça m’aiderait bien ! :smiley:

Voici le code de recherche d’adresse :

#include <Wire.h>
 
void setup()
{
  Wire.begin();
 
  Serial.begin(9600);
  while (!Serial);             // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}
 
void loop()
{
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0)
    {
      Serial.print("Appareil I2C trouve a cette adresse 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Erreur inconnue a cette address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("Aucun appareil I2C trouve\n");
  else
    Serial.println("Fin\n");
 
  delay(5000);           // wait 5 seconds for next scan
}

Bonjour

Quel est le code exécuté par 'l'autre board" ?
Pour être visible par le scanner il faut qu'elle fonctionne en esclave sur le bus I2C avec son adresse bien à elle

le 'nouvelles cartes nano' , diverses et variées, ont semble-t-il leur particularités y compris pour le bus I2C, particularités .... qui ne sont pas nécessairement connues des membres du forum vu le peu 'd'appétit' pour ces 'nouvelles cartes Nano' pour lesquelles les outils logiciels semblent manquer de maturité.

Bonjour,

Pour l'instant je n'avais rien mis de l'autre coté..
D'accord, donc c'est à moi de lui donner une adresse ? elle n'en pas une nativement de type hexadécimale ?

J'ai suivi le didacticiel avec les codes du lien suivant :

mais à chaque fois j'ai ce type d'erreur qui apparait :

maitre:12:2: error: stray '\302' in program
   Wire.begin();        
  ^
maitre:12:3: error: stray '\240' in program
   Wire.begin();        
   ^
maitre:12:18: error: stray '\302' in program
   Wire.begin();        
                  ^
maitre:12:19: error: stray '\240' in program
   Wire.begin();        
                   ^
maitre:12:20: error: stray '\302' in program
   Wire.begin();        
                    ^
maitre:12:21: error: stray '\240' in program
   Wire.begin();        
                     ^
maitre:12:22: error: stray '\302' in program
   Wire.begin();        
                      ^
maitre:12:23: error: stray '\240' in program
   Wire.begin();        
                       ^
maitre:12:24: error: stray '\302' in program
   Wire.begin();        
                        ^
maitre:12:25: error: stray '\240' in program
   Wire.begin();        
                         ^
maitre:12:26: error: stray '\302' in program
   Wire.begin();        
                          ^
maitre:12:27: error: stray '\240' in program
   Wire.begin();        
                           ^
maitre:12:28: error: stray '\302' in program
   Wire.begin();        
                            ^
maitre:12:29: error: stray '\240' in program
   Wire.begin();        
                             ^
maitre:12:30: error: stray '\302' in program
   Wire.begin();        
                              ^
maitre:12:31: error: stray '\240' in program
   Wire.begin();        
                               ^
maitre:13:2: error: stray '\302' in program
   Serial.begin(9600);  
  ^
maitre:13:3: error: stray '\240' in program
   Serial.begin(9600);  
   ^
maitre:13:24: error: stray '\302' in program
   Serial.begin(9600);  
                        ^
maitre:13:25: error: stray '\240' in program
   Serial.begin(9600);  
                         ^
maitre:15:2: error: stray '\302' in program
   Serial.println(F("-------------------------------------I am the Master"));
  ^
maitre:15:3: error: stray '\240' in program
   Serial.println(F("-------------------------------------I am the Master"));
   ^
maitre:16:2: error: stray '\302' in program
   delay(1000);
  ^
maitre:16:3: error: stray '\240' in program
   delay(1000);
   ^
maitre:18:2: error: stray '\302' in program
   //Request value of n to slave
  ^
maitre:18:3: error: stray '\240' in program
   //Request value of n to slave
   ^
maitre:19:2: error: stray '\302' in program
   Wire.requestFrom(I2C_SLAVE1_ADDRESS, 1);   
  ^
maitre:19:3: error: stray '\240' in program
   Wire.requestFrom(I2C_SLAVE1_ADDRESS, 1);   
   ^
maitre:19:45: error: stray '\302' in program
   Wire.requestFrom(I2C_SLAVE1_ADDRESS, 1);   
                                             ^
maitre:19:46: error: stray '\240' in program
   Wire.requestFrom(I2C_SLAVE1_ADDRESS, 1);   
                                              ^
maitre:19:47: error: stray '\302' in program
   Wire.requestFrom(I2C_SLAVE1_ADDRESS, 1);   
                                               ^
maitre:19:48: error: stray '\240' in program
   Wire.requestFrom(I2C_SLAVE1_ADDRESS, 1);   
                                                ^
maitre:20:2: error: stray '\302' in program
   n = Wire.read();
  ^
maitre:20:3: error: stray '\240' in program
   n = Wire.read();
   ^
maitre:21:2: error: stray '\302' in program
   Serial.print(F("recieved value : "));
  ^
maitre:21:3: error: stray '\240' in program
   Serial.print(F("recieved value : "));
   ^
maitre:22:2: error: stray '\302' in program
   Serial.println(n);
  ^
maitre:22:3: error: stray '\240' in program
   Serial.println(n);
   ^
maitre:24:2: error: stray '\302' in program
   //Send value 12 to slave
  ^
maitre:24:3: error: stray '\240' in program
   //Send value 12 to slave
   ^
maitre:25:2: error: stray '\302' in program
   Wire.beginTransmission(I2C_SLAVE1_ADDRESS);
  ^
maitre:25:3: error: stray '\240' in program
   Wire.beginTransmission(I2C_SLAVE1_ADDRESS);
   ^
maitre:26:2: error: stray '\302' in program
   Wire.write(12);
  ^
maitre:26:3: error: stray '\240' in program
   Wire.write(12);
   ^
maitre:27:2: error: stray '\302' in program
    Serial.print(F("sending value : "));
  ^
maitre:27:3: error: stray '\240' in program
    Serial.print(F("sending value : "));
   ^
maitre:27:4: error: stray '\302' in program
    Serial.print(F("sending value : "));
    ^
maitre:27:5: error: stray '\240' in program
    Serial.print(F("sending value : "));
     ^
maitre:28:2: error: stray '\302' in program
   Serial.println(12);              
  ^
maitre:28:3: error: stray '\240' in program
   Serial.println(12);              
   ^
maitre:28:24: error: stray '\302' in program
   Serial.println(12);              
                        ^
maitre:28:25: error: stray '\240' in program
   Serial.println(12);              
                         ^
maitre:28:26: error: stray '\302' in program
   Serial.println(12);              
                          ^
maitre:28:27: error: stray '\240' in program
   Serial.println(12);              
                           ^
maitre:28:28: error: stray '\302' in program
   Serial.println(12);              
                            ^
maitre:28:29: error: stray '\240' in program
   Serial.println(12);              
                             ^
maitre:28:30: error: stray '\302' in program
   Serial.println(12);              
                              ^
maitre:28:31: error: stray '\240' in program
   Serial.println(12);

Bonjour,

Il y a des caractères qui ne sont pas visibles (genre espace insécable). Le programme a été mal copié.
Réessayes en copiant le programme avec le bouton copy et en le collant dans un sketch vide.

gauthier_freydt:
c'est à moi de lui donner une adresse ? elle n'en pas une nativement de type hexadécimale ?

Une adresse est une adresse, c'est juste un nombre entier. Des 0 et des 1.
L'héxadécimal apparaît seulement lorsque tu veux "imprimer", visualiser cette adresse (ou la saisir)
La valeur 256 s'écrit ... 256 en décimal, 0x100 en héxadécimal. Mais c'est toujours 256.
Une valeur n'est pas de type héxadécimal ou autre.

Okay merci pour vos conseils et enseignements, je vais essayer de recopier correctement. :slight_smile:

Oui effectivement j'ai enlevé les espaces insécables, merci beaucoup, cela fonctionne !!