//YEET
#define WOKWI
#ifdef WOKWI
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#include "Adafruit_NeoPixel.h"
#define NUMPIXELS 16 // NB de DEL sur la barre
#else
#include <rgb_lcd.h>
#include "SHT31.h"
#include <Adafruit_NeoPixel.h>
#define NUMPIXELS 10 // NB de DEL sur la barre
#endif
#define POTENT A3
#define PIN 4 // GPIO de connexion de la barre de DEL
#define PIN_BUTTON 2 // connexion du boutton
#define DELAYVAL 200 // Intervalle entre les DEL
#define COULEUR_ROUGE 200,22, 33
#define COULEUR_BLEU 25, 50, 150
#define MODULO 2
#define MAXI_TEMP 35
#define MINI_TEMP 19
#define MAXI_PALIER 10
#define MINI_PALIER 1
#define COLONES 16
#define LIGNES 2
#define DELAYBUTT 5
#define MAXIPOT 1023
#define MINIPOT 0
#define MAXICHAR 16+1
#define PALIER_DEPART 1
#define TEMP_DEPART 22
#define posiz 0
#define ligne1 0
#define ligne2 1
#define DIVPAL 10.0
#define MINROUGE 0
//-----------------Initialisation
#ifdef WOKWI
#define DHTPIN 7
LiquidCrystal_I2C LCD(0x27, COLONES , LIGNES);
DHT dht(DHTPIN, DHT22);
#define lireTemperature() readTemperature()
#else
rgb_lcd LCD;
SHT31 dht;
#define lireTemperature() getTemperature()
#endif
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
char chaineCaractere [MAXICHAR];
void setup() {
pixels.begin();
LCD.begin(COLONES,LIGNES);
pinMode(PIN_BUTTON,INPUT);
dht.begin();
LCD.clear();
} // setup
void loop() {
int temp = dht.lireTemperature();
int valeurPot = analogRead(POTENT);
static int palier = PALIER_DEPART;
static int mapPotT = TEMP_DEPART;
static int nbBleu = NUMPIXELS;
int rouge = (temp-mapPotT)/(palier/DIVPAL);
int nbRouge;
static bool tempoupal = true;
nbRouge = rouge;
if(nbRouge > NUMPIXELS)
{
nbRouge = NUMPIXELS;
}
else if(nbRouge < MINROUGE)
{
nbRouge = MINROUGE;
}
nbBleu = NUMPIXELS - nbRouge;
if (tempoupal == true)
{
mapPotT = map(valeurPot,MAXIPOT,MINIPOT,MINI_TEMP,MAXI_TEMP);
LCD.setCursor(posiz,ligne1);
snprintf(chaineCaractere,MAXICHAR, "R:%02d* P:%02d T:%02d",mapPotT,palier,temp);
LCD.print(chaineCaractere);
}
else
{
palier = map(valeurPot,MAXIPOT,MINIPOT,MINI_PALIER,MAXI_PALIER);
LCD.setCursor(posiz,ligne1);
snprintf(chaineCaractere,MAXICHAR, "R:%02d P:%02d* T:%02d",mapPotT,palier,temp);
LCD.print(chaineCaractere);
}
LCD.setCursor(posiz,ligne2);
snprintf(chaineCaractere,MAXICHAR, "BL: %02d RG: %02d", nbBleu, nbRouge);
LCD.print(chaineCaractere);
if(digitalRead(PIN_BUTTON))
{
delay(DELAYBUTT);
while(digitalRead(PIN_BUTTON));
delay(DELAYBUTT);
if(tempoupal == true)
{
tempoupal = false;
}
else
{
tempoupal = true;
}
}
// les DELS
for(int i = 0; i <= NUMPIXELS; i++)
{
if(i < nbBleu)
{
pixels.setPixelColor(i,pixels.Color(COULEUR_BLEU));
}
else
{
pixels.setPixelColor(i,pixels.Color(COULEUR_ROUGE));
}
pixels.show();
}
}