«

»

Mar 23

Stampa Articolo

AtTiny85 Encoder – Arduino Slave

.. continuo dal precedente articolo hai analizzato la parte AtTiny85 encoder come master i2c, in questo articolo leggerai come realizzare un arduino o genuino slave i2c.

Attiny85 Encoder nolight

Lo scopo di questo articolo è chiarirti come realizzare la parte slave del dispositivo i2c.

Comunicazione I2C arduino / genuino

Alla comunicazione i2c arduino / genuino ho già dedicato qualche articolo che trovi nel blog, tuttavia un ripasso è comodo.

I pin destinati alla comunicazione i2c siano essi dispositivi master o slave sono SDA ed SCL rispettivamente, sulla genuino o arduino uno, corrispondenti ai pin A4 ed A5:

Basetta prototipazione semplificata arduino pinout

e riportati diametralmente opposti dalla R3 in poi.

Perché la comunicazione i2c funzioni è necessaria una configurazione simile a quella mostrata nell’immagine seguente:

from www.ermicro.com/blog

from www.ermicro.com/blog

in cui sono presenti due resistenze di pull-up da 10K ciascuna tra il pin Vcc ( +5v ) e ciascuna linea SDA ed SCL.

Attiny85 Encoder schema

Lo sketch AtTiny85 Encoder – Arduino Slave

Lo sketch elegge arduino o genuino a slave della comunicazione i2c in quanto il ruolo master è assolto dall’AtTiny85 Encoder:

#include <Wire.h>

#define DEVICE_ID 0x08


void setup() {
 Serial.begin(9600);
 
 Wire.begin(DEVICE_ID);
 Wire.onReceive(receiveEvent);
}
 
void loop() {
 delay(1);
}

/***********************************************/

void receiveEvent(int howMany) {
  
  Serial.print( "Arg: " );
  Serial.print( howMany );
  Serial.print( " - rec: " );
  
  while (Wire.available() > 0) { 
    byte i = Wire.read();
    byte sw = Wire.read();
    
    Serial.print( i );
    Serial.print( " - Switch: " );
    Serial.println( sw );
  }
}

/***********************************************/

lo sketch è simile a molti altri che hai già visto sul blog in merito all’argomento I2C, in cui alla linea 01: includi la libreria Wire.h necessaria per la comunicazione I2C;

linea 03: definisci l’indirizzo I2C che arduino dovrà avere e che deve essere identico a quello specificato nello sketch AtTiny85 encoder master altrimenti i due dispositivi non riusciranno a comunicare;

linee 09-10: inizializza la classe Wire dandole come indirizzo quello definito alla linea 03 e specifica che ogni ricezione dati sul bus I2C proveninete dall’AtTiny85 encoder deve richiamare la funzione receiveEvent che anlizzerai tra qualche linea;

linee 13-15: definisci la funzione loop(9 con u semplice delay di 1 millisecondo, in questo sketch potresti anche lasciarla vuota in quanto tutto il lavoro viene svolto dalla receiveEvent();

linea 19: definisci la funzione receiveEvent che accetta come parametro di input il numero di byte ricevuti;

linee 21-23: usa il monitor seriale per farti scrivere quanti byte ha ricevuto e del testo di separazione;

linea 25: se ricevi dei dati finché il buffer Wire è pieno esegui quanto specificato tra le parentesi graffe;

linea 26: leggi il primo byte e memorizzalo nella variabiel i ;

linea 27: leggi il secondo byte e memorizzalo nella variabile sw;

linee 29-31: scrivi sul monitor seriale i valori di i e sw letti sul bus I2c AtTiny85 encoder;

Il video AtTiny85 master I2C ed Arduino Slave

Il video che hai già visto nel precedente articolo dedicato all’AtTiny85 encoder master i2c


Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/attiny85-encoder-arduino-slave.html

1 ping

  1. Attiny85 slave ADC i2C joystick switch - Alfieri Mauro

    […] Attiny85 Encoder Arduino Slave […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>