Pro M5stack jednotky lze zakoupit různé rozšiřovací moduly, kdy jedním ze základních je Dual Button. Tento modul obsahuje 2 jednoduchá tlačítka, která se spínají na zem.
Pro jeho spojení s M5stack deskou stačí propojit 3 vodiče, přičemž můžeme propojit modul s M5stack zařízením pomocí dodaného kabelu pomocí Grove konektoru. Pokud budete chtít zapojit modul napřímo, tak propojte GND s GND, A s pinem D22 a B s pinem D21. Piny A a B můžete připojit i na jiné volné GPIO piny, jen je nutné provést změnu taky na začátku programu.
Ukázkový program najdete níže, přičemž jeho popis můžete najít na videu, které je připojeno na konci návodu. Kromě dvou tlačítek z Dual Button modulu je v něm zanasena také práce s dalšími třemi tlačítky přímo na M5stack:
// M5 stack a jednotka Dual Button
// Jednotka s tlačítky
// navody.dratek.cz
// připojení potřebné knihovny
#include <M5Stack.h>
// nastavení čísel propojovacích pinů
#define MODRA 22
#define CERVENA 21
#define BUT_A 39
#define BUT_B 38
#define BUT_C 37
// struktura pro tlačítka
struct tlacitko {
bool posledni_hodnota = 0;
bool aktualni_hodnota = 0;
int pin;
};
// vytvoření pole tlačítek
tlacitko pole[5];
void setup() {
// zahájení komunikace s M5 stack
M5.begin();
// zahájení komunikace s napájecím čipem
M5.Power.begin();
// vypnutí reproduktoru
dacWrite(25, 0);
// nastavení čísel pinů pro tlačítka
pole[0].pin = MODRA;
pole[1].pin = CERVENA;
pole[2].pin = BUT_A;
pole[3].pin = BUT_B;
pole[4].pin = BUT_C;
// nastavení funkce pinů
for (int i = 0; i < 5; i++) {
pinMode(pole[i].pin, INPUT_PULLUP);
}
// vyčištění obrazovky a vypsání
// prvního řádku
M5.Lcd.clear(BLACK);
M5.Lcd.setTextColor(YELLOW);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(40, 0);
M5.Lcd.println("Ukazka Pole tlacitek");
M5.Lcd.setTextColor(WHITE);
// vypsání hlavičky pro všechny informace
M5.Lcd.setCursor(0, 25); M5.Lcd.print("Stav Modra: ");
M5.Lcd.setCursor(0, 45); M5.Lcd.print(" pin Modra: ");
M5.Lcd.setCursor(0, 65); M5.Lcd.print("Stav Cervena: ");
M5.Lcd.setCursor(0, 85); M5.Lcd.print(" pin Cervena: ");
M5.Lcd.setCursor(0, 105); M5.Lcd.print("Stav ButtonA: ");
M5.Lcd.setCursor(0, 125); M5.Lcd.print(" pin ButtonA: ");
M5.Lcd.setCursor(0, 145); M5.Lcd.print("Stav ButtonB: ");
M5.Lcd.setCursor(0, 165); M5.Lcd.print(" pin ButtonB: ");
M5.Lcd.setCursor(0, 185); M5.Lcd.print("Stav ButtonC: ");
M5.Lcd.setCursor(0, 205); M5.Lcd.print(" pin ButtonC: ");
}
void loop() {
// vykonání následujícího kódu pro všechna tlačítka v poli
for (int i = 0; i < 5; i++) {
// načtení aktuálního stavu pinu
pole[i].aktualni_hodnota = digitalRead(pole[i].pin);
// pokud se aktuální stav pinu liší od předchozí uložené
// hodnoty, tak přepíšeme text na displeji
if (pole[i].aktualni_hodnota != pole[i].posledni_hodnota) {
// vymazání předchozího textu pomocí černého obdélníka
M5.Lcd.fillRect(160, 25 + (i * 40), 100, 25, BLACK);
M5.Lcd.fillRect(160, 45 + (i * 40), 100, 25, BLACK);
// pokud je tlačítko sepnuté, vypíšeme následující
if (pole[i].aktualni_hodnota == 0) {
M5.Lcd.setCursor(160, 25 + (i * 40)); M5.Lcd.print("stisk");
M5.Lcd.setCursor(160, 45 + (i * 40)); M5.Lcd.print("0");
}
// pokud je tlačítko volné, vypíšeme následující
else {
M5.Lcd.setCursor(160, 25 + (i * 40)); M5.Lcd.print("volne");
M5.Lcd.setCursor(160, 45 + (i * 40)); M5.Lcd.print("1");
}
// uložení aktuálního stavu pro další porovnávání
pole[i].posledni_hodnota = pole[i].aktualni_hodnota;
}
}
}
Motorizovaný kulový ventil. Má široké uplatnění v různých průmyslových a obytných instalacích. Může být integrován do automatických systémů řízení, kde je možné ovládat průtok dálkově nebo automatizovaně podle předem nastavených podmínek.
Motorizované kulové vently s obvodem CR01, CR02, CR03 nebo CR04 je poměrně jednoduché po elektrické stránce správně zapojit. U ventilu s obvodem CR05 je tomu ale trochu jinak - ventil si sám nehlídá krajní polohy otevření, nebo zavření. Z toho důvodu vznikl tento článek, ukazující některé výhody, použití a především správné zapojení ventilu s obvodem CR05.