Leonardo IIC Attiny84 descrive la parte della comunicazione che puoi caricare sull’arduino Leonardo per leggere l’I2C sull’indirizzo 0x08
Il precedente articolo era dedicato all’attiny84 usato in modalità slave e ti serve un master che sia adeguato alla ricezione del medesimo numero di byte per ricevere correttamente la comunicazione IIC.
Lo schema dei collegamenti non è variato rispetto al precedente articolo, che ti invito a leggere per comprenderli:
e lato Leonardo puoi collegare l’alimentazione ed i soli pin SDA ed SCL dell’IIC:
Lo sketch Leonardo IIC Attiny84
Lo sketch Leonardo IIC Attiny84 puoi caricarlo sulla board ed utilizzare il monitor seriale per vedere i dati che ti arrivano dall’attiny84:
//Code for the Arduino Master #include <Wire.h> #define TARGET_ID 0x08 void setup() { Wire.begin(); // SDA, SCL Serial.begin(9600); // start serial for output Serial.println( "Setup Success" ); } void loop() { Wire.requestFrom(TARGET_ID, 10); while(Wire.available() > 0) { byte adc0H = Wire.read(); byte adc0L = Wire.read(); byte adc1H = Wire.read(); byte adc1L = Wire.read(); byte adc2H = Wire.read(); byte adc2L = Wire.read(); byte adc3H = Wire.read(); byte adc3L = Wire.read(); byte swh1 = Wire.read(); byte swh2 = Wire.read(); int adc0 = adc0H << 8 | adc0L; int adc1 = adc1H << 8 | adc1L; int adc2 = adc2H << 8 | adc2L; int adc3 = adc3H << 8 | adc3L; Serial.print( "ADC0: " ); Serial.print( adc0 ); Serial.print( " - " ); Serial.print( "ADC1: " ); Serial.print( adc1 ); Serial.print( " - " ); Serial.print( "ADC2: " ); Serial.print( adc2 ); Serial.print( " - " ); Serial.print( "ADC3: " ); Serial.print( adc3 ); Serial.print( " - " ); Serial.print( "SWH1: " ); Serial.print( swh1 ); Serial.print( " - " ); Serial.print( "SWH2: " ); Serial.print( swh2 ); Serial.print( "\n" ); } delay(100); }
La maggior parte dello sketch è identico a tutti quelli che già hai utilizzato per la comunicazione I2C tra processori della famiglia Attiny ed Arduino Leonardo.
La linea 13 è simile a quelle già utilizzate a parte il secondo parametro ( 10 ) che rappresenta il numero di byte che vuoi ricevere dall’attiny84.
Le righe evidenziate sono quelle che devi aggiungere per ricevere e visualizzare a video i dati ricevuti. Nota che sono identiche alle altre presenti nello sketch, puoi duplicarle e modificarne solo i valori.
Il blocco delle linee 32-37: ti permette di scrivere sul monitor seriale le informazioni ricevute dalla Leonardo IIC Attiny84, ciascuna linea riporta tutti 10 byte ricevuti e relativi ai 6 input ( quattro analogici e due digitali ).