From 332f595cd3082ad73ffaa767d0ae30b1f2108dcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Escario=20M=C3=A9ndez?= Date: Fri, 7 Jul 2017 00:56:48 +0200 Subject: [PATCH 1/2] new electronics: less components, less bards, space optimization and some software error fixes --- circuits/In3Brain/in3brain.brd | 2377 +++++++---- circuits/In3Brain/in3brain.sch | 3883 +++++++++++------- circuits/In3ControlPanel/in3controlpanel.brd | 927 ----- circuits/In3ControlPanel/in3controlpanel.sch | 1286 ------ circuits/libs/0001_alejandro.lbr | 156 + circuits/libs/myLib.lbr | 110 + src/brain/brain.fabduino.c | 200 +- src/brain/brain.fabduino.c.hex | 555 --- src/lib/ext/dht22/dht22.c | 104 + src/lib/ext/dht22/dht22.h | 26 + src/lib/ext/i2chw/i2cmaster.h | 178 + src/lib/ext/i2chw/twimaster.c | 201 + src/lib/input/rotary.c | 24 +- src/temperature/temperature.fabduino.c | 291 -- src/temperature/temperature.fabduino.c.make | 38 - 15 files changed, 4905 insertions(+), 5451 deletions(-) delete mode 100644 circuits/In3ControlPanel/in3controlpanel.brd delete mode 100644 circuits/In3ControlPanel/in3controlpanel.sch create mode 100644 circuits/libs/0001_alejandro.lbr create mode 100644 circuits/libs/myLib.lbr delete mode 100644 src/brain/brain.fabduino.c.hex create mode 100644 src/lib/ext/dht22/dht22.c create mode 100644 src/lib/ext/dht22/dht22.h create mode 100755 src/lib/ext/i2chw/i2cmaster.h create mode 100755 src/lib/ext/i2chw/twimaster.c delete mode 100644 src/temperature/temperature.fabduino.c delete mode 100755 src/temperature/temperature.fabduino.c.make diff --git a/circuits/In3Brain/in3brain.brd b/circuits/In3Brain/in3brain.brd index e0bfc64..7132e24 100644 --- a/circuits/In3Brain/in3brain.brd +++ b/circuits/In3Brain/in3brain.brd @@ -1,6 +1,6 @@ - + @@ -9,7 +9,7 @@ - + @@ -57,6 +57,7 @@ + @@ -84,13 +85,13 @@ - - - - + + + + - + <b>RESISTOR</b><p> @@ -109,175 +110,100 @@ chip - - - - - -<B>Thin Plasic Quad Flat Package</B> Grid 0.8 mm - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +<b>OMRON SWITCH</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 +4 - - - -<b>Burr-Brown Components</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>Smal Outline Transistor</b> - - - - - - - - ->NAME ->VALUE - - - - + + + + + + + +1 +>NAME +>VALUE - -<b>Jacks</b><p> -Power Connectors<br> -Phone Connectors<br> -Cinch Connectors<br> -<author>Created by librarian@cadsoft.de</author> + - -<b>DC POWER JACK 2.5mm</b> Right Angle, Through Hole, Rated 5A at 16VDC, PC Terminals<p> -Source: www.spctechnology.com .. 84N1162.pdf<br> -Distributor: <b>Farnell (www.Farnell.de)</b><br> -Created by Robert Siegler - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->VALUE ->NAME - - - + +<b>RESISTOR</b><p> +chip + + + + + + + + +>NAME +>VALUE + + + @@ -285,6 +211,153 @@ Created by Robert Siegler <b>AMP Connectors, Type QUICK</b><p> <author>Created by librarian@cadsoft.de</author> + +<b>AMP QUICK CONNECTOR</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +>NAME +>VALUE +4 + + + + + + + + + + + + + + + + + <b>AMP QUICK CONNECTOR</b> @@ -554,50 +627,276 @@ Created by Robert Siegler - + <b>AMP QUICK CONNECTOR</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +>NAME +>VALUE +6 + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>AMP QUICK CONNECTOR</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + @@ -609,268 +908,455 @@ Created by Robert Siegler - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 ->NAME ->VALUE -7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +8 +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + +ALPS Switch from Markus Faust &lt;mfaust@htwm.de&gt;<p> +Source: EC12E.scr from eagle.support.ger on news.cadsoft.de at 08.10.2007 - -<b>PIN HEADER</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 ->NAME ->VALUE -10 - - - - - - - - - - + +ALPS rotary encoder<br> +EC12E series with push-on switch + + + + + + + + + + + + + +>NAME +>VALUE - + +Default symbols for import LTspice schematics<p> +2012-10-29 alf@cadsoft.de<br> - - - - - - - -1 ->NAME ->VALUE + +<b>CHICAGO MINIATURE LAMP, INC.</b><p> +7022X Series SMT LEDs 1206 Package Size + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>Speakers and Buzzers</b><p> +<ul>Distributors: +<li>Buerklin +<li>Spoerle +<li>Schukat +</ul> +<author>Created by librarian@cadsoft.de</author> + + +<b>BUZZER</b> + + + + + + + +>NAME +>VALUE + + + + + + +<B>Thin Plasic Quad Flat Package</B> Grid 0.8 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Burr-Brown Components</b><p> +<author>Created by librarian@cadsoft.de</author> + + +<b>Smal Outline Transistor</b> + + + + + + + + +>NAME +>VALUE + + + + + + + + +<b>Jacks</b><p> +Power Connectors<br> +Phone Connectors<br> +Cinch Connectors<br> +<author>Created by librarian@cadsoft.de</author> + + +<b>DC POWER JACK 2.5mm</b> Right Angle, Through Hole, Rated 5A at 16VDC, PC Terminals<p> +Source: www.spctechnology.com .. 84N1162.pdf<br> +Distributor: <b>Farnell (www.Farnell.de)</b><br> +Created by Robert Siegler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + @@ -922,7 +1408,7 @@ design rules under a new name. - + @@ -982,7 +1468,7 @@ design rules under a new name. - + @@ -1072,416 +1558,647 @@ design rules under a new name. - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + - - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + + - - - - - + + + + + - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + - - - - + + + + + - - - - + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + - - - - - - - + + + + + + + + + + - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - + + + + - - - - - - - + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - + + + + + - - - - - - - + + + + + + + + - - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/circuits/In3Brain/in3brain.sch b/circuits/In3Brain/in3brain.sch index e8e956e..a77e7ed 100644 --- a/circuits/In3Brain/in3brain.sch +++ b/circuits/In3Brain/in3brain.sch @@ -1,6 +1,6 @@ - + @@ -57,6 +57,7 @@ + @@ -84,284 +85,90 @@ - + - -<b>32M1-A</b> Micro Lead Frame package (MLF) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +<b>RESISTOR</b><p> +chip + + + + + + + + +>NAME +>VALUE + + + - -<B>Thin Plasic Quad Flat Package</B> Grid 0.8 mm - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -369,45 +176,17 @@ - - - - - - - - - ->VALUE - - - - ->VALUE - - - - - -<b>SUPPLY SYMBOL</b> - - - - - - - - - - - - -<b>SUPPLY SYMBOL</b> + +unpolarized_capacitor - + - + + + + + @@ -416,7 +195,7 @@ - + <b>RESISTOR</b><p> @@ -435,39 +214,121 @@ chip - -<b>RESISTOR</b> - - - - - - - - ->NAME ->VALUE - - - + +<b>OMRON SWITCH</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 +4 + + + + + + + + +1 +>NAME +>VALUE + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + - - - - - - - - - - ->NAME ->VALUE - - - @@ -480,26 +341,78 @@ chip + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE +MISO +SCK +RST +VCC +MOSI +GND + + + + + + + - + +unpolarized_capacitor - + - - + + - + + + +<b>OMRON SWITCH</b> + + + + + - - + + + + @@ -507,328 +420,19 @@ chip - -unpolarized_capacitor + - + - + - - - - - - - - - - - - - - -<b>PIN HEADER</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 ->NAME ->VALUE -10 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->VALUE ->NAME - - - - - - - - - - - - - - -<b>PIN HEADER</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 ->NAME ->VALUE - - -<b>PIN HEADER</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->NAME ->VALUE -MISO -SCK -RST -VCC -MOSI -GND - - - - - - - - - - - - - - - - - - - - - - + + + + + + @@ -851,114 +455,157 @@ chip - -<b>Burr-Brown Components</b><p> + +<b>AMP Connectors, Type QUICK</b><p> <author>Created by librarian@cadsoft.de</author> - -<b>Smal Outline Transistor</b> - - - - - - - - ->NAME ->VALUE - - - - - - -<b>DPAC</b> - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - + +<b>AMP QUICK CONNECTOR</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +>NAME +>VALUE +4 + + + + + + + + + + + + + + + + - - - - - - - ->NAME ->VALUE - - - - - - - -<b>800mA and 1A Low Dropout (LDO) Positive Regulator</b><p> -1.8V, 2.5V, 2.85V, 3.3V, 5V, and Adj - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>AMP Connectors, Type QUICK</b><p> -<author>Created by librarian@cadsoft.de</author> - <b>AMP QUICK CONNECTOR</b> @@ -1228,50 +875,276 @@ chip - + <b>AMP QUICK CONNECTOR</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +>NAME +>VALUE +6 + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>AMP QUICK CONNECTOR</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1283,281 +1156,1177 @@ chip - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 ->NAME ->VALUE -7 - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +8 +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - ->VALUE ->NAME - - - - - - - - - - - - - - ->VALUE ->NAME - - - + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + +<b>AMP QUICK CONNECTOR</b> + + + + + + + + + + + + + + + + + + + + + + + +<b>AMP QUICK CONNECTOR</b> + + + + + + + + + + + + + + + + + + + + + + + + +<b>AMP QUICK CONNECTOR</b> + + + + + + + + + + + + + + + + + + + + + + +<b>AMP QUICK CONNECTOR</b> + + + + + + + + + + + + + + + + + + + + + + + + + +<b>AMP QUICK CONNECTOR</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ALPS Switch from Markus Faust &lt;mfaust@htwm.de&gt;<p> +Source: EC12E.scr from eagle.support.ger on news.cadsoft.de at 08.10.2007 + + +ALPS rotary encoder<br> +EC12E series with push-on switch + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>PART +>VALUE + + + + + + + + + + + + + +>PART +>VALUE + + + + + + + + + + + + + +ALPS rotary Encoder EC12E series with switch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Default symbols for import LTspice schematics<p> +2012-10-29 alf@cadsoft.de<br> + + +<b>CHICAGO MINIATURE LAMP, INC.</b><p> +7022X Series SMT LEDs 1206 Package Size + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<B>LED</B><p> +5 mm, square, Siemens + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>SML0603-XXX (HIGH INTENSITY) LED</b><p> +<table> +<tr><td>AG3K</td><td>AQUA GREEN</td></tr> +<tr><td>B1K</td><td>SUPER BLUE</td></tr> +<tr><td>R1K</td><td>SUPER RED</td></tr> +<tr><td>R3K</td><td>ULTRA RED</td></tr> +<tr><td>O3K</td><td>SUPER ORANGE</td></tr> +<tr><td>O3KH</td><td>SOFT ORANGE</td></tr> +<tr><td>Y3KH</td><td>SUPER YELLOW</td></tr> +<tr><td>Y3K</td><td>SUPER YELLOW</td></tr> +<tr><td>2CW</td><td>WHITE</td></tr> +</table> +Source: http://www.ledtronics.com/ds/smd-0603/Dstr0092.pdf + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +SpiceOrder 2 +SpiceOrder 1 + + + + +<b>LED</b><p> +Source: http://www.osram.convergy.de<p> +Source: www.luxeon.com<p> +Source: www.kingbright.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Speakers and Buzzers</b><p> +<ul>Distributors: +<li>Buerklin +<li>Spoerle +<li>Schukat +</ul> +<author>Created by librarian@cadsoft.de</author> + + +<b>BUZZER</b> + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +<b>BUZZER</b><p> Source: Buerklin + + + + + + + + + + + + + + + + + + + + + + + + + +<b>32M1-A</b> Micro Lead Frame package (MLF) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<B>Thin Plasic Quad Flat Package</B> Grid 0.8 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE + - - - - - - - - - - - - ->VALUE ->NAME - - - - - - - + + +>VALUE + - -<b>AMP QUICK CONNECTOR</b> + +<b>SUPPLY SYMBOL</b> - + - - - - - - - - + - - - - - - + - -<b>AMP QUICK CONNECTOR</b> + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + - + - + @@ -1565,37 +2334,121 @@ chip - - - - + + + + + + + + + + + - -<b>AMP QUICK CONNECTOR</b> + + + +<b>Burr-Brown Components</b><p> +<author>Created by librarian@cadsoft.de</author> + + +<b>Smal Outline Transistor</b> + + + + + + + + +>NAME +>VALUE + + + + + + +<b>DPAC</b> + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +<b>800mA and 1A Low Dropout (LDO) Positive Regulator</b><p> +1.8V, 2.5V, 2.85V, 3.3V, 5V, and Adj - + - + - - - - - - - + + + - - - + + + + + + + + + + + + + + + + + + @@ -1812,538 +2665,718 @@ Type: <b>SPC4077 / SPC 4078</b><p> - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + -Connection header +Connection header - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - + + + - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - + + + + + - - - - - - + + + + + - - - + + + + + + + + + - - - + + - - - - - - - - - - - - - - - - - - + + + + + - - - - - - + + - - - - - - - - - - - - + - - - - - - - - - - + + + + - - - + + - - - - - + + + + + + + + - - - - - - - + - - - - - - - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - diff --git a/circuits/In3ControlPanel/in3controlpanel.brd b/circuits/In3ControlPanel/in3controlpanel.brd deleted file mode 100644 index aa6ab3a..0000000 --- a/circuits/In3ControlPanel/in3controlpanel.brd +++ /dev/null @@ -1,927 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>RESISTOR</b><p> -chip - - - - - - - - ->NAME ->VALUE - - - - - -<b>OMRON SWITCH</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE -1 -2 -3 -4 - - - - - - -<b>RESISTOR</b><p> -chip - - - - - - - - ->NAME ->VALUE - - - - - - - -<b>AMP Connectors, Type QUICK</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>AMP QUICK CONNECTOR</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 ->NAME ->VALUE -4 - - - - - - - - - - - - - - - - - - - - - - -<b>PIN HEADER</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 ->NAME ->VALUE -10 - - - - - - - - - - - - - - -ALPS Switch from Markus Faust &lt;mfaust@htwm.de&gt;<p> -Source: EC12E.scr from eagle.support.ger on news.cadsoft.de at 08.10.2007 - - -ALPS rotary encoder<br> -EC12E series with push-on switch - - - - - - - - - - - - - ->NAME ->VALUE - - - - -Default symbols for import LTspice schematics<p> -2012-10-29 alf@cadsoft.de<br> - - -<b>CHICAGO MINIATURE LAMP, INC.</b><p> -7022X Series SMT LEDs 1206 Package Size - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - -<b>Speakers and Buzzers</b><p> -<ul>Distributors: -<li>Buerklin -<li>Spoerle -<li>Schukat -</ul> -<author>Created by librarian@cadsoft.de</author> - - -<b>BUZZER</b> - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - -<b>EAGLE Design Rules</b> -<p> -Die Standard-Design-Rules sind so gewählt, dass sie für -die meisten Anwendungen passen. Sollte ihre Platine -besondere Anforderungen haben, treffen Sie die erforderlichen -Einstellungen hier und speichern die Design Rules unter -einem neuen Namen ab. -<b>EAGLE Design Rules</b> -<p> -The default Design Rules have been set to cover -a wide range of applications. Your particular design -may have different requirements, so please make the -necessary adjustments and save your customized -design rules under a new name. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/circuits/In3ControlPanel/in3controlpanel.sch b/circuits/In3ControlPanel/in3controlpanel.sch deleted file mode 100644 index e9d2c5a..0000000 --- a/circuits/In3ControlPanel/in3controlpanel.sch +++ /dev/null @@ -1,1286 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>RESISTOR</b><p> -chip - - - - - - - - ->NAME ->VALUE - - - - - -<b>RESISTOR</b> - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>PIN HEADER</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 ->NAME ->VALUE -10 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->VALUE ->NAME - - - - - - - - - - - - - - -<b>PIN HEADER</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>RESISTOR</b><p> -chip - - - - - - - - ->NAME ->VALUE - - - - - -<b>OMRON SWITCH</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE -1 -2 -3 -4 - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - -unpolarized_capacitor - - - - - - - - - - - - - - - - -<b>OMRON SWITCH</b> - - - - - - - - - - - - - - - - - - - - -<b>AMP Connectors, Type QUICK</b><p> -<author>Created by librarian@cadsoft.de</author> - - -<b>AMP QUICK CONNECTOR</b> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1 ->NAME ->VALUE -4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->VALUE ->NAME - - - - - - - - -<b>AMP QUICK CONNECTOR</b> - - - - - - - - - - - - - - - - - - - - - - - - - -ALPS Switch from Markus Faust &lt;mfaust@htwm.de&gt;<p> -Source: EC12E.scr from eagle.support.ger on news.cadsoft.de at 08.10.2007 - - -ALPS rotary encoder<br> -EC12E series with push-on switch - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - ->PART ->VALUE - - - - - - - - - - - - - ->PART ->VALUE - - - - - - - - - - - - - -ALPS rotary Encoder EC12E series with switch - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Default symbols for import LTspice schematics<p> -2012-10-29 alf@cadsoft.de<br> - - -<b>CHICAGO MINIATURE LAMP, INC.</b><p> -7022X Series SMT LEDs 1206 Package Size - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<B>LED</B><p> -5 mm, square, Siemens - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - -<b>SML0603-XXX (HIGH INTENSITY) LED</b><p> -<table> -<tr><td>AG3K</td><td>AQUA GREEN</td></tr> -<tr><td>B1K</td><td>SUPER BLUE</td></tr> -<tr><td>R1K</td><td>SUPER RED</td></tr> -<tr><td>R3K</td><td>ULTRA RED</td></tr> -<tr><td>O3K</td><td>SUPER ORANGE</td></tr> -<tr><td>O3KH</td><td>SOFT ORANGE</td></tr> -<tr><td>Y3KH</td><td>SUPER YELLOW</td></tr> -<tr><td>Y3K</td><td>SUPER YELLOW</td></tr> -<tr><td>2CW</td><td>WHITE</td></tr> -</table> -Source: http://www.ledtronics.com/ds/smd-0603/Dstr0092.pdf - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - - - - - -SpiceOrder 2 -SpiceOrder 1 - - - - -<b>LED</b><p> -Source: http://www.osram.convergy.de<p> -Source: www.luxeon.com<p> -Source: www.kingbright.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<b>Speakers and Buzzers</b><p> -<ul>Distributors: -<li>Buerklin -<li>Spoerle -<li>Schukat -</ul> -<author>Created by librarian@cadsoft.de</author> - - -<b>BUZZER</b> - - - - - - - ->NAME ->VALUE - - - - - - - - - - - - - - - - - - - - - - - - - - - ->NAME ->VALUE - - - - - - -<b>BUZZER</b><p> Source: Buerklin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/circuits/libs/0001_alejandro.lbr b/circuits/libs/0001_alejandro.lbr new file mode 100644 index 0000000..bec3493 --- /dev/null +++ b/circuits/libs/0001_alejandro.lbr @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +v23092 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/circuits/libs/myLib.lbr b/circuits/libs/myLib.lbr new file mode 100644 index 0000000..00d0ae5 --- /dev/null +++ b/circuits/libs/myLib.lbr @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/brain/brain.fabduino.c b/src/brain/brain.fabduino.c index 7bed679..f7ccd4b 100644 --- a/src/brain/brain.fabduino.c +++ b/src/brain/brain.fabduino.c @@ -35,6 +35,7 @@ int errorCount = 0; float temperature = 0; float humidity = 0; int readErrors = 0; +int lastRead = 0; unsigned char tempFlag = ' '; unsigned char humFlag = ' '; volatile unsigned char targetTemperature = 36; @@ -56,6 +57,8 @@ const char MENU[2][20] = { "%c Change temp" }; +void getTempAndHum(); + Led* led; Buzzer* buzzer; LCD_I2C* lcd; @@ -65,10 +68,42 @@ Fan* fan2; Relay* relay1; Relay* relay2; +int timeToRead = 1; +int tot_overflow = 0; +ISR(TIMER1_OVF_vect) +{ + // keep a track of number of overflows + tot_overflow++; + + // check for number of overflows here itself + // 31 overflows = 1 seconds delay (approx.) + if (tot_overflow >= 31) // NOTE: '>=' used instead of '==' + { + led->toggle(); + timeToRead = 1; + // no timer reset required here as the timer + // is reset every time it overflows + + tot_overflow = 0; // reset overflow counter + } +} + +void timer1_init() +{ + // set up timer with prescaler = 8 + TCCR1B |= (1 << CS11); + // initialize counter + TCNT1 = 0; + // enable overflow interrupt + TIMSK1 |= (1 << TOIE1); + + // initialize overflow counter variable + tot_overflow = 0; +} void turnOnFans(){ - OCR0A=255; // 5V + OCR0A=255; // 12V OCR0B=255; // 12V } @@ -100,15 +135,13 @@ void init(){ TCNT0 = 0; // Reset TCNT0 OCR0A = 0; // Initial the Output Compare register A & B OCR0B = 0; - OCR0A=0; // Initial Duty Cycle for Channel A - OCR0B=0; // Initial Duty Cycle for Channel B - - initRotary(); led = new Led(&PORTD, &DDRD, PD4); led->init(); led->toggle(); + + timer1_init(); lcd = new LCD_I2C(0x27, 16, 2); lcd->backlight(1); @@ -131,15 +164,8 @@ void init(){ relay2 = new Relay(&PORTB, &DDRB, PB0); relay1->init(); relay2->init(); - - sei(); -} - -void freeAll(){ - delete(led); - delete(lcd); - delete(buzzer); - delete(sw_rotary); + + initRotary(); } void printVars(){ @@ -190,13 +216,13 @@ void menuAction(volatile unsigned char opt){ } void heat(){ - relay1->close(); - relay2->open(); + relay1->open(); + relay2->close(); } void cool(){ - relay2->open(); - relay1->close(); + relay2->close(); + relay1->open(); } void none(){ @@ -209,52 +235,52 @@ void getTempAndHum(){ float temperature2, humidity2; tempFlag = humFlag = ' '; if(dht_gettemperaturehumidity(&temperature1, &humidity1, &PORTC, &PINC, &DDRC, PC0) != 0){ - temperature1 = -1; - humidity1 = -1; - humFlag = tempFlag = '?'; - } - if(dht_gettemperaturehumidity(&temperature2, &humidity2, &PORTC, &PINC, &DDRC, PC1) != 0){ - temperature2 = -1; - humidity2 = -1; - humFlag = tempFlag = '?'; - } - if(temperature1 < 0 && temperature2 < 0){ - errorCount++; - if(errorCount > 10){ - temperature = -1; - } - }else if(temperature1 < 0){ - temperature = temperature2; - errorCount = 0; - }else if(temperature2 < 0){ - temperature = temperature1; - errorCount = 0; - }else{ - temperature = (temperature1 + temperature2) / 2; - errorCount = 0; - } - if(tempFlag != '?'){ - int diff = temperature1 - temperature2; - if(diff > 3 || diff < -3){ - tempFlag = '!'; - } - } - if(humidity1 < 0 && humidity2 < 0){ - humidity = -1; - }else if(humidity1 < 0){ - humidity = humidity2; - }else if(humidity2 < 0){ - humidity = humidity1; - }else{ - humidity = (humidity1 + humidity2) / 2; - } - - if(humFlag != '?'){ - int diff = humidity1 - humidity2; - if(diff > 10 || diff < -10){ - humFlag = '!'; - } - } + temperature1 = -1; + humidity1 = -1; + humFlag = tempFlag = '?'; + } + if(dht_gettemperaturehumidity(&temperature2, &humidity2, &PORTC, &PINC, &DDRC, PC1) != 0){ + temperature2 = -1; + humidity2 = -1; + humFlag = tempFlag = '?'; + } + if(temperature1 < 0 && temperature2 < 0){ + errorCount++; + if(errorCount > 10){ + temperature = -1; + } + }else if(temperature1 < 0){ + temperature = temperature2; + errorCount = 0; + }else if(temperature2 < 0){ + temperature = temperature1; + errorCount = 0; + }else{ + temperature = (temperature1 + temperature2) / 2; + errorCount = 0; + } + if(tempFlag != '?'){ + int diff = temperature1 - temperature2; + if(diff > 3 || diff < -3){ + tempFlag = '!'; + } + } + if(humidity1 < 0 && humidity2 < 0){ + humidity = -1; + }else if(humidity1 < 0){ + humidity = humidity2; + }else if(humidity2 < 0){ + humidity = humidity1; + }else{ + humidity = (humidity1 + humidity2) / 2; + } + + if(humFlag != '?'){ + int diff = humidity1 - humidity2; + if(diff > 10 || diff < -10){ + humFlag = '!'; + } + } } int main() { @@ -263,13 +289,29 @@ int main() { long lastEncoderValue = 0; char lastTarget = 0; unsigned long cycle = 0; - unsigned long tempReading=0; while (1) { - char line[16]; - getTempAndHum(); - tempReading++; - if(menuEnabled){ + if(timeToRead > 0){ + timeToRead = 0; + getTempAndHum(); + + if(temperature < 0){ + none(); + turnOffFans(); + }else if(targetTemperature > temperature){ + turnOnFans(); + heat(); + }/*else if(targetTemperature < temperature){ + turnOnFans(); + cool(); + }*/else{ + none(); + turnOffFans(); + } + } + + char line[16]; + if(menuEnabled){ cycle += 1; cycle = cycle%400000; if(cycle == 0){ @@ -301,11 +343,9 @@ int main() { temperatureMenu = false; } if(lastEncoderValue < encoderValue){ - led->turnOn(); cycle = 0; ++auxTargetTemperature; }else if(lastEncoderValue > encoderValue){ - led->turnOff(); cycle = 0; --auxTargetTemperature; } @@ -340,24 +380,8 @@ int main() { buzzer->beep(); _delay_ms(250); }else{ - led->toggle(); printVars(); } } - if(temperature < 0){ - none(); - turnOffFans(); - }else if(targetTemperature > temperature){ - turnOnFans(); - heat(); - }/*else if(targetTemperature < temperature){ - turnOnFans(); - cool(); - }*/else{ - none(); - turnOffFans(); - } } - - freeAll(); -} \ No newline at end of file +} diff --git a/src/brain/brain.fabduino.c.hex b/src/brain/brain.fabduino.c.hex deleted file mode 100644 index ab03ef4..0000000 --- a/src/brain/brain.fabduino.c.hex +++ /dev/null @@ -1,555 +0,0 @@ -:100000000C9434000C942F040C9453040C94510061 -:100010000C9451000C9451000C9451000C9451001C -:100020000C9451000C9451000C9451000C9451000C -:100030000C9451000C9451000C9451000C945100FC -:100040000C9451000C9451000C9451000C945100EC -:100050000C9451000C9451000C9451000C945100DC -:100060000C9451000C94510011241FBECFEFD8E026 -:10007000DEBFCDBF11E0A0E0B1E0E4E1F2E202C0FA -:1000800005900D92A237B107D9F711E0A2E7B1E0D0 -:1000900001C01D92A63AB107E1F70E9453090C94E2 -:1000A00008110C9400009093C5008093C40088E967 -:1000B0008093C10086E08093C20008959091C000B3 -:1000C00095FFFCCF8093C60008950F931F93CF93A5 -:1000D000DF93EC018C01005F1F4F89910E945E004D -:1000E000C017D107D1F7DF91CF911F910F910895DC -:1000F000CF93C82F8A3019F48DE00E945E008C2FB8 -:100100000E945E0080E090E0CF910895FC01608342 -:100110004683258308950F931F93CF93DF931F92F8 -:10012000CDB7DEB78C01FC018081880F69830E9406 -:100130003302F80187816981862B0E9464020F9047 -:10014000DF91CF911F910F910C945C02613071058A -:1001500021F428E0FC01278302C0FC01178260E043 -:100160000C948B00FC0192816130710511F09B7F32 -:1001700001C09460928360E0CF010C948B00FC017D -:1001800092816130710511F09D7F01C09260928370 -:1001900060E0CF010C948B00FC019281613071050D -:1001A00011F09E7F01C09160928360E0CF010C94BA -:1001B0008B000F931F93CF938C01C62F64600E9416 -:1001C0008B0085E08A95F1F700006C2F6B7FC801EA -:1001D0000E948B0087EC90E00197F1F700C00000CF -:1001E000CF911F910F9108951F93CF93DF93EC014F -:1001F000162F0E948B00612FCE01DF91CF911F91AE -:100200000C94D900FF920F931F93CF93DF931F920B -:10021000CDB7DEB78C01F62E962F907F692F642B19 -:10022000C80149830E94F40080E1F89EB0011124C6 -:100230004981642BC8010F90DF91CF911F910F91DD -:10024000FF900C94F40040E00C94020161E00E94E5 -:1002500023018FE39FE10197F1F700C000000895AB -:1002600062E00E9423018FE39FE10197F1F700C054 -:1002700000000895FC016281262F246022836C60B7 -:100280000C942301CF93DF93CDB7DEB728970FB639 -:10029000F894DEBF0FBECDBF9C0188E0EAE0F1E03C -:1002A000DE01119601900D928A95E1F7F9018481A2 -:1002B000861710F46FEF680FFE013196E60FF11DFF -:1002C000E60FF11D9081642F690F6068C9012896BF -:1002D0000FB6F894DEBF0FBECDBFDF91CF910C9467 -:1002E00023010F931F93CF93DF93EC018B011092A7 -:1002F000730180917301F801E80FF11D6081609333 -:100300007201662351F041E0CE010E9402019091FA -:1003100073019F5F90937301ECCFDF91CF911F9199 -:100320000F9108950F931F93CF93DF93EC018B01EF -:10033000642F40E00E944201B801CE01DF91CF91CD -:100340001F910F910C947101CF93DF93EC01423018 -:1003500018F08981886089834C83222329F04130F9 -:1003600019F48981846089832FEF80E792E021501E -:1003700080409040E1F700C000006F81CE010E94F4 -:100380008B002FEF83ED90E3215080409040E1F708 -:1003900000C0000060E3CE010E94F4008FE496E408 -:1003A0000197F1F700C0000060E3CE010E94F40065 -:1003B0008FE496E40197F1F700C0000060E3CE01FE -:1003C0000E94F40087E592E00197F1F700C0000079 -:1003D00060E2CE010E94F40069816062CE010E9459 -:1003E000230184E08A83CE010E943A01CE010E945B -:1003F000260182E08B8366E0CE010E942301CE01BC -:10040000DF91CF910C943001FC01118220E04681F4 -:1004100065810C94A4011092B90088E48093B8001F -:10042000089594EA9093BC009091BC0097FFFCCF94 -:100430009091B900987F983021F0903111F081E0CF -:1004400008958093BB0084E88093BC008091BC0039 -:1004500087FFFCCF8091B900887F883111F080340C -:1004600071F780E0089524EA34E844E92093BC0061 -:100470009091BC0097FFFCCF9091B900987F983085 -:1004800011F0903199F78093BB003093BC009091AC -:10049000BC0097FFFCCF9091B900987F903211F08B -:1004A000983539F44093BC009091BC0094FDFCCF8A -:1004B000DDCF08950C94110284E98093BC008091F3 -:1004C000BC0084FDFCCF08958093BB0084E880933A -:1004D000BC008091BC0087FFFCCF9091B900987F51 -:1004E00081E0983209F480E0089584EC8093BC00A8 -:1004F0008091BC0087FFFCCF8091BB00089584E809 -:100500008093BC008091BC0087FFFCCF8091BB0032 -:100510000895FC017183608353834283248308958B -:10052000DC011296ED91FC911397408121E030E0BF -:10053000C90114960C9002C0880F991F0A94E2F723 -:10054000842B80830895DC01ED91FC91119740810B -:1005500021E030E0C90114960C9002C0880F991F69 -:100560000A94E2F7842780830895CF93DF93EC0108 -:100570000E94A3022FEF80E792E02150804090403C -:10058000E1F700C00000CE01DF91CF910C94A302EF -:10059000DC01ED91FC911197408121E030E0C9012F -:1005A00014960C9002C0880F991F0A94E2F7842BCE -:1005B00080830895DC01ED91FC911197408121E049 -:1005C00030E0B90114960C9002C0660F771F0A94B0 -:1005D000E2F7CB018095842380830895FC01718329 -:1005E00060835383428324830895DC011296ED9146 -:1005F000FC911397408121E030E0C90114960C90E2 -:1006000002C0880F991F0A94E2F7842B8083089513 -:10061000DC01ED91FC911197408121E030E0C901AE -:1006200014960C9002C0880F991F0A94E2F7842751 -:1006300080830895CF93DF93EC010E9408032FEF8E -:1006400080E792E0215080409040E1F700C0000038 -:10065000CE01DF91CF910C940803FC01718360837C -:100660005383428324830895DC011296ED91FC911B -:100670001397408121E030E0C90114960C9002C02C -:10068000880F991F0A94E2F7842B80830895DC0178 -:10069000ED91FC911197408121E030E0C901149661 -:1006A0000C9002C0880F991F0A94E2F7842B808374 -:1006B0000895DC01ED91FC911197408121E030E03B -:1006C000B90114960C9002C0660F771F0A94E2F7E6 -:1006D000CB018095842380830895FC01718360831E -:1006E0005383428324830895DC011296ED91FC919B -:1006F0001397408121E030E0C90114960C9002C0AC -:10070000880F991F0A94E2F7842B80830895DC01F7 -:10071000ED91FC911197408121E030E0C9011496E0 -:100720000C9002C0880F991F0A94E2F7842B8083F3 -:100730000895DC01ED91FC911197408121E030E0BA -:10074000B90114960C9002C0660F771F0A94E2F765 -:10075000CB0180958423808308950F93FC017183DE -:100760006083338322835583448306830F910895E6 -:10077000FC01A081B1814C9121E030E0C9010680EB -:1007800002C0880F991F0A94E2F7842B8C93A481EE -:10079000B5818C91068002C0220F331F0A94E2F7C4 -:1007A000209528232C930895FC01A281B3819C916C -:1007B000892F90E0068002C0959587950A94E2F70C -:1007C0008170992721E082278170089559B149B13C -:1007D00052FB222720F930E0220F331F43FB8827EA -:1007E00080F990E0282B392B809176019091770148 -:1007F000880F991F880F991F822B932B8D3091059D -:1008000041F08430910529F08230910511F00B9769 -:1008100049F4809178019091790101969093790142 -:100820008093780130937701209376010895529850 -:100830005A9AE9E6F0E0808181608083E89A089521 -:1008400053985B9AE9E6F0E0808184608083E99ABE -:1008500008950E9417040E942004789408951F921E -:100860000F920FB60F9211242F933F934F935F93E4 -:100870006F937F938F939F93AF93BF93EF93FF9368 -:100880000E94E603FF91EF91BF91AF919F918F91ED -:100890007F916F915F914F913F912F910F900FBE7C -:1008A0000F901F9018951F920F920FB60F92112460 -:1008B0002F933F934F935F936F937F938F939F9368 -:1008C000AF93BF93EF93FF930E94E603FF91EF91E5 -:1008D000BF91AF919F918F917F916F915F914F9158 -:1008E0003F912F910F900FBE0F901F9018954F9230 -:1008F0005F926F927F928F929F92AF92BF92CF92B0 -:10090000DF92EF92FF920F931F93CF93DF9300D06C -:1009100000D01F92CDB7DEB75C01FA01AE014F5F88 -:100920005F4F2A0185E0DA011D928A95E9F7D80127 -:100930004C9181E090E00E2C02C0880F991F0A9420 -:10094000E2F7482B4C934081482B4083BFEF41EEA8 -:1009500054E0B15040405040E1F700C000005081E9 -:10096000F82EF0945F215083AFE5B9E01197F1F7CD -:1009700000C000005081582B5083D8014C914F216A -:100980004C93B5EDBA95F1F70000D9014C9150E0C8 -:100990000E2C02C0559547950A94E2F740FF02C01D -:1009A0008FEFA7C0AFE3B1E01197F1F700C00000EF -:1009B000D9014C9150E002C055954795EA94E2F771 -:1009C00040FFEECFAFE3B1E01197F1F700C00000B8 -:1009D00088248394912C45E0642E640C47E0E42E37 -:1009E000F12C712CA9ECCA2ED12CD9014C9150E0DC -:1009F00048235923452B29F4B1E0CB1AD108A9F794 -:100A0000CFCFB0EABA95F1F7D9014C9150E0482325 -:100A10005923452B39F0A4010E2C01C0440F0A9430 -:100A2000EAF7742A59ECC52ED12CD9014C9150E02B -:100A300048235923452B29F0B1E0CB1AD108A9F757 -:100A4000AFCFB1E0EB1AF10868F6D2017D922D012B -:100A50006A12C4CFD8019C91982B9C939081892BCA -:100A6000808339810A812B818C81902F930F920F83 -:100A7000980F4D81941394CF7B0110E0132B682FB6 -:100A800070E0722B77FF14C07F7780E090E00E94C7 -:100A9000E30B20E030E040E251E40E944A0BDC012D -:100AA000CB01B058F50180839183A283B38310C03A -:100AB00080E090E00E94E30B20E030E040E251E46F -:100AC0000E944A0BD5016D937D938D939C93139750 -:100AD000B80180E090E00E94E30B20E030E040E2CB -:100AE00051E40E944A0BF7016083718382839383F0 -:100AF00080E00F900F900F900F900F90DF91CF91AB -:100B00001F910F91FF90EF90DF90CF90BF90AF902B -:100B10009F908F907F906F905F904F900895EF928D -:100B20000F931F930E9477041F910F91EF900895E8 -:100B30000C94FC0C0C94910D8FEF87BD88BD08952B -:100B400018BC089517BC089517BC18BC08950F93DE -:100B5000CF93DF930E940B02559A569A1BB883EAF3 -:100B600084BD83E085BD16BC17BC18BC17BC18BC7F -:100B70000E94290485E090E00E949805EC0124E0A1 -:100B80004AE250E06BE270E00E948902D093890152 -:100B9000C0938801CE010E949002809188019091BB -:100BA00089010E94A30288E090E00E949805EC0170 -:100BB00022E040E167E20E948600D0938501C09365 -:100BC000840161E070E0CE010E94A6008091840162 -:100BD000909185010E94040285E090E00E949805B2 -:100BE000EC0120E04AE250E06BE270E00E94EE028D -:100BF000D0938701C0938601CE010E94F50287E061 -:100C000090E00E949805EC0101E029E230E04AE220 -:100C100050E06BE270E00E94AD03D0938301C0937B -:100C20008201CE010E94B80385E090E00E94980501 -:100C3000EC0126E04AE250E06BE270E00E942D03F6 -:100C4000D0938101C093800185E090E00E949805D7 -:100C5000EC0125E04AE250E06BE270E00E942D03D7 -:100C6000D0937F01C0937E0180918001909181019A -:100C70000E94340380917E0190917F010E94340391 -:100C80000E94A40585E090E00E949805EC0127E011 -:100C90004AE250E06BE270E00E946D03D0937D0168 -:100CA000C0937C0185E090E00E949805EC0120E073 -:100CB00044E250E065E270E00E946D03D0937B0156 -:100CC000C0937A0180917C0190917D010E94740310 -:100CD00080917A0190917B010E9474037894DF9156 -:100CE000CF910F91089580918801909189010E9480 -:100CF0009A0580918401909185010E949A058091C6 -:100D00008601909187010E949A05809182019091BD -:100D100083010C949A050F931F93CF93DF93CDB764 -:100D2000DEB760970FB6F894DEBF0FBECDBF8091DF -:100D300001011F929FED9F931F928F9360919C01E1 -:100D400070919D0180919E0190919F010E94B20B34 -:100D50007F936F93809103011F928F938AE391E0B9 -:100D60009F938F938E010F5F1F4F1F930F930E94CE -:100D7000300E40E0B80180918401909185010E947D -:100D80009201609198017091990180919A019091DE -:100D90009B010E94B20B7F936F93809102011F927F -:100DA0008F938FE491E09F938F931F930F930E94F3 -:100DB000300E41E0B80180918401909185010E943C -:100DC00092010FB6F894DEBF0FBECDBF60960FB68E -:100DD000F894DEBF0FBECDBFDF91CF911F910F9171 -:100DE00008950F931F93CF93DF93CDB7DEB760972E -:100DF0000FB6F894DEBF0FBECDBF809100018823EF -:100E000011F080E201C08EE31F928F9382E191E0A6 -:100E10009F938F938E010F5F1F4F1F930F930E941D -:100E2000300E40E0B80180918401909185010E94CC -:100E30009201809100010F900F900F900F900F90F2 -:100E40000F90813011F080E201C08EE31F928F93EA -:100E500086E291E09F938F931F930F930E94300E31 -:100E600041E0B80180918401909185010E94920136 -:100E70000F900F900F900F900F900F9060960FB6FD -:100E8000F894DEBF0FBECDBFDF91CF911F910F91C0 -:100E900008950F931F93CF93DF93CDB7DEB760977D -:100EA0000FB6F894DEBF0FBECDBF809195011F92A3 -:100EB0009FED9F931F928F9388E491E09F938F9370 -:100EC0008E010F5F1F4F1F930F930E94300E41E062 -:100ED000B80180918401909185010E9492010FB622 -:100EE000F894DEBF0FBECDBF60960FB6F894DEBF9C -:100EF0000FBECDBFDF91CF911F910F910895CF937A -:100F0000DF93CDB7DEB760970FB6F894DEBF0FBEA4 -:100F1000CDBF62E671E0CE0101960E94290E40E04D -:100F2000BE016F5F7F4F80918401909185010E9487 -:100F3000920180910101809395010E94490760967A -:100F40000FB6F894DEBF0FBECDBFDF91CF910895ED -:100F50001F93CF93DF931F92CDB7DEB7898319819B -:100F6000112379F01130C9F48091840190918501A9 -:100F70000E9426010E947F0710928D0110938C0120 -:100F80000CC080918401909185010E9426010E94ED -:100F90008B0610928D0110928C010F90DF91CF91F2 -:100FA0001F91089580917C0190917D010E94990389 -:100FB00080917A0190917B010C94870380917A0152 -:100FC00090917B010E94870380917C0190917D012B -:100FD0000C94990380917A0190917B010E9499036E -:100FE00080917C0190917D010C9499038F929F9246 -:100FF000AF92BF92CF92DF92EF92FF920F931F9327 -:10100000CF93DF93CDB7DEB760970FB6F894DEBF0E -:101010000FBECDBF80E28093020180930301E12CDB -:1010200007E210E026E230E048E250E0BE01675FF0 -:101030007F4FCE010D960E948F05882389F080E0B6 -:1010400090E0A0E8BFEB8D879E87AF87B88B89873C -:101050009A87AB87BC878FE380930301809302015B -:10106000EE24E39407E210E026E230E048E250E0AC -:10107000BE016F5F7F4FCE0105960E948F058823CA -:1010800089F080E090E0A0E8BFEB8D839E83AF8382 -:10109000B88789839A83AB83BC838FE380930301F2 -:1010A00080930201CD84DE84EF84F88820E030E074 -:1010B000A901C701B6010E94460B87FF24C020E0AA -:1010C00030E0A9016D817E818F8198850E94460B59 -:1010D00087FF2FC08091A0019091A101019690936C -:1010E000A1018093A0010B970CF448C080E090E030 -:1010F000A0E8BFEB80939C0190939D01A0939E017B -:10110000B0939F013BC08D809E80AF80B88420E06B -:1011100030E0A901C501B4010E94460B87FF16C04B -:10112000C0929C01D0929D01E0929E01F0929F019D -:1011300021C08D819E81AF81B88580939C01909361 -:101140009D01A0939E01B0939F0114C0A50194013D -:10115000C701B6010E94E20A20E030E040E05FE310 -:101160000E94990C60939C0170939D0180939E0155 -:1011700090939F011092A1011092A0018091030110 -:101180008F33A1F02D813E814F8158856D857E85FD -:101190008F8598890E94E10A0E94B20B6D5F7F4F94 -:1011A0006730710518F081E280930301C984DA8405 -:1011B000EB84FC8420E030E0A901C701B6010E9465 -:1011C000460B87FF10C020E030E0A90169817A81D9 -:1011D0008B819C810E94460B87FF1BC080E090E0C2 -:1011E000A0E8BFEB1AC089809A80AB80BC8020E069 -:1011F00030E0A901C501B4010E94460B87FF16C06B -:10120000C0929801D0929901E0929A01F0929B01CC -:1012100021C089819A81AB81BC8180939801909390 -:101220009901A0939A01B0939B0114C0A501940168 -:10123000C701B6010E94E20A20E030E040E05FE32F -:101240000E94990C609398017093990180939A0180 -:1012500090939B01809102018F3391F029813A8113 -:101260004B815C81C701B6010E94E10A0E94B20B6A -:10127000665F7F4F6531710518F081E2809302014E -:1012800060960FB6F894DEBF0FBECDBFDF91CF9151 -:101290001F910F91FF90EF90DF90CF90BF90AF9094 -:1012A0009F908F9008950E94A705812C912C540146 -:1012B000412C512C3201C1E0D8E20E94F607809106 -:1012C0008D01882309F466C0C501B4016F5F7F4FAB -:1012D0008F4F9F4F20E83AE146E050E00E94BF0A5E -:1012E0004B015C01672B682B692B21F410928D0157 -:1012F00010928C018091780190917901AA2797FD35 -:10130000A095BA2F481659066A067B0624F48091E8 -:1013100000018F5F10C08091780190917901AA2718 -:1013200097FDA095BA2F84159505A605B70544F439 -:1013300080910001815080930001812C912C5401F7 -:10134000C0907801D0907901EE24D7FCE094FE2C77 -:101350004C145D046E047F0479F08091000181706B -:10136000809300010E94F106C0907801D09079012D -:10137000EE24D7FCE094FE2C8091820190918301B1 -:101380000E94D403882309F4D0C0809100010E94F8 -:10139000A807BAC080918C01882309F497C0C501C1 -:1013A000B4016F5F7F4F8F4F9F4F20E83AE146E0D7 -:1013B00050E00E94BF0A4B015C01672B682B692B30 -:1013C00021F410928D0110928C01809178019091FE -:1013D0007901AA2797FDA095BA2F481659066A06E3 -:1013E0007B0654F480918801909189010E94C80283 -:1013F000809195018F5F16C080917801909179015D -:10140000AA2797FDA095BA2F84159505A605B705BF -:1014100074F480918801909189010E94DA02809190 -:101420009501815080939501812C912C54018091DC -:1014300095018F3F19F4D093950106C080919501D5 -:10144000893210F010929501C0907801D090790106 -:10145000EE24D7FCE094FE2C4C145D046E047F0453 -:1014600051F00E944907C0907801D0907901EE2494 -:10147000D7FCE094FE2C80918201909183010E9420 -:10148000D403882309F451C080918601909187018B -:101490000E941A038091950180930101C0939401E9 -:1014A00080918401909185010E9426010E948B0603 -:1014B00010928D0110928C012FEF84E39CE021505B -:1014C00080409040E1F700C000002FC08091820171 -:1014D000909183010E94D4038823E9F010920001C7 -:1014E00080918401909185010E9426010E94F1065D -:1014F000C0938D0110928C01C0907801D090790139 -:10150000EE24D7FCE094FE2C809186019091870117 -:101510000E941A03D1CF80918801909189010E9485 -:10152000A3020E948B067301620140909C015090BF -:101530009D0160909E0170909F0120E030E0A90124 -:10154000C301B2010E94460B87FF07C00E94EA0751 -:101550000E94A40526013701B0CE6091010170E020 -:1015600080E090E00E94E50BA30192010E94950C9F -:10157000181664F70E949C050E94D207EBCFA1E2E7 -:101580001A2EAA1BBB1BFD010DC0AA1FBB1FEE1FFD -:10159000FF1FA217B307E407F50720F0A21BB30B48 -:1015A000E40BF50B661F771F881F991F1A9469F7C4 -:1015B00060957095809590959B01AC01BD01CF0120 -:1015C00008955058BB27AA270ED075C166D130F0B8 -:1015D0006BD120F031F49F3F11F41EF45BC10EF487 -:1015E000E095E7FB51C1E92F77D180F3BA17620785 -:1015F00073078407950718F071F49EF58FC10EF4F8 -:10160000E0950B2EBA2FA02D0B01B90190010C0112 -:10161000CA01A0011124FF27591B99F0593F50F42A -:10162000503E68F11A16F040A22F232F342F442782 -:10163000585FF3CF469537952795A795F04053957A -:10164000C9F77EF41F16BA0B620B730B840BBAF04A -:101650009150A1F0FF0FBB1F661F771F881FC2F7B5 -:101660000EC0BA0F621F731F841F48F487957795C9 -:101670006795B795F7959E3F08F0B3CF9395880F80 -:1016800008F09927EE0F979587950895D9D008F41B -:1016900081E008950CD00FC107D140F0FED030F0AA -:1016A00021F45F3F19F0F0C0511139C1F3C014D1DA -:1016B00098F39923C9F35523B1F3951B550BBB2719 -:1016C000AA2762177307840738F09F5F5F4F220FC6 -:1016D000331F441FAA1FA9F333D00E2E3AF0E0E8BF -:1016E00030D091505040E695001CCAF729D0FE2F0B -:1016F00027D0660F771F881FBB1F2617370748079D -:10170000AB07B0E809F0BB0B802DBF01FF27935852 -:101710005F4F2AF09E3F510568F0B6C000C15F3FA1 -:10172000ECF3983EDCF3869577956795B795F7953A -:101730009F5FC9F7880F911D9695879597F9089532 -:10174000E1E0660F771F881FBB1F621773078407CE -:10175000BA0720F0621B730B840BBA0BEE1F88F7DD -:10176000E095089504D06894B111D9C00895BCD013 -:1017700088F09F5790F0B92F9927B751A0F0D1F07A -:10178000660F771F881F991F1AF0BA95C9F712C004 -:10179000B13081F0C3D0B1E00895C0C0672F782F79 -:1017A0008827B85F39F0B93FCCF386957795679570 -:1017B000B395D9F73EF490958095709561957F4FDC -:1017C0008F4F9F4F0895E89409C097FB3EF4909582 -:1017D0008095709561957F4F8F4F9F4F9923A9F00A -:1017E000F92F96E9BB279395F69587957795679599 -:1017F000B795F111F8CFFAF4BB0F11F460FF1BC0DD -:101800006F5F7F4F8F4F9F4F16C0882311F096E96F -:1018100011C0772321F09EE8872F762F05C066231D -:1018200071F096E8862F70E060E02AF09A95660FD6 -:10183000771F881FDAF7880F9695879597F908958F -:10184000990F0008550FAA0BE0E8FEEF16161706D1 -:10185000E807F907C0F012161306E407F50798F039 -:10186000621B730B840B950B39F40A2661F0232B52 -:10187000242B252B21F408950A2609F4A140A695CE -:101880008FEF811D811D089597F99F6780E870E0B3 -:1018900060E008959FEF80EC089500240A941616E6 -:1018A000170618060906089500240A94121613064E -:1018B000140605060895092E0394000C11F48823DC -:1018C00052F0BB0F40F4BF2B11F460FF04C06F5FF8 -:1018D0007F4F8F4F9F4F089557FD9058440F551FCE -:1018E00059F05F3F71F04795880F97FB991F61F0A2 -:1018F0009F3F79F087950895121613061406551F19 -:10190000F2CF4695F1DF08C0161617061806991F84 -:10191000F1CF86957105610508940895E894BB2779 -:1019200066277727CB0197F908958ADF08F48FEFB0 -:1019300008950BD0C0CFB1DF28F0B6DF18F09523A3 -:1019400009F0A2CFA7CF1124EACFC6DFA0F3959F5D -:10195000D1F3950F50E0551F629FF001729FBB2796 -:10196000F00DB11D639FAA27F00DB11DAA1F649F42 -:101970006627B00DA11D661F829F2227B00DA11DF5 -:10198000621F739FB00DA11D621F839FA00D611D7B -:10199000221F749F3327A00D611D231F849F600D9C -:1019A000211D822F762F6A2F11249F5750408AF0D5 -:1019B000E1F088234AF0EE0FFF1FBB1F661F771F61 -:1019C000881F91505040A9F79E3F510570F05CCFA1 -:1019D000A6CF5F3FECF3983EDCF38695779567954D -:1019E000B795F795E7959F5FC1F7FE2B880F911D7F -:1019F0009695879597F90895CF93DF938230910557 -:101A000010F482E090E0E091A401F091A50120E0C3 -:101A100030E0C0E0D0E0309711F1408151814817AB -:101A20005907C0F04817590761F4828193812097C4 -:101A300019F09B838A832BC09093A5018093A40106 -:101A400026C02115310519F04217530718F49A01E1 -:101A5000BE01DF01EF010280F381E02DDCCF211513 -:101A6000310509F1281B390B2430310590F4129609 -:101A70008D919C9113976115710521F0FB01938362 -:101A8000828304C09093A5018093A401FD01329646 -:101A900044C0FD01E20FF31F81939193225031095D -:101AA0002D933C933AC02091A2013091A301232BA6 -:101AB00041F420910601309107013093A301209356 -:101AC000A20120910401309105012115310541F455 -:101AD0002DB73EB74091080150910901241B350BE9 -:101AE000E091A201F091A301E217F307A0F42E1BED -:101AF0003F0B2817390778F0AC014E5F5F4F241772 -:101B0000350748F04E0F5F1F5093A3014093A20189 -:101B10008193919302C0E0E0F0E0CF01DF91CF919B -:101B200008950F931F93CF93DF93009709F48CC010 -:101B3000FC013297138212820091A4011091A50139 -:101B40000115110581F420813181820F931F2091AD -:101B5000A2013091A3012817390779F5F093A30169 -:101B6000E093A20171C0D80140E050E0AE17BF077A -:101B700050F412962D913C911397AD01211531052A -:101B800009F1D901F3CF9D01DA013383228360810A -:101B90007181860F971F8217930769F4EC012881E2 -:101BA0003981260F371F2E5F3F4F318320838A8173 -:101BB0009B8193838283452B29F4F093A501E093C5 -:101BC000A40142C01396FC93EE931297ED01499144 -:101BD00059919E01240F351FE217F30771F480819C -:101BE0009181840F951F029611969C938E9382810A -:101BF000938113969C938E931297E0E0F0E0D801C6 -:101C000012968D919C911397009719F0F8018C0111 -:101C1000F6CF8D919C9198012E5F3F4F820F931FBD -:101C20002091A2013091A3012817390769F4309758 -:101C300029F41092A5011092A40102C0138212820D -:101C40001093A3010093A201DF91CF911F910F91F7 -:101C50000895FB01DC0101900D920020E1F7089549 -:101C6000AEE0B0E0E6E3FEE00C94DF100D891E89E3 -:101C700086E08C831A8309838FEF9FE79E838D8391 -:101C8000AE01475E5F4F6F89788DCE0101960E944D -:101C9000530E2F813885F801E20FF31F10822E9624 -:101CA000E4E00C94FB10ACE0B0E0E9E5FEE00C945D -:101CB000D1107C016B018A01FC011782168283819D -:101CC00081FFBDC1CE0101964C01F7019381F60160 -:101CD00093FD859193FF81916F01882309F4ABC136 -:101CE000853239F493FD859193FF81916F0185329F -:101CF00029F4B70190E00E943B10E7CF512C312C22 -:101D000020E02032A0F48B3269F030F4803259F0B8 -:101D1000833269F420612CC08D3239F0803339F47C -:101D2000216026C02260246023C0286021C027FDD6 -:101D300027C030ED380F3A3078F426FF06C0FAE0BD -:101D40005F9E300D1124532E13C08AE0389E300D53 -:101D50001124332E20620CC08E3221F426FD6BC17B -:101D6000206406C08C3611F4206802C0883641F425 -:101D7000F60193FD859193FF81916F018111C1CF90 -:101D8000982F9F7D9554933028F40C5F1F4FFFE3ED -:101D9000F9830DC0833631F0833771F0833509F054 -:101DA0005BC022C0F801808189830E5F1F4F4424ED -:101DB0004394512C540115C03801F2E06F0E711C90 -:101DC000F801A080B18026FF03C0652D70E002C03D -:101DD0006FEF7FEFC5012C870E9430102C0183012B -:101DE0002C852F77222E17C03801F2E06F0E711C60 -:101DF000F801A080B18026FF03C0652D70E002C00D -:101E00006FEF7FEFC5012C870E9425102C012C85D8 -:101E10002068222E830123FC1BC0832D90E04816EE -:101E20005906B0F4B70180E290E00E943B103A946A -:101E3000F4CFF50127FC859127FE81915F01B70161 -:101E400090E00E943B1031103A94F1E04F1A510893 -:101E50004114510471F7E5C0843611F0893639F523 -:101E6000F80127FF07C060817181828193810C5F37 -:101E70001F4F08C060817181882777FD8095982F5A -:101E80000E5F1F4F2F76722E97FF09C09095809599 -:101E9000709561957F4F8F4F9F4F2068722E2AE07B -:101EA00030E0A4010E947310A82EA81844C0853702 -:101EB00029F42F7EB22E2AE030E025C0F22FF97FE0 -:101EC000BF2E8F36C1F018F4883579F0B4C0803752 -:101ED00019F0883721F0AFC02F2F2061B22EB4FE49 -:101EE0000DC08B2D8460B82E09C024FF0AC09F2F1F -:101EF0009660B92E06C028E030E005C020E130E051 -:101F000002C020E132E0F801B7FE07C060817181B4 -:101F1000828193810C5F1F4F06C06081718180E0D8 -:101F200090E00E5F1F4FA4010E947310A82EA81806 -:101F3000FB2DFF777F2E76FE0BC0372D3E7FA5143D -:101F400050F474FE0AC072FC08C0372D3E7E05C0F6 -:101F5000BA2C372D03C0BA2C01C0B52C34FF0DC0EC -:101F6000FE01EA0DF11D8081803311F4397E09C034 -:101F700032FF06C0B394B39404C0832F867809F06F -:101F8000B39433FD13C030FF06C05A2CB31418F4B9 -:101F9000530C5B18B32CB31468F4B70180E290E0E3 -:101FA0003C870E943B10B3943C85F5CFB31410F4EA -:101FB0003B1801C0312C34FF12C0B70180E390E020 -:101FC0003C870E943B103C8532FF17C031FD03C0A7 -:101FD00088E790E002C088E590E0B7010CC0832F4D -:101FE000867859F031FF02C08BE201C080E237FDF4 -:101FF0008DE2B70190E00E943B10A51438F4B701C0 -:1020000080E390E00E943B105A94F7CFAA94F40129 -:10201000EA0DF11D8081B70190E00E943B10A110F4 -:10202000F5CF332009F451CEB70180E290E00E9451 -:102030003B103A94F6CFF7018681978102C08FEF6B -:102040009FEF2C96E2E10C94ED10FC01059061509D -:1020500070400110D8F7809590958E0F9F1F0895BE -:10206000FC016150704001900110D8F78095909567 -:102070008E0F9F1F08950F931F93CF93DF93FB0144 -:10208000238121FD03C08FEF9FEF28C022FF16C0E0 -:1020900046815781248135814217530744F4A0813A -:1020A000B1819D012F5F3F4F318320838C93268127 -:1020B00037812F5F3F4F3783268310C0EB01092FF5 -:1020C000182F0084F185E02D0995892BE1F68E818A -:1020D0009F8101969F838E83812F902FDF91CF91D7 -:1020E0001F910F910895FA01AA27283051F120314C -:1020F00081F1E8946F936E7F6E5F7F4F8F4F9F4F9C -:10210000AF4FB1E03ED0B4E03CD0670F781F891FDD -:102110009A1FA11D680F791F8A1F911DA11D6A0FAB -:10212000711D811D911DA11D20D009F468943F915E -:102130002AE0269F11243019305D3193DEF6CF015D -:102140000895462F4770405D4193B3E00FD0C9F723 -:10215000F6CF462F4F70405D4A3318F0495D31FD90 -:102160004052419302D0A9F7EACFB4E0A6959795E3 -:10217000879577956795BA95C9F7009761057105B9 -:1021800008959B01AC010A2E069457954795379503 -:102190002795BA95C9F7620F731F841F951FA01D5D -:1021A00008952F923F924F925F926F927F928F92FB -:1021B0009F92AF92BF92CF92DF92EF92FF920F93D6 -:1021C0001F93CF93DF93CDB7DEB7CA1BDB0B0FB6E0 -:1021D000F894DEBF0FBECDBF09942A88398848889D -:1021E0005F846E847D848C849B84AA84B984C88433 -:1021F000DF80EE80FD800C811B81AA81B981CE0F2A -:10220000D11D0FB6F894DEBF0FBECDBFED0108950E -:04221000F894FFCF70 -:10221400012420200000A60120000000400014003A -:1022240054002563203C3C4261636B3E3E00000049 -:102234000000000000002563204368616E6765208C -:1022440074656D70000000000000256354656D70B6 -:102254002E3A20202532692F253269256343002533 -:102264006348756D69646974793A2020253369255A -:102274002500536574206E65772076616C75653A28 -:02228400000058 -:00000001FF diff --git a/src/lib/ext/dht22/dht22.c b/src/lib/ext/dht22/dht22.c new file mode 100644 index 0000000..3edfc6b --- /dev/null +++ b/src/lib/ext/dht22/dht22.c @@ -0,0 +1,104 @@ +/* +DHT Library 0x03 + +copyright (c) Davide Gironi, 2012 + +Released under GPLv3. +Please refer to LICENSE file for licensing information. +*/ + + +#include +#include +#include +#include + +#include "dht22.h" + +/* + * get data from sensor + */ +int8_t dht_getdata(float *temperature, float *humidity, volatile uint8_t *port, volatile uint8_t *pin, volatile uint8_t *dir, uint8_t mask) { + uint8_t bits[5]; + uint8_t i,j = 0; + + memset(bits, 0, sizeof(bits)); + + //reset port + *dir |= (1< DHT_TIMEOUT) { + return -1; //timeout + } + } + _delay_us(30); + if(*pin & (1< DHT_TIMEOUT) { + return -1; //timeout + } + } + } + bits[j] = result; + } + + //reset port + *dir |= (1< +#include + +//timeout retries +#define DHT_TIMEOUT 200 + +//functions +extern int8_t dht_gettemperaturehumidity(float *temperature, float *humidity, volatile uint8_t *port, volatile uint8_t *pin, volatile uint8_t *dir, uint8_t mask); + +#endif diff --git a/src/lib/ext/i2chw/i2cmaster.h b/src/lib/ext/i2chw/i2cmaster.h new file mode 100755 index 0000000..70f51fd --- /dev/null +++ b/src/lib/ext/i2chw/i2cmaster.h @@ -0,0 +1,178 @@ +#ifndef _I2CMASTER_H +#define _I2CMASTER_H 1 +/************************************************************************* +* Title: C include file for the I2C master interface +* (i2cmaster.S or twimaster.c) +* Author: Peter Fleury http://jump.to/fleury +* File: $Id: i2cmaster.h,v 1.10 2005/03/06 22:39:57 Peter Exp $ +* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3 +* Target: any AVR device +* Usage: see Doxygen manual +**************************************************************************/ + +#ifdef DOXYGEN +/** + @defgroup pfleury_ic2master I2C Master library + @code #include @endcode + + @brief I2C (TWI) Master Software Library + + Basic routines for communicating with I2C slave devices. This single master + implementation is limited to one bus master on the I2C bus. + + This I2c library is implemented as a compact assembler software implementation of the I2C protocol + which runs on any AVR (i2cmaster.S) and as a TWI hardware interface for all AVR with built-in TWI hardware (twimaster.c). + Since the API for these two implementations is exactly the same, an application can be linked either against the + software I2C implementation or the hardware I2C implementation. + + Use 4.7k pull-up resistor on the SDA and SCL pin. + + Adapt the SCL and SDA port and pin definitions and eventually the delay routine in the module + i2cmaster.S to your target when using the software I2C implementation ! + + Adjust the CPU clock frequence F_CPU in twimaster.c or in the Makfile when using the TWI hardware implementaion. + + @note + The module i2cmaster.S is based on the Atmel Application Note AVR300, corrected and adapted + to GNU assembler and AVR-GCC C call interface. + Replaced the incorrect quarter period delays found in AVR300 with + half period delays. + + @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury + + @par API Usage Example + The following code shows typical usage of this library, see example test_i2cmaster.c + + @code + + #include + + + #define Dev24C02 0xA2 // device address of EEPROM 24C02, see datasheet + + int main(void) + { + unsigned char ret; + + i2c_init(); // initialize I2C library + + // write 0x75 to EEPROM address 5 (Byte Write) + i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode + i2c_write(0x05); // write address = 5 + i2c_write(0x75); // write value 0x75 to EEPROM + i2c_stop(); // set stop conditon = release bus + + + // read previously written value back from EEPROM address 5 + i2c_start_wait(Dev24C02+I2C_WRITE); // set device address and write mode + + i2c_write(0x05); // write address = 5 + i2c_rep_start(Dev24C02+I2C_READ); // set device address and read mode + + ret = i2c_readNak(); // read one byte from EEPROM + i2c_stop(); + + for(;;); + } + @endcode + +*/ +#endif /* DOXYGEN */ + +/**@{*/ + +#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304 +#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !" +#endif + +#include + +/** defines the data direction (reading from I2C device) in i2c_start(),i2c_rep_start() */ +#define I2C_READ 1 + +/** defines the data direction (writing to I2C device) in i2c_start(),i2c_rep_start() */ +#define I2C_WRITE 0 + + +/** + @brief initialize the I2C master interace. Need to be called only once + @param void + @return none + */ +extern void i2c_init(void); + + +/** + @brief Terminates the data transfer and releases the I2C bus + @param void + @return none + */ +extern void i2c_stop(void); + + +/** + @brief Issues a start condition and sends address and transfer direction + + @param addr address and transfer direction of I2C device + @retval 0 device accessible + @retval 1 failed to access device + */ +extern unsigned char i2c_start(unsigned char addr); + + +/** + @brief Issues a repeated start condition and sends address and transfer direction + + @param addr address and transfer direction of I2C device + @retval 0 device accessible + @retval 1 failed to access device + */ +extern unsigned char i2c_rep_start(unsigned char addr); + + +/** + @brief Issues a start condition and sends address and transfer direction + + If device is busy, use ack polling to wait until device ready + @param addr address and transfer direction of I2C device + @return none + */ +extern void i2c_start_wait(unsigned char addr); + + +/** + @brief Send one byte to I2C device + @param data byte to be transfered + @retval 0 write successful + @retval 1 write failed + */ +extern unsigned char i2c_write(unsigned char data); + + +/** + @brief read one byte from the I2C device, request more data from device + @return byte read from I2C device + */ +extern unsigned char i2c_readAck(void); + +/** + @brief read one byte from the I2C device, read is followed by a stop condition + @return byte read from I2C device + */ +extern unsigned char i2c_readNak(void); + +/** + @brief read one byte from the I2C device + + Implemented as a macro, which calls either i2c_readAck or i2c_readNak + + @param ack 1 send ack, request more data from device
+ 0 send nak, read is followed by a stop condition + @return byte read from I2C device + */ +extern unsigned char i2c_read(unsigned char ack); +#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak(); + + +/**@}*/ +#endif diff --git a/src/lib/ext/i2chw/twimaster.c b/src/lib/ext/i2chw/twimaster.c new file mode 100755 index 0000000..9d5a9ff --- /dev/null +++ b/src/lib/ext/i2chw/twimaster.c @@ -0,0 +1,201 @@ +/************************************************************************* +* Title: I2C master library using hardware TWI interface +* Author: Peter Fleury http://jump.to/fleury +* File: $Id: twimaster.c,v 1.3 2005/07/02 11:14:21 Peter Exp $ +* Software: AVR-GCC 3.4.3 / avr-libc 1.2.3 +* Target: any AVR device with hardware TWI +* Usage: API compatible with I2C Software Library i2cmaster.h +**************************************************************************/ +#include +#include + +#include "i2cmaster.h" + + +/* define CPU frequency in Mhz here if not defined in Makefile */ + +#define F_CPU 16000000L + +/* I2C clock in Hz */ +#define SCL_CLOCK 100000L // 100khz + + +/************************************************************************* + Initialization of the I2C bus interface. Need to be called only once +*************************************************************************/ +void i2c_init(void) +{ + /* initialize TWI clock: 100 kHz clock, TWPS = 0 => prescaler = 1 */ + + TWSR = 0; /* no prescaler */ + TWBR = ((F_CPU/SCL_CLOCK)-16)/2; /* must be > 10 for stable operation */ + +}/* i2c_init */ + + +/************************************************************************* + Issues a start condition and sends address and transfer direction. + return 0 = device accessible, 1= failed to access device +*************************************************************************/ +unsigned char i2c_start(unsigned char address) +{ + uint8_t twst; + + // send START condition + TWCR = (1< -#include -#include -#include -#include - -#include "../lib/output/fan.h" -#include "../lib/output/relay.h" -#include "../lib/operators/new.h" - -#include "../lib/output/led.h" - -#define output(directions,pin) (directions |= pin) // set port direction for output -#define input(directions,pin) (directions &= (~pin)) // set port direction for input -#define set(port,pin) (port |= pin) // set port pin -#define clear(port,pin) (port &= (~pin)) // clear port pin -#define pin_test(pins,pin) (pins & pin) // test for port pin -#define bit_test(byte,bit) (byte & (1 << bit)) // test for bit set - -#define TWI_FREQ 100000L -#define CPU_FREQ 16000000L - -#define DHT_DIR DDRD -#define DHT_PORT PORTD -#define DHT_SENS PD3 // PD4 -#define DHT_PIN PIND - -#define PUMP PD0 -#define PUMP_DIRECTION DDRD -#define PUMP_PORT PORTD - -#define LED_DIRECTION DDRB -#define LED_PORT PORTB -#define LED_PIN (1 << PB5) - -#define DHT_TIMEOUT 200 - -unsigned char my_addr = 0x28; -unsigned char regaddr, regdata; - -Fan* fan1; -Fan* fan2; -Relay* relay1; -Relay* relay2; -Led* led; - -volatile int8_t temperature, humidity, targetTemp; - -void i2c_init_slave(){ - TWAR = my_addr; - TWDR = 0x00; - // SCL freq = F_CPU/(16+2(TWBR)*prescalerValue) - TWBR = 72; - //TWBR = 72; // Bit rate - TWSR = (0 << TWPS1) | (0 << TWPS0); // Setting prescalar bits - TWCR = (1< DHT_TIMEOUT) { - return -1; - } - } - _delay_us(30); - if(*pin & (1< DHT_TIMEOUT) { - return -1; - } - } - } - bits[j] = result; - } - - if ((uint8_t)(bits[0] + bits[1] + bits[2] + bits[3]) == bits[4]) { - *temperature = bits[2]; - *humidity = bits[0]; - return 0; - } - - return -1; -} - -ISR(TWI_vect){ - static unsigned char state = 0, lastVal = 0; - // Disable Global Interrupt - cli(); - switch(TW_STATUS){ - case TW_START: // 0x08 - case TW_REP_START: // 0x10 - case TW_MT_SLA_ACK: // 0x18 - case TW_MT_SLA_NACK: // 0x20 - case TW_MT_DATA_ACK: // 0x28 - case TW_MT_DATA_NACK: // 0x30 - case TW_MR_SLA_ACK: // 0x40 - case TW_MR_SLA_NACK: // 0x48 - case TW_MR_DATA_ACK: // 0x50 - case TW_MR_DATA_NACK: // 0x58 - case TW_ST_ARB_LOST_SLA_ACK: // 0xB0 - case TW_SR_ARB_LOST_SLA_ACK: // 0x68 - case TW_SR_GCALL_ACK: //0x70 - case TW_SR_ARB_LOST_GCALL_ACK: // 0x78 - case TW_SR_GCALL_DATA_ACK: // 0x90 - case TW_SR_GCALL_DATA_NACK: // 0x98 - case TW_NO_INFO: // 0xF8 - TWCR |= (1<init(); - fan2->init(); - relay1->init(); - relay2->init(); - led->init(); -} - -void heat(){ - relay1->open(); - relay2->close(); -} - -void cool(){ - relay2->open(); - relay1->close(); -} - -int main() { - int8_t temperature1, humidity1; - int8_t temperature2, humidity2; - - init(); - - i2c_init_slave(); - sei(); - - DDRD |= (1 << PD5); - DDRD |= (1 << PD6); - - PORTD = 0x00; - // Initial TIMER0 Fast PWM - // Fast PWM Frequency = fclk / (N * 256), Where N is the Prescaler - // f_PWM = 11059200 / (64 * 256) = 675 Hz - TCCR0A = 0b10100011; // Fast PWM 8 Bit, Clear OCA0/OCB0 on Compare Match, Set on TOP - TCCR0B = 0b00000011; // Used 64 Prescaler - TCNT0 = 0; // Reset TCNT0 - OCR0A = 0; // Initial the Output Compare register A & B - OCR0B = 0; - OCR0A=0; // Initial Duty Cycle for Channel A - OCR0B=0; // Initial Duty Cycle for Channel B - - int i = 0; - while (1){ - if(dht_gettemperaturehumidity(&temperature1, &humidity1, &PORTD, &PIND, &DDRD, PD3) != 0){ - temperature1 = -1; - humidity1 = -1; - } - if(dht_gettemperaturehumidity(&temperature2, &humidity2, &PORTD, &PIND, &DDRD, PD4) != 0){ - temperature2 = -1; - humidity2 = -1; - } - if(temperature1 == -1 && temperature2 == -1){ - temperature = -1; - }else if(temperature1 == -1){ - temperature = temperature2; - }else if(temperature2 == -1){ - temperature = temperature1; - }else{ - temperature = (temperature1 + temperature2) / 2; - } - if(humidity1 == -1 && humidity2 == -1){ - humidity = -1; - }else if(humidity1 == -1){ - humidity = humidity2; - }else if(humidity2 == -1){ - humidity = humidity1; - }else{ - humidity = (humidity1 + humidity2) / 2; - } - - if(targetTemp > temperature){ - turnOnFans(); - heat(); - }else if(targetTemp < temperature){ - turnOnFans(); - cool(); - }else{ - turnOffFanB(); - } - } -} \ No newline at end of file diff --git a/src/temperature/temperature.fabduino.c.make b/src/temperature/temperature.fabduino.c.make deleted file mode 100755 index 0e27a22..0000000 --- a/src/temperature/temperature.fabduino.c.make +++ /dev/null @@ -1,38 +0,0 @@ -PROJECT=temperature.fabduino -SOURCES=../lib/operators/new.c ../lib/output/fan.cpp ../lib/output/relay.cpp ../lib/output/led.cpp $(PROJECT).c -MMCU=atmega168 -F_CPU = 16000000 - -CFLAGS=-mmcu=$(MMCU) -Wall -Os -DF_CPU=$(F_CPU) - -$(PROJECT).hex: $(PROJECT).out - avr-objcopy -O ihex $(PROJECT).out $(PROJECT).c.hex;\ - avr-size --mcu=$(MMCU) --format=avr $(PROJECT).out - -$(PROJECT).out: $(SOURCES) - avr-g++ $(CFLAGS) -I./ -o $(PROJECT).out $(SOURCES) - -program-bsd: $(PROJECT).hex - avrdude -p $(MMCU) -c bsd -U flash:w:$(PROJECT).c.hex - -program-dasa: $(PROJECT).hex - avrdude -p $(MMCU) -P /dev/ttyUSB0 -c dasa -U flash:w:$(PROJECT).c.hex - -program-avrisp2: $(PROJECT).hex - avrdude -p $(MMCU) -P usb -c avrisp2 -U flash:w:$(PROJECT).c.hex - -program-avrisp2-fuses: $(PROJECT).hex - avrdude -p $(MMCU) -P usb -c avrisp2 -U lfuse:w:0x56:m - avrdude -p $(MMCU) -P usb -c avrisp2 -U hfuse:w:0xD9:m - avrdude -p $(MMCU) -P usb -c avrisp2 -U efuse:w:0x07:m - -program-usbtiny: $(PROJECT).hex - avrdude -p $(MMCU) -P usb -c usbtiny -U flash:w:$(PROJECT).c.hex - -program-usbtiny-fuses: $(PROJECT).hex - avrdude -p $(MMCU) -P usb -c usbtiny -U lfuse:w:0xD6:m - avrdude -p $(MMCU) -P usb -c usbtiny -U hfuse:w:0xD9:m - avrdude -p $(MMCU) -P usb -c usbtiny -U efuse:w:0x07:m - -program-dragon: $(PROJECT).hex - avrdude -p $(MMCU) -P usb -c dragon_isp -U flash:w:$(PROJECT).c.hex From cc56a91aaabe5d3e32fc31683998daaeee043020 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Escario=20M=C3=A9ndez?= Date: Sat, 15 Jul 2017 18:21:28 +0200 Subject: [PATCH 2/2] Circuit error fix & improved temperature selector --- circuits/In3Brain/in3brain.brd | 40 ++++--- circuits/In3Temperature/in3temperature.brd | 120 ++++++++++----------- src/brain/brain.fabduino.c | 41 ++++--- src/brain/brain.fabduino.c.make | 2 +- src/lib/input/analogSwitch.cpp | 22 ++++ src/lib/input/analogSwitch.h | 18 ++++ 6 files changed, 146 insertions(+), 97 deletions(-) create mode 100644 src/lib/input/analogSwitch.cpp create mode 100644 src/lib/input/analogSwitch.h diff --git a/circuits/In3Brain/in3brain.brd b/circuits/In3Brain/in3brain.brd index 7132e24..31c9344 100644 --- a/circuits/In3Brain/in3brain.brd +++ b/circuits/In3Brain/in3brain.brd @@ -1,6 +1,6 @@ - + @@ -9,7 +9,7 @@ - + @@ -22,7 +22,7 @@ - + @@ -1738,10 +1738,9 @@ design rules under a new name. + - - @@ -1817,12 +1816,11 @@ design rules under a new name. - - + @@ -1837,7 +1835,7 @@ design rules under a new name. - + @@ -1857,6 +1855,11 @@ design rules under a new name. + + + + + @@ -1948,9 +1951,6 @@ design rules under a new name. - - - @@ -1966,6 +1966,14 @@ design rules under a new name. + + + + + + + + @@ -1980,9 +1988,7 @@ design rules under a new name. - - - + @@ -1991,6 +1997,12 @@ design rules under a new name. + + + + + + diff --git a/circuits/In3Temperature/in3temperature.brd b/circuits/In3Temperature/in3temperature.brd index bac5de9..8609b06 100644 --- a/circuits/In3Temperature/in3temperature.brd +++ b/circuits/In3Temperature/in3temperature.brd @@ -9,19 +9,19 @@ - + - - - - - - - - - - + + + + + + + + + + @@ -32,20 +32,20 @@ - - - - - + + + + + - - + + - - + + @@ -60,29 +60,29 @@ - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -1945,11 +1945,11 @@ design rules under a new name. - - - - - + + + + + @@ -1994,8 +1994,8 @@ design rules under a new name. - - + + @@ -2013,8 +2013,6 @@ design rules under a new name. - - @@ -2039,17 +2037,17 @@ design rules under a new name. - - - - - - - - - - - + + + + + + + + + + + diff --git a/src/brain/brain.fabduino.c b/src/brain/brain.fabduino.c index f7ccd4b..06a58f3 100644 --- a/src/brain/brain.fabduino.c +++ b/src/brain/brain.fabduino.c @@ -25,7 +25,7 @@ #include "../lib/output/buzzer.h" #include "../lib/ext/i2chw/i2cmaster.h" #include "../lib/ext/dht22/dht22.h" -#include "../lib/input/switch.h" +#include "../lib/input/analogSwitch.h" #include "../lib/input/rotary.h" #define TWI_TIMEOUT 200 @@ -40,7 +40,7 @@ unsigned char tempFlag = ' '; unsigned char humFlag = ' '; volatile unsigned char targetTemperature = 36; -volatile unsigned char auxTargetTemperature = 0; +volatile unsigned char auxTargetTemperature = 36; volatile bool changeTargetTemp = false; char buff[6]; @@ -62,7 +62,7 @@ void getTempAndHum(); Led* led; Buzzer* buzzer; LCD_I2C* lcd; -Switch* sw_rotary; +AnalogSwitch* sw_rotary; Fan* fan1; Fan* fan2; Relay* relay1; @@ -147,10 +147,10 @@ void init(){ lcd->backlight(1); lcd->init(); - buzzer = new Buzzer(&PORTD, &DDRD, PD0); - buzzer->init(); + /*buzzer = new Buzzer(&PORTD, &DDRD, PD0); + buzzer->init();*/ - sw_rotary = new Switch(&PORTD, &DDRD, &PIND, PD1); + sw_rotary = new AnalogSwitch(0x07, 512); sw_rotary->init(); fan1 = new Fan(&PORTD, &DDRD, PD6); @@ -287,7 +287,6 @@ int main() { init(); long lastEncoderValue = 0; - char lastTarget = 0; unsigned long cycle = 0; while (1) { @@ -301,16 +300,15 @@ int main() { }else if(targetTemperature > temperature){ turnOnFans(); heat(); - }/*else if(targetTemperature < temperature){ + }else if(targetTemperature < temperature){ turnOnFans(); cool(); - }*/else{ + }else{ none(); turnOffFans(); } } - char line[16]; if(menuEnabled){ cycle += 1; cycle = cycle%400000; @@ -342,17 +340,18 @@ int main() { menuEnabled = false; temperatureMenu = false; } - if(lastEncoderValue < encoderValue){ - cycle = 0; - ++auxTargetTemperature; - }else if(lastEncoderValue > encoderValue){ - cycle = 0; - --auxTargetTemperature; - } - if(auxTargetTemperature == 255){ - auxTargetTemperature = 40; - }else if(auxTargetTemperature > 40){ - auxTargetTemperature = 0; + if(cycle > 1000){ + if(lastEncoderValue < encoderValue){ + cycle = 0; + if(auxTargetTemperature < 40){ + ++auxTargetTemperature; + } + }else if(lastEncoderValue > encoderValue){ + cycle = 0; + if(auxTargetTemperature > 30){ + --auxTargetTemperature; + } + } } if(lastEncoderValue != encoderValue){ diff --git a/src/brain/brain.fabduino.c.make b/src/brain/brain.fabduino.c.make index 059c70f..a92e1ff 100755 --- a/src/brain/brain.fabduino.c.make +++ b/src/brain/brain.fabduino.c.make @@ -1,5 +1,5 @@ PROJECT=brain.fabduino -SOURCES=../lib/network/serial.c ../lib/output/lcdi2c.cpp ../lib/ext/i2chw/twimaster.c ../lib/output/led.cpp ../lib/output/buzzer.cpp ../lib/output/fan.cpp ../lib/output/relay.cpp ../lib/input/switch.cpp ../lib/input/rotary.c ../lib/ext/dht22/dht22.c ../lib/operators/new.c $(PROJECT).c +SOURCES=../lib/network/serial.c ../lib/output/lcdi2c.cpp ../lib/ext/i2chw/twimaster.c ../lib/output/led.cpp ../lib/output/buzzer.cpp ../lib/output/fan.cpp ../lib/output/relay.cpp ../lib/input/analogSwitch.cpp ../lib/input/rotary.c ../lib/ext/dht22/dht22.c ../lib/operators/new.c $(PROJECT).c MMCU=atmega328p F_CPU = 16000000 diff --git a/src/lib/input/analogSwitch.cpp b/src/lib/input/analogSwitch.cpp new file mode 100644 index 0000000..6618d21 --- /dev/null +++ b/src/lib/input/analogSwitch.cpp @@ -0,0 +1,22 @@ +#include "analogSwitch.h" +#include + +AnalogSwitch::AnalogSwitch(uint8_t pin, uint16_t threshold){ + this->pin = pin; + this->threshold = threshold; +} + +void AnalogSwitch::init(){ +} + +bool AnalogSwitch::isPressed(){ + ADCSRA = (1<pin; + + // starts the conversion + ADCSRA |= (1<threshold; +} diff --git a/src/lib/input/analogSwitch.h b/src/lib/input/analogSwitch.h new file mode 100644 index 0000000..31c5737 --- /dev/null +++ b/src/lib/input/analogSwitch.h @@ -0,0 +1,18 @@ +#ifndef _I_ANALOG_SWITCH_H_ +#define _I_ANALOG_SWITCH_H_ + +#include + +class AnalogSwitch +{ + public: + AnalogSwitch(uint8_t pin, uint16_t threshold); + void init(); + bool isPressed(); + + private: + uint8_t pin; + uint16_t threshold; +}; + +#endif