Wochenend-Projekt: Einschlaflicht v01.02

Ich dachte mir es wäre doch toll, wenn man ein kleine Lampe hat, die solange leuchtet bis man eingeschlafen ist und dann ausgeht.

Die Lampe an der ich baue Leucht soll nach dem einschalten (Wenn man den Knopf drückt) etwa 1 min lang leuchten, dann soll sie ausgehen. Wenn man den Knopf an der Lampe länge drückt blinkt sie je nachdem wie lange man drückt, – erst ganz schnell, dann etwas langsammer und dann noch mal ein wenig langsamer. Das Blinken zeigt an in welchen Einschalfmodus sich die Lampe befindet. Lässt man wärend dem Blinken die Taste los, so ist die Leuchtdauer je Modus 2 min., 5 min. oder 10 min.

Das ganze ist aber noch nicht ausgegoren und benötigt noch ein wenig „Entwicklungsarbeit“.

Der nachfolgende Code funktioniert schon mal mehr recht als schlecht dennoch veröffenliche ich ihn hier schon einmal.

[pastacode lang=“c“ manual=“%2F*%0A%20*%20Attiny13_Einschlaflampe_v01_02.c%0A%20*%0A%20*%20Created%3A%2001.05.2018%2011%3A00%3A00%0A%20*%20Author%20%3A%20Bernd%0A%20*%0A%20*%0A%20*%20Chip%20type%3A%20Attiny13a%0A%20*%20Clock%20frequency%3A%20SUT_CKSEL%20auf%20INTRCoSC_128KHZ_14CK_64MS%20(128kHz%20%2F%208%20%3D%2016kHz)%0A%20*%0A%20*%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B——–%2B%0A%20*%20%20%20%20%20%20%20%20%5B%20%20%20%20%20%20%20%20(PB5)%20%7C1*%20%20%20%20%208%7C%20(VCC)%20%20Power%20%20%20%20%20%5D%0A%20*%20%20%20%20%20%20%20%20%5B%20%20%20%20%20%20%20%20(PB3)%20%7C2%20%20%20%20%20%207%7C%20(PB2)%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20*%20%20%20%20%20%20%20%20%5B%20%20%20%20%20%20%20%20(PB4)%20%7C3%20%20%20%20%20%206%7C%20(PB1)%20%20Button%20%20%20%20%5D%0A%20*%20%20%20%20%20%20%20%20%5B%20Ground%20(GND)%20%7C4%20%20%20%20%20%205%7C%20(PB0)%20%20LED%20White%20%5D%0A%20*%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2B——–%2B%0A%20*%0A%20*%2F%0A%0A%23define%20F_CPU%20960000UL%20%20%2F%2FDalay%20anpassen%20wegen%20Fusebit%0A%2F%2F%20%23define%20F_CPU%2012800UL%20%20%2F%2FDalay%20anpassen%20wegen%20Fusebit%0A%0A%23define%20LED_PIN%20PB0%20%20%20%20%20%20%20%2F%2F%20PB0%20as%20a%20LED%20pin%0A%23define%20Taster%09PB1%0A%23define%20AN%09%091%0A%23define%20AUS%09%090%0A%20%0A%23include%20%3Cutil%2Fdelay.h%3E%0A%23include%20%3Cavr%2Fio.h%3E%0A%0Aint%20Leuchten(int%20iLeuchtdauer%2C%20int%20iAusAn)%3B%0A%0Aint%20main%20(void)%0A%7B%0A%09int%20iCounter%3D0%3B%09%09%2F%2F%20Zaehler%20f%C3%BCr%20l%C3%A4nge%20Tastendruck%0A%09int%20iBlink%3D0%3B%09%09%2F%2F%20Blink%20intervall%0A%09int%20iLeuchtdauer%3D120%3B%20%2F%2FStandard%20Wert%20f%C3%BCr%20Leuchten%20%22iLeuchte%20%2F%202%20%3D%20etwa%20Sekunden%22%0A%09%2F%2F%20int%20iAusAn%3B%0A%09%0A%09DDRB%20%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%20%20%20%20%2F%2F%20Auf%20Ausgang%20schalten%0A%09PORTB%20%7C%3D%20(1%3C%3CTaster)%3B%20%20%20%20%20%2F%2F%20PullUp%20einschalten%0A%09%0A%09while%20(1)%0A%09%7B%0A%09%09if%20((PINB%20%26%20(1%3C%3CTaster)))%20%2F%2F%20Pr%C3%BCfen%20auf%20Tastendruck%0A%09%09%7B%0A%09%09%09iCounter%3D0%3B%0A%09%09%09Leuchten(iLeuchtdauer%2CAUS)%3B%0A%09%09%09%2F%2FPORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20ON%0A%09%09%09%0A%09%09%7D%20%0A%09%09%09%09%0A%09%09else%20%0A%09%09%7B%0A%09%09%09if%20(iCounter%3D%3D100)%20%20%20%2F%2F%20Wenn%20Taste%20gedr%C3%BCckt%20f%C3%BCr%20100%20durchg%C3%A4nge%20gedr%C3%BCckt%20war%0A%09%09%09%7B%0A%09%09%09%09for(iBlink%3D0%3BiBlink%3C%3D20%3BiBlink%2B%2B)%0A%09%09%09%09%7B%0A%09%09%09%09%09PORTB%20%5E%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2FToggl%0A%09%09%09%09%09_delay_ms(50)%3B%0A%09%09%09%09%09iCounter%20%2B%2B%3B%0A%09%09%09%09%7D%0A%09%09%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20ON%0A%09%09%09%09iLeuchtdauer%20%3D240%3B%20%2F%2F2%20Min%0A%09%09%09%09%2F%2F%20Leuchten(iLeuchtdauer%2CAUS)%3B%0A%09%09%09%7D%0A%09%09%09else%20if%20(iCounter%3D%3D150)%0A%09%09%09%7B%0A%09%09%09%09for(iBlink%3D0%3BiBlink%3C%3D20%3BiBlink%2B%2B)%0A%09%09%09%09%7B%0A%09%09%09%09%09PORTB%20%5E%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2FToggl%0A%09%09%09%09%09_delay_ms(100)%3B%0A%09%09%09%09%09iCounter%2B%2B%3B%0A%09%09%09%09%7D%0A%09%09%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20ON%0A%09%09%09%09iLeuchtdauer%20%3D600%3B%20%2F%2F5%20Min%0A%09%09%09%09%2F%2F%20Leuchten(iLeuchtdauer%2CAUS)%3B%0A%09%09%09%7D%0A%09%09%09else%20if%20(iCounter%3D%3D200)%0A%09%09%09%7B%0A%09%09%09%09for(iBlink%3D0%3BiBlink%3C%3D20%3BiBlink%2B%2B)%0A%09%09%09%09%7B%0A%09%09%09%09%09PORTB%20%5E%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2FToggl%0A%09%09%09%09%09_delay_ms(300)%3B%0A%09%09%09%09%09iCounter%2B%2B%3B%0A%09%09%09%09%7D%0A%09%09%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20ON%0A%09%09%09%09iLeuchtdauer%20%3D1200%3B%20%2F%2F%2010%20Min%0A%09%09%09%09%2F%2F%20Leuchten(iLeuchtdauer%2CAUS)%3B%0A%09%09%09%7D%0A%09%09%09else%0A%09%09%09%7B%0A%09%09%09%09%2F%2Fif(iCounter%3C%3D100)%0A%09%09%09%09%2F%2FPORTB%20%26%3D%20~(1%3C%3CLED_PIN)%3B%20%2F%2FLicht%20aus%20wenn%20nur%20kurz%20gedr%C3%BCckt%20wurde%0A%09%09%09%09%0A%09%09%09%09_delay_ms(50)%3B%0A%09%09%09%09iCounter%2B%2B%3B%0A%09%09%09%09if(iCounter%3D%3D500)%0A%09%09%09%09%09iCounter%3D0%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09%09%0A%09%7D%0A%09return%200%3B%0A%7D%0A%0Aint%20Leuchten(int%20iLeuchtdauer%2C%20int%20iAusAn)%0A%7B%0A%09for%20(int%20i%20%3D0%3B%20i%3C%3DiLeuchtdauer%3Bi%2B%2B)%0A%09%7B%0A%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20ON%0A%09%09_delay_ms(500)%3B%0A%09%09if%20(!(PINB%20%26%20(1%3C%3CTaster)))%20%2F%2F%20Pr%C3%BCfen%20auf%20Tastendruck%0A%09%09%09i%3DiLeuchtdauer%2B1%3B%0A%09%7D%0A%09%0A%09if%20(iAusAn%3D%3DAUS)%0A%09%7B%0A%09%09PORTB%20%26%3D%20~(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20AUS%0A%09%09_delay_ms(250)%3B%0A%09%09while(PINB%20%26%20(1%3C%3CTaster))%0A%09%09%7B%0A%09%09%09%2F%2F%20Warten%20bis%20Taste%20Ged%C3%BCckt%20wird%20Oder%20hier%20in%20den%20Sleepmodus%0A%09%09%7D%0A%09%09PORTB%20%7C%3D%20(1%3C%3CLED_PIN)%3B%20%2F%2F%20LED%20ON%0A%09%09%0A%09%7D%0A%09%0A%09return(0)%3B%09%0A%7D“ message=““ highlight=““ provider=“manual“/]

Dieser Beitrag wurde unter Elektronik, Microcontroller, Wochenend Projekte veröffentlicht. Setze ein Lesezeichen auf den Permalink.