AlcoTester - AZ-Delivery

We breiden ons assortiment voor onze klanten voortdurend uit en daarom hebben we opnieuw monsters voor onze online shop van de fabrikant ontvangen. (Proeflevering) Dit keer is het een MQ-03-sensormodule. De sensoren MQ-02  en MQ-135  we hebben al opgenomen in ons leveringsprogramma. Het bijzondere aan de MQ-03: deze module is gekalibreerd om alcohol in de lucht te detecteren. We hebben dit aangegrepen om vandaag een ademtester voor u te openen Arduino-Basis die we hebben opgegraven in een forum. Bij gassensoren moet worden opgemerkt dat ze veel elektriciteit vereisen en een bepaalde voorverwarmingstijd vereisen.

Wij gebruiken:
1x Nano V3
1x Mini broodplank
1x MB102
1x LCD12864
Jumper kabel

Optioneel worden vooraf gedefinieerde LED's opgeslagen in de code om het resultaat weer te geven, dat we niet gebruiken in ons toepassingsvoorbeeld.

De pinnen van alle modules zijn gelabeld. (Display aan de achterkant)

Nano V3 MQ-03 Weer te geven MB-102
GND GND GND GND
5V VCC VCC + 5V
A0 A0
D3 RS
D4 R / W
D5 E
D6 RST
3.3V BLA
BLK GND

 

Vereiste bibliotheken: u8glib van de bibliotheekmanager

Code:

 

# opnemen "U8glib.h"

U8GLIB_ST7920_128X64_1X u8g(5, 4, 3 , 6);

#define qtdLED 6

int LED's[qtdLED];
int tellen;
int waarde_sensor = 0;
niet ondertekend lang tijd;
int maxTime = 300;
int status = 1;
String staat;
int positie1;
int ik;
int j;
int maximale aflezing;

nietig tekenen() {   u8g.setFont(u8g_font_8x13B);   u8g.drawRFrame(0, 20, 128, 44, 4);   u8g.drawStr( 30, 10, "AlcoTester");   u8g.setFont(u8g_font_robot_de_niro);   u8g.drawStr( 8, 20, "Niet drinken en rijden");   u8g.setFont(u8g_font_8x13B);   u8g.drawStr( 10, 37, "Wacht");   als (status == 1) {     u8g.drawBox(80, 25, 20, 30);     u8g.drawHLine(77, 24, 26);     u8g.drawRFrame(78, 25 , 24, 32, 0);     u8g.drawRFrame(77, 25 , 26, 32, 0);     u8g.drawHLine(76, 57, 28);     u8g.drawHLine(76, 58, 28);     u8g.drawRFrame(102, 30 , 7, 20, 2);     u8g.drawRFrame(102, 28 , 9, 24, 2);     u8g.setColorIndex(0);     als (tijd == 0) {       tijd = 1;     }     u8g.drawBox(79, 25, 22, tijd);     u8g.setColorIndex(1);   }   als (status == 0) {     u8g.setFont(u8g_font_fub20);     u8g.setColorIndex(0);     u8g.drawBox(10, 25, 110, 33);     u8g.setColorIndex(1);     als (waarde_sensor <= 99) {       positie1 = 50;     }     anders {       positie1 = 43;     }     u8g.setPrintPos(positie1, 45);     u8g.afdrukken(waarde_sensor);     u8g.setFont(u8g_font_orgv01);     int maat = staat.lengte();     int positie = (128 / 2) - ((maat * 5) / 2);     u8g.setPrintPos(positie, 60);     u8g.afdrukken(staat);   }
}

nietig instellen(nietig) {      Serie.beginnen(9600);   pinMode(A0, INGANG);   als ( u8g.getMode() == U8G_MODE_R3G3B2 ) {     u8g.setColorIndex(255);   }   anders als ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {     u8g.setColorIndex(3);   }   anders als ( u8g.getMode() == U8G_MODE_BW ) {     u8g.setColorIndex(1);   }   anders als ( u8g.getMode() == U8G_MODE_HICOLOR ) {     u8g.setHiColorByRGB(255, 255, 255);   }   ik = 0;   j = 7;   terwijl (ik < qtdLED) {     LED's[ik] = j;     ik++;     j++;   }   voor (ik = 0; ik < qtdLED; ik++)   {     pinMode(LED's[ik], UITGANG);   }   digitalWrite(2, UITGANG);
}

nietig lus(nietig) {      waarde_sensor = analoog(A0);   tijd = millis() / 1000;   u8g.eerste pagina();   als (tijd <= maxTime) {     tijd = kaart(tijd, 0, maxTime, 0, 30);     status = 1;   }   anders {     status = 0;   }   als (waarde_sensor >= 0 en waarde_sensor <= 100) {     staat = "geen invoer herkend";   }   anders als (waarde_sensor >= 101 en waarde_sensor <= 200) {     staat = "was waarschijnlijk alleen appelsap";   }   anders als (waarde_sensor >= 201 en waarde_sensor <= 300) {     staat = "Zeker, het was maar een biertje?";   }   anders als (waarde_sensor >= 301 en waarde_sensor <= 400) {     staat = "Ik denk dat er schnaps waren!";   }   anders als (waarde_sensor >= 401 en waarde_sensor <= 550) {     staat = "Zelfs te veel in Beieren!";   }   anders als (waarde_sensor >= 551) {     staat = "Ehm ... ambulance?";   }   doen {     tekenen();   }   terwijl (u8g.volgende pagina() );   vertraging(50);         int sensor = analoog(A0);   als (sensor >= 40) {     digitalWrite(2, HOOG);     maximale aflezing = 0;     voor (tellen = 0; tellen <= 500; tellen++) {       int sensor = analoog(A0);       vertraging(1);       als (sensor > maximale aflezing) {         maximale aflezing = sensor;       }     }     digitalWrite(2, LAAG);     int niveau = kaart(maximumReading, 0, 551, 0, qtdLED);     voor (ik = 0; ik < qtdLED; ik++) {       als (ik < niveau) {         digitalWrite(LED's[ik], HOOG);         vertraging(100);       } anders {         digitalWrite(LED's[ik], LAAG);       }     }     vertraging(500);     voor (ik = 0; ik < qtdLED; ik++) {       digitalWrite(LED's[ik], LAAG);     }   }
}

 

Für arduinoSpecials

Laat een reactie achter

Alle opmerkingen worden voor publicatie gecontroleerd door een moderator

Aanbevolen blogberichten

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery