From 4a4ff39952ccf9b358fa903d22054c507fc44b80 Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Wed, 11 Apr 2012 17:05:13 +1000 Subject: [PATCH] Document the BlinkLED and ChaseLEDs examples --- Blink/Blink.pde | 19 -- doc/Doxyfile | 2 +- doc/blink-blink.dox | 80 ++++++ doc/blink-cylon.dox | 101 +++++++ doc/mainpage.dox | 10 + libraries/BlinkLED/ChaseLEDs.cpp | 3 + libraries/BlinkLED/examples/Blink/Blink.pde | 16 ++ libraries/BlinkLED/examples/Cylon/Cylon.fig | 238 ++++++++++++++++ libraries/BlinkLED/examples/Cylon/Cylon.pde | 18 ++ libraries/BlinkLED/examples/Cylon/Cylon.png | Bin 0 -> 11587 bytes libraries/BlinkLED/examples/Cylon2/Cylon2.pde | 32 +++ libraries/BlinkLED/examples/Cylon3/Cylon3.pde | 32 +++ libraries/BlinkLED/examples/Cylon4/Cylon4.fig | 261 ++++++++++++++++++ .../BlinkLED/examples/Cylon4/Cylon4.fig.bak | 238 ++++++++++++++++ libraries/BlinkLED/examples/Cylon4/Cylon4.pde | 33 +++ libraries/BlinkLED/examples/Cylon4/Cylon4.png | Bin 0 -> 13613 bytes 16 files changed, 1063 insertions(+), 20 deletions(-) delete mode 100644 Blink/Blink.pde create mode 100644 doc/blink-blink.dox create mode 100644 doc/blink-cylon.dox create mode 100644 libraries/BlinkLED/examples/Blink/Blink.pde create mode 100644 libraries/BlinkLED/examples/Cylon/Cylon.fig create mode 100644 libraries/BlinkLED/examples/Cylon/Cylon.pde create mode 100644 libraries/BlinkLED/examples/Cylon/Cylon.png create mode 100644 libraries/BlinkLED/examples/Cylon2/Cylon2.pde create mode 100644 libraries/BlinkLED/examples/Cylon3/Cylon3.pde create mode 100644 libraries/BlinkLED/examples/Cylon4/Cylon4.fig create mode 100644 libraries/BlinkLED/examples/Cylon4/Cylon4.fig.bak create mode 100644 libraries/BlinkLED/examples/Cylon4/Cylon4.pde create mode 100644 libraries/BlinkLED/examples/Cylon4/Cylon4.png diff --git a/Blink/Blink.pde b/Blink/Blink.pde deleted file mode 100644 index 1953c390..00000000 --- a/Blink/Blink.pde +++ /dev/null @@ -1,19 +0,0 @@ -/* - Blink - Turns on an LED on for one second, then off for one second, repeatedly. - - This example code is in the public domain. - */ - -void setup() { - // initialize the digital pin as an output. - // Pin 13 has an LED connected on most Arduino boards: - pinMode(13, OUTPUT); -} - -void loop() { - digitalWrite(13, HIGH); // set the LED on - delay(1000); // wait for a second - digitalWrite(13, LOW); // set the LED off - delay(1000); // wait for a second -} diff --git a/doc/Doxyfile b/doc/Doxyfile index c884ae54..cbf818b1 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -688,7 +688,7 @@ EXAMPLE_RECURSIVE = NO # directories that contain image that are included in the documentation (see # the \image command). -IMAGE_PATH = +IMAGE_PATH = ../libraries/BlinkLED/examples/Cylon ../libraries/BlinkLED/examples/Cylon4 # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program diff --git a/doc/blink-blink.dox b/doc/blink-blink.dox new file mode 100644 index 00000000..5a435d62 --- /dev/null +++ b/doc/blink-blink.dox @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2012 Southern Storm Software, Pty Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** +\file blink-blink.dox +\page blink_blink Blinking LED Example + +The BlinkLED class provides support logic for blinking a LED connected +to an output pin. The traditional way to blink a LED uses a delay loop: + +\code +void loop() { + digitalWrite(13, HIGH); + delay(1000); + digitalWrite(13, LOW); + delay(1000); +} +\endcode + +The problem with this code is that the entire application is blocked +during the delay(). No other activities can be serviced. +BlinkLED provides a re-entrant timer-based implementation that is +simple to use in any application and which won't block other activities. + +We start this example by including the BlinkLED class and instantiating an +object instance: + +\dontinclude BlinkLED/examples/Blink/Blink.pde +\skip #include +\until statusBlink + +In this example we have specified that the LED is on pin D13, the LED +should be on for 70 milliseconds, and off for 930 milliseconds. This +will cause the status LED to "strobe" once per second. The LED will +be initially off for 930 milliseconds after device reset. To start +with the LED on, use the following initialization code instead: + +\code +BlinkLED statusBlink(13, 70, 930, true); +\endcode + +The remaining code we need is a call to BlinkLED::loop() every time around +the main application loop: + +\dontinclude BlinkLED/examples/Blink/Blink.pde +\skip loop() +\until } + +As can be seen, BlinkLED simplifies the process of blinking a LED quite +considerably. It is also possible to \ref BlinkLED::pause() "pause()" +and \ref BlinkLED::resume() "resume()" the blinking. This is useful in +applications where a blinking LED indicates a certain state such as +an error condition or a long-running operation that is in progress; +with the LED off at other times. The on/off blink rate can be modified at +runtime using BlinkLED::setBlinkRate(), and the LED can be set to a +specific value using BlinkLED::setState(). + +The full source code for the example follows: + +\include BlinkLED/examples/Blink/Blink.pde +*/ diff --git a/doc/blink-cylon.dox b/doc/blink-cylon.dox new file mode 100644 index 00000000..e3cefdf3 --- /dev/null +++ b/doc/blink-cylon.dox @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2012 Southern Storm Software, Pty Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** +\file blink-cylon.dox +\page blink_cylon Cylon Eyes Example + +This example shows how to use the ChaseLEDs class to simulate the Cylon +eye effect from Battlestar Galactica. Digital outputs are used to drive +six LED's in a back and forth motion, using the following schematic: + +\image html Cylon.png + +We start by including the ChaseLEDs class: + +\dontinclude BlinkLED/examples/Cylon/Cylon.pde +\skip ChaseLEDs.h +\until ChaseLEDs.h + +The next step is to define the pins that the chase will run over: + +\dontinclude BlinkLED/examples/Cylon/Cylon.pde +\skip byte pins +\until cylonEyes + +The chase runs from the first pin to the sixth pin and back again, +with each LED lit for 100 milliseconds before moving onto the next one. +To complete the example, we need to call ChaseLEDs::loop() each time +around our main loop to cause the chase to run: + +\dontinclude BlinkLED/examples/Cylon/Cylon.pde +\skip loop() +\until } + +While this example uses only six pins, it can be easily extended to any +number of pins by modifying the \c pins array and altering the schematic +accordingly. + +So far we are chasing only a single LED. We could change this to chase +two adjacent LED's instead by defining a new \c CylonChase class that +inherits from ChaseLEDs: + +\dontinclude BlinkLED/examples/Cylon2/Cylon2.pde +\skip class CylonChase +\until }; + +The important part is the implementation of the advance() method, +which overrides ChaseLEDs::advance() to provide our own scheme for lighting +the LED's each time the chase advances. We use ChaseLEDs::previousPin() to +get the pin that is 2 steps back in the sequence, set it to LOW, and then +set the previous pin (1 step back) and the next pin to HIGH. All that +remains is to change our chase initialization to use the new class: + +\dontinclude BlinkLED/examples/Cylon2/Cylon2.pde +\skip byte pins +\until cylonEyes + +We can do even better than this. Instead of fully lighting both LED's, +we could instead use the PWM outputs to dim the previous pin, creating a +kind of "trailing flame" effect: + +\dontinclude BlinkLED/examples/Cylon3/Cylon3.pde +\skip advance( +\until } + +The current chase is fixed at 100 milliseconds per LED, which takes a full +second to run the sequence. An alternative to hard-wiring the chase +rate is to hook up a 10K potentiometer to the A0 analog input: + +\image html Cylon4.png + +We then modify the advance() method to read the new chase rate +from the potentiometer each time the LED advances: + +\dontinclude BlinkLED/examples/Cylon4/Cylon4.pde +\skip advance( +\until } + +The full source code for the final version of the example follows: + +\include BlinkLED/examples/Cylon4/Cylon4.pde +*/ diff --git a/doc/mainpage.dox b/doc/mainpage.dox index 204a7ab1..da63ec1d 100644 --- a/doc/mainpage.dox +++ b/doc/mainpage.dox @@ -35,4 +35,14 @@ LCD shield. \li \ref lcd_hello_world "Hello World" example for the Freetronics LCD shield. \li \ref lcd_form "Form" example for LCD displays. +\section main_BlinkLED BlinkLED Utility Library + +\li BlinkLED class that simplifies the process of blinking a LED connected +to a output pin. +\li ChaseLEDs class that simplifies the process of performing a LED chase +over several output pins. +\li \ref blink_blink "Blink" example of using BlinkLED. +\li \ref blink_cylon "Cylon" example of using ChaseLEDs to simulate +the Cylon eye effect from Battlestar Galactica. + */ diff --git a/libraries/BlinkLED/ChaseLEDs.cpp b/libraries/BlinkLED/ChaseLEDs.cpp index a7eb6612..a9ae25c2 100644 --- a/libraries/BlinkLED/ChaseLEDs.cpp +++ b/libraries/BlinkLED/ChaseLEDs.cpp @@ -46,6 +46,9 @@ * uint8_t pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5}; * ChaseLEDs chaser(pins, sizeof(pins), 150); * \endcode + * + * See the \ref blink_cylon "Cylon" example for more information on + * how to use the ChaseLEDs class in a practical application. */ /** diff --git a/libraries/BlinkLED/examples/Blink/Blink.pde b/libraries/BlinkLED/examples/Blink/Blink.pde new file mode 100644 index 00000000..4784455c --- /dev/null +++ b/libraries/BlinkLED/examples/Blink/Blink.pde @@ -0,0 +1,16 @@ +/* +Blink the status LED using the BlinkLED utility class. + +This example is placed into the public domain. +*/ + +#include + +BlinkLED statusBlink(13, 70, 930); + +void setup() {} + +void loop() { + statusBlink.loop(); +} + diff --git a/libraries/BlinkLED/examples/Cylon/Cylon.fig b/libraries/BlinkLED/examples/Cylon/Cylon.fig new file mode 100644 index 00000000..9d61f269 --- /dev/null +++ b/libraries/BlinkLED/examples/Cylon/Cylon.fig @@ -0,0 +1,238 @@ +#FIG 3.2 Produced by xfig version 3.2.5b +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 5175 1530 7200 2475 +6 5535 1755 5985 1845 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 1800 5535 1800 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 1800 5868 1760 5814 1840 5760 1760 5706 1840 5652 1760 + 5625 1800 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 1800 5890 1800 +-6 +6 6345 1665 6705 1890 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 1800 6480 1755 6480 1845 6570 1800 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 1800 6705 1800 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 1855 6570 1745 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 1665 6570 1710 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 1665 6525 1665 6525 1710 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 1665 6435 1665 6435 1710 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 1665 6480 1710 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 1800 6480 1800 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 1800 5175 1800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 1800 6390 1800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 1800 7200 1800 7200 2475 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 1665 220R\001 +-6 +6 5175 2205 7200 3150 +6 5535 2430 5985 2520 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 2475 5535 2475 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 2475 5868 2435 5814 2515 5760 2435 5706 2515 5652 2435 + 5625 2475 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 2475 5890 2475 +-6 +6 6345 2340 6705 2565 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 2475 6480 2430 6480 2520 6570 2475 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 2475 6705 2475 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 2530 6570 2420 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 2340 6570 2385 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 2340 6525 2340 6525 2385 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 2340 6435 2340 6435 2385 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 2340 6480 2385 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 2475 6480 2475 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 2475 5175 2475 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 2475 6390 2475 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 2475 7200 2475 7200 3150 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 2340 220R\001 +-6 +6 5175 2880 7200 3825 +6 5535 3105 5985 3195 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 3150 5535 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 3150 5868 3110 5814 3190 5760 3110 5706 3190 5652 3110 + 5625 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 3150 5890 3150 +-6 +6 6345 3015 6705 3240 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 3150 6480 3105 6480 3195 6570 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 3150 6705 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 3205 6570 3095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 3015 6570 3060 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 3015 6525 3015 6525 3060 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 3015 6435 3015 6435 3060 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 3015 6480 3060 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 3150 6480 3150 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 3150 5175 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 3150 6390 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 3150 7200 3150 7200 3825 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 3015 220R\001 +-6 +6 5175 3555 7200 4500 +6 5535 3780 5985 3870 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 3825 5535 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 3825 5868 3785 5814 3865 5760 3785 5706 3865 5652 3785 + 5625 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 3825 5890 3825 +-6 +6 6345 3690 6705 3915 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 3825 6480 3780 6480 3870 6570 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 3825 6705 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 3880 6570 3770 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 3690 6570 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 3690 6525 3690 6525 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 3690 6435 3690 6435 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 3690 6480 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 3825 6480 3825 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 3825 5175 3825 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 3825 6390 3825 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 3825 7200 3825 7200 4500 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 3690 220R\001 +-6 +6 5175 4230 7200 5175 +6 5535 4455 5985 4545 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 4500 5535 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 4500 5868 4460 5814 4540 5760 4460 5706 4540 5652 4460 + 5625 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 4500 5890 4500 +-6 +6 6345 4365 6705 4590 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 4500 6480 4455 6480 4545 6570 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 4500 6705 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 4555 6570 4445 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 4365 6570 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 4365 6525 4365 6525 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 4365 6435 4365 6435 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 4365 6480 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 4500 6480 4500 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 4500 5175 4500 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 4500 6390 4500 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 4500 7200 4500 7200 5175 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 4365 220R\001 +-6 +6 5175 4905 7200 5850 +6 5535 5130 5985 5220 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 5175 5535 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 5175 5868 5135 5814 5215 5760 5135 5706 5215 5652 5135 + 5625 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 5175 5890 5175 +-6 +6 6345 5040 6705 5265 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 5175 6480 5130 6480 5220 6570 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 5175 6705 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 5230 6570 5120 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 5040 6570 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 5040 6525 5040 6525 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 5040 6435 5040 6435 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 5040 6480 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 5175 6480 5175 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 5175 5175 5175 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 5175 6390 5175 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 5175 7200 5175 7200 5850 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 5040 220R\001 +-6 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 2700 1350 5175 1350 5175 6300 2700 6300 2700 1350 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 7200 5850 5175 5850 +4 0 0 50 -1 0 12 0.0000 4 135 630 4275 2565 DOUT5\001 +4 0 0 50 -1 0 12 0.0000 4 135 1065 2880 3870 Arduino Uno\001 +4 0 0 50 -1 0 12 0.0000 4 135 630 4275 1845 DOUT3\001 +4 0 0 50 -1 0 12 0.0000 4 135 630 4275 3195 DOUT6\001 +4 0 0 50 -1 0 12 0.0000 4 135 630 4275 3870 DOUT9\001 +4 0 0 50 -1 0 12 0.0000 4 135 735 4275 4545 DOUT10\001 +4 0 0 50 -1 0 12 0.0000 4 135 735 4275 5220 DOUT11\001 +4 0 0 50 -1 0 12 0.0000 4 135 405 4500 5895 GND\001 +4 0 0 50 -1 0 12 0.0000 4 135 1560 7470 3510 6 x 3mm RED LED\001 diff --git a/libraries/BlinkLED/examples/Cylon/Cylon.pde b/libraries/BlinkLED/examples/Cylon/Cylon.pde new file mode 100644 index 00000000..ea2e8324 --- /dev/null +++ b/libraries/BlinkLED/examples/Cylon/Cylon.pde @@ -0,0 +1,18 @@ +/* +Sketch that manipulates Arduino outputs to create the "Cylon Eyes" effect from +Battlestar Galactica. It uses the ChaseLEDs utility class. + +This example is placed into the public domain. +*/ + +#include + +byte pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5}; +ChaseLEDs cylonEyes(pins, sizeof(pins), 100); + +void setup() {} + +void loop() { + cylonEyes.loop(); +} + diff --git a/libraries/BlinkLED/examples/Cylon/Cylon.png b/libraries/BlinkLED/examples/Cylon/Cylon.png new file mode 100644 index 0000000000000000000000000000000000000000..231ccb78cd56a05f3f58c72564c8153b8a01a29e GIT binary patch literal 11587 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 literal 0 HcmV?d00001 diff --git a/libraries/BlinkLED/examples/Cylon2/Cylon2.pde b/libraries/BlinkLED/examples/Cylon2/Cylon2.pde new file mode 100644 index 00000000..185e1596 --- /dev/null +++ b/libraries/BlinkLED/examples/Cylon2/Cylon2.pde @@ -0,0 +1,32 @@ +/* +Sketch that manipulates Arduino outputs to create the "Cylon Eyes" effect from +Battlestar Galactica. It uses the ChaseLEDs utility class. + +This example is placed into the public domain. +*/ + +#include + +class CylonChase : public ChaseLEDs +{ +public: + CylonChase(const byte *pins, int num, unsigned long advanceTime) + : ChaseLEDs(pins, num, advanceTime) {} + +protected: + void advance(byte prevPin, byte nextPin) { + digitalWrite(previousPin(2), LOW); + digitalWrite(prevPin, HIGH); + digitalWrite(nextPin, HIGH); + } +}; + +byte pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5}; +CylonChase cylonEyes(pins, sizeof(pins), 100); + +void setup() {} + +void loop() { + cylonEyes.loop(); +} + diff --git a/libraries/BlinkLED/examples/Cylon3/Cylon3.pde b/libraries/BlinkLED/examples/Cylon3/Cylon3.pde new file mode 100644 index 00000000..007f45ce --- /dev/null +++ b/libraries/BlinkLED/examples/Cylon3/Cylon3.pde @@ -0,0 +1,32 @@ +/* +Sketch that manipulates Arduino outputs to create the "Cylon Eyes" effect from +Battlestar Galactica. It uses the ChaseLEDs utility class. + +This example is placed into the public domain. +*/ + +#include + +class CylonChase : public ChaseLEDs +{ +public: + CylonChase(const byte *pins, int num, unsigned long advanceTime) + : ChaseLEDs(pins, num, advanceTime) {} + +protected: + void advance(byte prevPin, byte nextPin) { + digitalWrite(previousPin(2), LOW); + analogWrite(prevPin, 32); + digitalWrite(nextPin, HIGH); + } +}; + +byte pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5}; +CylonChase cylonEyes(pins, sizeof(pins), 100); + +void setup() {} + +void loop() { + cylonEyes.loop(); +} + diff --git a/libraries/BlinkLED/examples/Cylon4/Cylon4.fig b/libraries/BlinkLED/examples/Cylon4/Cylon4.fig new file mode 100644 index 00000000..0b6ffbe5 --- /dev/null +++ b/libraries/BlinkLED/examples/Cylon4/Cylon4.fig @@ -0,0 +1,261 @@ +#FIG 3.2 Produced by xfig version 3.2.5b +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 5175 1530 7200 2475 +6 5535 1755 5985 1845 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 1800 5535 1800 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 1800 5868 1760 5814 1840 5760 1760 5706 1840 5652 1760 + 5625 1800 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 1800 5890 1800 +-6 +6 6345 1665 6705 1890 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 1800 6480 1755 6480 1845 6570 1800 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 1800 6705 1800 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 1855 6570 1745 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 1665 6570 1710 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 1665 6525 1665 6525 1710 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 1665 6435 1665 6435 1710 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 1665 6480 1710 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 1800 6480 1800 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 1800 5175 1800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 1800 6390 1800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 1800 7200 1800 7200 2475 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 1665 220R\001 +-6 +6 5175 2205 7200 3150 +6 5535 2430 5985 2520 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 2475 5535 2475 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 2475 5868 2435 5814 2515 5760 2435 5706 2515 5652 2435 + 5625 2475 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 2475 5890 2475 +-6 +6 6345 2340 6705 2565 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 2475 6480 2430 6480 2520 6570 2475 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 2475 6705 2475 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 2530 6570 2420 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 2340 6570 2385 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 2340 6525 2340 6525 2385 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 2340 6435 2340 6435 2385 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 2340 6480 2385 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 2475 6480 2475 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 2475 5175 2475 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 2475 6390 2475 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 2475 7200 2475 7200 3150 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 2340 220R\001 +-6 +6 5175 2880 7200 3825 +6 5535 3105 5985 3195 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 3150 5535 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 3150 5868 3110 5814 3190 5760 3110 5706 3190 5652 3110 + 5625 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 3150 5890 3150 +-6 +6 6345 3015 6705 3240 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 3150 6480 3105 6480 3195 6570 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 3150 6705 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 3205 6570 3095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 3015 6570 3060 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 3015 6525 3015 6525 3060 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 3015 6435 3015 6435 3060 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 3015 6480 3060 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 3150 6480 3150 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 3150 5175 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 3150 6390 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 3150 7200 3150 7200 3825 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 3015 220R\001 +-6 +6 5175 3555 7200 4500 +6 5535 3780 5985 3870 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 3825 5535 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 3825 5868 3785 5814 3865 5760 3785 5706 3865 5652 3785 + 5625 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 3825 5890 3825 +-6 +6 6345 3690 6705 3915 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 3825 6480 3780 6480 3870 6570 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 3825 6705 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 3880 6570 3770 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 3690 6570 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 3690 6525 3690 6525 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 3690 6435 3690 6435 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 3690 6480 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 3825 6480 3825 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 3825 5175 3825 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 3825 6390 3825 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 3825 7200 3825 7200 4500 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 3690 220R\001 +-6 +6 5175 4230 7200 5175 +6 5535 4455 5985 4545 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 4500 5535 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 4500 5868 4460 5814 4540 5760 4460 5706 4540 5652 4460 + 5625 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 4500 5890 4500 +-6 +6 6345 4365 6705 4590 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 4500 6480 4455 6480 4545 6570 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 4500 6705 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 4555 6570 4445 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 4365 6570 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 4365 6525 4365 6525 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 4365 6435 4365 6435 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 4365 6480 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 4500 6480 4500 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 4500 5175 4500 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 4500 6390 4500 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 4500 7200 4500 7200 5175 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 4365 220R\001 +-6 +6 5175 4905 7200 5850 +6 5535 5130 5985 5220 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 5175 5535 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 5175 5868 5135 5814 5215 5760 5135 5706 5215 5652 5135 + 5625 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 5175 5890 5175 +-6 +6 6345 5040 6705 5265 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 5175 6480 5130 6480 5220 6570 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 5175 6705 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 5230 6570 5120 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 5040 6570 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 5040 6525 5040 6525 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 5040 6435 5040 6435 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 5040 6480 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 5175 6480 5175 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 5175 5175 5175 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 5175 6390 5175 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 5175 7200 5175 7200 5850 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 5040 220R\001 +-6 +6 1305 3375 1530 3825 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 1395 3600 1465 3565 1465 3635 1395 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 1350 3730 1350 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 1350 3465 1390 3492 1310 3546 1390 3600 1310 3654 1390 3708 + 1350 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 1350 3375 1350 3470 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 1530 3600 1440 3600 +-6 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 2700 1350 5175 1350 5175 6300 2700 6300 2700 1350 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 7200 5850 5175 5850 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 1485 3600 2700 3600 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 1350 3375 1350 1800 2700 1800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 1350 3780 1350 5850 2700 5850 +4 0 0 50 -1 0 12 0.0000 4 135 630 4275 2565 DOUT5\001 +4 0 0 50 -1 0 12 0.0000 4 135 630 4275 1845 DOUT3\001 +4 0 0 50 -1 0 12 0.0000 4 135 630 4275 3195 DOUT6\001 +4 0 0 50 -1 0 12 0.0000 4 135 630 4275 3870 DOUT9\001 +4 0 0 50 -1 0 12 0.0000 4 135 735 4275 4545 DOUT10\001 +4 0 0 50 -1 0 12 0.0000 4 135 735 4275 5220 DOUT11\001 +4 0 0 50 -1 0 12 0.0000 4 135 405 4500 5895 GND\001 +4 0 0 50 -1 0 12 0.0000 4 135 1560 7470 3510 6 x 3mm RED LED\001 +4 0 0 50 -1 0 12 0.0000 4 135 1065 3285 2880 Arduino Uno\001 +4 0 0 50 -1 0 12 0.0000 4 135 435 2835 3645 AIN0\001 +4 0 0 50 -1 0 12 0.0000 4 135 240 2835 1845 5V\001 +4 0 0 50 -1 0 12 0.0000 4 135 405 2790 5895 GND\001 +4 0 0 50 -1 0 12 0.0000 4 135 345 810 3645 10K\001 diff --git a/libraries/BlinkLED/examples/Cylon4/Cylon4.fig.bak b/libraries/BlinkLED/examples/Cylon4/Cylon4.fig.bak new file mode 100644 index 00000000..9d61f269 --- /dev/null +++ b/libraries/BlinkLED/examples/Cylon4/Cylon4.fig.bak @@ -0,0 +1,238 @@ +#FIG 3.2 Produced by xfig version 3.2.5b +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 5175 1530 7200 2475 +6 5535 1755 5985 1845 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 1800 5535 1800 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 1800 5868 1760 5814 1840 5760 1760 5706 1840 5652 1760 + 5625 1800 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 1800 5890 1800 +-6 +6 6345 1665 6705 1890 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 1800 6480 1755 6480 1845 6570 1800 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 1800 6705 1800 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 1855 6570 1745 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 1665 6570 1710 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 1665 6525 1665 6525 1710 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 1665 6435 1665 6435 1710 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 1665 6480 1710 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 1800 6480 1800 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 1800 5175 1800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 1800 6390 1800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 1800 7200 1800 7200 2475 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 1665 220R\001 +-6 +6 5175 2205 7200 3150 +6 5535 2430 5985 2520 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 2475 5535 2475 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 2475 5868 2435 5814 2515 5760 2435 5706 2515 5652 2435 + 5625 2475 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 2475 5890 2475 +-6 +6 6345 2340 6705 2565 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 2475 6480 2430 6480 2520 6570 2475 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 2475 6705 2475 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 2530 6570 2420 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 2340 6570 2385 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 2340 6525 2340 6525 2385 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 2340 6435 2340 6435 2385 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 2340 6480 2385 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 2475 6480 2475 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 2475 5175 2475 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 2475 6390 2475 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 2475 7200 2475 7200 3150 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 2340 220R\001 +-6 +6 5175 2880 7200 3825 +6 5535 3105 5985 3195 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 3150 5535 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 3150 5868 3110 5814 3190 5760 3110 5706 3190 5652 3110 + 5625 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 3150 5890 3150 +-6 +6 6345 3015 6705 3240 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 3150 6480 3105 6480 3195 6570 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 3150 6705 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 3205 6570 3095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 3015 6570 3060 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 3015 6525 3015 6525 3060 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 3015 6435 3015 6435 3060 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 3015 6480 3060 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 3150 6480 3150 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 3150 5175 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 3150 6390 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 3150 7200 3150 7200 3825 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 3015 220R\001 +-6 +6 5175 3555 7200 4500 +6 5535 3780 5985 3870 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 3825 5535 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 3825 5868 3785 5814 3865 5760 3785 5706 3865 5652 3785 + 5625 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 3825 5890 3825 +-6 +6 6345 3690 6705 3915 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 3825 6480 3780 6480 3870 6570 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 3825 6705 3825 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 3880 6570 3770 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 3690 6570 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 3690 6525 3690 6525 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 3690 6435 3690 6435 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 3690 6480 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 3825 6480 3825 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 3825 5175 3825 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 3825 6390 3825 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 3825 7200 3825 7200 4500 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 3690 220R\001 +-6 +6 5175 4230 7200 5175 +6 5535 4455 5985 4545 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 4500 5535 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 4500 5868 4460 5814 4540 5760 4460 5706 4540 5652 4460 + 5625 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 4500 5890 4500 +-6 +6 6345 4365 6705 4590 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 4500 6480 4455 6480 4545 6570 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 4500 6705 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 4555 6570 4445 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 4365 6570 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 4365 6525 4365 6525 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 4365 6435 4365 6435 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 4365 6480 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 4500 6480 4500 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 4500 5175 4500 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 4500 6390 4500 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 4500 7200 4500 7200 5175 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 4365 220R\001 +-6 +6 5175 4905 7200 5850 +6 5535 5130 5985 5220 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5630 5175 5535 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 5895 5175 5868 5135 5814 5215 5760 5135 5706 5215 5652 5135 + 5625 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 5175 5890 5175 +-6 +6 6345 5040 6705 5265 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6570 5175 6480 5130 6480 5220 6570 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 5175 6705 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6570 5230 6570 5120 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6525 5040 6570 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6570 5040 6525 5040 6525 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6480 5040 6435 5040 6435 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 5040 6480 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6345 5175 6480 5175 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5535 5175 5175 5175 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5985 5175 6390 5175 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6660 5175 7200 5175 7200 5850 +4 0 0 50 -1 0 12 0.0000 4 135 450 5535 5040 220R\001 +-6 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 2700 1350 5175 1350 5175 6300 2700 6300 2700 1350 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 7200 5850 5175 5850 +4 0 0 50 -1 0 12 0.0000 4 135 630 4275 2565 DOUT5\001 +4 0 0 50 -1 0 12 0.0000 4 135 1065 2880 3870 Arduino Uno\001 +4 0 0 50 -1 0 12 0.0000 4 135 630 4275 1845 DOUT3\001 +4 0 0 50 -1 0 12 0.0000 4 135 630 4275 3195 DOUT6\001 +4 0 0 50 -1 0 12 0.0000 4 135 630 4275 3870 DOUT9\001 +4 0 0 50 -1 0 12 0.0000 4 135 735 4275 4545 DOUT10\001 +4 0 0 50 -1 0 12 0.0000 4 135 735 4275 5220 DOUT11\001 +4 0 0 50 -1 0 12 0.0000 4 135 405 4500 5895 GND\001 +4 0 0 50 -1 0 12 0.0000 4 135 1560 7470 3510 6 x 3mm RED LED\001 diff --git a/libraries/BlinkLED/examples/Cylon4/Cylon4.pde b/libraries/BlinkLED/examples/Cylon4/Cylon4.pde new file mode 100644 index 00000000..9b38dff0 --- /dev/null +++ b/libraries/BlinkLED/examples/Cylon4/Cylon4.pde @@ -0,0 +1,33 @@ +/* +Sketch that manipulates Arduino outputs to create the "Cylon Eyes" effect from +Battlestar Galactica. It uses the ChaseLEDs utility class. + +This example is placed into the public domain. +*/ + +#include + +class CylonChase : public ChaseLEDs +{ +public: + CylonChase(const byte *pins, int num, unsigned long advanceTime) + : ChaseLEDs(pins, num, advanceTime) {} + +protected: + void advance(byte prevPin, byte nextPin) { + digitalWrite(previousPin(2), LOW); + analogWrite(prevPin, 32); + digitalWrite(nextPin, HIGH); + setAdvanceTime(map(analogRead(A0), 0, 1023, 25, 250)); + } +}; + +byte pins[] = {3, 5, 6, 9, 10, 11, 10, 9, 6, 5}; +CylonChase cylonEyes(pins, sizeof(pins), 100); + +void setup() {} + +void loop() { + cylonEyes.loop(); +} + diff --git a/libraries/BlinkLED/examples/Cylon4/Cylon4.png b/libraries/BlinkLED/examples/Cylon4/Cylon4.png new file mode 100644 index 0000000000000000000000000000000000000000..a42128682c85a8af006f13f00fdb2bda031638b6 GIT binary patch literal 13613 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