Per i nostri clienti estendiamo costantemente il nostro assortimento e così abbiamo accolto di nuovo Sampels per il nostro negozio in linea dal fabbricante. (Consegna di giudizio) questo qualche volta compreso, un modulo di sensore MQ-03. I sensori MQ-02 e MQ-135 se abbiamo già fatto amicizia nel nostro programma di consegna. Speciale in MQ-03: questo modulo deve riconoscere da alcool nell'aria calibrata. Sopportiamo all'occasione presa a Lei oggi un tester di respiro Arduino- Introdurre la base che abbiamo liberato scavando in un forum. Dai sensori del gas deve esser seguito questo questi molte correnti hanno bisogno, così come hanno bisogno di Vorheiztzeit certo.
Usiamo per esso:
1x Nano V3
1x Piastra per montaggio di circuiti elettronici mini
1x MB102
1x LCD12864
Cavo Pullover
Predefinito ha Condotto all'esposizione del risultato è facoltativo nel codice non posa noi, tuttavia, nel nostro esempio di uso di uso.
Gli Spilli di tutti i moduli sono segnati. (Esposizione al dorso)
Nano V3 | MQ-03 | Esposizione | MB 102 |
GND | GND | GND | GND |
5 V | VCC | VCC | 5 V |
A0 | A0 | ||
D3 | RS | ||
D4 | R/W | ||
D5 | E | ||
D6 | RST | ||
3.3 V | BLA | ||
BLK | GND |
Biblioteche richieste: u8glib dal governatore di biblioteca
Codice:
#include «U8glib.h» U8GLIB_ST7920_128X64_1X u8g(5, 4, 3 , 6); #define qtdLED 6 intervallo LEDs[qtdLED]; intervallo numero; intervallo value_sensor = 0; non firmato a lungo tempo; intervallo maxTime = 300; intervallo stato = 1; Spago stato; intervallo position1; intervallo io; intervallo j; intervallo maximumReading; vuoto disegnare() { 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, «Non beva e avanzi»); u8g.setFont(u8g_font_8x13B); u8g.drawStr( 10, 37, «Aspettare»); se (stato == 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); se (tempo == 0) { tempo = 1; } u8g.drawBox(79, 25, 22, tempo); u8g.setColorIndex(1); } se (stato == 0) { u8g.setFont(u8g_font_fub20); u8g.setColorIndex(0); u8g.drawBox(10, 25, 110, 33); u8g.setColorIndex(1); se (value_sensor <= 99) { position1 = 50; } altro { position1 = 43; } u8g.setPrintPos(position1, 45); u8g.stampa(value_sensor); u8g.setFont(u8g_font_orgv01); intervallo dimensioni = stato.lunghezza(); intervallo posizione = (128 / 2) - ((dimensioni * 5) / 2); u8g.setPrintPos(posizione, 60); u8g.stampa(stato); } } vuoto situazione(vuoto) { Seriale.cominciare(9600); pinMode(A0, IMPIEGO); se ( u8g.getMode() == U8G_MODE_R3G3B2 ) { u8g.setColorIndex(255); } altro se ( u8g.getMode() == U8G_MODE_GRAY2BIT ) { u8g.setColorIndex(3); } altro se ( u8g.getMode() == U8G_MODE_BW ) { u8g.setColorIndex(1); } altro se ( u8g.getMode() == U8G_MODE_HICOLOR ) { u8g.setHiColorByRGB(255, 255, 255); } io = 0; j = 7; mentre (io < qtdLED) { LEDs[io] = j; io++; j++; } per (io = 0; io < qtdLED; io++) { pinMode(LEDs[io], USCITA); } digitalWrite(2, USCITA); } vuoto cappio(vuoto) { value_sensor = analogRead(A0); tempo = millis() / 1000; u8g.pagina di cresta(); se (tempo <= maxTime) { tempo = mappa(tempo, 0, maxTime, 0, 30); stato = 1; } altro { stato = 0; } se (value_sensor >= 0 e value_sensor <= 100) { stato = «nessun impiego riconosciuto»; } altro se (value_sensor >= 101 e value_sensor <= 200) { stato = «è stato eccellente solo il succo di mela»; } altro se (value_sensor >= 201 e value_sensor <= 300) { stato = «Certamente è stata solo una birra?»; } altro se (value_sensor >= 301 e value_sensor <= 400) { stato = «Là il superalcolico è stato presente probabilmente!»; } altro se (value_sensor >= 401 e value_sensor <= 550) { stato = «Perfino in Baviera troppo!»; } altro se (value_sensor >= 551) { stato = «Ähm... Ambulanze?»; } Th { disegnare(); } mentre (u8g.nextPage() ); ritardo(50); intervallo sensore = analogRead(A0); se (sensore >= 40) { digitalWrite(2, IN ALTO); maximumReading = 0; per (numero = 0; numero <= 500; numero++) { intervallo sensore = analogRead(A0); ritardo(1); se (sensore > maximumReading) { maximumReading = sensore; } } digitalWrite(2, IN BASSO); intervallo livello = mappa(maximumReading, 0, 551, 0, qtdLED); per (io = 0; io < qtdLED; io++) { se (io < livello) { digitalWrite(LEDs[io], IN ALTO); ritardo(100); } altro { digitalWrite(LEDs[io], IN BASSO); } } ritardo(500); per (io = 0; io < qtdLED; io++) { digitalWrite(LEDs[io], IN BASSO); } } }