Pro M5stack jednotky lze zakoupit různé rozšiřovací moduly, kdy jedním ze základních je ACCEL, celým názvem accelerometer. Uvnitř modulu se nachází integrovaný obvod ADXL345.
Pro jeho spojení s M5stack deskou stačí propojit 4 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, 5V s 5V, SCL s pinem D22 a SCL s pinem D21. Piny SDA a SCL odpovídají pinům sběrnice I2C.
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.
// M5 stack a jednotka ACCEL
// Akcelerometr ADXL345
// navody.dratek.cz
// připojení potřebných knihoven
#include <M5Stack.h>
#include <SparkFun_ADXL345.h>
// vytvoření objektu akcelerometru
ADXL345 adxl = ADXL345();
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);
// zapnutí senzoru
adxl.powerOn();
adxl.setRangeSetting(16); // nastavení citlivosti na 16g
adxl.setActivityXYZ(1, 0, 0); // Set to activate movement detection in the axes "adxl.setActivityXYZ(X, Y, Z);" (1 == ON, 0 == OFF)
adxl.setActivityThreshold(75); // 62.5mg per increment // Set activity // Inactivity thresholds (0-255)
adxl.setInactivityXYZ(1, 0, 0); // Set to detect inactivity in all the axes "adxl.setInactivityXYZ(X, Y, Z);" (1 == ON, 0 == OFF)
adxl.setInactivityThreshold(75); // 62.5mg per increment // Set inactivity // Inactivity thresholds (0-255)
adxl.setTimeInactivity(10); // How many seconds of no activity is inactive?
adxl.setTapDetectionOnXYZ(0, 0, 1); // Detect taps in the directions turned ON "adxl.setTapDetectionOnX(X, Y, Z);" (1 == ON, 0 == OFF)
// Set values for what is considered a TAP and what is a DOUBLE TAP (0-255)
adxl.setTapThreshold(50); // 62.5 mg per increment
adxl.setTapDuration(15); // 625 μs per increment
adxl.setDoubleTapLatency(80); // 1.25 ms per increment
adxl.setDoubleTapWindow(200); // 1.25 ms per increment
// Set values for what is considered FREE FALL (0-255)
adxl.setFreeFallThreshold(7); // (5 - 9) recommended - 62.5mg per increment
adxl.setFreeFallDuration(30); // (20 - 70) recommended - 5ms per increment
// zapnutí detekce všech přerušení
adxl.InactivityINT(1);
adxl.ActivityINT(1);
adxl.FreeFallINT(1);
adxl.doubleTapINT(1);
adxl.singleTapINT(1);
// nastavení velikosti textu
M5.Lcd.setTextSize(4);
// nastavení kurzoru do levého horního rohu
M5.Lcd.setCursor(0, 0);
// vypsání základního textu
M5.Lcd.println("Hodnota ACCEL");
M5.Lcd.print("X | Y | Z");
}
void loop() {
// vyčtení údajů do vytvořených proměnných
int x, y, z;
adxl.readAccel(&x, &y, &z);
// vytisknutí všech údajů na displej
M5.Lcd.setTextColor(YELLOW);
M5.Lcd.setCursor(0, 80);
M5.Lcd.print(x);
M5.Lcd.print(", ");
M5.Lcd.print(y);
M5.Lcd.print(", ");
M5.Lcd.println(z);
// kontrola všech přerušení
ADXL_ISR();
// krátká pauza
delay(500);
// smazání údajů černou barvou
M5.Lcd.setTextSize(4);
M5.Lcd.setTextColor(BLACK);
M5.Lcd.setCursor(0, 80);
M5.Lcd.print(x);
M5.Lcd.print(", ");
M5.Lcd.print(y);
M5.Lcd.print(", ");
M5.Lcd.println(z);
// vymazání předchozí zprávy o přerušeních
M5.Lcd.fillRect(0, 120, 305, 120, BLACK);
}
void ADXL_ISR() {
// nastavení menšího textu, barvy a pozice
M5.Lcd.setTextSize(3);
M5.Lcd.setTextColor(RED);
M5.Lcd.setCursor(0, 120);
// načtení všech přerušení do proměnné
byte interrupts = adxl.getInterruptSource();
// detekce volného pádu
if (adxl.triggered(interrupts, ADXL345_FREE_FALL)) {
M5.Lcd.println("Volny pad!");
}
// detekce neaktivity
if (adxl.triggered(interrupts, ADXL345_INACTIVITY)) {
M5.Lcd.println("Neaktivita!");
}
// detekce aktivity
if (adxl.triggered(interrupts, ADXL345_ACTIVITY)) {
M5.Lcd.println("Aktivita!");
}
// detekce dvojitého poklepání
if (adxl.triggered(interrupts, ADXL345_DOUBLE_TAP)) {
M5.Lcd.println("Dvoji poklepani!");
}
// detekce poklepání
if (adxl.triggered(interrupts, ADXL345_SINGLE_TAP)) {
M5.Lcd.println("Poklepani!");
}
}
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.