Visualizzazione post con etichetta I2C. Mostra tutti i post
Visualizzazione post con etichetta I2C. Mostra tutti i post

domenica 14 dicembre 2014

TRASMISSIONE I2C - 3a parte


ARDUINO MASTER SLAVE
    
    //MASTER
    #include <Wire.h>
   
    #define ADDRESS1 2
   
    #define LED1  8
    #define LED2  9
    #define LED3 10
    #define LED4 11  
    
    int NumByte = 1;
  
    void setup()
       
        { Wire.begin();        
          pinMode (LED1,OUTPUT);
          pinMode (LED2,OUTPUT);
          pinMode (LED3,OUTPUT);
          pinMode (LED4,OUTPUT); }
  
    void loop()  {
    

      Wire.requestFrom(ADDRESS1,NumByte); 
      char c = Wire.read(); 
      
      //Se la stringa in rx è a accendo LED1
      String a = "";
      a = a + c;
      delay (100);
      if ( a == "a")
         { digitalWrite(LED1, HIGH); }
      else
         { digitalWrite(LED1, LOW); }
      delay(10);
   
      //Se la stringa in rx è b accendo LED2
     String b = "";
     b = b + c;
      delay (100);
      if ( b == "b")
      { digitalWrite(LED2, HIGH); }
      else
         { digitalWrite(LED2, LOW); }
      delay(10);
   
     //Se la stringa in rx è g accendo LED3
      String g = "";
      g = g + c;
      if ( g == "c")
         { digitalWrite(LED3, HIGH); }
      else
         { digitalWrite(LED3, LOW); }
      delay(10);
   
    //Se la stringa in rx è da accendo LED4
    String d = "";
     d = d + c;
      delay (100);
      if ( d == "d")
         { digitalWrite(LED4, HIGH); }
      else
         { digitalWrite(LED4, LOW); }
      delay(10);
 
  }




ARDUINO SLAVE CODE

    //  SLAVE VERONA
    #include <Wire.h>
    #define ADDRESS 2
    
    #define SWITCH1 2
    #define SWITCH2 3
    #define SWITCH3 4
    #define SWITCH4 5
    
    void setup()
   
        { pinMode(SWITCH1, INPUT);
          pinMode(SWITCH2, INPUT);
          pinMode(SWITCH3, INPUT);
          pinMode(SWITCH4, INPUT);
          Wire.begin(ADDRESS);     
          Wire.onRequest(requestEvent);  }
   
    void loop(){
         delay(100);
         }
   
    void requestEvent() {
      
      if ( digitalRead(SWITCH1) == HIGH)
         { Wire.write("a");     }
   
      if ( digitalRead(SWITCH2) == HIGH)
         { Wire.write("b");     }
  
      if ( digitalRead(SWITCH3) == HIGH)
         { Wire.write("c");     }
   
      if ( digitalRead(SWITCH4) == HIGH)
         { Wire.write("d");     }

}


TRASMISSIONE I2C - 2a parte


La pressione del tasto su Arduino Slave determina l'accensione del led su Arduino Master

ARDUINO MASTER CODE

    //MASTER
    #include <Wire.h>
   
    #define ADDRESS1 2
   
    #define LED1 8
   
    int NumByte = 1;
  
    void setup()
       
        { Wire.begin();        
          pinMode (LED1,OUTPUT); }
  
    void loop()  {
    

      Wire.requestFrom(ADDRESS1,NumByte); 
      String b = "";
      char c = Wire.read(); 
      b = b + c;
      delay (100);
      if ( b == "a")
         { digitalWrite(LED1, HIGH); }
      else
         { digitalWrite(LED1, LOW); }
      delay(10);
    }




ARDUINO SLAVE CODE
    //  SLAVE VERONA
    #include <Wire.h>
    #define ADDRESS 2
    # define SWITCH 2
   
    void setup()
   
        { pinMode(SWITCH, INPUT);
          Wire.begin(ADDRESS);     
          Wire.onRequest(requestEvent);  }
   
    void loop(){
         delay(100);
         }
   
    void requestEvent() {
      
      if ( digitalRead(SWITCH) == HIGH)
         { Wire.write("a");     }
      else
         { Wire.write("s"); }
   
  }


domenica 3 agosto 2014

Protocollo I2C


   /* Il Sesnore BMP085 utilizza il protocollo
      di trasmissione I2C.Per questo tipo di
      trasmissione occorre un pin di Serial Clock Line
      ed un pin di Serial Data Line. Su Arduino UNO
      tale funzione è svolta dal pin A4=SDA e dal pin
      A5=SCL */
      
      #include <Wire.h>
      #include <Adafruit_Sensor.h>
      #include <Adafruit_BMP085_U.h>
       
      Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
       
      void setup()
             { /* pin A4 SDA
                  pin A5 SCL*/
               Serial.begin(9600);
               bmp.begin();   }
    
      void loop(){
  
               float celsiusBMP085;
               bmp.getTemperature(&celsiusBMP085);
               Serial.print("BMP085 Celsius:  ");
               Serial.print(celsiusBMP085);
               Serial.println("");
               
               delay(1000);        }