Ako na ošetrenie spínacích kontaktov – debouncing

ako na ošetrenie spínacích kontaktov - debouncing

Všeobecne najčastejším spôsobom ovládania aplikácií Arduinom s okolitým svetom sú tlačítka, klávesnice (membránové, kapacitné alebo s mikrospínačmi), rotačné enkódery (rotation encoders, inkrementálne otočné ovládače) a rad ďalších spínačov, pracujúcich na mechanickom princípe.

Hoci na prvý pohľad by nemal byť až taký problém zistiť, či je nejaký kontakt zopnutý alebo nie, nejaká úskalia tam predsa len sú. A o tom je tento článok venujúci sa téme Arduino debouncing.

V minulom článku “Ako (ne)zničiť Arduino” som písal o častých chybách pri zapájaní pinov a potenciálnom zničení dosky Arduino. Teraz preberieme zapájanie spomínaných pasívnych spínacích prvkov.

Zistenie stavu zopnuté / vypnuté

Z pohľadu komunikácie s procesormi na systéme Arduino možno všetky uvedené zariadenia rozdeliť na dve skupiny:

Aktívne

To sú vstupné moduly s vlastnými elektronickými obvodmi. Pri aktivácii spínača poskytujú na výstupe ošetrené a definované logické signály “0” alebo “1”. Komunikácia s modulmi s vlastnou elektronikou zvyčajne nerobí problémy. Na výstupe modulu je po aktivácii spínača alebo čidla po danú dobu prítomný stabilný signál o definovanej logickej úrovni. Takto ich je možné priamo pripojiť na vstupné piny procesorového modulu a vyhodnotiť bežnou čítacou operáciou v programe.

Pasívne

Sem patria spínače bez vlastnej elektroniky, ktorých výstupný signál je nutné nejakým spôsobom ošetriť. V prípade komunikácie so spínacími modulmi bez vlastnej elektroniky modulov je ale potrebné pre Arduino debouncing splniť niekoľko podmienok:

  • priviesť na ten vývod tlačítka, ktorý nie je spojený so vstupným pinom procesora, napätie o definovanej úrovni, ktoré bude po zopnutí kontaktov tlačítka privedené na vstupný pin procesora
  • zabezpečiť, aby pri rozopnutom kontakte tlačítka bolo na vstupnom pine procesora napätie zodpovedajúce opačnej logickej úrovni
  • vhodným spôsobom ošetriť zákmity, ku ktorým po zopnutí nevyhnutne dochádza v každom mechanickom spínacom prvku
  • a konečne, ak je to vhodné, zabezpečiť vhodným spôsobom spracovanie krátkych impulzov, ku ktorým dôjde po aktivácii tlačítka na dobu kratšiu, než je trvanie jedného cyklu funkcie loop ()

Zapojenie

Prvé dve podmienky môžu byť splnené jednoducho. Kontakt spínača, ktorý nie je spojený so vstupným pinom procesora, prepojíme s nulovým zemným potenciálom GND. Druhý kontakt, privedený na vstup procesora, je cez obmedzovací rezistor pripojený na napájacie napätie +5V. Ak je spínač rozopnutý, je na vstupe procesora obmedzovacím rezistorom udržiavané napätie, ktoré zodpovedá logickej úrovni “1”. Po zopnutí kontaktov spínača je potom vstupný pin uzemnený, čo zodpovedá logickej úrovni “0” (tlačítko do “0”).

Veľkosť rezistora je vhodné zvoliť tak, aby ním po zopnutí kontaktov spínača (a teda po spojení druhého konca rezistora s nulovým potenciálom) netiekol príliš veľký prúd. Ten by zbytočne zaťažoval napájacie obvody, zahrieval obmedzovací rezistor a poškodzoval kontakty spínacieho prvku. Na druhú stranu musí obmedzovací rezistor s rezervou zabezpečiť prítomnosť napätia logickej úrovne “1”, pretože obmedzovacím rezistorom preteká prúd do vstupného pinu procesora a na rezistore tak vzniká úbytok napätia.

Čo hovorí špecifikácia ATmega

Podľa špecifikácií procesora ATmega328P (pri napájacom napätí +5V) je ako logická úroveň “1” vyhodnotená napäťová úroveň 3,0 V a vyššie. Vstupný prúd ktoréhokoľvek pinu procesora je podľa špecifikácií +/- 1uA. Hodnotu obmedzovacieho rezistoru teda volíme tak, aby pri prúde 1uA na rezistore vznikol úbytok napätia menší ako 2V. Potom bude na vstupnom pine procesora napätie práve 3,0V. Tomu zodpovedá hodnota odporu 2MΩ.

V praxi sa však volia hodnoty odporu rádovo nižšie. Zvyčajne v rozmedzí desiatok kΩ (10kΩ, 22kΩ, 33kΩ), ktoré pri minimálnom pretekajúcom prúde zaistia aj dostatočnú odolnosť proti prípadnému rušeniu. Hodnotu odporu v ráde stoviek kΩ (150 - 330kΩ) potom volíme v prípade požiadavky na minimálny odber zariadenia (napr. u solárneho napájania).

Rezistory Pull-up a Pull-down

U mikrokontrolérov radu Atmel ATmega môžeme ako obmedzovací rezistor vo väčšine prípadov použiť tzv. Pull-up rezistor, ktorý je vstavaný priamo v procesore. Po jeho programovom zapnutí (vstupný pin musíš nakonfigurovať ako INPUT_PULLUP) je vstupný pin prepojený s napájacím napätím +5V cez rezistor, ktorého veľkosť sa pohybuje v rozmedzí 20 - 50kΩ.

Zapojenie tlačítok schéma

Všeobecne možno použiť aj opačné zapojenie, kedy je na vstupnom pine procesora po zopnutí spínača privedená hodnota “1”. V kľudovom stave je vstupný pin udržiavaný na nulovom potenciáli obmedzovacím rezistorom, ktorý je spojený so zemou (tlačítko do “1”). Keďže však v tomto prípade nemožno využiť Pull-up rezistor integrovaný v mikrokontroléry (tam je možno pripojiť iba rezistor pripojený na Vcc), musíme takýto Pull-down rezistor pripojený na zem doplniť sami. Preto je tento prípad komplikovanejší a menej častý.

Zákmity - bouncing

Ďalším problémom, ktorý býva nutné riešiť po stlačení tlačítka, je výskyt zákmitov - bouncing. Tíka sa to hlavne aj akéhokoľvek iného mechanického kontaktu, membránových tlačidiel, mikrospínačov, jazýčkových kontaktov a pod.

Arduino bouncing

Po stlačení a aj po uvoľnení tlačítka, nedôjde okamžite k trvalému zopnutiu alebo rozopnutiu kontaktov. Spočiatku po dobu jednotiek až desiatok milisekúnd dochádza k tzv. zákmitom, kedy je obvod kontaktom opakovane spínaný a rozopínananý.

Ak tlačítko slúži k rozsvieteniu svetla alebo aktivácii bzučiaka, môžeme tieto počiatočné zákmity ignorovať. Skôr alebo neskôr sa kontakty “upokoja” a výstup sa spoľahlivo zopne.

debounce bouncing

Vedome nespomínam elektromagnetické rušenie, ktoré býva týmito zákmitami vyvolané. Pokiaľ ale potrebujeme vyhodnotiť napr. počet stlačení daného tlačítka, je odstránenie zákmitov nevyhnutnosťou.

Filtračný RC obvod

Najjednoduchším riešením je jednoduchý RC obvod, ktorý sa skladá z filtračného kondenzátora a nabíjacieho alebo vybíjacieho rezistora. Pre príklad uvažujme o takomto riešení. Vstupný pin “IN” procesora ATmega328P je udržiavaný na úrovni “1” s integrovaným Pull-up rezistorom. Po stlačení tlačítka na tento vstup je privedené napätie v logickej úrovni “0” z iného výstupného pinu procesora “OUT”. Toto je situácia, keď druhý kontakt tlačítka nie je priamo uzemnený, ale je na úrovni “0” udržiavaný iným výstupným pinom procesora. Je to bežné v prípade snímania stavu niekoľkých tlačítok zapojených do matice - viď ďalej v texte.

Arduino RC debouncing

Zo špecifikácií uvedených v datasheete pre napájacie napätie +5V vyplýva, že maximálna veľkosť napätia pre logickú hodnotu “0” na vstupnom pine je +1,5V. Pre napätia na výstupnom pine je pre logickú úroveň “0” naopak garantované výstupné napätie menšie ako +0,9V. Pri obmedzení prúdu pod hodnotu 5mA potom toto zaručené napätie klesne pod +0,2V.

Ako to funguje

Po prvom stlačení tlačítka TL1 je napätie filtračného kondenzátora C1 vybité na hodnotu napätia na výstupnom pine “OUT”. Teda cca na +0,2V. Ak sa potom kontakt tlačítka opäť uvoľní (i zo zákmitami), nezvýši sa napätie na vstupe “IN” okamžite na úroveň “1” ako by sa to stalo bez prítomnosti filtračného kondenzátora C1. Z počiatočnej hodnoty +0,2V sa zvyšuje postupne tak, ako sa kondenzátor nabíja cez Pull-up rezistor zo zdroja Vcc. Zmyslom filtračného RC obvodu je teda po definovanú dobu odfiltrovať zákmity kontaktov tlačítka.

Výpočet hodnôt

Časový interval medzi zákmitami po stlačení tlačítka sa pohybuje v ráde jednotiek ms, najviac do cca 5 ms. Hodnoty súčiastok obvodu, ktorý bude filtrovať zákmity tlačítok, je preto vhodné navrhnúť tak, aby sa po okamžitom zákmite tlačítka napätia na filtračnom kondenzátore C1 po túto dobu udržalo na úrovni logickej “0”, teda pod +1,5 V. Veľkosť Pull-up rezistora je daná špecifikáciami procesora ATmega328P (počítajme s 50kΩ). Hodnota napätia Vc na filtračnom kondenzátore pri nabíjaní zo zdroja Vcc je daná rovnicou Vc = Vcc- (Vcc x exp (-t / (R x C))).

Z tejto rovnice vyplýva, že pri hodnote Pull-up rezistora 50kΩ, počiatočným napätí +0,2V, napájacom napätí +5,0V a hodnote filtračného kondenzátora 220nF (keramický kondenzátor 220nF/50V je bežná položka v halierovej hodnote) dosiahne výstupné napätie hodnoty 1,5V po uplynutí 3,5ms, čo je v prípade bežného kontaktu ideálny stav. Pre odlišné hodnoty súčiastok je možné tento časový interval spočítať on-line kalkulačkou.

Schmittov klopný obvod

RC_obvod_pre_tlacitko

Máme tu základné zapojenie dolnej prepusti RC filtrom (lowpass filter). Vnútorný alebo vonkajší Pull-up rezistor s hodnotou, ktorá drží mikrokontrolér na strane tlačítka v logickom stave HIGH, keď nie je uzemnený R2 tlačítkom. Je to riešenie s pár centami, ktoré zaberá malý priestor na plošnom spoji.

Používa sa Pull-up rezistor okolo 10kΩ a 100nF kondenzátor, ktorý dáva 0,001 sekundy (mikrosekundu) na uvoľnenie. Tlačítko používa 1kΩ rezistor a musí byť výrazne nižší ako Pull-up rezistor, aby sa zaručilo, že sa prepínač usadí na nízke napätie (LOW). Je to nevyhnutné, pretože vybitie kondenzátora priamo cez spínač vytvára nežiaduci vysokofrekvenčný šum.

RC_obvod_pre_tlacitko_74HC14

Ďalšia možnosť je ošetriť tieto záchvevy elektronicky pomocou niekoľko málo súčiastok. Bude sa jednať o už spomínaný obvod RC zložený z kondenzátora a rezistorov a jedného integrovaného obvodu 40106 alebo 74HC14, ktorý obsahuje 6x Schmittov klopný obvod. Využiť by sa dal až pre šesť tlačítok.

V takomto zapojení nemusíš tiež softwarovo ošetrovať zákmity. Základná schéma je podľa obrázka.

Puntičkári si všimnú, že je tu dvakrát väčší prúd cez pull-down (R2) ako pri pull-up (R1+R2). Je to v poriadku, lebo tlačítka zvyčajne rýchlejšie rozopnú kontakty pri rozpájaní, než pri stlačení a následnom spojení kontaktov.

Schmittov klopný obvod slúži na úpravu tvaru impulzov. Jeho základnou vlastnosťou je hysterézia. To znamená, že jeho výstup je závislý nielen na hodnote vstupu, ale aj na jeho pôvodnom stave.

Hysterézia

Hysterézia, ktorá je inokedy nežiaduca, má tu svoje opodstatnenie v tom, že zabraňuje vzniku zákmitov výstupného signálu v okolí strednej úrovne spínania. Citlivosť obvodu sa nastavuje šírkou (veľkosťou) hysterézie. Obvod je možné využiť aj ako jednobitový analógovo digitálny prevodník (komparátor).

Pre predstavu fungovania tu máš nasledujúci obrázok. Logická úroveň “1” nastane až keď vstupné napätie dosiahne hornú hranicu. Táto logická úroveň bude držaná až do doby, kým vstupné napätie neklesne pod dolnú hranicu a až potom sa zmení do logickej hodnoty “0”. Všimni si, že termostaty fungujú presne takýmto spôsobom - pokiaľ má termostat hysteréziu napríklad 2°C a je nastavený na teplotu 21°C, pri dosiahnutí tejto nastavenej teploty vypne kúrenie (horná hranica). Znovu ho zapne, až keď teplota klesne o 2°C, teda na 20°C (dolná hranica).

Hysterézia smittov klopný obvod

Keď sa teraz pozrieme na priebeh signálu, tak pri stlačení tlačítka sú výstupné signály ostré bez zákmitov. Žltá čiara je vyhladzovaný výstup RC filtra a zelená čiara je signál po prechode cez invertor. Môžeš vidieť, že pri stlačení a uvoľnení tlačítka je značný zákmit, ale väčšina je vyhladená filtrom. Môžeš tiež vidieť hysterézu v akcii. Všimni si dve prahové hodnoty napätia, ktoré klopný obvod používa: po ceste smerom hore prepína okolo 3,3 V a na ceste dole okolo 1,5 V.

proper debouncing scope

K tomuto len toľko, že hardwarové fixovanie kontaktov je pomerne jednoduché. Hlavne z časového hľadiska. Ak máš pocit šťastia, môžeš filtrovať signál tlačítka len pomocou rezistoru a kondenzátora. Ak máš naozaj špatné tlačítka alebo len chceš robiť prácu správne, Schmittov klopný obvod (invertor) s hysterézou je správna voľba. Kúpou len za pár centov budeš mať pokoj a pokryješ hneď šesť tlačítok.

Maticové a rezistorové zapojenie klávesnice

Maticová klávesnica

Ak potrebuješ vyhodnotiť zopnutie niekoľkých spínacích prvkov, máš k dispozícii dve odlišné riešenia:

1) buď výstup každého kontaktu pripojiť na iný vstupný pin procesora a postupne vyhodnocovať stav jedného kontaktu za druhým

2) alebo všetky kontakty zapojiť do tzv. matice, kedy sú všetky spínacie prvky zapojené z jednej strany k niekoľkým výstupným pinom procesora a z druhej strany k iným vstupným pinom procesora tak, aby kombinácia výstupného a vstupného pinu bola pre každý spínací prvok odlišná.

Prvé riešenie je veľmi jednoduché ako z pohľadu zapojenia, tak štruktúry programu. V ktoromkoľvek okamihu stačí postupne vyhodnotiť stav všetkých spínacích prvkov.

Druhé riešenie je o niečo málo zložitejšie, avšak významným spôsobom obmedzuje počet vstupných a výstupných vodičov procesora, potrebných na vyhodnotenie väčšieho počtu tlačítok.

Maticové zapojenie

Kým v prvom prípade je na vyhodnotenie stavu 12 tlačítok či spínačov potreba 12 vstupných vodičov, v prípade maticového zapojenie potom postačí vodičov 7 (3 výstupné a 4 vstupné). Pre 16 tlačítok potom oproti 16 vstupom pri lineárnom zapojení postačia 4 výstupné a 4 vstupné piny. Pri vyhodnocovaní je potom privedený signál logickej úrovne “0” postupne na všetky stĺpce matice a pre každý stĺpec je vyhodnotený stav tlačítok vo všetkých riadkoch. Aj tu je pochopiteľne potrebné vstupné piny prepnúť do módu INPUT_PULLUP.

Pripojenie-klávesnice-3x4

Rezistorový reťazec

Ak nemáš k dispozícii už ani obmedzený počet vstupných a výstupných pinov pre pripojenie maticovej klávesnice, možno použiť zapojenie tlačítok do rezistorového reťazca. Toto riešenie vyžaduje vyšší počet súčiastok, avšak vystačíš si s jediným analógovým vstupom. Po stlačení niektorého z tlačítok dôjde k uzemneniu príslušného rezistorového deliča a tým k poklesu napätia na analógovom vstupe z pôvodných +5,0V na napätie, ktoré zodpovedá stlačeniu niektorého z tlačítok.

V uvedenej schéme je takto vyhodnocovaných 5 tlačítok, ktorých stlačenie generuje na analógovom vstupe napätie (s malou toleranciou) 4,0V / 3,0V / 2,0V / 1,0V, resp. 0V. Počet tlačítok je teoreticky obmedzený len rozlíšením A/D prevodníka (10 bitov), teda až na niekoľko sto tlačítok. Praktický limit je však daný limitovaným počtom hodnôt odporov v klasickej odporovej rade E12 na približne 10 tlačítok.

Odporové zapojenie tlačidiel

Rezistorový reťazec s prerušením

Odporový reťazec s prerušením

Ak je po stlačení tlačítka nutné generovať okamžitú odozvu, je možné cez diódy zlúčiť kontakty tlačítok na druhý vstup procesora. Potom zostupnou hranou sa vyvolá prerušenie programu.

Softwarové riešenie zákmitov

Inou možnosťou ošetrenia zákmitov je pomocou vhodne napísaného programu. K detekcii stlačenia je ďalej pridané časové oneskorenie a tiež zistenie z akého logického stavu zmena nastáva. V normálnom stave (tlačítko nestlačené) je na pine vysoká logická úroveň. Pri stlačení dôjde k zmene na nízku logickú úroveň. Z toho vyplýva, že chceme detekovať prvú zmenu z log. “1” na log. “0” pri stlačení tlačítka. Pri spustení tlačítka tiež hľadáme prechod a to z log. “0” na log. “1”. Dĺžka časového oneskorenia môže byť rôznorodá, napr. 50ms alebo 5ms.

/*
  Debounce
  Zakaždým, keď sa vstupný pin zmení z LOW na HIGH (napríklad z dôvodu 
  stlačenia tlačidla), výstupný pin je prepnutý z LOW na HIGH alebo naopak. 
  Medzi prepnutím je minimálne oneskorenie, ktoré slúži na ošetrenie 
  zákmitov (debouncing) obvodu.
  Obvod:
  * LED pripojená od pinu 13 k zemi 
  * tlačítko pripojené od pinu 2 k +5V
  * 10kΩ rezistor pripojený od pinu 2 k zemi
  Poznámka: Na väčšine Arduino dosiek je LED k pinu 13 už pripojená, 
  takže k tomuto príkladu už ďalšie komponenty nebudeš potrebovať.
  
  vytvoril 21. Novembra 2006 autor David A. Mellis
  upravil  30. Augusta 2011 Limor Fried
  upravil  28. Decembra 2012 Mike Walters
  upravil  30. Augusta 2016 Arturo Guadalupi
  preložil  9. Marca 2018 Šášik Rastislav www.arduinoposlovensky.sk
  
  Príklad tohoto kódu je z https://www.arduino.cc/en/Tutorial/Debounce
*/

// konštanty použité k nastaveniu čísel pinov sa v programe nemenia:
const int buttonPin = 2;   // číslo pinu tlačítka
const int ledPin = 13;     // číslo pinu LED

// Premenné, ktoré sa v programe menia:
int ledState = HIGH;       // súčasný stav výstupného pinu
int buttonState;           // najnovšia hodnota načítaná zo vstupného pinu
int lastButtonState = LOW; // predchádzajúca hodnota načítená zo vstupného pinu

// Nasledovné premenné sú typu long, pretože meraný čas je v milisekundách a 
// rýchlo sa mení na veľké číslo, ktoré nemôže byť uložené v int
long lastDebounceTime = 0; // čas poslednej zmeny výstupného pinu
long debounceDelay = 50;   // čas debounce oneskorenia 
                           // pokiaľ výstup bliká, je potrebné čas zvýšiť
                           
void setup() {
    pinMode(buttonPin, INPUT);
    pinMode(ledPin, OUTPUT);
    
    // nastavenie počiatočného stavu LED
    digitalWrite(ledPin, ledState); 
}

void loop() {
    // stav tlačítka priradený do lokálnej premennej:
    int reading = digitalRead(buttonPin);
    
    // kontrola, či bolo stlačené tlačítko, tj. že vstup sa z LOW zmenil na HIGH
    // a od posledného stlačenia sa čakalo dostatočne dlho na to,
    // aby bol veškerý šum ignorovaný:
    
    // ak sa tlačítko zmenilo kvôli šumu alebo stlačeniu:
    if (reading != lastButtonState) {
        // uprav premennú lastDebounceTime
        lastDebounceTime = millis();
    }
    
    if ((millis() - lastDebounceTime) > debounceDelay) {
        // ak už je načítená hodnota akákoľvek, bola tam dlhšie ako  
        // debounce oneskorenie, berme ju tedy ako aktuálny stav:
        
        // pokiaľ sa stav tlačítka zmenil:
        if (reading != buttonState) {
            buttonState = reading;
            
            // LED sa prepne len keď je nový stav tlačítka označený ako HIGH
            if (buttonState == HIGH) {
                ledState = !ledState;
            }
        }
    }
    
    // nastavenie LED:
    digitalWrite(ledPin, ledState);
    
    // uloženie do lastButtonState poslednú načítenú hodnotu pre ďalšiu smyčku:
    lastButtonState = reading;
}

Tento program je zahrnutý v príkladoch v Arduino IDE. Nájdeš ho v Súbor > Príklady > 02.Digital > Debounce.

Samozrejme existuje pre Arduino debouncing aj šikovná knižnica Bounce 2. Stiahni alebo nainštaluj cez správcu knižníc a vyskúšaj príklady. Najjednoduchší príklad pre rozsvietenie LED pri stlačení tlačítka a ošetrené zákmity touto knižnicou:

/* 
   Popis
   ====================
   Jednoduchý príklad knižnice Bounce, ktorá pri stlačení tlačítka
   zapne integrovanú LED. 
   
   Vytvoril: Thomas Ouellet Fredericks
   Preložil: Šášik Rastislav www.arduinoposlovensky.sk
   Knižnica: https://github.com/thomasfredericks/Bounce2 
 */

#include <Bounce2.h> 
#define BUTTON_PIN 2  // číslo pinu tlačítka
#define LED_PIN 13    // číslo pinu LED 

Bounce debouncer = Bounce();        // objekt inštancie Bounce

void setup() {     
  pinMode(BUTTON_PIN,INPUT_PULLUP); // nastavenie pinu s interným pull-up
  debouncer.attach(BUTTON_PIN);     // nastavte pinu pre inštanciu Bounce
  debouncer.interval(5);            // interval zákmitov v ms
  pinMode(LED_PIN,OUTPUT);          // nastavenie pinu pre LED 
}

void loop() {
  debouncer.update();               // aktualizovanie inštancie Bounce
  int value = debouncer.read();     // získanie aktualizovanej hodnoty

  // zapni alebo vypni LED podľa stavu:
  if ( value == LOW ) {
    digitalWrite(LED_PIN, HIGH );
  } 
  else {
    digitalWrite(LED_PIN, LOW );
  }  
}

Knižnica má i funkcie na sledovanie zmeny tlačítka:

  • bool fell() zmena z HIGH do LOW
  • bool rose() zmena z LOW do HIGH.

Ak ma ešte niečo k tejto téme Arduino debouncing napadne, doplním to sem do článku.

Výber na čítanie...

Farebné značenie rezistorov
Farebné značenie rezistorov

Farebné značenie rezistorov bolo vyvinuté na začiatku 20. rokov 20. storočia Asociáciou výrobcov rádií (RMA, teraz súčasťou EIA) a bolo publikované ako EIA-RS-279. RMA zaviedla spočiatku niekoľko spôsobov značenia. Neskôr sa začal používať iba jeden spôsob...

Čítať viac...

Dallas DS18B20 – meranie teploty
Dallas DS18B20 – meranie teploty

Ďalší vynikajúci senzor na meranie teploty je Dallas DS18B20. V článku popisujem jeho parametre, dva spôsoby napájania, vnútornú pamäť (registre) a samozrejme zapojenie s Arduinom, jednoduchý program a nejaké fotky. Teplotný senzor (alebo tiež čidlo) DS18B20 od firmy Maxim (predtým Dallas) je v Arduino komunite veľmi obľúbené. Za veľmi dobrú cenu umožňuje...

Čítať viac...

Tranzistor
Tranzistor

Tranzistor je základným stavebným prvkom skoro každého dnešného elektronického zariadenia. Základom tranzistora je kryštál polovodiča s dvoma priechodmi PN. Polovodičové priechody tranzistora vytvárajú štruktúru zodpovedajúcej spojenie dvoch polovodičových...

Čítať viac...

Obľúbené produkty...

Keyestudio JoyStick Shield PS2 nRF24L01

8.90 EUR

8.90 EUR

Keyestudio STEM Plus Board Starter Kit

67.60 EUR

55.43 EUR

Vyhľadať články
Programovanie...
  • Adresové operátory

    Adresové operátory označované aj ako ukazovatele (anglicky pointer, česky ukazovateľ, slovensky s...

  • Relačné operátory

    Relačné operátory sú < > = == !=. Sú definované pre operandy všetkých základných dátových typov. ...

  • Globálne premenné

    Premenné aj funkcie majú svoj rozsah platnosti, čiže oblasť, v ktorej fungujú a v ktorej nie. Vid...

  • Ostatné IO funkcie

    U Arduina je možné generovať i zvuk, ale iba v najjednoduchšej podobe. Neumožňuje totiž generovať...

  • Operátory preprocesora

    Operátory preprocesora alebo znak # je signálom pre preprocesor. Preprocesor sa spustí pri každom...

Podpora webu
Na kávu už prispeli
Dátum Meno Suma
08.01.2024 Veres Dusan 10€
15.05.2023 Ivan Danis 10€
28.09.2022 Ivan Vrab 7€
14.05.2022 Nemcic Marian 10€
04.02.2022 Robert Bilko 5€
29.01.2022 Peter Buffa 5€
19.11.2021 Rastislav Rehak 5€
16.09.2021 Anton Strela 5€
13.09.2021 Juraj Jedlak 5€
02.09.2021 Michal Marek 7€
08.08.2021 František Uhrík 5€
21.07.2021 Juraj Hrdina 5€
25.03.2021 Jan Nemec 10€
16.03.2021 Igor Pavlov 5€
25.02.2021 Lukas Lacuch 5€
06.11.2020 Pavol Balint 5€
05.11.2020 Marek Horečný 5€
05.10.2020 Jan Kusnir 5€
27.04.2020 Jan Zuskin 15€
26.04.2020 Dušan Sojka 5€
24.02.2020 Juraj Lackanič 5€
22.01.2020 František Žilinec 10€
20.05.2018 Tomáš F. 2€
17.12.2018 Pavol P. 5€
QR Donate 10Eur