Attiny85 IIC WeMos

Continuando a sperimentare con Attiny85 IIC WeMos puoi usare la comunicazione I2C per collegare alla WeMos segnali provenienti da più fonti analogiche.

Attiny85 IIC WeMos I2C

La WeMos è dotata di un solo ingresso analogico ADC, a cui collegare, ad esempio, un potenziometro o una sonda di temperatura analogica.

Nelle scorse settimane hai letto delle sperimentazioni che ho eseguito con un joystick analogico dotato di due potenziometri:

puoi estendere la sperimentazione dall’arduino Leonardo alla WeMos in modo da poter facilmente accedere alla comunicazione WiFi insita nell’ESP8266.

Schema dei collegamenti Attiny85 IIC WeMos

In questo articolo leggi come collegare l’attiny alla WeMos in I2C, o IIC, ed i due segnali analogici provenineti dal Joystick.

Essendo il joystick dotato ance di uno switch, segale digitale, e l’attiny85 di 3 pin liberi oltre ad SDA ed SCL puoi collegare anche quest’ultimo ad un pin digitale:

Attiny85 IIC WeMos schema

Lo schema è chiaro tuttavia se vuoi approfondire i collegamenti Attiny85 IIC WeMos puoi osservare le foto seguenti :

WeMos I2C Attiny85 connections

sopra puoi osservare i colori dei fili che arrivano all’attiny85.

Continuando puoi osservare la connessione del Joystick, in cui ho mantenuto i colori della precedente foto:

WeMos I2C Attiny85 joystick connections

e dai quali deduci ad esempio che:

  • il cavo arancioine è collegato allo switch
  • il cavo bianco alla Y
  • il cavo verde alla X

Infine osserva la connessione II2 verso WeMos:

WeMos I2C Attiny85 wemos

Sketch Attiny85 IIC WeMos

Il primo sketch sul quale ti puoi concentrare riguarda l’Attiny85 Slave attendendo che la scheda WeMos, che funzionerà da master, richiedendo le informazioni lette sui sui pin analogici codificate per l’invio su i2c:

// Code for the ATtiny85
#define I2C_SLAVE_ADDRESS 0x08 // Address of the slave
 
#include <TinyWireS.h>

#define ADC3 A3
#define ADC2 A2
#define SWH1 1

void setup() {
    TinyWireS.begin(I2C_SLAVE_ADDRESS); // join i2c network
    TinyWireS.onRequest(requestEvent);
 
    pinMode(ADC2, INPUT);
    pinMode(ADC3, INPUT);
    pinMode(SWH1, INPUT_PULLUP);
}

void loop() {
    // This needs to be here
    TinyWireS_stop_check();
}
 
// Gets called when the ATtiny receives an i2c request
void requestEvent() {
    int val=analogRead(ADC2);
    uint8_t valLow = val & 0xff;
    uint8_t valHigh = (val >> 8);
    TinyWireS.send(valHigh);
    TinyWireS.send(valLow);

    val=analogRead(ADC3);
    valLow = val & 0xff;
    valHigh = (val >> 8);
    TinyWireS.send(valHigh);
    TinyWireS.send(valLow);

    TinyWireS.send(digitalRead(SWH1));
}

come puoi vedere, se sei un lettore abituale, lo sketch è il medesimo analizzato nei precedenti articoli dedicati all’Attiny85 ed alla comunicazione I2C.

Ricorda che lo sketch acquisisce i dati analogici a 10bit ( 1024 valori ) e il dato dello switch in forma digitale.

Riporto per completezza lo sketch.

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/elettronica/attiny85-iic-wemos.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.