Forum Électro-Bidouilleur

Merci de vous connecter ou de vous inscrire.

Connexion avec identifiant, mot de passe et durée de la session
Recherche avancée  

Nouvelles:

Bienvenue au Forum de discussion Électro-Bidouilleur! Inscrivez-vous pour participer aux discussions!: 
https://forum.bidouilleur.ca/index.php?action=register Les demandes d'inscription sont révisées quotidiennement.

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.

Sujets - Manu

Pages: 1 [2]
16
Bonjour,
Je vous laisse un tuto, expliquant comment rajouter la charge sans fil Qi a mes écouteurs Soundpeats Truebuds.

Commentaire:
-La recharge USB C restera utilisable.
-La charge Qi chauffe un peu, peut-être une amélioration à  concevoir pour éviter cela.

Sans plus tarder...



Tout conseil ou amélioration est toujours bienvenu !
Salutations  ;)

17
Salut à  tous,  :)

Je faisais un thermostat qui était très simple en principe, mais finalement qui m'a bien caser la tête pour obtenir quelque chose comme un effet d'hystérésis. Je ne connais que les bases de code sur Arduino, donc toute contribution, simplification, nettoyage etc.. du code sera la bienvenue  ;D

Thermostat qui active un ventilateur à  partir d'une température. Une fois activé, il devra descendre de deux degrés pour se désactiver.





T= 19ºC sur la photo   Température Réelle
A= 24ºC sur la photo   Temp Activation
B= pasa sur el display   Temp Activation avec "hystérésis" à  partir de 2eme tour du "for".

for (T >= A ; T>= B ; T=T) {
      digitalWrite(Pin_Relay, LOW);
      B = (A-2);                           
}


// http://forum.bidouilleur.ca/
// v1.0 Thermostat STM32
/*
STM32F103C8T6
Relay 5v mod 3.3V
OLED SH1106
DHT22

PA5 input analog voltmeter
PB0 input analo pot for activation adjust
PB6 SCK OLED SH1106
PB7 SDA OLED SH1106
PB8 DHT22
 */

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
#include <DHT.h>
#define DHTPIN PB8
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
int Pin_Relay = PA0;
int Pin_VSalida = PA5;
int Pin_Activ = PB0;

void setup(void) {
  Serial.begin(9600);
  u8g2.begin();
  dht.begin();
  pinMode(Pin_Relay, OUTPUT);
  pinMode(Pin_VSalida, INPUT);
  pinMode(Pin_Activ, INPUT);
  digitalWrite(Pin_Relay, HIGH);
  delay(500);
}

void loop(void) {
 
 float T = dht.readTemperature();                   // Temperature ªC (for ºF -> dht.Temperature(True))
 float H = dht.readHumidity();                      // Humidity
 float V = (analogRead(Pin_VSalida)/71.236);        // AnalogRead to Volts (the formula changes according to the voltage divider bridge used)
 float A = ((analogRead(Pin_Activ)*1.01)-1001);     // AnalogRead to Temp activation (the formula changes according to the potentiometer value and voltage divider bridge used)
 float B = A;                                       // Over Temperature ºC = Activation Relay to apply later hysterersis

// Relay ON necessary conditions
for (T >= A ; T>= B ; T=T) {                        // Step1 Temp > A , Step2 Temp > B , Step3 not necessary but fill Temp = Temp 
  //Relay ON
  u8g2.clearBuffer();
  digitalWrite(Pin_Relay, LOW);
  u8g2.setFont (u8g2_font_courB12_tf);
  u8g2.setCursor(0,18);
  u8g2.print("ON");
  u8g2.setCursor(52,18);
  u8g2.print(V,0);
  u8g2.print("V");
  u8g2.setFont (u8g2_font_courB12_tf);
  u8g2.setCursor(86,18);
  u8g2.print(A,0);
  u8g2.print((char)176);
  u8g2.print("C"); 
  u8g2.setFont(u8g2_font_logisoso16_tr);
  u8g2.setCursor(0,40);
  u8g2.print("Temp");
  u8g2.setCursor(64,40);
  u8g2.print(dht.readTemperature(),0);
  u8g2.print((char)167);
  u8g2.print(" C");
  u8g2.setFont(u8g2_font_logisoso16_tr);
  u8g2.setCursor(0,63);
  u8g2.print("Hum");
  u8g2.setCursor(64,63);
  u8g2.print(dht.readHumidity(),0);
  u8g2.print(" ");
  u8g2.print((char)37);
  u8g2.sendBuffer();
  delay(300);
  T = dht.readTemperature();
  H = dht.readHumidity();                   
  V = (analogRead(Pin_VSalida)/71.236);       
  A = ((analogRead(Pin_Activ)*1.01)-1001); 
  B = (A-2);                                   // for Step2 Temp > B add "Hysteresis"
}
// Relay OFF
  u8g2.clearBuffer();
  digitalWrite(Pin_Relay, HIGH);
  u8g2.setFont (u8g2_font_courB12_tf);
  u8g2.setCursor(0,18);
  u8g2.print("OFF");
  u8g2.setCursor(52,18);
  u8g2.print(V,0);
  u8g2.print("V");
  u8g2.setFont (u8g2_font_courB12_tf);
  u8g2.setCursor(86,18);
  u8g2.print(A,0);
  u8g2.print((char)176);
  u8g2.print("C"); 
  u8g2.setFont(u8g2_font_logisoso16_tr);
  u8g2.setCursor(0,40);
  u8g2.print("Temp");
  u8g2.setCursor(64,40);
  u8g2.print(dht.readTemperature(),0);
  u8g2.print((char)167);
  u8g2.print(" C");
  u8g2.setFont(u8g2_font_logisoso16_tr);
  u8g2.setCursor(0,63);
  u8g2.print("Hum");
  u8g2.setCursor(64,63);
  u8g2.print(dht.readHumidity(),0);
  u8g2.print(" ");
  u8g2.print((char)37);
  u8g2.sendBuffer();
  delay(300);
}

Liens:

Relais 5v -> 3.3v modif
http://forum.bidouilleur.ca/index.php?topic=907.0

EB_#148 Banc d'Essai: Contrôleur de Température W1209 (Thermostat)
https://youtu.be/j6blCrNm-5s

18
Bonjour,

Je voudrais partager avec vous cette bidouille sur STM32 pour mesurer la qualité de l'air.
En espèrant que cela vous sera utile.

Codes Disponibles:
V1.0 Affichages des valeurs analog
V1.1 Affichages des valeurs analog + Alerte des limites établies 04-10-2020
V1.2 Affichages des valeurs analog + Alerte des limites établies + Dimming Oled  10-10-2020

Erreur de conception:
DHT22--> Je vous conseille de le situé plus à  l'éxterieur !



PIN:
 ( Attention "Not 5V Tolerant" du STM32 diviseur de tension pour 3.3v max "exemple 47k+68k & 220k = 3.28v" )

A0 - Sensor MQ3  ( Alcohol )                [ Alcohol, Benzine, CH4, Hexane, LPG, CO ]
A1 - Sensor MQ4  ( CH4 )                     [ LPG, CH4, H2, CO, Alcohol, Smoke ]
A2 - Sensor MQ5  ( LPG & CH4 )           [ H2, LPG, CH4, CO, Alcohol ]
A3 - Sensor MQ6  ( CH4 & LPG )           [ LPG, H2, Ch4, C), Alcohol ]
A4 - Sensor MQ9  ( CH4 & CO )            [ LPG, CO, CH4 ]
A5 - Sensor MQ8  ( H2 & Alcohol )        [ H2, LPG, CH4, CO, Alcohol ]
A6 - Sensor MQ135( NH4 Aire Quality ) [ CO2, CO, NH4,  NH3, Toluene ]
A7 - Sensor MQ2  ( Propane & H2 )       [ H2, LPG, CH4, CO, Alcohol, Propane ]
B0 - Sensor MQ7  ( H2 & CO )              [ CO, H2, LPG, CH4, Alcohol ]
B1 - LDR         ( LDR GL5528 )
B6 - OLED SCL    ( OLED 1.3' 4P SH1106 I2C 128x64 )
B7 - OLED SDA
B8 - DHT22       ( Data TX -> RX avec pullup 10k)
B12- MicroSD cs  ( MicroSD SPI )
B13- MicroSD sck
B14- MicroSD miso
B15- MicroSD mosi



CODES:
 :o  j'ai essayé de faire le plus simple possible

V1.0 Affichages des valeurs analogiques
        Résumé:   u8g2.clearBuffer();
                        u8g2.setFont(u8g2_font_haxrcorp4089_tr);
                        u8g2.setCursor(0,10);
                        u8g2.print("MQ3");
                        u8g2.setCursor(33,10);
                        u8g2.print(analogRead(PA0));
                        u8g2.setCursor(64,10);
                        u8g2.setFont(u8g2_font_haxrcorp4089_tr);
                        u8g2.print("/ ");
                        u8g2.print(analogRead(PA1));
                        u8g2.setCursor(104,10);
                        u8g2.print("MQ4");
                        u8g2.sendBuffer();
// http://forum.bidouilleur.ca/
// v1.0 AirQ Analog Value

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
#include <DHT.h>
#define DHTPIN PB8
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

void setup(void) {
  u8g2.begin();
  dht.begin();
}

void loop(void) {

  // Pour la temperature en Celsius
  //    float t = dht.readTemperature();

  // Pour la temperature en Fahrenheit (isFahrenheit = true)
  //    float t = dht.readTemperature(true);

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,10);
  u8g2.print("MQ3");
  u8g2.setCursor(33,10);
  u8g2.print(analogRead(PA0));
  u8g2.setCursor(64,10);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PA1));
  u8g2.setCursor(104,10);
  u8g2.print("MQ4");
 
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,20);
  u8g2.print("MQ5");
  u8g2.setCursor(33,20);
  u8g2.print(analogRead(PA2));
  u8g2.setCursor(64,20);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ "); 
  u8g2.print(analogRead(PA3));
  u8g2.setCursor(104,20);
  u8g2.print("MQ6");

  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,30);
  u8g2.print("MQ9");
  u8g2.setCursor(33,30);
  u8g2.print(analogRead(PA4));
  u8g2.setCursor(64,30);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PA5));
  u8g2.setCursor(104,30);
  u8g2.print("MQ8");

  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,40);
  u8g2.print("ArQ");
  u8g2.setCursor(33,40); 
  u8g2.print(analogRead(PA6)); 
  u8g2.setCursor(64,40);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PA7));
  u8g2.setCursor(104,40);
  u8g2.print("MQ2");

  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,50);
  u8g2.print("MQ7");
  u8g2.setCursor(33,50); 
  u8g2.print(analogRead(PB0));
  u8g2.setCursor(64,50);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PB1));
  u8g2.setCursor(104,50);
  u8g2.print("LDR");
 
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,60);
  u8g2.print("Hum");
  u8g2.setCursor(33,60); 
  u8g2.print(h);
  u8g2.setCursor(64,60);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(t);
  u8g2.setCursor(104,60);
  u8g2.print("Temp");
 
  u8g2.sendBuffer();
  delay(1000);

}

V1.1 Affichages des valeurs analogiques + Alerte quand les limites établies sont dépassées 04-10-2020
        Résumé:   if (analogRead(PinMQ2) >LimitMQ2) {
                           u8g2.clearBuffer();
                           u8g2.setFont(u8g2_font_logisoso32_tf);
                           u8g2.setCursor(0,32);
                           u8g2.print(MsgMQ2);
                           u8g2.setCursor(0,64);
                           u8g2.print(analogRead(PinMQ2));
                           u8g2.sendBuffer();
// http://forum.bidouilleur.ca/
// v1.1 AirQ  Alert
// Merci a papyblue

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
#include <DHT.h>
#define DHTPIN PB8
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

// Menssage Alert
char MsgMQ2[]= "PropH2";
char MsgMQ3[] = "Alcoh.";
char MsgMQ4[] = "CH4";
char MsgMQ5[] = "LPGch4";
char MsgMQ6[] = "CH4lpg";
char MsgMQ7[] = "H2 CO";
char MsgMQ8[] = "H2 Alc";
char MsgMQ9[] = "CH4 CO";
char MsgMQ135[] = "AirQ";
char MsgHum[] = "HUMID.";
char MsgTemp[] = "TEMP.";
// analogRead(Pin Read Pin
int PinMQ2 = PA7;
int PinMQ3 = PA0;
int PinMQ4 = PA1;
int PinMQ5 = PA2;
int PinMQ6 = PA3;
int PinMQ7 = PB0;
int PinMQ8 = PA5;
int PinMQ9 = PA4;
int PinMQ135 = PA6;
int PinLDR = PB1;
// Limits Definied by User
int LimitMQ2 = 70;
int LimitMQ3 = 70;
int LimitMQ4 = 70;
int LimitMQ5 = 45;
int LimitMQ6 = 50;
int LimitMQ7 = 35;
int LimitMQ8 = 18;
int LimitMQ9 = 35;
int LimitMQ135 = 13;
int LimitSupHum = 75;
int LimitInfHum = 40;
int LimitSupTemp = 27;
int LimitInfTemp = 17;

void setup(void) {
  u8g2.begin();
  dht.begin();
}

void AllValue(){
  /* Display show
   MQ2 --- MQ7
   MQ3 --- MQ8
   MQ4 --- MQ9
   MQ5 --- MQ135
   MQ6 --- LDR
   HUM --- TEMP
   */
u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,10);
  u8g2.print("MQ2");
  u8g2.setCursor(33,10);
  u8g2.print(analogRead(PinMQ2));
  u8g2.setCursor(64,10);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PinMQ7));
  u8g2.setCursor(104,10);
  u8g2.print("MQ7");
 
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,20);
  u8g2.print("MQ3");
  u8g2.setCursor(33,20);
  u8g2.print(analogRead(PinMQ3));
  u8g2.setCursor(64,20);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PinMQ8));
  u8g2.setCursor(104,20);
  u8g2.print("MQ8");

  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,30);
  u8g2.print("MQ4");
  u8g2.setCursor(33,30);
  u8g2.print(analogRead(PinMQ4));
  u8g2.setCursor(64,30);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PinMQ9));
  u8g2.setCursor(104,30);
  u8g2.print("MQ9");

  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,40);
  u8g2.print("MQ5");
  u8g2.setCursor(33,40);
  u8g2.print(analogRead(PinMQ5));
  u8g2.setCursor(64,40);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PinMQ135));
  u8g2.setCursor(104,40);
  u8g2.print("MQ135");

  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,50);
  u8g2.print("MQ6");
  u8g2.setCursor(33,50);
  u8g2.print(analogRead(PinMQ6));
  u8g2.setCursor(64,50);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PinLDR));
  u8g2.setCursor(104,50);
  u8g2.print("LDR");
 
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,60);
  u8g2.print("Hum");
  u8g2.setCursor(33,60);
  u8g2.print(dht.readHumidity(),0);
  u8g2.setCursor(64,60);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(dht.readTemperature(),1);
  u8g2.setCursor(104,60);
  u8g2.print("Temp");
u8g2.sendBuffer();
 }

void AlertFontLineFirst(){
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_logisoso32_tf);
  u8g2.setCursor(0,32);
  }
 
void AlertLineSecond(){
  u8g2.setCursor(0,64);
  }

void AlertShowDisplay(){
  u8g2.sendBuffer();
}
 
void loop(void) {

      if (analogRead(PinMQ2) >LimitMQ2) {
        AlertFontLineFirst();
        u8g2.print(MsgMQ2);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ2));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ3) > LimitMQ3){
        AlertFontLineFirst();
        u8g2.print(MsgMQ3);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ3));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ4) > LimitMQ4){
        AlertFontLineFirst();
        u8g2.print(MsgMQ4);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ4));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ5) > LimitMQ5){
        AlertFontLineFirst();
        u8g2.print(MsgMQ5);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ5));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ6) > LimitMQ6){
        AlertFontLineFirst();
        u8g2.print(MsgMQ6);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ6));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ7) > LimitMQ7){
        AlertFontLineFirst();
        u8g2.print(MsgMQ7);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ7));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ8) > LimitMQ8){
        AlertFontLineFirst();
        u8g2.print(MsgMQ8);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ8));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ9) > LimitMQ9){
        AlertFontLineFirst();
        u8g2.print(MsgMQ9);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ9));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ135) > LimitMQ135){
        AlertFontLineFirst();
        u8g2.print(MsgMQ135);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ135));
        AlertShowDisplay();
        }
      else if (dht.readHumidity() > LimitSupHum){
        AlertFontLineFirst();
        u8g2.print(MsgHum);
        AlertLineSecond();
        u8g2.print(dht.readHumidity(),0); // decimal ,0
        u8g2.print("%");
        AlertShowDisplay();
        }
      else if (dht.readHumidity() < LimitInfHum){
        AlertFontLineFirst();
        u8g2.print(MsgHum);
        AlertLineSecond();
        u8g2.print(dht.readHumidity(),0);
        u8g2.print("%");
        AlertShowDisplay();
        }
      else if (dht.readTemperature() > LimitSupTemp){
        AlertFontLineFirst();
        u8g2.print(MsgTemp);
        AlertLineSecond();
        u8g2.print(dht.readTemperature(),1); // decimal  ,1
        u8g2.print("C");
        AlertShowDisplay();
        }
      else if (dht.readTemperature() < LimitInfTemp){
        AlertFontLineFirst();
        u8g2.print(MsgTemp);
        AlertLineSecond();
        u8g2.print(dht.readTemperature(),1);
        u8g2.print("C");
        AlertShowDisplay();
        }
      else {
        AllValue();
      }
     
  delay(1000);
}

V1.2 Affichages des valeurs analog + Alerte des limites établies + Dimming Oled  10-10-2020
        Résumé:   if (analogRead(PinLDR) < LimitInfLDR){
                            u8g2.setContrast(0);
                            u8g2.setContrast(255);
Comme le DHT est trop près, il m'a fallu faire des ajustements de Temp & Humd. pas top --> Je vous conseille de le situé plus à  l'éxterieur !
                            int TempAdjust = -4;
                            int HumdAdjust = 7;

// http://forum.bidouilleur.ca/
// v1.2 AirQ  Alert Dimming

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
#include <DHT.h>
#define DHTPIN PB8
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

char MsgMQ2[]= "PropH2";// Menssage Alert
char MsgMQ3[] = "Alcoh.";
char MsgMQ4[] = "CH4";
char MsgMQ5[] = "LPGch4";
char MsgMQ6[] = "CH4lpg";
char MsgMQ7[] = "H2 CO";
char MsgMQ8[] = "H2 Alc";
char MsgMQ9[] = "CH4 CO";
char MsgMQ135[] = "AirQ";
char MsgHum[] = "HUMID.";
char MsgTemp[] = "TEMP.";

int PinMQ2 = PA7;// analogRead(Pin Read Pin
int PinMQ3 = PA0;
int PinMQ4 = PA1;
int PinMQ5 = PA2;
int PinMQ6 = PA3;
int PinMQ7 = PB0;
int PinMQ8 = PA5;
int PinMQ9 = PA4;
int PinMQ135 = PA6;
int PinLDR = PB1;
int TempAdjust = -4; // negative = substract / positive = add
int HumdAdjust = 7;  // negative = substract / positive = add

int LimitMQ2 = 55;// Limits Definied by User
int LimitMQ3 = 64;
int LimitMQ4 = 64;
int LimitMQ5 = 38;
int LimitMQ6 = 42;
int LimitMQ7 = 32;
int LimitMQ8 = 13;
int LimitMQ9 = 33;
int LimitMQ135 = 11;
int LimitSupHum = 77;
int LimitInfHum = 40;
int LimitSupTemp = 27;
int LimitInfTemp = 17;
int LimitSupLDR = 450;
int LimitInfLDR = 93;

void setup(void) {
  u8g2.begin();
  dht.begin();
}

void AllValue(){
u8g2.clearBuffer();
      if (analogRead(PinLDR) < LimitInfLDR){
        u8g2.setContrast(0);
        }
      else{
        u8g2.setContrast(255);
        }   
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,10);
  u8g2.print("MQ2");
  u8g2.setCursor(33,10);
  u8g2.print(analogRead(PinMQ2));
  u8g2.setCursor(64,10);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PinMQ7));
  u8g2.setCursor(104,10);
  u8g2.print("MQ7");
 
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,20);
  u8g2.print("MQ3");
  u8g2.setCursor(33,20);
  u8g2.print(analogRead(PinMQ3));
  u8g2.setCursor(64,20);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PinMQ8));
  u8g2.setCursor(104,20);
  u8g2.print("MQ8");

  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,30);
  u8g2.print("MQ4");
  u8g2.setCursor(33,30);
  u8g2.print(analogRead(PinMQ4));
  u8g2.setCursor(64,30);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PinMQ9));
  u8g2.setCursor(104,30);
  u8g2.print("MQ9");

  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,40);
  u8g2.print("MQ5");
  u8g2.setCursor(33,40);
  u8g2.print(analogRead(PinMQ5));
  u8g2.setCursor(64,40);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PinMQ135));
  u8g2.setCursor(104,40);
  u8g2.print("M135");

  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,50);
  u8g2.print("MQ6");
  u8g2.setCursor(33,50);
  u8g2.print(analogRead(PinMQ6));
  u8g2.setCursor(64,50);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print(analogRead(PinLDR));
  u8g2.setCursor(104,50);
  u8g2.print("LDR");
 
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.setCursor(0,60);
  u8g2.print("Hum");
  u8g2.setCursor(33,60);
  u8g2.print((dht.readHumidity()+HumdAdjust),0);
  u8g2.setCursor(64,60);
  u8g2.setFont(u8g2_font_haxrcorp4089_tr);
  u8g2.print("/ ");
  u8g2.print((dht.readTemperature()+TempAdjust),1);
  u8g2.setCursor(104,60);
  u8g2.print("Temp");
u8g2.sendBuffer();
delay(500);
 }

void AlertFontLineFirst(){
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_logisoso30_tf);
  u8g2.setCursor(0,32);
  }
 
void AlertLineSecond(){
  u8g2.setCursor(0,64);
  }

void AlertShowDisplay(){
      if (analogRead(PinLDR) < LimitInfLDR){
        u8g2.setContrast(0);
        u8g2.sendBuffer();
        }
      else{
        u8g2.setContrast(255);
        u8g2.sendBuffer();
        }   
     delay(1000);
     }
 
void loop(void) {
      if (analogRead(PinMQ2) >LimitMQ2) {
        AlertFontLineFirst();
        u8g2.print(MsgMQ2);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ2));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ3) > LimitMQ3){
        AlertFontLineFirst();
        u8g2.print(MsgMQ3);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ3));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ4) > LimitMQ4){
        AlertFontLineFirst();
        u8g2.print(MsgMQ4);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ4));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ5) > LimitMQ5){
        AlertFontLineFirst();
        u8g2.print(MsgMQ5);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ5));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ6) > LimitMQ6){
        AlertFontLineFirst();
        u8g2.print(MsgMQ6);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ6));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ7) > LimitMQ7){
        AlertFontLineFirst();
        u8g2.print(MsgMQ7);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ7));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ8) > LimitMQ8){
        AlertFontLineFirst();
        u8g2.print(MsgMQ8);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ8));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ9) > LimitMQ9){
        AlertFontLineFirst();
        u8g2.print(MsgMQ9);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ9));
        AlertShowDisplay();
        }
      else if (analogRead(PinMQ135) > LimitMQ135){
        AlertFontLineFirst();
        u8g2.print(MsgMQ135);
        AlertLineSecond();
        u8g2.print(analogRead(PinMQ135));
        AlertShowDisplay();
        }
      else if ((dht.readHumidity()+HumdAdjust) > LimitSupHum){
        AlertFontLineFirst();
        u8g2.print(MsgHum);
        AlertLineSecond();
        u8g2.print((dht.readHumidity()+HumdAdjust),0); // decimal ,0
        u8g2.print("%");
        AlertShowDisplay();
        }
      else if ((dht.readHumidity()+HumdAdjust) < LimitInfHum){
        AlertFontLineFirst();
        u8g2.print(MsgHum);
        AlertLineSecond();
        u8g2.print((dht.readHumidity()+HumdAdjust),0);
        u8g2.print("%");
        AlertShowDisplay();
        }
      else if ((dht.readTemperature()+TempAdjust) > LimitSupTemp){
        AlertFontLineFirst();
        u8g2.print(MsgTemp);
        AlertLineSecond();
        u8g2.print((dht.readTemperature()+TempAdjust),1); // decimal  ,1
        u8g2.print("C");
        AlertShowDisplay();
        }
      else if ((dht.readTemperature()+TempAdjust) < LimitInfTemp){
        AlertFontLineFirst();
        u8g2.print(MsgTemp);
        AlertLineSecond();
        u8g2.print((dht.readTemperature()+TempAdjust),1);
        u8g2.print("C");
        AlertShowDisplay();
        }
      else {
        AllValue();
      }   
  delay(200);
}


INFO PRATIQUE:

Library
https://github.com/olikraus/u8g2
https://github.com/adafruit/DHT-sensor-library

Fonts du texte u8g2
https://github.com/olikraus/u8g2/wiki/fntgrplogisoso

Tuto STM32F103C8T6 par USB comme Arduino
https://www.youtube.com/watch?v=Myon8H111PQ

Pour des lectures en ppm mgL et plus:
https://github.com/miguel5612/MQSensorsLib
pour le zip MQUnifiedsensor.h directement
https://github.com/miguel5612/MQSensorsLib/archive/master.zip

À bientôt !  ;)

Pages: 1 [2]