Kapacitív szenzor mikrokontroller AVR és az iterációk késés

Greetings, a szeretője mikrokontroller!

belépés
Azt továbbra is végrehajtja az első, egyszer elhagyott, mikrokontroller projekt - egy lámpa hangulat. És, mint ígérte utoljára során az írás kis megjegyzéseket a kezdők számára. Ebben az időben, nézzük meg, hogyan lehet megvalósítani a kapacitív szenzor és a késleltetés az egyes műveletek ismétléseket a fő hurok. Ami magát a projektet, azt lehet mondani, hogy ebben a pillanatban van írva teljesen működő firmware-t. Továbbra is a helyzet a rendszer, pecsétgyűrű és tesztelése a normális prosztata. Ezután feküdt ki az összes bíróság.

érintőgomb
Az elv egyszerű érintőgombok. Vegyünk egy kis területen, nem számít, milyen formában, vettem egy darab fóliát PCB (a továbbiakban - a gombot). Kapkodni hozzá nominális nagy ellenállás nagyságrendileg 1 megaohm. És csatlakoztassa gomb fölött ez ellenállást a tápegység. Kapkodni egy gomb a vezetéket, amely összeköti a gomb a száron a mikrokontroller (a továbbiakban - MC). Elkülöníteni a területet egy vékony szigetelő, bár ez nem fog működni. gomb pad van egy bizonyos kapacitása, ami növeli, ha az ember ujját.

Touch gombra. Top bevont szalag

Az algoritmus a következő:
1. Kapcsolja be a lábát az MK a kimeneti mód.
2. Serve alacsony enyhíteni a kulcs tartályba.
3. Fordítás láb MC a beviteli mód, és amikor az előre gomb kapacitív keresztül töltődik 1 megaohm ellenállás és a belépő lesz a felső réteg. Várakozás történik egy ciklus, amelyben a számláló növekszik.
Sensor 4. Charge - érdemben számláló tudja ítélni az állam a szenzor.

Megjegyezzük, hogy a gróf iterációk atomi blokk. Ez azt jelenti, hogy ebben az időben nem fogja kiváltani megszakítást, és nem vezetik minket érzékelő töltési idő.

Most, hogy használja a mi algoritmus, meg kell határoznunk a küszöböt a gombra. Ehhez az inicializálás, végezzük a kalibrálást. És megteszi, mint a küszöb - érték negyede több, mint az visszatér a szabad érzékelő.

Megnéztem az üres szenzorral én stabil hozamot 15. És ha fel az ujját az érzékelő - körülbelül 30. Így a küszöb leszünk valahol 15 + 15/4 = 18.

Nos, akkor a fő ciklus, van, hogy ellenőrizze az állapotát az érzékelő, és hasonlítsa össze a küszöbértéket. Ha meghaladta - a gomb megnyomásakor a szükségességét, hogy válaszoljon.

Ha szükséges, meg kell nyomni a feldolgozó egység egy késleltetést a kezelésre nem sült többször.

Azt, néhány napig, használja a gombokat, amíg hibamentesített firmware lámpa - érzékelő jól működik!

Delay ismétléseket a fő hurok
Néha, a fő hurok, hogy rendszeresen végezni néhány intézkedés késedelem után. Mondjuk 2 másodpercig. Azonban egyszerűen „alvó” ebben az esetben lehetetlen, mert akkor hiányzik a busz, például megnyomásával egy kis gomb, vagy más esemény. Ebben az esetben van egy egyszerű megoldás. Vesszük számláló tegye ki néhány érték és ismétlődése a fő hurok a csökkentés. Amint a számláló nullára csökkennek - a késleltetés letelt, és itt az ideje a tetteinkért. A fő hurok, felveheti minimális késleltetéssel, hogy ne legyen a megjelenése várható kritikus eseményeket.

Így használatával számlálók könnyen rendezni különböző késleltetések a főprogramban hurok, bár nem hiányzott a kritikus események és a nélkül költötte értékes byte drága késleltetés funkció.

eredmény
Annak érdekében, hogy hígítja a száraz szöveget, meg akarom mutatni az eredménye a mai lecke világosan. mert Én lámpa hangulat, én az RGB-LED. A fő hurok fogja változtatni a 7 szín a szivárvány + rózsaszín kör. És ha megnyomja a gombot érintse meg egyszerűen villog fehér. A mikrokontroller fog működni a frekvenciája 9,6 MHz, elég alapértelmezés Fyuz eltávolítása elválasztó 8 (do CKDIV8 = 1). Fyuz byte kényelmes számítani a számológép itt.

A késleltetést egy színváltozást végrehajtott ciklusok. A fényerő a LED alkalmazásával valósul meg egy bináris moduláció, ami írt részletesen utoljára.

Rendszere, moduláció Proteus fordult némileg eltér a kép: ez volt végrehajtásához szükséges a kapacitív érzékelő a két kondenzátort és kapcsolók. 5V az MC a rajz nem áll rendelkezésre, de szükséges!