]> git.piffa.net Git - sketchbook_andrea/blob - serial/i2c/slave_2_state/slave_2_state.ino
serial + i2c
[sketchbook_andrea] / serial / i2c / slave_2_state / slave_2_state.ino
1 /*
2   I2C comm: Slave LED
3  
4  Comunicazione I2C tra due schede Arduino.
5  La  scheda master ha un bottone come input e 
6  comunica con altre schede che monta un LED come output.
7  Il led della seconda si accende quando rileva
8  la pressione del bottone della prima.
9  
10  Schema: http://lab.piffa.net/schemi/i2c_bb.jpg
11  */
12
13 #include <Wire.h>
14 //  slave
15 // PIN 0 = RX
16 int led = 13; // Questa scheda ha spolo l'output
17 int ledState = 0;         // stato attuale del LED
18 int incomingByte;   // Dato ricevuto via seriale
19
20
21 // the setup routine runs once when you press reset:
22 void setup() {                
23   // initialize the digital pin as an output.
24   pinMode(led, OUTPUT);       // Il PIN e' attivato come output
25
26   Serial.begin(9600); // Attiviamo la seriale per debug
27   Serial.flush();
28   Serial.println("Slave / RX Debug:");
29   
30   Wire.begin(2); // join i2c bus (address optional for master)
31   Wire.onReceive(receiveEvent); // Evento in ricezione
32 }
33
34
35 void loop() {
36   digitalWrite(led, ledState); // Aggiorna lo stato del LED
37   delay(200);
38 }
39
40 /// Funzioni
41 void receiveEvent(int howMany)
42 {
43   Serial.print("Lo slave ha ricevuto il seguente messaggio: ");
44   while( Wire.available()) // loop through all but the last
45   {
46     incomingByte = Wire.read(); // receive byte as a character
47     Serial.print(incomingByte, DEC);         // print the character
48
49     if (incomingByte == 49) { // Verifica se viene ricevuto il dato 1
50       ledState = !ledState ; // Cambia lo stato del LED 
51     }        
52     Serial.println("");
53   }
54 }
55
56 /* Domande
57  
58  1. Implementare piu' bottoni per controllare piu' schede
59  2. Implementare un messaggio di feedback dallo slave al master per uk cambio di stato del led  
60  
61  Links:
62
63  */
64
65
66
67
68
69
70