hangulat lámpa állítható sebesség színváltó funkció, és megáll a szín

Udv mindenkinek. Egyszer szerettem egy üvegtál, amely fényt bocsát ki a sötétben, felhalmozódott a nap folyamán, valamint a támogatási neki volt RGB háttérvilágítást. Azonban a fény oly gondatlanul (8 szín, és ugranak én), úgy döntöttek, hogy a saját, így még a zsemlét. A rendszer alapján történő - mikrokontroller AVR Attiny13. Annak ellenére, hogy csak támogatja a 2-csatornás hardveres PWM (impulzus szélesség moduláció), és az RGB LED 3 nem igényel probléma - végrehajtási program PWM. Hozzáadását követően egy zsemle PWM szabályozás RGB LED-ek: sebesség beállítása színváltozás egyik színváltozás egy második ciklus 1000 másodpercig, és arra, hogy állítsa le a fényhatások megnyomásával és fagyasztva az aktuális színt. Hívtam ezt a „Stop-szín.” A színek számát az is végrehajtott funkció - változó színek nemcsak lineárisan piros a lila a szivárvány színeiben, hanem kombinációja nulla és egy maximális érték szín - azaz 100 százalékos telítettség nullára a színtelítettség, azaz, amíg fehér. lineáris színváltó program által erősen meghatározott programot. Attiny13 flash memória nem lehetséges megvalósítani véletlenszerűen kiszámíthatatlan elszíneződés. Lehet, hogy ez lesz a legjobb.

Az áramkör itt kiderült, mint:

hangulat lámpa állítható sebesség színváltó funkció, és megáll a szín

Igen, hogyan kell csinálni. sebességszabályozó. Kezdjük a késleltetés funkcióval _delay_ms ();. ez általában csökken a használatát bejegyzéseket a zárójelben némi jelentősége, amelynek során meg kell felelnie a késés, de ha zárójelbe tettük a változó, a program mérete jelentősen megnő. Ez nem jó, mert az már fennáll a veszélye, hogy nem kap a memóriába Attiny13. A megoldás egyszerű - meg kell szervezni pagingciklus véges számú alkalommal késleltetési idő függvényében, például 1 MI második. Mérete a program a vezérlő újra normálisan. Nos, ez a funkció használható, hogy beállítsa a végrehajtási sebesség a fény hatása. Ezután hol a dinamikus változás változó késleltetést? Túl egyszerű, Tinkoff rendelkezik fedélzeti ADC (analóg-digitális átalakító) 10 bites érték 0-1024 - tökéletesen illeszkedik ehhez a késés. Ez azt jelenti, kiderül, hogy a késedelem a növekedést vagy csökkenést fényerő lesz 1 mérföld egy második 1 másodperc. 1, mert a zéró késés egyszerűen meltishenie, csúnya, így nulla ki van zárva. Így vesz egy értéket a ADC és tolja a késés változó. Továbbá, az ADC érték lehet venni, mint 10 bit, azaz, 1024 minta, és egyszerűen ossza ezt az értéket 2, 4, 8, és így tovább, és egy keskenyebb beállítási tartományban. Hardver kiigazítás lesz potenciométer vagy egy változtatható ellenállás csatlakozik a legkülső terminálok plusz és mínusz kínálat és a beviteli az ADC átlagos mikrokontroller. R3, hogy megvédje a port, az áramkorlátozás. R1 korlátozza a feszültséget, hogy a maximális értéke ADC volt 1000 fennmaradó 24 hivatkozási tervezett csatlakozni egy másik gombot, de különálló funkcionális nem kapott, így továbbra is olyan jövőbeli lehetőségeket, amelyeket a „kész”. A forrás a ADC referencia feszültséget kiválasztott tápfeszültség 5 V mikrokontroller. Ami megállítani a színváltozás hatása, ha megnyomja a gombot, a dobás S2 a fő végtelen ciklusba fényhatás egy másik üres végtelenített gomb lenyomásával fejtetőre program végrehajtása vissza a fő végtelen ciklusba. Egyszerűen és dühös.

A program az érintett két megszakítások: a timer overflow megszakítás 0 lehívni gomb állapotát és az ADC konverzió teljes megszakítási. Mint említettük, a színváltozás nem csak a színes és színes, hanem a változás a telítettség, azaz nemcsak vízszintesen, hanem függőlegesen. Minimális színtelítettség lesz erodálódott egymással (lásd. Az alábbi ábrát), és a végén kiderül, fehér színpaletta, bár ez a szám jelen van és szürke, de az RGB LED-ek nem teszik lehetővé a továbbítja, valamint a fekete. Kiderült, csak a fényerőt fehérek helyett az átmenet a fekete fehér. Ezért a fekete szint nem is igyekszünk végrehajtani))

hangulat lámpa állítható sebesség színváltó funkció, és megáll a szín

Szoftver esetében kiderül (kód gcc):

A változó k leállításáért felelős színváltozás dob különböző fázisokon a program.
Az n változó felelős az átmenet a 100% színtelítettség elhomályosítja őket fehér, nem lehet több, mint 1/2 a PWM
Részben PWM - mintavételi PWM értéke

Ez mind a fő mikrokontroller munkaprogram ehhez az eszközhöz.

Ready készülék, van ez a fajta (alkalmazásával gyűjtjük breadboard saját termelésű tiny13):

hangulat lámpa állítható sebesség színváltó funkció, és megáll a szín

hangulat lámpa állítható sebesség színváltó funkció, és megáll a szín

hangulat lámpa állítható sebesség színváltó funkció, és megáll a szín

hangulat lámpa állítható sebesség színváltó funkció, és megáll a szín

hangulat lámpa állítható sebesség színváltó funkció, és megáll a szín

Ez az eszköz, mint szinte bármely más határértékek csak mérnök fantázia vagy sonka. A készülék könnyen frissíthető semmilyen más célra miatt az egyszerűség, az ismételhetőség és a lehetőséget, egyszerűen a saját módosításokat a sémát.

Fyuz bitek programozására mikrokontroller Attiny13:

hangulat lámpa állítható sebesség színváltó funkció, és megáll a szín

listája rádió

Szép, nagyon tetszettek a munka virággal. Az egyetlen dolog nem világos (esetleg téves) a késleltetés funkció és a memória. Ahogy emlékszem, amikor összeállítása funkció össze egyszer, és akkor lehet okozta bármennyiszer bármely bemeneti paramétereket. így ha mi írjuk a forráskódot (például inicializálása a periférián), és nyomja meg a fordítás - hogy a teljes összeg a program, akkor helyezni a funkció - a program növeli az összeget funkció + esetleges átmeneti parancsot (ha a fordító úgy dönt, hogy a funkció külön-külön), a Föld, a forráskódot, hogy továbbra is be a funkció - a hatálya alá a programot bydit uvelisivatsya az átmeneti csoport + esetleges szállítást megelőzően változók (így tudták venni a funkciót), azaz kissé, mint a toll inscribing funkciót. A - ugyanolyan funkciót, amely más néven, és a korábbi mozgás változó. így kötet neoyuhodimoy memória ++). Általában meg kell, hogy egy adott fordító és ellenőrizze. Köszönöm a figyelmet)

Nézze meg, mit hogy „az egyéni jellemzők” fordító kódot látás oly észre sem vette, amikor valamit attiny2313 termelő formázott kimenetet keresztül UART, ott printf függvény került körülbelül 800 bájt, majd hivatkozni felkapott fokozatosan. Egy másik kérdés, ha nem lehet ott van, mert az a tény, hogy írsz _delay_ms nem delay_ms (abban az értelemben a szó nélkül aláhúzás a késés)?

Csak abban az AS van delay_ms funkciók (például hívás hibát generál), csak akkor okozhatnak a késleltetés funkció _delay_ms. A vezérlők kövérebb általában minden ilyen késedelmek nem lehet használni (ha sok), és használja az operációs rendszer, az RTOS néhány