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 Pins | Number of LED's |
+ * 2 | 2 |
+ * 3 | 6 |
+ * 4 | 12 |
+ * 5 | 20 |
+ * 6 | 30 |
+ * 7 | 42 |
+ * 8 | 56 |
+ * 9 | 72 |
+ * 10 | 90 |
+ * n | n * (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 Pins | Number of LED's |
+ * 2 | 2 |
+ * 3 | 6 |
+ * 4 | 12 |
+ * 5 | 20 |
+ * 6 | 30 |
+ * 7 | 42 |
+ * 8 | 56 |
+ * 9 | 72 |
+ * 10 | 90 |
+ * n | n * (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