diff --git a/doc/Doxyfile b/doc/Doxyfile index b987d7fa..ec0054f4 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 = ../libraries/BlinkLED/examples/Cylon ../libraries/BlinkLED/examples/Cylon4 ../libraries/BlinkLED/examples/StarTrek ../libraries/LCD/examples/HelloWorld ../libraries/LCD/examples/Form ../libraries/RTC/examples/AlarmClock ../libraries/DMD +IMAGE_PATH = ../libraries/BlinkLED/examples/Cylon ../libraries/BlinkLED/examples/Cylon4 ../libraries/BlinkLED/examples/StarTrek ../libraries/BlinkLED/examples/Charlieplex ../libraries/LCD/examples/HelloWorld ../libraries/LCD/examples/Form ../libraries/RTC/examples/AlarmClock ../libraries/DMD # 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-charlieplex.dox b/doc/blink-charlieplex.dox new file mode 100644 index 00000000..a9afe489 --- /dev/null +++ b/doc/blink-charlieplex.dox @@ -0,0 +1,77 @@ +/* + * 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-charlieplex.dox +\page blink_charlieplex Charlieplexing Example + +Charlieplexing +is a technique for multiplexing large numbers of LED's on a small +number of microcontroller output pins. LED's are arranged in +complementary pairs and managed by the Charlieplex class. For this +example we are going to use 3 output pins to drive 6 LED's: + +\image html charlieplexeg.png + +The technique can be expanded to even larger numbers of LED's. +See the documentation for the Charlieplex class for a description of +how to connect up larger numbers of pins in a Charlieplexed arrangement. + +The first step is to initialize a Charlieplex object with the output +pins it needs to drive: + +\dontinclude BlinkLED/examples/Charlieplex/Charlieplex.pde +\skip #include +\until charlie + +Then in setup() we use Charlieplex::setLed() and +Charlieplex::setPwmLed() to set three of the six LED's to +the desired output values: + +\dontinclude BlinkLED/examples/Charlieplex/Charlieplex.pde +\skip setup +\until } + +Charlieplexing can only light a single LED at a time. It is therefore +necessary to constantly scan the entire LED array, alternatively turning +LED's on and off. The user's peristence of vision fills in the gaps. +To do this, we call Charlieplex::loop(): + +\dontinclude BlinkLED/examples/Charlieplex/Charlieplex.pde +\skip loop +\until } + +The downside of Charlieplexing is that when multiple LED's are lit, each LED +will appear to be dimmer than if only a single LED was lit. This can be +counteracted by using brighter LED's or smaller resistors. The danger with +smaller resistors is that if the program crashes or locks up for some reason, +a large amount of continuous current could be fed through a single LED and +cause it to exceed its maximum rating and burn out. + +The full source code for the example follows: + +\include BlinkLED/examples/Charlieplex/Charlieplex.pde + +A more complex example that performs a LED chase over the 6 LED's follows: + +\include BlinkLED/examples/CharlieplexChase/CharlieplexChase.pde +*/ diff --git a/doc/mainpage.dox b/doc/mainpage.dox index 645b6ff5..8cfc9527 100644 --- a/doc/mainpage.dox +++ b/doc/mainpage.dox @@ -56,11 +56,15 @@ to draw and animate bitmaps. to a output pin. \li ChaseLEDs class that simplifies the process of performing a LED chase over several output pins. +\li Charlieplex class that manages a matrix of LED's arranged in a +Charlieplexing +arrangement. \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. \li \ref blink_startrek "StarTrek" example for lighting a starship Enterprise model kit. +\li \ref blink_charlieplex "Charlieplex" example. \section main_I2C I2C Utility Library diff --git a/libraries/BlinkLED/Charlieplex.cpp b/libraries/BlinkLED/Charlieplex.cpp new file mode 100644 index 00000000..144c9d59 --- /dev/null +++ b/libraries/BlinkLED/Charlieplex.cpp @@ -0,0 +1,350 @@ +/* + * 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. + */ + +#include "Charlieplex.h" +#if defined(ARDUINO) && ARDUINO >= 100 +#include +#else +#include +#endif +#include +#include + +/** + * \class Charlieplex Charlieplex.h + * \brief Manage an array of LED's in a charlieplexed arrangement. + * + * Charlieplexing + * is a technique for multiplexing large numbers of LED's on a small + * number of microcontroller output pins. LED's are arranged in + * complementary pairs; the simplest being for two output pins: + * + * \image html charlieplex2pin.png + * + * When Pin1 is 1 and Pin2 is 0, LED1 will be lit. When Pin1 is 0 and + * Pin2 is 1, then LED2 will be lit. The technique extends to 3 pins + * as follows: + * + * \image html charlieplex3pin.png + * + * In this case, LED5 is lit when Pin1 is 1, Pin3 is 0, and Pin2 is set + * to a high-impedance input to "disconnect" it. + * + * Charlieplex presents a simple array of led() values that indicate whether + * each LED is on, off, or in an intermediate PWM state (if setPwmLed() + * is used). The application must call loop() or refresh() on a regular + * basis to ensure that the multiplexed display is kept up to date. + * The following example drives 6 LED's connected to the output pins + * D9, D10, and D11: + * + * \dontinclude BlinkLED/examples/Charlieplex/Charlieplex.pde + * \skip #include + * \until charlie.loop + * \until } + * + * The following diagram extends the circuit for 4 output pins and 12 LED's: + * + * \image html charlieplex4pin.png + * + * The following diagram extends the circuit for 5 output pins and 20 LED's: + * + * \image html charlieplex5pin.png + * + * Circuits for higher numbers of LED's get increasingly complex. For those + * cases it can be easier to use traditional multiplexing matrix arrangements + * and shift registers. The DMD class does this for a specific kind of + * large dot matrix display. Otherwise, use the following pseudocode to + * determine how to connect the LED's for higher numbers of pins: + * + * \code + * n = 1 + * for Pass = 1 to NumPins-1: + * for Pin = 1 to NumPins-Pass: + * LED[n] is connected between Pin (anode) and Pin+Pass (cathode) + * LED[n+1] is connected between Pin+Pass (anode) and Pin (cathode) + * n = n + 2 + * \endcode + * + * Note: while the above circuit diagrams and psuedocode use 1-based + * numbering for LED's, Charlieplex uses 0-based numbering in the led(), + * setLed(), pwmLed(), and setPwmLed() functions. + * + * It isn't necessary to wire up all LED's. If you only need 10 LED's, + * then use the 4-output circuit and omit LED11 and LED12. Charlieplex + * only drives LED's that are lit; LED's that are unlit or unused will + * be skipped during the refresh scan. The maximum number of LED's that + * that can be driven by a specific number of pins is given by the + * following table: + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Number of PinsNumber of LED's
22
36
412
520
630
742
856
972
1090
nn * (n - 1)
+ */ + +/** + * \brief Constructs a new charliexplexing array where the output pins + * are specified by the \a numPins entries in \a pins. + * + * Note: \a numPins must be 2 or greater for correct operation. + * + * \sa count(), setLed() + */ +Charlieplex::Charlieplex(const uint8_t *pins, uint8_t numPins) + : _count(((int)numPins) * (numPins - 1)) + , _lastTime(micros()) + , _currentIndex(-1) + , _pwmPhase(0xC0) +{ + // Determine the best hold time for 50 Hz refresh when all LED's + // are lit. Divide it again by 4 (to get 200 Hz) to manage the + // simulated PWM in refresh(). + _holdTime = 20000 / _count / 4; + + // Allocate the pin arrays and populate them. Doing this now makes + // refresh() more efficient later, at the expense of some memory. + _pins1 = (uint8_t *)malloc(_count); + _pins2 = (uint8_t *)malloc(_count); + int n = 0; + for (uint8_t pass = 1; pass < numPins; ++pass) { + for (uint8_t pin = 0; pin < (numPins - pass); ++pin) { + _pins1[n] = _pins2[n + 1] = pins[pin]; + _pins2[n] = _pins1[n + 1] = pins[pin + pass]; + n += 2; + } + } + + // Allocate space for the LED value array and zero it. + _values = (uint8_t *)malloc(_count); + memset(_values, 0, _count); + + // Start with all pins configured as floating inputs (all LED's off). + for (uint8_t pin = 0; pin < numPins; ++pin) { + digitalWrite(pins[pin], LOW); + pinMode(pins[pin], INPUT); + } +} + +/** + * \brief Destroys this charlieplexed array. + */ +Charlieplex::~Charlieplex() +{ + free(_pins1); + free(_pins2); + free(_values); +} + +/** + * \fn int Charlieplex::count() const + * \brief Returns the number of LED's in this charlieplexed array based + * on the number of pins. + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Number of PinsNumber of LED's
22
36
412
520
630
742
856
972
1090
nn * (n - 1)
+ * + * \sa led() + */ + +/** + * \fn bool Charlieplex::led(int index) const + * \brief Returns the value of the LED at \a index in the charplexed array; + * true if lit; false if not lit. + * + * If the LED is displaying a PWM value, then this function will return + * true for any non-zero PWM value. + * + * \sa setLed(), pwmLed() + */ + +/** + * \fn void Charlieplex::setLed(int index, bool value) + * \brief Sets the \a value of the LED at \a index in the charliplexed array. + * + * The brightness of the LED will be proportional to the number of LED's + * that are currently lit, as the holdTime() refresh rate will cause the + * LED to appear to dim; the more LED's that are lit the less overall time + * each individual LED is held on. For best results, only a single LED should + * be lit at once or higher-brightness LED's should be used. + * + * \sa led(), setPwmLed() + */ + +/** + * \fn uint8_t Charlieplex::pwmLed(int index) const + * \brief Returns the PWM value of the LED at \a index in the charplexed array; + * between 0 and 255. + * + * \sa setPwmLed(), led() + */ + +/** + * \fn void Charlieplex::setPwmLed(int index, uint8_t value) + * \brief Sets the PWM \a value of the LED at \a index in the charliplexed + * array; between 0 and 255. + * + * If this function is used, then it is assumed that the output pins are + * capable of PWM output. + * + * The PWM-specified brightness of the LED will also be affected to the + * number of LED's that are currently lit, as the holdTime() refresh rate + * will cause the LED to appear to dim; the more LED's that are lit the + * less overall time each individual LED is held on. For best results, + * only a single LED should be lit at once or higher-brightness LED's + * should be used. + * + * \sa pwmLed(), setLed() + */ + +/** + * \fn unsigned long Charlieplex::holdTime() const + * \brief Returns the number of microseconds that each LED should be + * held on for before moving onto the next in loop(). + * + * The default value is calculated so that all LED's can be refreshed + * with a rate of at least 200 Hz, which is necessary for handling PWM + * output on multiple LED's. The less LED's that are lit at once, + * the faster the display will refresh. + * + * \sa setHoldTime(), loop() + */ + +/** + * \fn void Charlieplex::setHoldTime(unsigned long us) + * \brief Sets the number of microseconds that each LED should be + * held on for before moving onto the next in loop() to \a us. + * + * \sa holdTime(), loop() + */ + +/** + * \brief Runs the multiplexing loop, to display the LED states on + * the charlieplexed array. + * + * If holdTime() microseconds have elapsed since the last call to loop(), + * then the current LED is turned off and the next LED that needs to be + * lit is turned on. + * + * LED's that do not need to be lit are skipped. The total time for a + * single pass through all lit LED's may be very short if only a few + * LED's are lit at once. If all LED's are lit, then the total time for + * a single pass will be count() * holdTime() microseconds. + * + * If the application is using timer interrupts to drive the multiplexing + * process, then use refresh() instead of loop(). + * + * \sa led(), pwmLed(), holdTime(), refresh() + */ +void Charlieplex::loop() +{ + unsigned long us = micros(); + if ((us - _lastTime) >= _holdTime) { + _lastTime = us; + refresh(); + } +} + +/** + * \brief Refreshes the charlieplexed array by advancing to the next LED + * that needs to be lit. + * + * This function is intended to be called from a timer interrupt service + * routine to advance the multiplexing state without the main application + * having to explicitly call loop(). + * + * \sa loop() + */ +void Charlieplex::refresh() +{ + // Find the next LED to be lit. + int prevIndex = _currentIndex; + int limit = _count; + while (limit >= 0) { + _currentIndex = (_currentIndex + 1) % _count; + if (_values[_currentIndex] != 0) + break; + --limit; + } + if (limit < 0) { + // No LED's are lit. Turn off the previous LED and exit. + if (prevIndex != -1) { + digitalWrite(_pins1[prevIndex], LOW); + digitalWrite(_pins2[prevIndex], LOW); + pinMode(_pins1[prevIndex], INPUT); + pinMode(_pins2[prevIndex], INPUT); + } + _currentIndex = -1; + return; + } + + // Light the current LED. + uint8_t value = _values[_currentIndex]; + uint8_t pin1 = _pins1[_currentIndex]; + uint8_t pin2 = _pins2[_currentIndex]; + _pwmPhase += 0x40; + if (prevIndex != _currentIndex) { + // Turn off the previous LED. + if (prevIndex != -1) { + digitalWrite(_pins1[prevIndex], LOW); + digitalWrite(_pins2[prevIndex], LOW); + pinMode(_pins1[prevIndex], INPUT); + pinMode(_pins2[prevIndex], INPUT); + } + + // We simulate PWM using a phase counter because analogWrite() + // combined with holdTime() causes too much flickering if more + // than one LED is lit. This reduces the PWM resolution to 1 in 4. + pinMode(pin1, OUTPUT); + pinMode(pin2, OUTPUT); + if (value > _pwmPhase) + digitalWrite(pin1, HIGH); + else + digitalWrite(pin1, LOW); + } else { + // Same LED as previous. Since there is only a single LED + // that is lit, we can use analogWrite() to set the PWM state. + if (value == 255) + digitalWrite(pin1, HIGH); + else + analogWrite(pin1, value); + } +} diff --git a/libraries/BlinkLED/Charlieplex.h b/libraries/BlinkLED/Charlieplex.h new file mode 100644 index 00000000..b3fbe881 --- /dev/null +++ b/libraries/BlinkLED/Charlieplex.h @@ -0,0 +1,59 @@ +/* + * 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. + */ + +#ifndef Charlieplex_h +#define Charlieplex_h + +#include + +class Charlieplex +{ +public: + Charlieplex(const uint8_t *pins, uint8_t numPins); + ~Charlieplex(); + + int count() const { return _count; } + + bool led(int index) const { return _values[index] != 0; } + void setLed(int index, bool value) { _values[index] = (value ? 255 : 0); } + + uint8_t pwmLed(int index) const { return _values[index]; } + void setPwmLed(int index, uint8_t value) { _values[index] = value; } + + unsigned long holdTime() const { return _holdTime; } + void setHoldTime(unsigned long us) { _holdTime = us; } + + void loop(); + void refresh(); + +private: + int _count; + uint8_t *_pins1; + uint8_t *_pins2; + uint8_t *_values; + unsigned long _holdTime; + unsigned long _lastTime; + int _currentIndex; + uint8_t _pwmPhase; +}; + +#endif diff --git a/libraries/BlinkLED/examples/Charlieplex/Charlieplex.pde b/libraries/BlinkLED/examples/Charlieplex/Charlieplex.pde new file mode 100644 index 00000000..fd0b9d21 --- /dev/null +++ b/libraries/BlinkLED/examples/Charlieplex/Charlieplex.pde @@ -0,0 +1,16 @@ +/* This example is placed into the public domain */ + +#include + +byte pins[3] = {9, 10, 11}; +Charlieplex charlie(pins, sizeof(pins)); + +void setup() { + charlie.setLed(0, true); // Turn on LED1 + charlie.setLed(3, true); // Turn on LED4 + charlie.setPwmLed(5, 64); // Set LED6 to one-quarter on +} + +void loop() { + charlie.loop(); +} diff --git a/libraries/BlinkLED/examples/Charlieplex/charlieplex2pin.fig b/libraries/BlinkLED/examples/Charlieplex/charlieplex2pin.fig new file mode 100644 index 00000000..2ae9b2ee --- /dev/null +++ b/libraries/BlinkLED/examples/Charlieplex/charlieplex2pin.fig @@ -0,0 +1,87 @@ +#FIG 3.2 Produced by xfig version 3.2.5b +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 3825 3105 4275 3195 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3920 3150 3825 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 4185 3150 4158 3110 4104 3190 4050 3110 3996 3190 3942 3110 + 3915 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4275 3150 4180 3150 +-6 +6 4410 3375 4635 3735 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 4500 3600 4545 3510 4455 3510 4500 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 3600 4500 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4445 3600 4555 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 3555 4590 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 3600 4635 3555 4590 3555 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 3510 4635 3465 4590 3465 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 3465 4590 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 3375 4500 3510 +-6 +6 3825 4005 4275 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3920 4050 3825 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 4185 4050 4158 4010 4104 4090 4050 4010 3996 4090 3942 4010 + 3915 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4275 4050 4180 4050 +-6 +6 4455 3105 4545 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 3150 30 30 4500 3150 4500 3180 +-6 +6 4455 4005 4545 4095 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 4050 30 30 4500 4050 4500 4080 +-6 +6 5310 3375 5535 3735 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 5400 3510 5445 3600 5355 3600 5400 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 3510 5400 3375 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5345 3510 5455 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 3555 5490 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 3510 5535 3555 5490 3555 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 3600 5535 3645 5490 3645 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 3645 5490 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 3735 5400 3600 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4230 3150 5400 3150 5400 3420 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 3420 4500 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4275 4050 5400 4050 5400 3690 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 3735 4500 4050 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 3870 3150 3600 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 3825 4050 3600 4050 +4 0 0 50 -1 0 12 0.0000 4 135 480 5625 3645 LED2\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 4725 3645 LED1\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 3105 3195 Pin1\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 3105 4095 Pin2\001 diff --git a/libraries/BlinkLED/examples/Charlieplex/charlieplex2pin.png b/libraries/BlinkLED/examples/Charlieplex/charlieplex2pin.png new file mode 100644 index 00000000..838b30a3 Binary files /dev/null and b/libraries/BlinkLED/examples/Charlieplex/charlieplex2pin.png differ diff --git a/libraries/BlinkLED/examples/Charlieplex/charlieplex3pin.fig b/libraries/BlinkLED/examples/Charlieplex/charlieplex3pin.fig new file mode 100644 index 00000000..716c2f9a --- /dev/null +++ b/libraries/BlinkLED/examples/Charlieplex/charlieplex3pin.fig @@ -0,0 +1,210 @@ +#FIG 3.2 Produced by xfig version 3.2.5b +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 3825 3105 4275 3195 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3920 3150 3825 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 4185 3150 4158 3110 4104 3190 4050 3110 3996 3190 3942 3110 + 3915 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4275 3150 4180 3150 +-6 +6 4410 3375 4635 3735 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 4500 3600 4545 3510 4455 3510 4500 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 3600 4500 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4445 3600 4555 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 3555 4590 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 3600 4635 3555 4590 3555 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 3510 4635 3465 4590 3465 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 3465 4590 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 3375 4500 3510 +-6 +6 3825 4005 4275 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3920 4050 3825 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 4185 4050 4158 4010 4104 4090 4050 4010 3996 4090 3942 4010 + 3915 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4275 4050 4180 4050 +-6 +6 4455 3105 4545 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 3150 30 30 4500 3150 4500 3180 +-6 +6 4455 4005 4545 4095 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 4050 30 30 4500 4050 4500 4080 +-6 +6 3825 4905 4275 4995 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3920 4950 3825 4950 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 4185 4950 4158 4910 4104 4990 4050 4910 3996 4990 3942 4910 + 3915 4950 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4275 4950 4180 4950 +-6 +6 4410 4275 4635 4635 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 4500 4500 4545 4410 4455 4410 4500 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 4500 4500 4635 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4445 4500 4555 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 4455 4590 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 4500 4635 4455 4590 4455 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 4410 4635 4365 4590 4365 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 4365 4590 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 4275 4500 4410 +-6 +6 6210 3915 6435 4275 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6300 4140 6345 4050 6255 4050 6300 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6300 4140 6300 4275 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6245 4140 6355 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 4095 6390 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6435 4140 6435 4095 6390 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6435 4050 6435 4005 6390 4005 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 4005 6390 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6300 3915 6300 4050 +-6 +6 5310 3375 5535 3735 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 5400 3510 5445 3600 5355 3600 5400 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 3510 5400 3375 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5345 3510 5455 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 3555 5490 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 3510 5535 3555 5490 3555 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 3600 5535 3645 5490 3645 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 3645 5490 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 3735 5400 3600 +-6 +6 5310 4275 5535 4635 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 5400 4410 5445 4500 5355 4500 5400 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 4410 5400 4275 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5345 4410 5455 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 4455 5490 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 4410 5535 4455 5490 4455 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 4500 5535 4545 5490 4545 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 4545 5490 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 4635 5400 4500 +-6 +6 7110 3915 7335 4275 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 7200 4050 7245 4140 7155 4140 7200 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7200 4050 7200 3915 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7145 4050 7255 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7335 4095 7290 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 7335 4050 7335 4095 7290 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 7335 4140 7335 4185 7290 4185 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7335 4185 7290 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7200 4275 7200 4140 +-6 +6 5355 3105 5445 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5400 3150 30 30 5400 3150 5400 3180 +-6 +6 6255 3105 6345 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 6300 3150 30 30 6300 3150 6300 3180 +-6 +6 6255 4905 6345 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 6300 4950 30 30 6300 4950 6300 4980 +-6 +6 5355 4905 5445 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5400 4950 30 30 5400 4950 5400 4980 +-6 +6 4455 4905 4545 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 4950 30 30 4500 4950 4500 4980 +-6 +6 5355 4005 5445 4095 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5400 4050 30 30 5400 4050 5400 4080 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4230 3150 5400 3150 5400 3420 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 3420 4500 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4275 4050 5400 4050 5400 3690 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 3735 4500 4050 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 3870 3150 3600 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 3825 4050 3600 4050 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 3825 4950 3600 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 4050 4500 4320 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 4590 4500 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5400 4365 5400 4005 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4275 4950 5400 4950 5400 4590 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 5400 3150 6300 3150 6300 3960 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6255 3150 7200 3150 7200 3960 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 5355 4950 6300 4950 6300 4230 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6300 4950 7200 4950 7200 4185 +4 0 0 50 -1 0 12 0.0000 4 135 480 5625 3645 LED2\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 4725 3645 LED1\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 3105 3195 Pin1\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 3105 4095 Pin2\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 3105 4995 Pin3\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 4725 4545 LED3\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 5625 4545 LED4\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 7425 4140 LED6\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 6525 4140 LED5\001 diff --git a/libraries/BlinkLED/examples/Charlieplex/charlieplex3pin.png b/libraries/BlinkLED/examples/Charlieplex/charlieplex3pin.png new file mode 100644 index 00000000..4b0391b3 Binary files /dev/null and b/libraries/BlinkLED/examples/Charlieplex/charlieplex3pin.png differ diff --git a/libraries/BlinkLED/examples/Charlieplex/charlieplex4pin.fig b/libraries/BlinkLED/examples/Charlieplex/charlieplex4pin.fig new file mode 100644 index 00000000..dc21c38c --- /dev/null +++ b/libraries/BlinkLED/examples/Charlieplex/charlieplex4pin.fig @@ -0,0 +1,394 @@ +#FIG 3.2 Produced by xfig version 3.2.5b +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 6300.000 4950.000 6300 4905 6345 4950 6300 4995 +6 3825 3105 4275 3195 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3920 3150 3825 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 4185 3150 4158 3110 4104 3190 4050 3110 3996 3190 3942 3110 + 3915 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4275 3150 4180 3150 +-6 +6 4410 3375 4635 3735 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 4500 3600 4545 3510 4455 3510 4500 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 3600 4500 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4445 3600 4555 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 3555 4590 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 3600 4635 3555 4590 3555 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 3510 4635 3465 4590 3465 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 3465 4590 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 3375 4500 3510 +-6 +6 3825 4005 4275 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3920 4050 3825 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 4185 4050 4158 4010 4104 4090 4050 4010 3996 4090 3942 4010 + 3915 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4275 4050 4180 4050 +-6 +6 4455 3105 4545 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 3150 30 30 4500 3150 4500 3180 +-6 +6 4455 4005 4545 4095 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 4050 30 30 4500 4050 4500 4080 +-6 +6 3825 4905 4275 4995 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3920 4950 3825 4950 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 4185 4950 4158 4910 4104 4990 4050 4910 3996 4990 3942 4910 + 3915 4950 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4275 4950 4180 4950 +-6 +6 4410 4275 4635 4635 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 4500 4500 4545 4410 4455 4410 4500 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 4500 4500 4635 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4445 4500 4555 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 4455 4590 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 4500 4635 4455 4590 4455 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 4410 4635 4365 4590 4365 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 4365 4590 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 4275 4500 4410 +-6 +6 5310 3375 5535 3735 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 5400 3510 5445 3600 5355 3600 5400 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 3510 5400 3375 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5345 3510 5455 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 3555 5490 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 3510 5535 3555 5490 3555 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 3600 5535 3645 5490 3645 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 3645 5490 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 3735 5400 3600 +-6 +6 5310 4275 5535 4635 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 5400 4410 5445 4500 5355 4500 5400 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 4410 5400 4275 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5345 4410 5455 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 4455 5490 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 4410 5535 4455 5490 4455 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 4500 5535 4545 5490 4545 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 4545 5490 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 4635 5400 4500 +-6 +6 5355 3105 5445 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5400 3150 30 30 5400 3150 5400 3180 +-6 +6 5355 4905 5445 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5400 4950 30 30 5400 4950 5400 4980 +-6 +6 4455 4905 4545 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 4950 30 30 4500 4950 4500 4980 +-6 +6 5355 4005 5445 4095 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5400 4050 30 30 5400 4050 5400 4080 +-6 +6 6660 3915 6885 4275 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6750 4140 6795 4050 6705 4050 6750 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6750 4140 6750 4275 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6695 4140 6805 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6885 4095 6840 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6885 4140 6885 4095 6840 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6885 4050 6885 4005 6840 4005 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6885 4005 6840 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6750 3915 6750 4050 +-6 +6 7560 3915 7785 4275 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 7650 4050 7695 4140 7605 4140 7650 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7650 4050 7650 3915 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7595 4050 7705 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7785 4095 7740 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 7785 4050 7785 4095 7740 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 7785 4140 7785 4185 7740 4185 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7785 4185 7740 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7650 4275 7650 4140 +-6 +6 6705 3105 6795 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 6750 3150 30 30 6750 3150 6750 3180 +-6 +6 6705 4905 6795 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 6750 4950 30 30 6750 4950 6750 4980 +-6 +6 4410 5175 4635 5535 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 4500 5400 4545 5310 4455 5310 4500 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 5400 4500 5535 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4445 5400 4555 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 5355 4590 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 5400 4635 5355 4590 5355 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 5310 4635 5265 4590 5265 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 5265 4590 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 5175 4500 5310 +-6 +6 3825 5805 4275 5895 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3920 5850 3825 5850 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 4185 5850 4158 5810 4104 5890 4050 5810 3996 5890 3942 5810 + 3915 5850 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4275 5850 4180 5850 +-6 +6 4455 5805 4545 5895 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 5850 30 30 4500 5850 4500 5880 +-6 +6 5310 5175 5535 5535 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 5400 5310 5445 5400 5355 5400 5400 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 5310 5400 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5345 5310 5455 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 5355 5490 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 5310 5535 5355 5490 5355 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 5400 5535 5445 5490 5445 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 5445 5490 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 5535 5400 5400 +-6 +6 5355 5805 5445 5895 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5400 5850 30 30 5400 5850 5400 5880 +-6 +6 6255 5040 6345 5130 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 6300 5085 30 30 6300 5085 6300 5115 +-6 +6 6210 5175 6435 5535 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6300 5400 6345 5310 6255 5310 6300 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6300 5400 6300 5535 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6245 5400 6355 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 5355 6390 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6435 5400 6435 5355 6390 5355 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6435 5310 6435 5265 6390 5265 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 5265 6390 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6300 5175 6300 5310 +-6 +6 6255 5805 6345 5895 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 6300 5850 30 30 6300 5850 6300 5880 +-6 +6 7110 5175 7335 5535 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 7200 5310 7245 5400 7155 5400 7200 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7200 5310 7200 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7145 5310 7255 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7335 5355 7290 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 7335 5310 7335 5355 7290 5355 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 7335 5400 7335 5445 7290 5445 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7335 5445 7290 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7200 5535 7200 5400 +-6 +6 8460 4275 8685 4635 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 8550 4500 8595 4410 8505 4410 8550 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 8550 4500 8550 4635 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 8495 4500 8605 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 8685 4455 8640 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 8685 4500 8685 4455 8640 4455 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 8685 4410 8685 4365 8640 4365 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 8685 4365 8640 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 8550 4275 8550 4410 +-6 +6 9360 4275 9585 4635 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 9450 4410 9495 4500 9405 4500 9450 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9450 4410 9450 4275 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9395 4410 9505 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9585 4455 9540 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 9585 4410 9585 4455 9540 4455 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 9585 4500 9585 4545 9540 4545 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9585 4545 9540 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9450 4635 9450 4500 +-6 +6 8505 3105 8595 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 8550 3150 30 30 8550 3150 8550 3180 +-6 +6 7605 3105 7695 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 7650 3150 30 30 7650 3150 7650 3180 +-6 +6 7155 5805 7245 5895 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 7200 5850 30 30 7200 5850 7200 5880 +-6 +6 8505 5805 8595 5895 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 8550 5850 30 30 8550 5850 8550 5880 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4230 3150 5400 3150 5400 3420 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 3420 4500 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4275 4050 5400 4050 5400 3690 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 3735 4500 4050 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 3870 3150 3600 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 3825 4050 3600 4050 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 3825 4950 3600 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 4050 4500 4320 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 4590 4500 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5400 4365 5400 4005 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4275 4950 5400 4950 5400 4590 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 4950 4500 5220 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5400 5490 5400 5850 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5400 5220 5400 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5400 3150 6795 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6750 3150 6750 3960 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5400 4950 6750 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6750 4230 6750 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 5400 4050 6300 4050 6300 4905 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6705 3150 7650 3150 7650 3960 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6750 4950 7650 4950 7650 4185 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4230 5850 4500 5850 4500 5490 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 3825 5850 3600 5850 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 5850 5400 5850 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6300 5085 7200 5085 7200 5220 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6300 4995 6300 5220 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6300 5490 6300 5850 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 5400 5850 7200 5850 7200 5490 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 7605 3150 8550 3150 8550 4275 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 7200 5850 8550 5850 8550 4590 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 8505 3150 9450 3150 9450 4275 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 8550 5850 9450 5850 9450 4590 +4 0 0 50 -1 0 12 0.0000 4 135 480 5625 3645 LED2\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 4725 3645 LED1\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 3105 3195 Pin1\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 3105 4095 Pin2\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 3105 4995 Pin3\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 4725 4545 LED3\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 5625 4545 LED4\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 7875 4140 LED8\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 6975 4140 LED7\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 3105 5895 Pin4\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 5625 5445 LED6\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 4725 5445 LED5\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 6525 5445 LED9\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 7425 5445 LED10\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 8730 4500 LED11\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 9630 4500 LED12\001 diff --git a/libraries/BlinkLED/examples/Charlieplex/charlieplex4pin.png b/libraries/BlinkLED/examples/Charlieplex/charlieplex4pin.png new file mode 100644 index 00000000..9bbaa264 Binary files /dev/null and b/libraries/BlinkLED/examples/Charlieplex/charlieplex4pin.png differ diff --git a/libraries/BlinkLED/examples/Charlieplex/charlieplex5pin.fig b/libraries/BlinkLED/examples/Charlieplex/charlieplex5pin.fig new file mode 100644 index 00000000..c50adb63 --- /dev/null +++ b/libraries/BlinkLED/examples/Charlieplex/charlieplex5pin.fig @@ -0,0 +1,649 @@ +#FIG 3.2 Produced by xfig version 3.2.5b +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 4500.000 4950.000 4500 4905 4545 4950 4500 4995 +5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 4950.000 4500.000 4905 4500 4950 4455 4995 4500 +5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 5850.000 4500.000 5805 4500 5850 4455 5895 4500 +5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 6750.000 4500.000 6750 4455 6795 4500 6750 4545 +5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 6750.000 4950.000 6750 4905 6795 4950 6750 4995 +5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 6300.000 5625.000 6255 5625 6300 5580 6345 5625 +6 2025 3105 2475 3195 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2120 3150 2025 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 2385 3150 2358 3110 2304 3190 2250 3110 2196 3190 2142 3110 + 2115 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2475 3150 2380 3150 +-6 +6 2610 3375 2835 3735 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 2700 3600 2745 3510 2655 3510 2700 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2700 3600 2700 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2645 3600 2755 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2835 3555 2790 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 2835 3600 2835 3555 2790 3555 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 2835 3510 2835 3465 2790 3465 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2835 3465 2790 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2700 3375 2700 3510 +-6 +6 2025 4005 2475 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2120 4050 2025 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 2385 4050 2358 4010 2304 4090 2250 4010 2196 4090 2142 4010 + 2115 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2475 4050 2380 4050 +-6 +6 2655 3105 2745 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 2700 3150 30 30 2700 3150 2700 3180 +-6 +6 2655 4005 2745 4095 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 2700 4050 30 30 2700 4050 2700 4080 +-6 +6 2025 4905 2475 4995 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2120 4950 2025 4950 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 2385 4950 2358 4910 2304 4990 2250 4910 2196 4990 2142 4910 + 2115 4950 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2475 4950 2380 4950 +-6 +6 2610 4275 2835 4635 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 2700 4500 2745 4410 2655 4410 2700 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2700 4500 2700 4635 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2645 4500 2755 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2835 4455 2790 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 2835 4500 2835 4455 2790 4455 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 2835 4410 2835 4365 2790 4365 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2835 4365 2790 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2700 4275 2700 4410 +-6 +6 3510 3375 3735 3735 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 3600 3510 3645 3600 3555 3600 3600 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3600 3510 3600 3375 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3545 3510 3655 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3735 3555 3690 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 3735 3510 3735 3555 3690 3555 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 3735 3600 3735 3645 3690 3645 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3735 3645 3690 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3600 3735 3600 3600 +-6 +6 3510 4275 3735 4635 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 3600 4410 3645 4500 3555 4500 3600 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3600 4410 3600 4275 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3545 4410 3655 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3735 4455 3690 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 3735 4410 3735 4455 3690 4455 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 3735 4500 3735 4545 3690 4545 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3735 4545 3690 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3600 4635 3600 4500 +-6 +6 3555 3105 3645 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 3600 3150 30 30 3600 3150 3600 3180 +-6 +6 3555 4905 3645 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 3600 4950 30 30 3600 4950 3600 4980 +-6 +6 2655 4905 2745 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 2700 4950 30 30 2700 4950 2700 4980 +-6 +6 3555 4005 3645 4095 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 3600 4050 30 30 3600 4050 3600 4080 +-6 +6 4860 3915 5085 4275 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 4950 4140 4995 4050 4905 4050 4950 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4950 4140 4950 4275 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4895 4140 5005 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5085 4095 5040 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5085 4140 5085 4095 5040 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5085 4050 5085 4005 5040 4005 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5085 4005 5040 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4950 3915 4950 4050 +-6 +6 5760 3915 5985 4275 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 5850 4050 5895 4140 5805 4140 5850 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5850 4050 5850 3915 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5795 4050 5905 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 4095 5940 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5985 4050 5985 4095 5940 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5985 4140 5985 4185 5940 4185 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5985 4185 5940 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5850 4275 5850 4140 +-6 +6 4905 3105 4995 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4950 3150 30 30 4950 3150 4950 3180 +-6 +6 4905 4905 4995 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4950 4950 30 30 4950 4950 4950 4980 +-6 +6 2610 5175 2835 5535 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 2700 5400 2745 5310 2655 5310 2700 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2700 5400 2700 5535 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2645 5400 2755 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2835 5355 2790 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 2835 5400 2835 5355 2790 5355 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 2835 5310 2835 5265 2790 5265 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2835 5265 2790 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2700 5175 2700 5310 +-6 +6 2025 5805 2475 5895 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2120 5850 2025 5850 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 2385 5850 2358 5810 2304 5890 2250 5810 2196 5890 2142 5810 + 2115 5850 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2475 5850 2380 5850 +-6 +6 2655 5805 2745 5895 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 2700 5850 30 30 2700 5850 2700 5880 +-6 +6 3510 5175 3735 5535 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 3600 5310 3645 5400 3555 5400 3600 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3600 5310 3600 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3545 5310 3655 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3735 5355 3690 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 3735 5310 3735 5355 3690 5355 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 3735 5400 3735 5445 3690 5445 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3735 5445 3690 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3600 5535 3600 5400 +-6 +6 3555 5805 3645 5895 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 3600 5850 30 30 3600 5850 3600 5880 +-6 +6 4455 5040 4545 5130 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 5085 30 30 4500 5085 4500 5115 +-6 +6 4410 5175 4635 5535 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 4500 5400 4545 5310 4455 5310 4500 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 5400 4500 5535 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4445 5400 4555 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 5355 4590 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 5400 4635 5355 4590 5355 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 5310 4635 5265 4590 5265 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 5265 4590 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 5175 4500 5310 +-6 +6 4455 5805 4545 5895 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 5850 30 30 4500 5850 4500 5880 +-6 +6 5310 5175 5535 5535 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 5400 5310 5445 5400 5355 5400 5400 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 5310 5400 5175 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5345 5310 5455 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 5355 5490 5310 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 5310 5535 5355 5490 5355 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 5400 5535 5445 5490 5445 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 5445 5490 5400 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 5535 5400 5400 +-6 +6 2025 6705 2475 6795 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2120 6750 2025 6750 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 2385 6750 2358 6710 2304 6790 2250 6710 2196 6790 2142 6710 + 2115 6750 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2475 6750 2380 6750 +-6 +6 2655 6705 2745 6795 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 2700 6750 30 30 2700 6750 2700 6780 +-6 +6 2610 6075 2835 6435 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 2700 6300 2745 6210 2655 6210 2700 6300 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2700 6300 2700 6435 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2645 6300 2755 6300 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2835 6255 2790 6300 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 2835 6300 2835 6255 2790 6255 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 2835 6210 2835 6165 2790 6165 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2835 6165 2790 6210 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2700 6075 2700 6210 +-6 +6 3510 6075 3735 6435 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 3600 6210 3645 6300 3555 6300 3600 6210 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3600 6210 3600 6075 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3545 6210 3655 6210 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3735 6255 3690 6210 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 3735 6210 3735 6255 3690 6255 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 3735 6300 3735 6345 3690 6345 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3735 6345 3690 6300 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3600 6435 3600 6300 +-6 +6 7110 5715 7335 6075 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 7200 5850 7245 5940 7155 5940 7200 5850 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7200 5850 7200 5715 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7145 5850 7255 5850 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7335 5895 7290 5850 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 7335 5850 7335 5895 7290 5895 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 7335 5940 7335 5985 7290 5985 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7335 5985 7290 5940 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7200 6075 7200 5940 +-6 +6 6210 5715 6435 6075 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6300 5940 6345 5850 6255 5850 6300 5940 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6300 5940 6300 6075 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6245 5940 6355 5940 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 5895 6390 5940 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6435 5940 6435 5895 6390 5895 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6435 5850 6435 5805 6390 5805 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 5805 6390 5850 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6300 5715 6300 5850 +-6 +6 5805 4905 5895 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5850 4950 30 30 5850 4950 5850 4980 +-6 +6 6255 4905 6345 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 6300 4950 30 30 6300 4950 6300 4980 +-6 +6 6255 6705 6345 6795 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 6300 6750 30 30 6300 6750 6300 6780 +-6 +6 3555 6705 3645 6795 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 3600 6750 30 30 3600 6750 3600 6780 +-6 +6 8010 5715 8235 6075 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 8100 5940 8145 5850 8055 5850 8100 5940 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 8100 5940 8100 6075 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 8045 5940 8155 5940 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 8235 5895 8190 5940 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 8235 5940 8235 5895 8190 5895 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 8235 5850 8235 5805 8190 5805 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 8235 5805 8190 5850 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 8100 5715 8100 5850 +-6 +6 8910 5715 9135 6075 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 9000 5850 9045 5940 8955 5940 9000 5850 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9000 5850 9000 5715 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 8945 5850 9055 5850 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9135 5895 9090 5850 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 9135 5850 9135 5895 9090 5895 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 9135 5940 9135 5985 9090 5985 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9135 5985 9090 5940 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9000 6075 9000 5940 +-6 +6 4455 4455 4545 4545 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 4500 30 30 4500 4500 4500 4530 +-6 +6 8055 4455 8145 4545 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 8100 4500 30 30 8100 4500 8100 4530 +-6 +6 7155 6705 7245 6795 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 7200 6750 30 30 7200 6750 7200 6780 +-6 +6 8055 6705 8145 6795 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 8100 6750 30 30 8100 6750 8100 6780 +-6 +6 6660 3915 6885 4275 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6750 4140 6795 4050 6705 4050 6750 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6750 4140 6750 4275 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6695 4140 6805 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6885 4095 6840 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6885 4140 6885 4095 6840 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6885 4050 6885 4005 6840 4005 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6885 4005 6840 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6750 3915 6750 4050 +-6 +6 7560 3915 7785 4275 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 7650 4050 7695 4140 7605 4140 7650 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7650 4050 7650 3915 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7595 4050 7705 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7785 4095 7740 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 7785 4050 7785 4095 7740 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 7785 4140 7785 4185 7740 4185 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7785 4185 7740 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7650 4275 7650 4140 +-6 +6 5355 5805 5445 5895 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5400 5850 30 30 5400 5850 5400 5880 +-6 +6 6705 4320 6795 4410 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 6750 4365 30 30 6750 4365 6750 4395 +-6 +6 6705 3105 6795 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 6750 3150 30 30 6750 3150 6750 3180 +-6 +6 5805 3105 5895 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5850 3150 30 30 5850 3150 5850 3180 +-6 +6 9810 4725 10035 5085 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 9900 4950 9945 4860 9855 4860 9900 4950 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9900 4950 9900 5085 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9845 4950 9955 4950 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 10035 4905 9990 4950 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 10035 4950 10035 4905 9990 4905 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 10035 4860 10035 4815 9990 4815 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 10035 4815 9990 4860 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9900 4725 9900 4860 +-6 +6 10710 4725 10935 5085 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 10800 4860 10845 4950 10755 4950 10800 4860 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 10800 4860 10800 4725 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 10745 4860 10855 4860 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 10935 4905 10890 4860 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 10935 4860 10935 4905 10890 4905 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 10935 4950 10935 4995 10890 4995 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 10935 4995 10890 4950 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 10800 5085 10800 4950 +-6 +6 9855 3105 9945 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 9900 3150 30 30 9900 3150 9900 3180 +-6 +6 8955 6705 9045 6795 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 9000 6750 30 30 9000 6750 9000 6780 +-6 +6 9855 6705 9945 6795 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 9900 6750 30 30 9900 6750 9900 6780 +-6 +6 7605 3105 7695 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 7650 3150 30 30 7650 3150 7650 3180 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 2430 3150 3600 3150 3600 3420 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2700 3420 2700 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 2475 4050 3600 4050 3600 3690 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2700 3735 2700 4050 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 2070 3150 1800 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 2025 4050 1800 4050 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 2025 4950 1800 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2700 4050 2700 4320 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2700 4590 2700 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3600 4365 3600 4005 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 2475 4950 3600 4950 3600 4590 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2700 4950 2700 5220 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3600 5490 3600 5850 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3600 5220 3600 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3600 3150 4995 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4950 3150 4950 3960 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3600 4950 4950 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4950 4230 4950 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 3600 4050 4500 4050 4500 4905 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4905 3150 5850 3150 5850 3960 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4950 4950 5850 4950 5850 4185 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 2430 5850 2700 5850 2700 5490 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 2025 5850 1800 5850 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2700 5850 3600 5850 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4500 5085 5400 5085 5400 5220 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 4995 4500 5220 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 5490 4500 5850 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 3600 5850 5400 5850 5400 5490 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 8 1 1.00 60.00 120.00 + 2025 6750 1800 6750 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 2430 6750 2700 6750 2700 6390 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2700 6750 3600 6750 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3600 6390 3600 6750 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 2700 5850 2700 6120 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3600 5850 3600 6120 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 5760 4950 7200 4950 7200 5715 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6300 5715 6300 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 3600 6750 7200 6750 7200 6030 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6300 6030 6300 6750 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 4500 4905 4500 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4995 4500 5805 4500 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 5895 4500 8100 4500 8100 5760 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 8055 4500 9000 4500 9000 5760 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 8100 6075 8100 6750 7155 6750 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 8010 6750 9000 6750 9000 6030 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 + 5400 5850 6075 5850 6075 5625 6255 5625 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6345 5625 6750 5625 6750 4995 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6750 4905 6750 4545 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6750 4455 6750 4230 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6750 4365 7650 4365 7650 4230 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 5850 3150 6750 3150 6750 3915 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6750 3150 7650 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 7650 3150 7650 3960 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 7605 3150 10800 3150 10800 4770 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 9900 4770 9900 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 8955 6750 10800 6750 10800 5085 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 9900 5040 9900 6750 +4 0 0 50 -1 0 12 0.0000 4 135 480 3825 3645 LED2\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 2925 3645 LED1\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 1305 3195 Pin1\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 1305 4095 Pin2\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 1305 4995 Pin3\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 2925 4545 LED3\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 3825 4545 LED4\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 6075 4140 LED10\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 5175 4140 LED9\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 1305 5895 Pin4\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 3825 5445 LED6\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 2925 5445 LED5\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 4725 5445 LED11\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 5625 5445 LED12\001 +4 0 0 50 -1 0 12 0.0000 4 135 375 1305 6795 Pin5\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 2925 6345 LED7\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 3825 6345 LED8\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 6480 5940 LED13\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 7380 5940 LED14\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 8280 5940 LED17\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 9180 5940 LED18\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 6930 4140 LED15\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 7830 4140 LED16\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 10080 4995 LED19\001 +4 0 0 50 -1 0 12 0.0000 4 135 585 10980 4995 LED20\001 diff --git a/libraries/BlinkLED/examples/Charlieplex/charlieplex5pin.png b/libraries/BlinkLED/examples/Charlieplex/charlieplex5pin.png new file mode 100644 index 00000000..05bc4bd1 Binary files /dev/null and b/libraries/BlinkLED/examples/Charlieplex/charlieplex5pin.png differ diff --git a/libraries/BlinkLED/examples/Charlieplex/charlieplexeg.fig b/libraries/BlinkLED/examples/Charlieplex/charlieplexeg.fig new file mode 100644 index 00000000..6e91d7e3 --- /dev/null +++ b/libraries/BlinkLED/examples/Charlieplex/charlieplexeg.fig @@ -0,0 +1,215 @@ +#FIG 3.2 Produced by xfig version 3.2.5b +Landscape +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +6 3825 3105 4275 3195 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3920 3150 3825 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 4185 3150 4158 3110 4104 3190 4050 3110 3996 3190 3942 3110 + 3915 3150 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4275 3150 4180 3150 +-6 +6 4410 3375 4635 3735 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 4500 3600 4545 3510 4455 3510 4500 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 3600 4500 3735 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4445 3600 4555 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 3555 4590 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 3600 4635 3555 4590 3555 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 3510 4635 3465 4590 3465 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 3465 4590 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 3375 4500 3510 +-6 +6 3825 4005 4275 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3920 4050 3825 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 4185 4050 4158 4010 4104 4090 4050 4010 3996 4090 3942 4010 + 3915 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4275 4050 4180 4050 +-6 +6 4455 3105 4545 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 3150 30 30 4500 3150 4500 3180 +-6 +6 4455 4005 4545 4095 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 4050 30 30 4500 4050 4500 4080 +-6 +6 3825 4905 4275 4995 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3920 4950 3825 4950 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 7 + 4185 4950 4158 4910 4104 4990 4050 4910 3996 4990 3942 4910 + 3915 4950 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4275 4950 4180 4950 +-6 +6 4410 4275 4635 4635 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 4500 4500 4545 4410 4455 4410 4500 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 4500 4500 4635 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4445 4500 4555 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 4455 4590 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 4500 4635 4455 4590 4455 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4635 4410 4635 4365 4590 4365 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4635 4365 4590 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4500 4275 4500 4410 +-6 +6 6210 3915 6435 4275 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 6300 4140 6345 4050 6255 4050 6300 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6300 4140 6300 4275 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6245 4140 6355 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 4095 6390 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6435 4140 6435 4095 6390 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 6435 4050 6435 4005 6390 4005 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6435 4005 6390 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6300 3915 6300 4050 +-6 +6 5310 3375 5535 3735 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 5400 3510 5445 3600 5355 3600 5400 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 3510 5400 3375 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5345 3510 5455 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 3555 5490 3510 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 3510 5535 3555 5490 3555 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 3600 5535 3645 5490 3645 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 3645 5490 3600 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 3735 5400 3600 +-6 +6 5310 4275 5535 4635 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 5400 4410 5445 4500 5355 4500 5400 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 4410 5400 4275 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5345 4410 5455 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 4455 5490 4410 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 4410 5535 4455 5490 4455 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 5535 4500 5535 4545 5490 4545 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5535 4545 5490 4500 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 4635 5400 4500 +-6 +6 7110 3915 7335 4275 +2 1 0 1 0 -1 0 0 20 0.000 0 0 -1 0 0 4 + 7200 4050 7245 4140 7155 4140 7200 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7200 4050 7200 3915 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7145 4050 7255 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7335 4095 7290 4050 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 7335 4050 7335 4095 7290 4095 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 7335 4140 7335 4185 7290 4185 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7335 4185 7290 4140 +2 1 0 1 0 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 7200 4275 7200 4140 +-6 +6 5355 3105 5445 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5400 3150 30 30 5400 3150 5400 3180 +-6 +6 6255 3105 6345 3195 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 6300 3150 30 30 6300 3150 6300 3180 +-6 +6 6255 4905 6345 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 6300 4950 30 30 6300 4950 6300 4980 +-6 +6 5355 4905 5445 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5400 4950 30 30 5400 4950 5400 4980 +-6 +6 4455 4905 4545 4995 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 4500 4950 30 30 4500 4950 4500 4980 +-6 +6 5355 4005 5445 4095 +1 3 0 1 0 -1 0 0 20 0.000 1 0.0000 5400 4050 30 30 5400 4050 5400 4080 +-6 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4230 3150 5400 3150 5400 3420 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 3420 4500 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4275 4050 5400 4050 5400 3690 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 3735 4500 4050 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3870 3150 3600 3150 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3825 4050 3600 4050 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3825 4950 3600 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 4050 4500 4320 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4500 4590 4500 4950 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5400 4365 5400 4005 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 4275 4950 5400 4950 5400 4590 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 5400 3150 6300 3150 6300 3960 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6255 3150 7200 3150 7200 3960 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 5355 4950 6300 4950 6300 4230 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 + 6300 4950 7200 4950 7200 4185 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 1575 2475 3600 2475 3600 5625 1575 5625 1575 2475 +4 0 0 50 -1 0 12 0.0000 4 135 480 5625 3645 LED2\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 4725 3645 LED1\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 4725 4545 LED3\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 5625 4545 LED4\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 7425 4140 LED6\001 +4 0 0 50 -1 0 12 0.0000 4 135 480 6525 4140 LED5\001 +4 0 0 50 -1 0 12 0.0000 4 135 450 3825 3915 120R\001 +4 0 0 50 -1 0 12 0.0000 4 135 450 3825 4815 120R\001 +4 0 0 50 -1 0 12 0.0000 4 135 450 3825 3015 120R\001 +4 0 0 50 -1 0 12 0.0000 4 135 240 3240 3195 D9\001 +4 0 0 50 -1 0 12 0.0000 4 135 345 3195 4095 D10\001 +4 0 0 50 -1 0 12 0.0000 4 135 345 3195 4995 D11\001 +4 0 0 50 -1 0 12 0.0000 4 135 345 2205 4185 Uno\001 +4 0 0 50 -1 0 12 0.0000 4 135 675 2070 3915 Arduino\001 +4 0 0 50 -1 0 12 0.0000 4 135 1605 4590 5355 6 x 3mm Red LED's\001 diff --git a/libraries/BlinkLED/examples/Charlieplex/charlieplexeg.png b/libraries/BlinkLED/examples/Charlieplex/charlieplexeg.png new file mode 100644 index 00000000..48772ac8 Binary files /dev/null and b/libraries/BlinkLED/examples/Charlieplex/charlieplexeg.png differ diff --git a/libraries/BlinkLED/examples/CharlieplexChase/CharlieplexChase.pde b/libraries/BlinkLED/examples/CharlieplexChase/CharlieplexChase.pde new file mode 100644 index 00000000..ee899de2 --- /dev/null +++ b/libraries/BlinkLED/examples/CharlieplexChase/CharlieplexChase.pde @@ -0,0 +1,36 @@ +/* This example is placed into the public domain */ + +#include + +byte pins[3] = {9, 10, 11}; +Charlieplex charlie(pins, sizeof(pins)); + +int previous = 1; +int current = 0; +int step = 1; +unsigned long lastTime; + +void setup() { + lastTime = millis(); + charlie.setLed(current, true); + charlie.setPwmLed(previous, 64); +} + +void loop() { + if ((millis() - lastTime) >= 100) { + charlie.setLed(previous, false); + charlie.setPwmLed(current, 64); + previous = current; + current += step; + if (current < 0) { + current = 1; + step = 1; + } else if (current >= charlie.count()) { + current = charlie.count() - 2; + step = -1; + } + charlie.setLed(current, true); + lastTime += 100; + } + charlie.loop(); +} diff --git a/libraries/BlinkLED/keywords.txt b/libraries/BlinkLED/keywords.txt index 574453aa..9e23dc9e 100644 --- a/libraries/BlinkLED/keywords.txt +++ b/libraries/BlinkLED/keywords.txt @@ -1,4 +1,5 @@ BlinkLED KEYWORD1 +Charlieplex KEYWORD1 ChaseLEDs KEYWORD1 onTime KEYWORD2 @@ -15,3 +16,12 @@ isPaused KEYWORD2 advanceTime KEYWORD2 setAdvanceTime KEYWORD2 previousPin KEYWORD2 + +count KEYWORD2 +led KEYWORD2 +setLed KEYWORD2 +pwmLed KEYWORD2 +setPwmLed KEYWORD2 +holdTime KEYWORD2 +setHoldTime KEYWORD2 +refresh KEYWORD2