Pour nos clients, nous élargissons constamment notre gamme de produits et nous avons donc de nouveau reçu des échantillons pour notre boutique en ligne du fabricant. (livraison d’échantillons) Cette fois avec un module de capteur MQ-03. Les capteurs MQ-02 Et MQ-135 nous avons déjà inclus dans notre gamme de produits. La particularité du MQ-03 : ce module est calibré pour détecter l’alcool dans l’air. Nous avons profité de cette occasion pour vous donner un testeur de souffle aujourd’hui Arduinobase, que nous avons déterré dans un forum. Avec les capteurs de gaz, il convient de noter qu’ils nécessitent beaucoup d’électricité, ainsi que d’un certain temps de préchauffage.
Nous utilisons:
1x Nano V3
1x Mini Breadboard
1x MB102
1x LCD12864
Câble Jumper
En option, les LED prédéfinies sont stockées dans le code pour afficher le résultat, mais nous ne les utilisons pas dans notre exemple d’application.
Les broches de tous les modules sont étiquetées. (Affichage sur le dos)
Nano V3 | MQ-03 | Affichage | MB-102 |
Gnd | Gnd | Gnd | Gnd |
5v | Vcc Vcc | Vcc Vcc | 5V |
A0 (en) | A0 (en) | ||
D3 D3 | Cas | ||
D4 D4 | R/W | ||
D5 D5 | E | ||
D6 D6 | Tvd | ||
3.3V | Bla | ||
Blk | Gnd |
Bibliothèques requises : u8glib du directeur de la bibliothèque
Code:
#include "U8glib.h" U8GLIB_ST7920_128X64_1X u8g u8g(5, 4, 3 , 6); #define qtdLED 6 Int Led[qtdLED]; Int Compter; Int value_sensor = 0; Unsigned Long Temps; Int MaxTime (en) = 300; Int Statut = 1; String État; Int position1; Int Ⅰ.; Int J; Int maximumLire; Vide Dessiner() { u8g u8g.setFont(u8g_font_8x13B); u8g u8g.drawRFrame(0, 20, 128, 44, 4); u8g u8g.drawStr( 30, 10, "AlcoTester"); u8g u8g.setFont(u8g_font_robot_de_niro); u8g u8g.drawStr( 8, 20, "Ne buvez pas et ne conduisez pas"); u8g u8g.setFont(u8g_font_8x13B); u8g u8g.drawStr( 10, 37, "Attendez"); Si (Statut == 1) { u8g u8g.drawBox (en)(80, 25, 20, 30); u8g u8g.drawHLine(77, 24, 26); u8g u8g.drawRFrame(78, 25 , 24, 32, 0); u8g u8g.drawRFrame(77, 25 , 26, 32, 0); u8g u8g.drawHLine(76, 57, 28); u8g u8g.drawHLine(76, 58, 28); u8g u8g.drawRFrame(102, 30 , 7, 20, 2); u8g u8g.drawRFrame(102, 28 , 9, 24, 2); u8g u8g.setColorIndex(0); Si (Temps == 0) { Temps = 1; } u8g u8g.drawBox (en)(79, 25, 22, Temps); u8g u8g.setColorIndex(1); } Si (Statut == 0) { u8g u8g.setFont(u8g_font_fub20); u8g u8g.setColorIndex(0); u8g u8g.drawBox (en)(10, 25, 110, 33); u8g u8g.setColorIndex(1); Si (value_sensor <= 99) { position1 = 50; } Autre { position1 = 43; } u8g u8g.setPrintPos setPrintPos(position1, 45); u8g u8g.Imprimer(value_sensor); u8g u8g.setFont(u8g_font_orgv01); Int Taille = État.Longueur(); Int Position = (128 / 2) - ((Taille * 5) / 2); u8g u8g.setPrintPos setPrintPos(Position, 60); u8g u8g.Imprimer(État); } } Vide Configuration(Vide) { Série.Commencer(9600); pinMode(A0 (en), Entrée); Si ( u8g u8g.getMode() == U8G_MODE_R3G3B2 ) { u8g u8g.setColorIndex(255); } Autre Si ( u8g u8g.getMode() == U8G_MODE_GRAY2BIT ) { u8g u8g.setColorIndex(3); } Autre Si ( u8g u8g.getMode() == U8G_MODE_BW ) { u8g u8g.setColorIndex(1); } Autre Si ( u8g u8g.getMode() == U8G_MODE_HICOLOR ) { u8g u8g.setHiColorByRGB setHiColorByRGB setHiColorByRGB setHi(255, 255, 255); } Ⅰ. = 0; J = 7; Tandis que (Ⅰ. < qtdLED) { Led[Ⅰ.] = J; Ⅰ.++; J++; } Pour (Ⅰ. = 0; Ⅰ. < qtdLED; Ⅰ.++) { pinMode(Led[Ⅰ.], Sortie); } digitalWrite (en)(2, Sortie); } Vide Boucle(Vide) { value_sensor = analogRead (en)(A0 (en)); Temps = Millis() / 1000; u8g u8g.première Page(); Si (Temps <= MaxTime (en)) { Temps = Carte(Temps, 0, MaxTime (en), 0, 30); Statut = 1; } Autre { Statut = 0; } Si (value_sensor >= 0 Et value_sensor <= 100) { État = "Aucune entrée détectée"; } Autre Si (value_sensor >= 101 Et value_sensor <= 200) { État = "était probablement juste du jus de pomme"; } Autre Si (value_sensor >= 201 Et value_sensor <= 300) { État = "Sûrement c’était juste une bière?"; } Autre Si (value_sensor >= 301 Et value_sensor <= 400) { État = "Il y avait probablement schnaps!"; } Autre Si (value_sensor >= 401 Et value_sensor <= 550) { État = "Même en Bavière trop!"; } Autre Si (value_sensor >= 551) { État = "Um... Ambulance?; } Jeu { Dessiner(); } Tandis que (u8g u8g.Nextpage() ); Retard(50); Int Capteur = analogRead (en)(A0 (en)); Si (Capteur >= 40) { digitalWrite (en)(2, Haute); maximumLire = 0; Pour (Compter = 0; Compter <= 500; Compter++) { Int Capteur = analogRead (en)(A0 (en)); Retard(1); Si (Capteur > maximumLire) { maximumLire = Capteur; } } digitalWrite (en)(2, Faible); Int Niveau = Carte(maximumLire, 0, 551, 0, qtdLED); Pour (Ⅰ = 0; Ⅰ < qtdLED; Ⅰ++) { Si (Ⅰ < Niveau) { digitalWrite (en)(Led[Ⅰ], Haute); Retard(100); } Autre { digitalWrite (en)(Led[Ⅰ], Faible); } } Retard(500); Pour (Ⅰ = 0; Ⅰ < qtdLED; Ⅰ++) { digitalWrite (en)(Led[Ⅰ], Faible); } } }