{"id":702,"date":"2018-05-20T11:25:07","date_gmt":"2018-05-20T10:25:07","guid":{"rendered":"http:\/\/www.weise-bernd.de\/?p=702"},"modified":"2019-02-15T17:03:34","modified_gmt":"2019-02-15T16:03:34","slug":"wochenend-projekt-einschlaflicht-v01-02-prototype","status":"publish","type":"post","link":"https:\/\/www.weise-bernd.de\/?p=702","title":{"rendered":"Wochenend-Projekt: Einschlaflicht v01.06 Prototype"},"content":{"rendered":"<div class=\"code-embed-wrapper\"> <pre class=\"language-c code-embed-pre\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-c code-embed-code\">\/*<br\/> * Attiny13_Einschlaflampe_v01_06_final.c<br\/> *<br\/> * Created: 25.06.2018 08:00:00<br\/> * Author : Bernd<br\/> *<br\/> *<br\/> * Chip type: Attiny13a<br\/> * Clock frequency: SUT_CKSEL auf INTRCoSC_128KHZ_14CK_64MS (128kHz \/ 8 = 16kHz)<br\/> *<br\/> *                       +--------+<br\/> *        [        (PB5) |1*     8| (VCC)  Power     ]<br\/> *        [        (PB3) |2      7| (PB2)            ]<br\/> *        [        (PB4) |3      6| (PB1)  Button    ]<br\/> *        [ Ground (GND) |4      5| (PB0)  LED White ]<br\/> *                       +--------+<br\/> *<br\/> *<br\/> * Kurze Beschreibung:<br\/> * -------------------<br\/> *  - Die Lampe geht beim bet\u00e4tigen des Tasters an PB1 an (LED PB0 Leuchtet)<br\/> *  - Ohne weiteres Dr\u00fccken leuchtet sie etwa 20 Sekunden<br\/> *  - Ein kurzes dr\u00fccken schaltet die Lampe aus oder an<br\/> *\t- Durch langes Dr\u00fccken kommt man in den Auswahl-Modus<br\/> *\t\tEs gibt drei Moden je nachdem wann man die Taste wieder los l\u00e4sst<br\/> *\t-Moduswechsel durch langes Dr\u00fccken des Tasters<br\/> *\t\t\tModus 1 LED Blinkt langsam - hier wenn los gelassen wird leuchtet die Lampe etwa 5 min.<br\/> *\t\t\tModus 2 LED Blinkt mittel  - hier wenn los gelassen wird leuchtet die Lampe etwa 10 min.<br\/> *\t\t\tModus 3 LED Blinkt schnell - hier wenn los gelassen wird leuchtet die Lampe etwa 15 min.<br\/> * <br\/> *\/<br\/><br\/>\/\/ #define F_CPU 9600000UL  \/\/Delay anpassen wegen Fusebit<br\/>#define F_CPU 128000UL  \/\/Delay anpassen wegen Fusebit<br\/><br\/>#define LED_PIN PB0       \/\/ PB0 as a LED pin<br\/>#define Taster\tPB1<br\/>#define AN\t\t1<br\/>#define AUS\t\t0<br\/> <br\/>#include &lt;avr\/wdt.h&gt;<br\/>#include &lt;stdint.h&gt;<br\/>#include &lt;util\/delay.h&gt;<br\/>#include &lt;avr\/io.h&gt;<br\/>#include &lt;avr\/interrupt.h&gt;<br\/>#include &lt;avr\/power.h&gt;<br\/>#include &lt;avr\/sleep.h&gt;<br\/><br\/>\/\/ Leere Interrupt-Routine<br\/>ISR(PCINT0_vect)<br\/>{<br\/>}<br\/><br\/>int main (void)<br\/>{<br\/>\t\/\/Watchdog ausschalten!<br\/>\tMCUSR &amp;= ~(1&lt;&lt;WDRF);<br\/>\tWDTCR |= (1&lt;&lt;WDCE) | (1&lt;&lt;WDE);<br\/>\tWDTCR = 0x00;<br\/>\t<br\/>\tDDRB  |= (1&lt;&lt;LED_PIN);     \/\/ Auf Ausgang schalten<br\/>\tPORTB |= (1&lt;&lt;Taster);     \/\/ PullUp einschalten<br\/>\t<br\/>\tPORTB |= (1&lt;&lt;LED_PIN); \/\/ LED einschalten<br\/>\t_delay_ms(400); \/\/ Kurzes Entprellen vom Watchdog auffachen (Tastendruck)<br\/>\t<br\/>\tint iLeuchtdauer=80; \/\/Standard Wert f\u00fcr Leuchten &quot;iLeuchtdauer \/ 4 = etwa Leuchtzeit in Sekunden\t<br\/>\tint iTimer=0;<br\/>\tint i = 0;<br\/>\t<br\/>\twhile (1)<br\/>\t{<br\/>\t\tif (!(PINB &amp; (1&lt;&lt;Taster))) \/\/ Pr\u00fcfen auf Tastendruck - Bei Druck Befehl ausf\u00fchren<br\/>\t\t{<br\/>\t\t\t_delay_ms(500); \/\/ kurze Pause<br\/>\t\t\tif (!(PINB &amp; (1&lt;&lt;Taster))) \/\/ Pr\u00fcfen auf Tastendruck - Bei Druck Befehl ausf\u00fchren<br\/>\t\t\t{<br\/>\t\t\t\tiTimer++; \/\/ Z\u00e4hler f\u00fcr Auswahl erh\u00f6hen<br\/>\t\t\t\tif (iTimer==5)<br\/>\t\t\t\t{<br\/>\t\t\t\t\tfor (i=0;i&lt;=10; i++)<br\/>\t\t\t\t\t{<br\/>\t\t\t\t\t\tPORTB ^= (1&lt;&lt;LED_PIN); \/\/Toggl<br\/>\t\t\t\t\t\t_delay_ms(250);<br\/>\t\t\t\t\t}<br\/>\t\t\t\t\t\/\/Nach Toggle die LED einschalten und die Leuchtdauer setzen<br\/>\t\t\t\t\tPORTB |= (1&lt;&lt;LED_PIN); \/\/ LED einschalten<br\/>\t\t\t\t\tiLeuchtdauer = 5*60*4; \/\/ etwa 5 Minuten Leuchtzeit<br\/>\t\t\t\t\t<br\/>\t\t\t\t}<br\/>\t\t\t\telse if (iTimer==10)<br\/>\t\t\t\t{<br\/>\t\t\t\t\tfor (i=0;i&lt;=14; i++)<br\/>\t\t\t\t\t{<br\/>\t\t\t\t\t\tPORTB ^= (1&lt;&lt;LED_PIN); \/\/Toggl<br\/>\t\t\t\t\t\t_delay_ms(150);<br\/>\t\t\t\t\t}<br\/>\t\t\t\t\t\/\/Nach Toggle die LED einschalten und die Leuchtdauer setzen<br\/>\t\t\t\t\tPORTB |= (1&lt;&lt;LED_PIN); \/\/ LED einschalten<br\/>\t\t\t\t\tiLeuchtdauer = 10*60*4; \/\/ etwa 10 Minuten Leuchtzeit<br\/>\t\t\t\t\t<br\/>\t\t\t\t}<br\/>\t\t\t\telse if (iTimer==15)<br\/>\t\t\t\t{<br\/>\t\t\t\t\tfor (i=0;i&lt;=18; i++)<br\/>\t\t\t\t\t{<br\/>\t\t\t\t\t\tPORTB ^= (1&lt;&lt;LED_PIN); \/\/Toggl<br\/>\t\t\t\t\t\t_delay_ms(100);<br\/>\t\t\t\t\t}<br\/>\t\t\t\t\t\/\/Nach Toggle die LED einschalten und die Leuchtdauer setzen<br\/>\t\t\t\t\tPORTB |= (1&lt;&lt;LED_PIN); \/\/ LED einschalten<br\/>\t\t\t\t\tiLeuchtdauer = 15*60*4; \/\/ etwa 15 Minuten Leuchtzeit<br\/>\t\t\t\t\t<br\/>\t\t\t\t}<br\/>\t\t\t}<br\/>\t\t\telse<br\/>\t\t\t{<br\/>\t\t\t\tPORTB ^= (1&lt;&lt;LED_PIN);\t\/\/Toggl<br\/>\t\t\t\tiLeuchtdauer=80; \/\/ Leuchtdauer wieder auf Default setzen<br\/>\t\t\t\t_delay_ms(500);<br\/>\t\t\t}<br\/>\t<br\/>\t\t} <br\/>\t\telse <br\/>\t\t{<br\/>\t\t\tiTimer=0; \/\/ Z\u00e4hler f\u00fcr Auswahl auf Null setzen -Nicht sch\u00f6n hier<br\/>\t\t\t<br\/>\t\t\t\/\/ Taste wurde nicht gedr\u00fcckt counter wird weiter herunter gerechnet<br\/>\t\t\t\/\/ bis 0 dann wird geschlafen<br\/>\t\t\tif (iLeuchtdauer &gt;= 0) <br\/>\t\t\t{<br\/>\t\t\t\tiLeuchtdauer--;<br\/>\t\t\t\t_delay_ms(250);<br\/>\t\t\t}<br\/>\t\t\telse<br\/>\t\t\t{<br\/>\t\t\t\tPORTB &amp;= ~(1&lt;&lt;LED_PIN); \/\/ LED aus<br\/>\t\t\t\t\/\/<br\/>\t\t\t\t\/\/ Schlafen <br\/>\t\t\t\t\/\/<br\/>\t\t\t\t\/\/<br\/>\t\t\t\t\/\/ Den ADC deaktivieren, brauchen wir nicht m\u00fcsste aber pre Default aus sein.<br\/>\t\t\t\tpower_adc_disable();<br\/>\t\t\t\t<br\/>\t\t\t\t\/\/ Pin-Change Interrupt f\u00fcr die 4 Taster erlauben<br\/>\t\t\t\tGIMSK = (1&lt;&lt;PCIE);<br\/>\t\t\t\tPCMSK |= (1&lt;&lt;PB1);<br\/>\t\t\t\t<br\/>\t\t\t\tsei();<br\/>\t\t\t\t<br\/>\t\t\t\tset_sleep_mode(SLEEP_MODE_PWR_DOWN);<br\/>\t\t\t\tsleep_mode();<br\/>\t\t\t\t<br\/>\t\t\t\t\/\/ iLeuchtdauer=80; \/\/ Unn\u00f6tig wurde nur zum Test ohne Watchdog ben\u00f6tigt<br\/>\t\t\t\t<br\/>\t\t\t\t\/\/ **************** Aufwachen und alles f\u00fcr den Reset \u00fcber Watchdog vorbereiten ******<br\/>\t\t\t\twdt_enable(WDTO_1S); \/\/ 1s Sekunden\tWatchdog einstellen<br\/>\t\t\t\twdt_enable(WDTO_30MS); \/\/ 30ms Sekunden\tWatchdog einstellen<br\/>\t\t\t\t<br\/>\t\t\t\t\/\/tu nix und warte auf den Biss des Wachhundes<br\/>\t\t\t\t_delay_ms(5000); \/\/ Der Wachhund ist auf eine Sek gestellt. Im Delay sind es 5 Sekunden. - Also Reset<br\/>\t\t\t\t\/\/ wdt_reset();<br\/>\t\t\t}<br\/>\t\t}<br\/>\t\t<br\/>\t}<br\/>}<br\/>\t\t\t\t<br\/><br\/><br\/>\t\t\t\/\/PORTB ^= (1&lt;&lt;LED_PIN);\t\/\/Toggl<br\/>\t\t\t\/\/PORTB &amp;= ~(1&lt;&lt;LED_PIN);\t\/\/ LED aus<br\/>\t\t\t\/\/PORTB |= (1&lt;&lt;LED_PIN);\t\/\/ LED einschalten<\/code><\/pre> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">Attiny13_Einschlaflampe_v01_06_final.c<\/span> <\/div> <\/div>\n<p><a href=\"http:\/\/www.weise-bernd.de\/wp-content\/uploads\/2019\/02\/Einschlaflicht-entwurf.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-708\" src=\"http:\/\/www.weise-bernd.de\/wp-content\/uploads\/2019\/02\/Einschlaflicht-entwurf-300x242.png\" alt=\"\" width=\"300\" height=\"242\" srcset=\"https:\/\/www.weise-bernd.de\/wp-content\/uploads\/2019\/02\/Einschlaflicht-entwurf-300x242.png 300w, https:\/\/www.weise-bernd.de\/wp-content\/uploads\/2019\/02\/Einschlaflicht-entwurf.png 320w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"http:\/\/www.weise-bernd.de\/wp-content\/uploads\/2018\/05\/IMG_20180520_120730.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-704\" src=\"http:\/\/www.weise-bernd.de\/wp-content\/uploads\/2018\/05\/IMG_20180520_120730-225x300.jpg\" alt=\"\" width=\"225\" height=\"300\" srcset=\"https:\/\/www.weise-bernd.de\/wp-content\/uploads\/2018\/05\/IMG_20180520_120730-225x300.jpg 225w, https:\/\/www.weise-bernd.de\/wp-content\/uploads\/2018\/05\/IMG_20180520_120730-768x1024.jpg 768w\" sizes=\"auto, (max-width: 225px) 100vw, 225px\" \/><\/a> <a href=\"http:\/\/www.weise-bernd.de\/wp-content\/uploads\/2018\/05\/IMG_20180520_120810.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-705\" src=\"http:\/\/www.weise-bernd.de\/wp-content\/uploads\/2018\/05\/IMG_20180520_120810-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.weise-bernd.de\/wp-content\/uploads\/2018\/05\/IMG_20180520_120810-300x225.jpg 300w, https:\/\/www.weise-bernd.de\/wp-content\/uploads\/2018\/05\/IMG_20180520_120810-768x576.jpg 768w, https:\/\/www.weise-bernd.de\/wp-content\/uploads\/2018\/05\/IMG_20180520_120810-1024x768.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Hier die akuellen Bilder zum Prototyp der Einschlaflampe. Die verfeinerungen am Code habe ich noch nicht in Angriff genommen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hier die akuellen Bilder zum Prototyp der Einschlaflampe. Die verfeinerungen am Code habe ich noch nicht in Angriff genommen.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-702","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"_links":{"self":[{"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=\/wp\/v2\/posts\/702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=702"}],"version-history":[{"count":6,"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=\/wp\/v2\/posts\/702\/revisions"}],"predecessor-version":[{"id":712,"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=\/wp\/v2\/posts\/702\/revisions\/712"}],"wp:attachment":[{"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=702"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=702"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}