{"id":696,"date":"2018-05-05T11:02:33","date_gmt":"2018-05-05T10:02:33","guid":{"rendered":"http:\/\/www.weise-bernd.de\/?p=696"},"modified":"2018-05-20T11:17:45","modified_gmt":"2018-05-20T10:17:45","slug":"wochenend-projekt-einschlaflicht-v01-01","status":"publish","type":"post","link":"https:\/\/www.weise-bernd.de\/?p=696","title":{"rendered":"Wochenend-Projekt: Einschlaflicht v01.02"},"content":{"rendered":"<p>Ich dachte mir es w\u00e4re doch toll, wenn man ein kleine Lampe hat, die solange leuchtet bis man eingeschlafen ist und dann ausgeht.<\/p>\n<p>Die Lampe an der ich baue Leucht soll nach dem einschalten (Wenn man den Knopf dr\u00fcckt) etwa 1 min lang leuchten, dann soll sie ausgehen. Wenn man den Knopf an der Lampe l\u00e4nge dr\u00fcckt blinkt sie je nachdem wie lange man dr\u00fcckt, &#8211; 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\u00e4sst man w\u00e4rend dem Blinken die Taste los, so ist die Leuchtdauer je Modus 2 min., 5 min. oder 10 min.<\/p>\n<p>Das ganze ist aber noch nicht ausgegoren und ben\u00f6tigt noch ein wenig &#8222;Entwicklungsarbeit&#8220;.<\/p>\n<p>Der nachfolgende Code funktioniert schon mal mehr recht als schlecht dennoch ver\u00f6ffenliche ich ihn hier schon einmal.<\/p>\n<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_02.c<br\/> *<br\/> * Created: 01.05.2018 11: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\/><br\/>#define F_CPU 960000UL  \/\/Dalay anpassen wegen Fusebit<br\/>\/\/ #define F_CPU 12800UL  \/\/Dalay 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;util\/delay.h&gt;<br\/>#include &lt;avr\/io.h&gt;<br\/><br\/>int Leuchten(int iLeuchtdauer, int iAusAn);<br\/><br\/>int main (void)<br\/>{<br\/>\tint iCounter=0;\t\t\/\/ Zaehler f\u00fcr l\u00e4nge Tastendruck<br\/>\tint iBlink=0;\t\t\/\/ Blink intervall<br\/>\tint iLeuchtdauer=120; \/\/Standard Wert f\u00fcr Leuchten &quot;iLeuchte \/ 2 = etwa Sekunden&quot;<br\/>\t\/\/ int iAusAn;<br\/>\t<br\/>\tDDRB  |= (1&lt;&lt;LED_PIN);     \/\/ Auf Ausgang schalten<br\/>\tPORTB |= (1&lt;&lt;Taster);     \/\/ PullUp einschalten<br\/>\t<br\/>\twhile (1)<br\/>\t{<br\/>\t\tif ((PINB &amp; (1&lt;&lt;Taster))) \/\/ Pr\u00fcfen auf Tastendruck<br\/>\t\t{<br\/>\t\t\tiCounter=0;<br\/>\t\t\tLeuchten(iLeuchtdauer,AUS);<br\/>\t\t\t\/\/PORTB |= (1&lt;&lt;LED_PIN); \/\/ LED ON<br\/>\t\t\t<br\/>\t\t} <br\/>\t\t\t\t<br\/>\t\telse <br\/>\t\t{<br\/>\t\t\tif (iCounter==100)   \/\/ Wenn Taste gedr\u00fcckt f\u00fcr 100 durchg\u00e4nge gedr\u00fcckt war<br\/>\t\t\t{<br\/>\t\t\t\tfor(iBlink=0;iBlink&lt;=20;iBlink++)<br\/>\t\t\t\t{<br\/>\t\t\t\t\tPORTB ^= (1&lt;&lt;LED_PIN); \/\/Toggl<br\/>\t\t\t\t\t_delay_ms(50);<br\/>\t\t\t\t\tiCounter ++;<br\/>\t\t\t\t}<br\/>\t\t\t\tPORTB |= (1&lt;&lt;LED_PIN); \/\/ LED ON<br\/>\t\t\t\tiLeuchtdauer =240; \/\/2 Min<br\/>\t\t\t\t\/\/ Leuchten(iLeuchtdauer,AUS);<br\/>\t\t\t}<br\/>\t\t\telse if (iCounter==150)<br\/>\t\t\t{<br\/>\t\t\t\tfor(iBlink=0;iBlink&lt;=20;iBlink++)<br\/>\t\t\t\t{<br\/>\t\t\t\t\tPORTB ^= (1&lt;&lt;LED_PIN); \/\/Toggl<br\/>\t\t\t\t\t_delay_ms(100);<br\/>\t\t\t\t\tiCounter++;<br\/>\t\t\t\t}<br\/>\t\t\t\tPORTB |= (1&lt;&lt;LED_PIN); \/\/ LED ON<br\/>\t\t\t\tiLeuchtdauer =600; \/\/5 Min<br\/>\t\t\t\t\/\/ Leuchten(iLeuchtdauer,AUS);<br\/>\t\t\t}<br\/>\t\t\telse if (iCounter==200)<br\/>\t\t\t{<br\/>\t\t\t\tfor(iBlink=0;iBlink&lt;=20;iBlink++)<br\/>\t\t\t\t{<br\/>\t\t\t\t\tPORTB ^= (1&lt;&lt;LED_PIN); \/\/Toggl<br\/>\t\t\t\t\t_delay_ms(300);<br\/>\t\t\t\t\tiCounter++;<br\/>\t\t\t\t}<br\/>\t\t\t\tPORTB |= (1&lt;&lt;LED_PIN); \/\/ LED ON<br\/>\t\t\t\tiLeuchtdauer =1200; \/\/ 10 Min<br\/>\t\t\t\t\/\/ Leuchten(iLeuchtdauer,AUS);<br\/>\t\t\t}<br\/>\t\t\telse<br\/>\t\t\t{<br\/>\t\t\t\t\/\/if(iCounter&lt;=100)<br\/>\t\t\t\t\/\/PORTB &amp;= ~(1&lt;&lt;LED_PIN); \/\/Licht aus wenn nur kurz gedr\u00fcckt wurde<br\/>\t\t\t\t<br\/>\t\t\t\t_delay_ms(50);<br\/>\t\t\t\tiCounter++;<br\/>\t\t\t\tif(iCounter==500)<br\/>\t\t\t\t\tiCounter=0;<br\/>\t\t\t}<br\/>\t\t}<br\/>\t\t\t<br\/>\t}<br\/>\treturn 0;<br\/>}<br\/><br\/>int Leuchten(int iLeuchtdauer, int iAusAn)<br\/>{<br\/>\tfor (int i =0; i&lt;=iLeuchtdauer;i++)<br\/>\t{<br\/>\t\tPORTB |= (1&lt;&lt;LED_PIN); \/\/ LED ON<br\/>\t\t_delay_ms(500);<br\/>\t\tif (!(PINB &amp; (1&lt;&lt;Taster))) \/\/ Pr\u00fcfen auf Tastendruck<br\/>\t\t\ti=iLeuchtdauer+1;<br\/>\t}<br\/>\t<br\/>\tif (iAusAn==AUS)<br\/>\t{<br\/>\t\tPORTB &amp;= ~(1&lt;&lt;LED_PIN); \/\/ LED AUS<br\/>\t\t_delay_ms(250);<br\/>\t\twhile(PINB &amp; (1&lt;&lt;Taster))<br\/>\t\t{<br\/>\t\t\t\/\/ Warten bis Taste Ged\u00fcckt wird Oder hier in den Sleepmodus<br\/>\t\t}<br\/>\t\tPORTB |= (1&lt;&lt;LED_PIN); \/\/ LED ON<br\/>\t\t<br\/>\t}<br\/>\t<br\/>\treturn(0);\t<br\/>}<\/code><\/pre> <div class=\"code-embed-infos\"> <\/div> <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ich dachte mir es w\u00e4re 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\u00fcckt) etwa &hellip; <a href=\"https:\/\/www.weise-bernd.de\/?p=696\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,6,9],"tags":[],"class_list":["post-696","post","type-post","status-publish","format-standard","hentry","category-elektronik","category-microcontroller","category-wochenend-projekte"],"_links":{"self":[{"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=\/wp\/v2\/posts\/696","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=696"}],"version-history":[{"count":4,"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=\/wp\/v2\/posts\/696\/revisions"}],"predecessor-version":[{"id":701,"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=\/wp\/v2\/posts\/696\/revisions\/701"}],"wp:attachment":[{"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=696"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=696"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.weise-bernd.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}