Koncový doraz je vstupní modul pro Arduino. Tento modul obsahuje páčkový spínač, který slouží k detekci stisku. Na modulu se také nachází pár dalších součástek pro zjednodušení zapojení s Arduinem a indikační LED dioda. Tato LED dioda se rozsvítí vždy při sepnutém stavu. Napájecí napětí je vzhledem k použité LED diodě doporučeno v rozsahu 3,3 až 5V. Proudový odběr při rozepnutém stavu je nulový, při sepnutém stavu se pohybuje okolo 5 mA díky LED diodě na modulu. A na modulu se také nachází dva montážní otvory s průměrem 3 mm pro jednoduchou montáž.
Pro úspěšné propojení koncového dorazu a Arduino desky stačí zapojit celkem 3 vodiče. Propojíme červený vodič s +5V Arduina, černý vodič se zemí Arduina a zelený vodič s pinem D2. Pro digitální vstup je nutné vybrat pin, který slouží jako přerušovací. Seznam těchto pinů pro jednotlivé desky si můžete prohlédnout zde.
Ukázkový kód obsahuje na svém začátku nastavení čísla propojovacího pinu a vytvoření proměnné pro ukládání času přerušení. V podprogramu setup nastavíme komunikaci po sériové lince a poté nastavíme chování pro přerušovací pin. V tomto případě je nastaven tak, že při detekci náběžné hrany (RISING) bude zavolán podprogram prerus. Nekonečná smyčka loop je v tomto programu jednoduchá a aby nebyla prázdná, tak jsem do ní vložil výpis dvou časů. První je čas od spuštění Arduina a druhý je čas poslední detekce dorazu. Tyto informace se tisknou každou sekundu díky pauze na konci smyčky. Podprogram prerus obsahuje jako první uložení aktuálního času do proměnné a následně výpis informací po sériové lince. Tento výpis se skládá ze dvou částí, kdy detekce aktuálního stavu spínače je tvořena if podmínkou. V této podmínce si načteme stav vstupního pinu a pokud je ve stavu logické jedničky, tak víme, že je sepnutý a naopak.
// Arduino koncový doraz / spínač // nastavení propojovacího pinu #define pinD 2 // vytvoření proměnných pro ukládání dat long casPreruseni; void setup() { // inicializace komunikace po sériové lince // rychlostí 9600 baud Serial.begin(9600); // nastavení přerušení na pin 2 (int0) // při nástupné hraně (log0->log1) se vykoná program prerus attachInterrupt(digitalPinToInterrupt(pinD), prerus, RISING); } void loop() { // místo pro běžný běh programu // pro ukázku vytiskneme každou sekundu // čas od spuštění Arduina a čas // poslední detekce dorazu Serial.print("Cas od spusteni Arduina: "); Serial.print(millis()/1000); Serial.print("s; cas posledni detekce: "); Serial.print(casPreruseni); Serial.println("s."); // pauza po dobu 1 sekundy delay(1000); } void prerus() { // uložíme čas detekce dorazu casPreruseni = millis()/1000; // vypiš varovnou hlášku, pokud je aktivován digitální vstup Serial.print("Detekovan doraz!"); if (digitalRead(pinD) == HIGH) { Serial.println(" Spinac je rozpojeny."); } else { Serial.println(" Spinac je spojeny."); } }
Po nahrání ukázkového kódu do Arduino desky s připojeným modulem koncového dorazu dostaneme například tento výsledek:
Cas od spusteni Arduina: 0s; cas posledni detekce: 0s. Detekovan doraz! Spinac je spojeny. Detekovan doraz! Spinac je rozpojeny. Cas od spusteni Arduina: 1s; cas posledni detekce: 0s. Detekovan doraz! Spinac je spojeny. Cas od spusteni Arduina: 2s; cas posledni detekce: 1s. Detekovan doraz! Spinac je rozpojeny. Cas od spusteni Arduina: 3s; cas posledni detekce: 2s. Detekovan doraz! Spinac je spojeny. Detekovan doraz! Spinac je rozpojeny. Cas od spusteni Arduina: 4s; cas posledni detekce: 3s.
Koncový doraz je jednoduchý modul, který je hojně používán hlavně při stavbách robotů, autonomních vozítek, 3D tiskáren či třeba plotterů. Pokud se rozhodnete na výstupu detekovat náběžnou hranu stejně jako já, tak můžete využít toho, že jak při spojení, tak při rozpojení se objeví právě náběžná hrana - pokud tedy následně zkontrolujete digitální stav pinu, můžete detekovat jak spojení, tak i rozpojení spínače. Výhodou tohoto modulu je to, že už máme páčkový snímač umístěn na desce společně s dvěma montážními otvory a propojovacím konektorem. Zároveň se v balení nachází i propojovací kabel o délce 65 cm, takže v balení získáme kompletní řešení pro běžné případy.
Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/997-arduino-koncovy-doraz-spinac-1427791330.html