Senzor oxidu uhelnatého MQ-9
Senzor reaguje nejvíce na oxid uhelnatý (CO) ale i na hořlavé plyny metan a propan. Aktivním prvkem tohoto senzoru je tenká vrstva SnO2, jejíž odpor se mění s koncentrací zmíněných plynů.
Tento projekt demonstruje vytvoření jednoduché kalkulačky s LCD displejem a 4x4 maticovou klávesnicí. Kalkulačka umožňuje základní aritmetické operace jako sčítání, odčítání, násobení a dělení.
// Nastavení I2C LCD displeje LiquidCrystal_I2C lcd(0x27, 16, 2); // Nastavení 4x4 klávesnice const byte RADKY = 4; // Počet řádků const byte SLOUPCE = 4; // Počet sloupců char klavesy[RADKY][SLOUPCE] = { {'7', '8', '9', '/'}, {'4', '5', '6', '*'}, {'1', '2', '3', '-'}, {'C', '0', '=', '+'} // Znak "C" pro mazání }; byte pinRadky[RADKY] = {9, 8, 7, 6}; // Piny pro řádky byte pinSloupce[SLOUPCE] = {5, 4, 3, 2}; // Piny pro sloupce Keypad klavesnice = Keypad(makeKeymap(klavesy), pinRadky, pinSloupce, RADKY, SLOUPCE); // Proměnné pro ukládání stavu kalkulačky String vstup = ""; // Uložený vstup float prvniCislo = 0.0; // První číslo float druheCislo = 0.0; // Druhé číslo char operace = ' '; // Operátor (+, -, *, /) bool pocitam = false; // Indikace, zda se právě počítá void setup() { lcd.init(); // Inicializace LCD lcd.backlight(); // Zapnutí podsvícení lcd.setCursor(0, 0); lcd.print("Kalkulacka"); // Úvodní zpráva delay(2000); lcd.clear(); } void loop() { char stisk = klavesnice.getKey(); if (stisk) { // Pokud je stisknuta klávesa if (stisk >= '0' & stisk <= '9') { zpracujCislo(stisk); // Zpracování čísla } else if (stisk == '/') { zpracujOperaci('/'); // Dělení } else if (stisk == '*') { zpracujOperaci('*'); // Násobení } else if (stisk == '-') { zpracujOperaci('-'); // Odečítání } else if (stisk == '+') { zpracujOperaci('+'); // Sčítání } else if (stisk == '=') { vypocti(); // Výpočet výsledku } else if (stisk == 'C') { vycisti(); // Vymazání kalkulačky } } } // Funkce pro zpracování čísel void zpracujCislo(char cislo) { if (vstup.length() < 16) { // Kontrola, že vstup nepřekročí šířku displeje vstup += cislo; lcd.setCursor(0, 0); lcd.print(vstup); } } // Funkce pro zpracování operátorů void zpracujOperaci(char oper) { if (!pocitam & vstup.length() > 0) { prvniCislo = vstup.toFloat(); // Převedení vstupu na číslo operace = oper; // Uložení operátoru pocitam = true; vstup = ""; // Vymazání vstupu pro druhé číslo lcd.clear(); lcd.setCursor(0, 0); lcd.print(vstup); // Zobrazení aktuálního vstupu lcd.setCursor(0, 1); lcd.print(operace); // Zobrazení operace na novém řádku } } // Funkce pro výpočet void vypocti() { if (pocitam & vstup.length() > 0) { druheCislo = vstup.toFloat(); // Převedení vstupu na druhé číslo float vysledek = 0.0; switch (operace) { case '+': vysledek = prvniCislo + druheCislo; break; case '-': vysledek = prvniCislo - druheCislo; break; case '*': vysledek = prvniCislo * druheCislo; break; case '/': vysledek = (druheCislo != 0) ? prvniCislo / druheCislo : NAN; break; } lcd.clear(); if (String(vysledek).length() > 16) { // Kontrola přetečení lcd.print("Chyba: Prilis"); lcd.setCursor(0, 1); lcd.print("dlouhy vysledek"); } else { lcd.print("Vysledek:"); lcd.setCursor(0, 1); lcd.print(vysledek, 4); // Výsledek s přesností na 4 desetinná místa } } } // Funkce pro vymazání kalkulačky void vycisti() { vstup = ""; prvniCislo = 0.0; druheCislo = 0.0; operace = ' '; pocitam = false; lcd.clear(); lcd.print("Vymazano"); delay(1000); lcd.clear(); }
Senzor reaguje nejvíce na oxid uhelnatý (CO) ale i na hořlavé plyny metan a propan. Aktivním prvkem tohoto senzoru je tenká vrstva SnO2, jejíž odpor se mění s koncentrací zmíněných plynů.
Tento projekt ukazuje, jak vytvořit jednoduchý přístupový systém pomocí RFID čtečky, LCD displeje, bzučáku a servomotoru. Systém umožňuje kontrolu přístupu pomocí RFID tagů – při správném tagu se servo otočí, zobrazí se zpráva, a systém se resetuje. Při špatném tagu bzučák vydá zvuk a zobrazí se zamítnutí přístupu.