MODULI: TCA9548A - 4 OLED - DHT11- HC-SR04
N.B. Quando si utilizza un OLED (o più), SD ,ecc.. è necessario utilizzare piattaforme con più di 3 kb di RAM.
Ogni OLED utilizza 1K di RAM, poichè ha bisogno di "Bufferizzare" l'intero display.
Per questa esercitazione ho utilizzato un fishino Mega da 8 kb di Ram e funziona.
Il Multiplexer I2C TCA9548A permette di utilizzare fino ad 8 diversi dispositivi con lo stesso indirizzo bus I2C .
Esempio pratico TCA9548A con quattro OLED e sensori vari.
Metodo pratico scolastico per il funzionamento dell'impianto:
Questo è il risultato...
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_Address 0x3C
Adafruit_SSD1306 oled(1);
#include "Wire.h"
#define TCAADDR 0x70
#include "Ultrasonic.h"
Ultrasonic ultrasonic(2,3); //Trig ==> 2 Echo==> 3
#include "DHT.h"
#define DHTPIN 5
#define DHTTYPE DHT11
//creata una instanza del sensore DHT11
DHT dht(DHTPIN, DHTTYPE);
String distanza;
float h =0;
float t =0;
void tcaselect(uint8_t i) {
if (i > 7) return;
Wire.beginTransmission(TCAADDR);
Wire.write(1 << i);
Wire.endTransmission();
}
void setup()
{
dht.begin();
oled.begin(SSD1306_SWITCHCAPVCC, OLED_Address);
Wire.begin();
}
void loop()
{
h = dht.readHumidity();
t = dht.readTemperature();
distanza=ultrasonic.read();
tcaselect(0); // SCRITTURA OLED 0
oled.begin();
oled.clearDisplay();
oled.setTextColor(WHITE);
oled.setCursor(10,0);
oled.println("Display 0.");
oled.setCursor(4,11);
oled.print("UMIDITA' ");
oled.print(h);
oled.println(" %");
oled.display();
tcaselect(1);// SCRITTURA OLED 1
oled.begin();
oled.clearDisplay();
oled.setTextColor(WHITE);
oled.setCursor(0,0);
oled.println("Display 1.");
oled.setCursor(18,16);
oled.print("DISTANZA cm.. ");
oled.println(distanza);
oled.display();
tcaselect(2);// SCRITTURA OLED 2
oled.begin();
oled.clearDisplay();
oled.setTextColor(WHITE);
oled.setCursor(0,0);
oled.println("Display 2.");
oled.setCursor(0,19);
oled.print("TEMPERATURA ");
oled.println(t);
oled.display();
tcaselect(3);// SCRITTURA OLED 3
oled.begin();
oled.clearDisplay();
oled.setTextColor(WHITE);
oled.setCursor(0,0);
oled.println("Display 3.");
oled.setTextSize(2);
oled.setCursor(0,16);
oled.println(" MARIO");
oled.setTextSize(1);
oled.display();
delay(4000);
}
Il Fishino Mega verrà sostituito con l'ESP32 LoRa.
CONTINUA....