Čas a teplota na oled displeji
Tento projekt slouží k měření teploty, tlaku a času a k jejich zobrazení na OLED displeji. Současně data vypisuje na sériovou linku.
Náš čtenář Petr S. nám ke svému projektu zaslal schéma a Arduino kód. K úspěšnému přeložení je ještě nutné stáhnout tento soubor s uloženými melodiemi a poté cestu k němu změnit v kódu, viz komentář.
/* Název: Tlacítko, bzucák a melodie Autor: Petr Soudek E-mail: spetr2050@gmail.com */ // nutné vyměnit za vlastní umístění #include <D:\Arduino\examples\PETR_SOUDEK\sound\pitches\src\pitches.h> #define TIME 200 int noteDuration = 1000 / 4; // delka noty const int buttonPin = 2; // pin ke kterému je pripojeno tlacítko int buttonState = 0; // soucasný stav tlacítka int lastButtonState = 0; // predchozí stav tlacítka void setup() { // inicializujte pin tlacítka jako vstup: pinMode(buttonPin, INPUT); // inicializujte sériovou komunikaci: Serial.begin(9600); } void loop() { // prectete vstupní pin tlacítka: buttonState = digitalRead(buttonPin); // porovnejte buttonState (stav tlacítka) s predchozím stavem if (buttonState != lastButtonState) { // jestliže se stav zmenil, pust melodii if (buttonState == HIGH) { // jestliže je soucasný stav HIGH, tlacítko prešlo //z off na on: ovcaci(); Serial.println("on"); } } // uložte soucasný stav jako „poslední stav“, //abyste ho mohli v príští smycce použít lastButtonState = buttonState; } void ovcaci() { Serial.println("ovcaci"); for (int i=0; i <= 1; i++){ tone(10, NOTE_C4, noteDuration*2); delay(noteDuration*2); tone(10, NOTE_E4, noteDuration*2); delay(noteDuration*2); tone(10, NOTE_G4, noteDuration*4); delay(noteDuration*4); } for (int i=0; i <= 1; i++){ tone(10, NOTE_E4, noteDuration); delay(noteDuration); tone(10, NOTE_E4, noteDuration); delay(noteDuration); tone(10, NOTE_D4, noteDuration); delay(noteDuration); tone(10, NOTE_E4, noteDuration); delay(noteDuration); tone(10, NOTE_F4, noteDuration*2); delay(noteDuration*2); tone(10, NOTE_D4, noteDuration*2); delay(noteDuration*2); } tone(10, NOTE_E4, noteDuration*2); delay(noteDuration*2); tone(10, NOTE_D4, noteDuration*2); delay(noteDuration*2); tone(10, NOTE_C4, noteDuration*4); delay(noteDuration*4); } // Autor: Petr Soudek
Tento projekt slouží k měření teploty, tlaku a času a k jejich zobrazení na OLED displeji. Současně data vypisuje na sériovou linku.
Kamarád mi poprosil o pomoc s tím že v současnosti potřebuje v jednom projektu ovládat čtyři reléové moduly, kdy jeden obsahuje šestnáct relátek které zakoupil v [1] a již má hotovou část zapojení přípravku, s tím že časem by chtěl ovládání z PC „po otestování“, ovládat diody pomocí tabletu nebo chytrého telefonu. Na tento počet ovládání relé je potřeba 64 ovládacích pinů, což ani ARDUINO MEGA 2560 s potřebou dalších vstupů které budou potřeba není možné použít. Po návrzích s posuvnými registry kterých by bylo potřeba osm kusů a složitosti zapojení mi napadlo použít pásek NEOPIXEL s RGB led diodami kdy na ovládání stačí jeden výstup z ARDUINA. Tak že pro pokusy co a jak půjde použít, jsem použil modul relátek osazený dvěma relátky, modul s MOSFET tranzistorem, Neopixel pásek s osmi RGB led diodami WS2812B, fototranzistor GL5528 a bluetooth JDY-33 pro komunikaci s tabletem chytrým telefonem vše zakoupené v [1]. Napsané programy jsou celkem dva jeden pouze pro ovládání Neopixel s osmi RGB led diodami, druhý pak umožňuje ovládat maximálně 255 RGB led použitých v Neopixel pásku. Oba programy umožňují ovládat libovolnou RGB diodu nebo více RGB led diod na Neopixel pásku včetně barev a dají se upravit dle potřeby. Přípravek může posloužit při vlastních pokusech s RGB LED Neopixel pásky a zároveň doplňuje články v [2]. Ovládání RGB diod je zde řešeno s ARDUINO NANO je možné použít i ARDUINO UNO. Programové ovládání RGB led diod na Neopixel pásku je dle požadavků kamaráda.