Compare commits

...

6 Commits

21 changed files with 846 additions and 128 deletions

View File

@ -5,68 +5,36 @@
using namespace admux;
Button::Button(uint8_t vbutton) {
Button::Button(uint8_t vbutton, Reader* reader) {
this->vbutton = vbutton;
this->reader = reader;
}
void Button::ReleaseButtons(Joystick* js) {
js->ReleaseButton(vbutton);
}
// TODO: make analog_only work... how to handle that with debouncer?
SwitchButton::SwitchButton(uint8_t pin, uint8_t vbutton, bool pullup, Mux* mux, bool analog_only) : Button(vbutton) {
this->mux = mux;
uint8_t mode = INPUT;
if (pullup) {
this->inverted = true;
mode = INPUT_PULLUP;
}
if (mux == NULL) this->bouncer.attach(pin, mode);
else {
this->bouncer.attach(mux->signalPin().pin, mode);
this->channel_id = pin;
}
}
bool SwitchButton::BouncerUpdate() {
if (mux != NULL) {
mux->channel(channel_id);
delayMicroseconds(500);
}
return bouncer.update();
}
bool SwitchButton::On() {
bool state = bouncer.rose();
if (inverted) state = bouncer.fell();
return state;
}
PassthruButton::PassthruButton(uint8_t pin, uint8_t vbutton, bool pullup, Mux* mux, bool analog_only) : SwitchButton(pin, vbutton, pullup, mux, analog_only) {
PassthruButton::PassthruButton(uint8_t vbutton, Reader* reader) : Button(vbutton, reader) {
this->type = BUTTON_PASSTHRU;
}
bool PassthruButton::Update(Joystick* js) {
if (!BouncerUpdate()) return false;
if (On()) js->PressButton(vbutton);
if (!reader->Update()) return false;
if (reader->On()) js->PressButton(vbutton);
else js->ReleaseButton(vbutton);
return true;
}
LatchedButton::LatchedButton(uint8_t pin, uint8_t vbutton, bool pullup, Mux* mux, bool analog_only) : SwitchButton(pin, vbutton, pullup, mux, analog_only) {
LatchedButton::LatchedButton(uint8_t vbutton, Reader* reader) : Button(vbutton, reader) {
this->type = BUTTON_LATCHED_MOMENTARY;
this->pressed = false;
}
bool LatchedButton::Update(Joystick* js) {
if (!BouncerUpdate()) return false;
if (!reader->Update()) return false;
if (On()) {
if (reader->On()) {
if (!pressed) {
js->PressButton(vbutton);
pressed = true;
@ -80,7 +48,7 @@ bool LatchedButton::Update(Joystick* js) {
}
PulsedButton::PulsedButton(uint8_t pin, uint8_t vbutton, bool double_action, bool split, bool pullup, Mux* mux, bool analog_only) : SwitchButton(pin, vbutton, pullup, mux, analog_only) {
PulsedButton::PulsedButton(uint8_t vbutton, Reader* reader, bool double_action, bool split) : Button(vbutton, reader) {
this->release_time1 = 0;
this->release_time2 = 0;
if (double_action) {
@ -106,18 +74,18 @@ bool PulsedButton::Update(Joystick* js) {
release_time2 = 0;
}
if (!BouncerUpdate()) return false;
if (!reader->Update()) return false;
switch(type) {
case BUTTON_PULSED:
if (On()) js->PressButton(vbutton);
if (reader->On()) js->PressButton(vbutton);
break;
case BUTTON_PULSED_DOUBLE_ACTION:
js->PressButton(vbutton);
release_time1 = millis() + 250;
break;
case BUTTON_PULSED_DOUBLE_ACTION_SPLIT:
if (On()) {
if (reader->On()) {
js->PressButton(vbutton);
release_time1 = millis() + 250;
}
@ -131,14 +99,8 @@ bool PulsedButton::Update(Joystick* js) {
return true;
}
void PulsedButton::ReleaseButtons(Joystick* js) {
Button::ReleaseButtons(js);
if (type == BUTTON_PULSED_DOUBLE_ACTION_SPLIT) js->ReleaseButton(vbutton2);
}
EncoderButton::EncoderButton(uint8_t pin1, uint8_t pin2, uint8_t vbutton) : Button(vbutton) {
EncoderButton::EncoderButton(uint8_t pin1, uint8_t pin2, uint8_t vbutton) : Button(vbutton, NULL) {
this->type = ENCODER_PULSED_SPLIT;
this->vbutton2 = vbutton + 1;
this->encoder = new Encoder(pin1, pin2);
@ -173,8 +135,3 @@ bool EncoderButton::Update(Joystick* js) {
last_value = new_value;
return changed;
}
void EncoderButton::ReleaseButtons(Joystick* js) {
Button::ReleaseButtons(js);
js->ReleaseButton(vbutton2);
}

View File

@ -2,8 +2,7 @@
#define _BUTTON_H_
#include <Encoder.h>
#include <Mux.h>
#include <Bounce2.h>
#include "Reader.h"
using namespace admux;
@ -24,53 +23,35 @@ enum ButtonType {
// * an update method.
class Button {
public:
Button(uint8_t vbutton);
Button(uint8_t vbutton, Reader* reader);
virtual bool Update(Joystick* js) = 0;
virtual void ReleaseButtons(Joystick* js);
ButtonType type;
protected:
uint8_t vbutton;
Reader *reader;
};
// An abstract class for a momentary/pushbutton or toggle switch. Special properties:
// * needs to be explicitly debounced
// * may use the microcontroller's built-in pullup resistor mode to eliminate noise
// * may be attached to a multiplexer. In this case, the `pin` value will be treated as a multiplexer channel,
// and the multiplexer logic will be automatically invoked by Update()
class SwitchButton : public Button {
class PassthruButton : public Button {
public:
SwitchButton(uint8_t pin, uint8_t vbutton, bool pullup, Mux* mux, bool analog_only);
bool BouncerUpdate(); // returns true if the pin's status has changed
bool On();
protected:
Bounce bouncer;
bool inverted;
Mux *mux;
uint8_t channel_id;
};
class PassthruButton : public SwitchButton {
public:
PassthruButton(uint8_t pin, uint8_t vbutton, bool pullup = true, Mux* mux = NULL, bool analog_only = false);
PassthruButton(uint8_t vbutton, Reader* reader);
bool Update(Joystick* js);
};
class LatchedButton : public SwitchButton {
class LatchedButton : public Button {
public:
LatchedButton(uint8_t pin, uint8_t vbutton, bool pullup = true, Mux* mux = NULL, bool analog_only = false);
LatchedButton(uint8_t vbutton, Reader* reader);
bool Update(Joystick* js);
protected:
bool pressed;
};
class PulsedButton : public SwitchButton {
class PulsedButton : public Button {
public:
PulsedButton(uint8_t pin, uint8_t vbutton, bool double_action = false, bool split = false, bool pullup = true, Mux* mux = NULL, bool analog_only = false);
PulsedButton(uint8_t vbutton, Reader* reader, bool double_action = false, bool split = false);
bool Update(Joystick* js);
void ReleaseButtons(Joystick* js);
protected:
bool double_action;
@ -84,7 +65,6 @@ class EncoderButton : public Button {
public:
EncoderButton(uint8_t pin1, uint8_t pin2, uint8_t vbutton);
bool Update(Joystick* js);
void ReleaseButtons(Joystick* js);
protected:
Encoder* encoder;

View File

@ -1,5 +1,6 @@
#include "Joystick.h"
#include "Button.h"
#include "Reader.h"
#include <Mux.h>
#include <Arduino.h>
#include <stdio.h>
@ -37,38 +38,19 @@ Joystick::Joystick(bool debug) {
void Joystick::Init() {
Serial.begin(115200);
delay(100);
if (_debug) Serial.println("Joystick serial communication initialized.");
}
void Joystick::AddButton(uint8_t pin, ButtonType type, bool pullup, Mux* mux, bool analog_only) {
Button *button;
switch (type) {
case BUTTON_PASSTHRU:
button = new PassthruButton(pin, _virtual_buttons, pullup, mux, analog_only);
_virtual_buttons++;
break;
case BUTTON_PULSED:
button = new PulsedButton(pin, _virtual_buttons, false, false, pullup, mux, analog_only);
_virtual_buttons++;
break;
case BUTTON_PULSED_DOUBLE_ACTION:
button = new PulsedButton(pin, _virtual_buttons, true, false, pullup, mux, analog_only);
_virtual_buttons++;
break;
case BUTTON_PULSED_DOUBLE_ACTION_SPLIT:
button = new PulsedButton(pin, _virtual_buttons, true, true, pullup, mux, analog_only);
_virtual_buttons += 2;
break;
default:
return;
void Joystick::AddButton(uint8_t pin, ButtonType type, bool pullup) {
_addButton(type, new DirectReader(pin, pullup));
}
_buttons[_num_buttons] = button;
_num_buttons++;
if (_debug) {
char buffer[100];
sprintf(buffer, "Added button %d of type %d", _num_buttons - 1, button->type);
Serial.println(buffer);
void Joystick::AddMuxButton(uint8_t channel, Mux* mux, ButtonType type, bool pullup) {
_addButton(type, new MuxReader(channel, mux, pullup));
}
void Joystick::AddMatrixButton(uint8_t row, uint8_t col, Matrix* matrix, ButtonType type, bool pullup) {
_addButton(type, new MatrixReader(row, col, matrix, pullup));
}
void Joystick::AddEncoder(uint8_t pin1, uint8_t pin2, ButtonType type) {
@ -87,6 +69,8 @@ void Joystick::AddEncoder(uint8_t pin1, uint8_t pin2, ButtonType type) {
Serial.println(type);
}
}
if (_debug) Serial.println("Added an encoder.");
}
void Joystick::AddAxis(uint8_t pin) {
@ -164,3 +148,39 @@ void Joystick::Write() {
void Joystick::_UpdateAxis(uint8_t index) {
if (_debug) Serial.println("STUB: Joystick::_UpdateAxis");
}
void Joystick::_addButton(ButtonType type, Reader* reader) {
Button* button;
switch (type) {
case BUTTON_PASSTHRU:
button = new PassthruButton(_virtual_buttons, reader);
_virtual_buttons++;
break;
case BUTTON_PULSED:
button = new PulsedButton(_virtual_buttons, reader, false, false);
_virtual_buttons++;
break;
case BUTTON_PULSED_DOUBLE_ACTION:
button = new PulsedButton(_virtual_buttons, reader, true, false);
_virtual_buttons++;
break;
case BUTTON_PULSED_DOUBLE_ACTION_SPLIT:
button = new PulsedButton(_virtual_buttons, reader, true, true);
_virtual_buttons += 2;
break;
case BUTTON_LATCHED_MOMENTARY:
button = new LatchedButton(_virtual_buttons, reader);
_virtual_buttons++;
break;
default:
return;
}
_buttons[_num_buttons] = button;
_num_buttons++;
if (_debug) {
char buffer[100];
sprintf(buffer, "Added button %d of type %d", _num_buttons - 1, button->type);
Serial.println(buffer);
}
}

View File

@ -2,8 +2,8 @@
#define _JOYSTICK_H_
#include "Button.h"
#include "Matrix.h"
#include <Arduino.h>
#include <Bounce2.h>
#include <Mux.h>
using namespace admux;
@ -33,13 +33,20 @@ class Joystick {
void Init();
void Update();
// Add a button to the joystick.
// Button types are documented in the ButtonType enum.
// If `pullup` is true, your button should connect the pin to ground. (also be sure that your board supports INPUT_PULLUP on that pin)
// If `pullup` is false, your button should connect the pin to VCC.
// Setting `analogOnly` to true indicates your button *must* be read with analog code, such as the A6 and A7 pins
// on the Arduino Nano.
void AddButton(uint8_t pin, ButtonType type, bool pullup=true, Mux* mux=NULL, bool analog_only=false);
// Use these functions to add a button to the joystick.
// Button types are documented in the ButtonType enum. See Button.h for details.
// If 'pullup' is true, your button should connect the pin to ground. (also be sure that your board supports INPUT_PULLUP on that pin)
// If 'pullup' is false, your button should connect the pin to VCC.
// Add a button connected directly to a pin on the microcontroller.
void AddButton(uint8_t pin, ButtonType type, bool pullup=true);
// Add a button connected to a channel on a Multiplexer.
// FIXME: This doesn't currently work!
void AddMuxButton(uint8_t channel, Mux* mux, ButtonType type, bool pullup=true);
// Add a button connected to a scan matrix.
void AddMatrixButton(uint8_t row, uint8_t col, Matrix* matrix, ButtonType type, bool pullup=true);
// Add a rotary encoder. ENCODER button types allow you to treat an encoder as a momentary button or an axis (TODO)
void AddEncoder(uint8_t pin1, uint8_t pin2, ButtonType type);
@ -59,6 +66,8 @@ class Joystick {
void _UpdateAxis(uint8_t index);
void _addButton(ButtonType type, Reader* reader);
Button* _buttons[JOYSTICK_NUM_BUTTONS];
uint8_t _num_buttons;
uint8_t _virtual_buttons; // a single user-defined button can have multiple virtual buttons.

33
Matrix.cpp Normal file
View File

@ -0,0 +1,33 @@
#include "Matrix.h"
Matrix::Matrix(uint8_t* columns, uint8_t num_columns, bool inverted) {
this->active_pin = 255; // sentinel value, highest possible 8-bit number
this->inverted = inverted;
for (uint8_t i = 0; i < num_columns; i++) {
pinMode(columns[i], OUTPUT);
_disable(columns[i]);
}
}
void Matrix::Activate(uint8_t pin) {
if (pin == active_pin) return;
if (active_pin != 255) {
_disable(active_pin);
}
_enable(pin);
active_pin = pin;
delayMicroseconds(10); // allow ample time for signal to propagate
}
void Matrix::_enable(uint8_t pin) {
if (inverted) digitalWrite(pin, LOW);
else digitalWrite(pin, HIGH);
}
void Matrix::_disable(uint8_t pin) {
if (inverted) digitalWrite(pin, HIGH);
else digitalWrite(pin, LOW);
}

22
Matrix.h Normal file
View File

@ -0,0 +1,22 @@
// A state-keeping class used with MatrixReader. Keeps track of which column is active,
// switches between them.
#ifndef _MATRIX_H_
#define _MATRIX_H_
#include <Arduino.h>
class Matrix {
public:
Matrix(uint8_t *columns, uint8_t num_columns, bool inverted=true);
void Activate(uint8_t column);
private:
void _enable(uint8_t pin);
void _disable(uint8_t pin);
uint8_t active_pin;
bool inverted;
};
#endif

54
Reader.cpp Normal file
View File

@ -0,0 +1,54 @@
#include "Reader.h"
Reader::Reader(bool inverted) {
this->inverted = inverted;
}
bool Reader::On() {
bool state = bouncer.rose();
if (inverted) state = bouncer.fell();
return state;
}
uint8_t Reader::getMode(bool pullup) {
if (pullup) return INPUT_PULLUP;
return INPUT;
}
DirectReader::DirectReader(uint8_t pin, bool inverted) : Reader(inverted) {
uint8_t mode = getMode(inverted);
this->bouncer.attach(pin, mode);
}
bool DirectReader::Update() {
return bouncer.update();
}
MuxReader::MuxReader(uint8_t channel, Mux* mux, bool inverted) : Reader(inverted) {
uint8_t mode = getMode(inverted);
this->bouncer.attach(mux->signalPin().pin, mode);
this->channel = channel;
}
bool MuxReader::Update() {
mux->channel(channel);
return bouncer.update();
}
MatrixReader::MatrixReader(uint8_t row, uint8_t col, Matrix* matrix, bool inverted) : Reader(inverted) {
uint8_t mode = getMode(inverted);
this->bouncer.attach(row, mode);
this->col = col;
this->matrix = matrix;
}
bool MatrixReader::Update() {
matrix->Activate(col);
bool changed = bouncer.update();
return changed;
}

65
Reader.h Normal file
View File

@ -0,0 +1,65 @@
// "Readers" represent different methods for reading the state of a pin.
// They also include debouncing logic using the Bounce2 library, when appropriate.
#ifndef _READER_H_
#define _READER_H_
#include "Matrix.h"
#include <Arduino.h>
#include <Bounce2.h>
#include <Mux.h>
using namespace admux;
// The abstract base class - a very simple interface
class Reader {
public:
Reader(bool inverted);
virtual bool Update() = 0; // should return true if the state of the pin has changed
bool On();
protected:
uint8_t getMode(bool pullup);
Bounce bouncer;
bool inverted;
};
// A standard reader; the button is connected directly to a switch
class DirectReader : public Reader {
public:
DirectReader(uint8_t pin, bool inverted = true);
bool Update();
bool On();
};
// The button is connected to a Multiplexer channel
class MuxReader : public Reader {
public:
MuxReader(uint8_t channel, Mux* mux, bool inverted = true);
bool Update();
bool On();
protected:
uint8_t channel;
Mux * mux;
};
// The button is connected via a scan matrix
// "row" should always be the input, with "col" the selecter.
class MatrixReader : public Reader {
public:
MatrixReader(uint8_t row, uint8_t col, Matrix* matrix, bool inverted = true);
bool Update();
bool On();
protected:
uint8_t col;
Matrix* matrix;
};
#endif

View File

@ -12,18 +12,22 @@ This is a library that builds and sends USB HID Joystick reports, making it easy
arduino-cli lib install "Analog-Digital Multiplexers"
2. Put the arduino-joystick directory into your Arduino libraries directory.
## Compiling and running the example code via SimulIDE
1. Run `make` from the `example` directory.
2. Load `example.simu` in SimulIDE.
3. Right-click on the Arduino component, and click "load firmware". Select the `.hex` file created in the `example/` directory.
4. Click the red `Power Circuit` icon at the top of the SimulIDE window.
## Usage
1. In your arduino sketch, add the includes:
1. In your arduino sketch, add the include:
#include <Joystick.h>
2. Create a Joystick object:
Joystick joystick(true);
3. Add buttons and axes in setup() with Joystick::AddButton(), and call Joystick::Update() in loop().
3. Add buttons and axes in `setup()` with the `Add*` functions from `Joystick.h`. Call `joystick.Update()` in your `loop()` function. Also call `joystick.Init()` during `setup()`.
4. Upload the sketch, connect to the serial monitor (at 115200 baud) and test the buttons.
5. Set the joystick's `debug` parameter to `false` and re-upload the sketch. The arduino will NOT work in joystick mode with debug set to `true`!
6. Flash the `arduino-big-joystick` firmware onto the USB Controller.
### Advanced usage: multiplexers
### Advanced usage: multiplexers, matrices
If you need more buttons than your board has pins, multiplexers (such as [this one](https://www.sparkfun.com/products/13906) and [this one](https://www.sparkfun.com/products/9056)) are a popular solution. This library supports multiplexers! To use them, you need to do some extra work.
Call the `AddMux()` method and pass it the pins the multiplexer is connected to. You'll need to `#include <Mux.h>` to access `admux::Pinset`. `AddMux()` will return a `mux_id` for subsequently passing to `AddButton()`. The `pin` parameter for all multiplexed buttons should be the same as the multiplexer's `signal_pin`.
If you need more buttons than your board has pins, this library supports keyboard-style scan matrices as well as multiplexers. **(FIXME: multiplexers aren't working yet)** See the example sketch in the `example/` directory for usage details. Note that, for matrices, the *rows* are the inputs that will be read, and the *columns* are the outputs that will sink the current. Current should flow (via diodes) from the rows to the columns. See the `example.simu` SimulIDE file for an example circuit.

107
example/example.ino Normal file
View File

@ -0,0 +1,107 @@
// An example sketch using the joystick library, demonstrating recommended usage
// of all features.
// This code loads the sketch in debug mode. Connect to the Arduino's serial port at 115200 baud to read the output.
#include <Joystick.h>
#include <Matrix.h>
#include <Mux.h>
using namespace admux;
// Always use defines to match your pins to their logical wiring
// pins 2 and 3 are attached to a rotary encoder
#define ENCODER 2,3
// these buttons are attached directly to Arduino input pins
#define BTN1 4
#define BTN2 5
#define BTN3 6
#define BTN4 7
#define BTN5 A0
// pins 8-13 are attached to a 3x3 scanning input matrix. Pins 8-10 are the row pins, 11-13 are the column pins.
#define MATRIX1 8,11
#define MATRIX2 9,11
#define MATRIX3 10,11
#define MATRIX4 8,12
#define MATRIX5 9,12
#define MATRIX6 10,12
#define MATRIX7 8,13
#define MATRIX8 9,13
#define MATRIX9 10,13
// A multiplexer is attached to pins A1-A5
#define MUX_SIG A1 // the multiplexer's signal pin is on Analog 1
#define MUX_ADDR A2,A3,A4,A5 // the multiplexer's address pins are A2-A5, in that order
// These are 3 buttons attached to the multiplexer channels
#define MUX_BTN1 0
#define MUX_BTN2 1
#define MUX_BTN3 2
bool debug = true;
Joystick js(debug);
void setup() {
js.Init();
Serial.println("Adding encoder.");
js.AddEncoder(ENCODER, ENCODER_PULSED_SPLIT);
// Different types of button programming are available. BUTTON_PASSTHRU simply passes on the button's
// real state, and will be the most common, but you can also change how the button works in software like so...
Serial.println("Adding directly connected buttons.");
// With BUTTON_PULSED, no matter how long the button stays held down, it will only send a button press for 250ms
// then deactivate until pressed again.
js.AddButton(BTN1, BUTTON_PULSED);
// BUTTON_PULSED_DOUBLE_ACTION does the same thing, but sends a *second* 250ms press when the button is deactivated
// This is great for an on-off toggle switch that should send an "event" in both directions.
js.AddButton(BTN2, BUTTON_PULSED_DOUBLE_ACTION);
// BUTTON_PULSED_DOUBLE_ACTION_SPLIT is just like the above, but it sends *different* button presses for the "on"
// and "off" states.
js.AddButton(BTN3, BUTTON_PULSED_DOUBLE_ACTION_SPLIT);
// BUTTON_LATCHED_MOMENTARY lets you turn a momentary pushbutton into a toggle switch.
// One press will "press and hold" the button. The next press releases the button.
js.AddButton(BTN4, BUTTON_LATCHED_MOMENTARY);
// This is a standard PASSTHRU button. It simply mirrors the actual state of the physical button.
js.AddButton(BTN5, BUTTON_PASSTHRU);
// One way to get more room for inputs is to use a scan matrix.
// See http://blog.komar.be/how-to-make-a-keyboard-the-matrix/ for a very detailed discussion of how these work.
// This is a 3x3 example, so we can get 9 buttons out of 6 inputs.
// For faster read results, always add buttons so that buttons with the same *column* are grouped together.
Serial.println("Adding matrix.");
uint8_t cols[] = {11, 12, 13};
Matrix* matrix = new Matrix(cols, 3);
js.AddMatrixButton(MATRIX1, matrix, BUTTON_PASSTHRU);
js.AddMatrixButton(MATRIX2, matrix, BUTTON_PASSTHRU);
js.AddMatrixButton(MATRIX3, matrix, BUTTON_PASSTHRU);
js.AddMatrixButton(MATRIX4, matrix, BUTTON_PASSTHRU);
js.AddMatrixButton(MATRIX5, matrix, BUTTON_PASSTHRU);
js.AddMatrixButton(MATRIX6, matrix, BUTTON_PASSTHRU);
js.AddMatrixButton(MATRIX7, matrix, BUTTON_PASSTHRU);
js.AddMatrixButton(MATRIX8, matrix, BUTTON_PASSTHRU);
js.AddMatrixButton(MATRIX9, matrix, BUTTON_PASSTHRU);
// another way to get more room for our inputs, this code adds a 16-channel multiplexer.
// It only attaches 3 buttons, but could attach up to channel 15.
Serial.println("Adding multiplexer.");
Mux* mux = new Mux(Pin(MUX_SIG, INPUT_PULLUP, PinType::Digital), Pinset(MUX_ADDR));
js.AddMuxButton(MUX_BTN1, mux, BUTTON_PASSTHRU);
js.AddMuxButton(MUX_BTN2, mux, BUTTON_PASSTHRU);
js.AddMuxButton(MUX_BTN3, mux, BUTTON_PASSTHRU);
Serial.println("Example joystick fully configured.");
}
void loop() {
// check all the button states and send any changes
js.Update();
}

459
example/example.simu Executable file
View File

@ -0,0 +1,459 @@
<circuit reactStep="50" Simu_Step_nS="1000" animate="1" type="simulide_0.4" Speed_per="100" noLinAcc="5" Speed_sps="1000000">
Unique Id: Ground-812:
Circuit Id: Ground-812
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-16" valLabely="0" circRot="-5.4861292803319049e+303" labelrot="0" id="Ground-812" labelx="-16" boardRot="-1000000" objectName="Ground-812" rotation="0" y="-76" boardPos="-1e+06,-1e+06" labely="8" itemtype="Ground" vflip="1" mainComp="false"/>
Unique Id: Push-809:
Circuit Id: Push-809
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-56" Poles="1" valLabely="0" circRot="0" labelrot="0" id="Push-809" labelx="-16" boardRot="-1000000" objectName="Push-809" rotation="0" Norm_Close="false" y="-116" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Node-803:
Circuit Id: Node-803
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-380" valLabely="0" circRot="nan" labelrot="0" id="Node-803" labelx="-16" boardRot="-1000000" objectName="Node-803" rotation="0" y="24" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-593:
Circuit Id: Node-593
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-432" valLabely="0" circRot="nan" labelrot="0" id="Node-593" labelx="-16" boardRot="-1000000" objectName="Node-593" rotation="0" y="16" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-590:
Circuit Id: Node-590
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-488" valLabely="0" circRot="1.0236025586772652e-306" labelrot="0" id="Node-590" labelx="-16" boardRot="-1000000" objectName="Node-590" rotation="0" y="16" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-576:
Circuit Id: Node-576
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-380" valLabely="0" circRot="nan" labelrot="0" id="Node-576" labelx="-16" boardRot="-1000000" objectName="Node-576" rotation="0" y="-88" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-570:
Circuit Id: Node-570
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-432" valLabely="0" circRot="3.6758708583790915e+228" labelrot="0" id="Node-570" labelx="-16" boardRot="-1000000" objectName="Node-570" rotation="0" y="-88" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-564:
Circuit Id: Node-564
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-488" valLabely="0" circRot="0" labelrot="0" id="Node-564" labelx="-16" boardRot="-1000000" objectName="Node-564" rotation="0" y="-84" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-192:
Circuit Id: Node-192
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-472" valLabely="0" circRot="nan" labelrot="0" id="Node-192" labelx="-16" boardRot="-1000000" objectName="Node-192" rotation="0" y="-348" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-189:
Circuit Id: Node-189
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-472" valLabely="0" circRot="-2.9681990884966918e-197" labelrot="0" id="Node-189" labelx="-16" boardRot="-1000000" objectName="Node-189" rotation="0" y="-368" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-186:
Circuit Id: Node-186
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-472" valLabely="0" circRot="1.0236025586772652e-306" labelrot="0" id="Node-186" labelx="-16" boardRot="-1000000" objectName="Node-186" rotation="0" y="-328" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Ground-180:
Circuit Id: Ground-180
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-508" valLabely="0" circRot="nan" labelrot="0" id="Ground-180" labelx="-16" boardRot="-1000000" objectName="Ground-180" rotation="0" y="-288" boardPos="-1e+06,-1e+06" labely="8" itemtype="Ground" vflip="1" mainComp="false"/>
Unique Id: Push-174:
Circuit Id: Push-174
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-420" Poles="1" valLabely="0" circRot="-5.4861292803319049e+303" labelrot="0" id="Push-174" labelx="-16" boardRot="-1000000" objectName="Push-174" rotation="0" Norm_Close="false" y="-292" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-173:
Circuit Id: Push-173
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-420" Poles="1" valLabely="0" circRot="-5.4861292803319049e+303" labelrot="0" id="Push-173" labelx="-16" boardRot="-1000000" objectName="Push-173" rotation="0" Norm_Close="false" y="-404" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-172:
Circuit Id: Push-172
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-420" Poles="1" valLabely="0" circRot="-2.9681990884966918e-197" labelrot="0" id="Push-172" labelx="-16" boardRot="-1000000" objectName="Push-172" rotation="0" Norm_Close="false" y="-368" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-171:
Circuit Id: Push-171
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-420" Poles="1" valLabely="0" circRot="-5.4861292803319049e+303" labelrot="0" id="Push-171" labelx="-16" boardRot="-1000000" objectName="Push-171" rotation="0" Norm_Close="false" y="-328" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Node-168:
Circuit Id: Node-168
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-424" valLabely="0" circRot="nan" labelrot="0" id="Node-168" labelx="-16" boardRot="-1000000" objectName="Node-168" rotation="0" y="-164" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-165:
Circuit Id: Node-165
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-480" valLabely="0" circRot="-5.4861292803319049e+303" labelrot="0" id="Node-165" labelx="-16" boardRot="-1000000" objectName="Node-165" rotation="0" y="-164" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Diode-124:
Circuit Id: Diode-108
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" Threshold="0.69999999999999996" x="-444" valLabely="0" circRot="-2.9681990884966918e-197" Zener_Volt="0" labelrot="0" id="Diode-108" labelx="-16" boardRot="-1000000" objectName="Diode-124" rotation="90" y="-212" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Diode" vflip="1" mainComp="false"/>
Unique Id: Diode-121:
Circuit Id: Diode-108
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" Threshold="0.69999999999999996" x="-388" valLabely="0" circRot="-2.9681990884966918e-197" Zener_Volt="0" labelrot="0" id="Diode-108" labelx="-16" boardRot="-1000000" objectName="Diode-121" rotation="90" y="-212" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Diode" vflip="1" mainComp="false"/>
Unique Id: Diode-120:
Circuit Id: Diode-108
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" Threshold="0.69999999999999996" x="-500" valLabely="0" circRot="-2.9681990884966918e-197" Zener_Volt="0" labelrot="0" id="Diode-108" labelx="-16" boardRot="-1000000" objectName="Diode-120" rotation="90" y="-104" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Diode" vflip="1" mainComp="false"/>
Unique Id: Diode-117:
Circuit Id: Diode-108
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" Threshold="0.69999999999999996" x="-448" valLabely="0" circRot="-2.9681990884966918e-197" Zener_Volt="0" labelrot="0" id="Diode-108" labelx="-16" boardRot="-1000000" objectName="Diode-117" rotation="90" y="-104" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Diode" vflip="1" mainComp="false"/>
Unique Id: Diode-116:
Circuit Id: Diode-108
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" Threshold="0.69999999999999996" x="-388" valLabely="0" circRot="-2.9681990884966918e-197" Zener_Volt="0" labelrot="0" id="Diode-108" labelx="-16" boardRot="-1000000" objectName="Diode-116" rotation="90" y="-104" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Diode" vflip="1" mainComp="false"/>
Unique Id: Diode-113:
Circuit Id: Diode-108
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" Threshold="0.69999999999999996" x="-500" valLabely="0" circRot="-2.9681990884966918e-197" Zener_Volt="0" labelrot="0" id="Diode-108" labelx="-16" boardRot="-1000000" objectName="Diode-113" rotation="90" y="-12" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Diode" vflip="1" mainComp="false"/>
Unique Id: Diode-112:
Circuit Id: Diode-108
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" Threshold="0.69999999999999996" x="-448" valLabely="0" circRot="-2.9681990884966918e-197" Zener_Volt="0" labelrot="0" id="Diode-108" labelx="-16" boardRot="-1000000" objectName="Diode-112" rotation="90" y="-8" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Diode" vflip="1" mainComp="false"/>
Unique Id: Diode-109:
Circuit Id: Diode-108
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" Threshold="0.69999999999999996" x="-392" valLabely="0" circRot="-2.9681990884966918e-197" Zener_Volt="0" labelrot="0" id="Diode-108" labelx="-16" boardRot="-1000000" objectName="Diode-109" rotation="90" y="-8" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Diode" vflip="1" mainComp="false"/>
Unique Id: Diode-108:
Circuit Id: Diode-108
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" Threshold="0.69999999999999996" x="-500" valLabely="0" circRot="-2.9681990884966918e-197" Zener_Volt="0" labelrot="0" id="Diode-108" labelx="-16" boardRot="-1000000" objectName="Diode-108" rotation="90" y="-208" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Diode" vflip="1" mainComp="false"/>
Unique Id: Node-105:
Circuit Id: Node-105
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-424" valLabely="0" circRot="0" labelrot="0" id="Node-105" labelx="-16" boardRot="-1000000" objectName="Node-105" rotation="0" y="-60" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-102:
Circuit Id: Node-102
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-480" valLabely="0" circRot="0" labelrot="0" id="Node-102" labelx="-16" boardRot="-1000000" objectName="Node-102" rotation="0" y="-60" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-94:
Circuit Id: Node-94
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-424" valLabely="0" circRot="nan" labelrot="0" id="Node-94" labelx="-16" boardRot="-1000000" objectName="Node-94" rotation="0" y="-268" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-88:
Circuit Id: Node-88
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-480" valLabely="0" circRot="0" labelrot="0" id="Node-88" labelx="-16" boardRot="-1000000" objectName="Node-88" rotation="0" y="-268" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Push-80:
Circuit Id: Push-63
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-516" Poles="1" valLabely="0" circRot="0" labelrot="0" id="Push-63" labelx="-16" boardRot="-1000000" objectName="Push-80" rotation="0" Norm_Close="false" y="-44" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-79:
Circuit Id: Push-65
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-408" Poles="1" valLabely="0" circRot="0" labelrot="0" id="Push-65" labelx="-16" boardRot="-1000000" objectName="Push-79" rotation="0" Norm_Close="false" y="-44" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-78:
Circuit Id: Push-64
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-464" Poles="1" valLabely="0" circRot="-5.4861292972962881e+303" labelrot="0" id="Push-64" labelx="-16" boardRot="-1000000" objectName="Push-78" rotation="0" Norm_Close="false" y="-44" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-68:
Circuit Id: Push-65
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-408" Poles="1" valLabely="0" circRot="0" labelrot="0" id="Push-65" labelx="-16" boardRot="-1000000" objectName="Push-68" rotation="0" Norm_Close="false" y="-140" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-67:
Circuit Id: Push-64
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-464" Poles="1" valLabely="0" circRot="-5.4861292972962881e+303" labelrot="0" id="Push-64" labelx="-16" boardRot="-1000000" objectName="Push-67" rotation="0" Norm_Close="false" y="-140" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-66:
Circuit Id: Push-63
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-516" Poles="1" valLabely="0" circRot="0" labelrot="0" id="Push-63" labelx="-16" boardRot="-1000000" objectName="Push-66" rotation="0" Norm_Close="false" y="-140" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-65:
Circuit Id: Push-65
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-408" Poles="1" valLabely="0" circRot="0" labelrot="0" id="Push-65" labelx="-16" boardRot="-1000000" objectName="Push-65" rotation="0" Norm_Close="false" y="-240" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-64:
Circuit Id: Push-64
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-464" Poles="1" valLabely="0" circRot="-5.4861292972962881e+303" labelrot="0" id="Push-64" labelx="-16" boardRot="-1000000" objectName="Push-64" rotation="0" Norm_Close="false" y="-240" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-63:
Circuit Id: Push-63
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="-516" Poles="1" valLabely="0" circRot="0" labelrot="0" id="Push-63" labelx="-16" boardRot="-1000000" objectName="Push-63" rotation="0" Norm_Close="false" y="-240" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Arduino Uno-1:
Circuit Id: Arduino Uno-1
<item valLabRot="0" hflip="1" Name="arduinoUno" Program="example.arduino.avr.uno.hex" circPos="0,0" Show_id="true" Init_gdb="false" valLabelx="0" Auto_Load="false" x="-304" valLabely="0" circRot="3.2799144730471328e-316" labelrot="0" varList="ACSR,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,," Mhz="16" id="Arduino Uno-1" labelx="100" boardRot="-1000000" Logic_Symbol="false" objectName="Arduino Uno-1" rotation="0" y="-300" boardPos="-1e+06,-1e+06" eeprom="255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255" labely="-21" itemtype="Arduino" vflip="1" mainComp="false"/>
Unique Id: 74HC4067-612:
Circuit Id: 74HC4067-612
<item valLabRot="-90" hflip="1" Name="74HC4067" circPos="0,0" Show_id="true" valLabelx="13" x="-72" valLabely="52" circRot="4.7750804361479468e-316" labelrot="0" id="74HC4067-612" labelx="0" boardRot="-1000000" Logic_Symbol="true" BoardId="" objectName="74HC4067-612" rotation="0" y="-288" boardPos="-1e+06,-1e+06" labely="-20" itemtype="Subcircuit" vflip="1" mainComp="false"/>
Unique Id: Push-687:
Circuit Id: Push-687
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="36" Poles="1" valLabely="0" circRot="6.470495591940174e+170" labelrot="0" id="Push-687" labelx="-16" boardRot="-1000000" objectName="Push-687" rotation="0" Norm_Close="false" y="-280" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-688:
Circuit Id: Push-688
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="36" Poles="1" valLabely="0" circRot="-5.4861292803319049e+303" labelrot="0" id="Push-688" labelx="-16" boardRot="-1000000" objectName="Push-688" rotation="0" Norm_Close="false" y="-232" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Push-689:
Circuit Id: Push-689
<item valLabRot="0" hflip="1" Key="" circPos="0,0" Show_id="false" valLabelx="0" x="36" Poles="1" valLabely="0" circRot="6.870167592054736e+228" labelrot="0" id="Push-689" labelx="-16" boardRot="-1000000" objectName="Push-689" rotation="0" Norm_Close="false" y="-184" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Push" vflip="1" mainComp="false"/>
Unique Id: Ground-690:
Circuit Id: Ground-690
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="92" valLabely="0" circRot="-1.6841244377622154e-310" labelrot="0" id="Ground-690" labelx="-16" boardRot="-1000000" objectName="Ground-690" rotation="0" y="-140" boardPos="-1e+06,-1e+06" labely="8" itemtype="Ground" vflip="1" mainComp="false"/>
Unique Id: Node-696:
Circuit Id: Node-696
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="92" valLabely="0" circRot="-5.4861292803319049e+303" labelrot="0" id="Node-696" labelx="-16" boardRot="-1000000" objectName="Node-696" rotation="0" y="-232" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: Node-699:
Circuit Id: Node-699
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="92" valLabely="0" circRot="-2.1730297897437183e-310" labelrot="0" id="Node-699" labelx="-16" boardRot="-1000000" objectName="Node-699" rotation="0" y="-184" boardPos="-1e+06,-1e+06" labely="-24" itemtype="Node" vflip="1" mainComp="false"/>
Unique Id: SerialTerm-161:
Circuit Id: SerialTerm-161
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" Mcu_Uart="1" sizey="896" valLabelx="0" x="-304" posy="77" posx="1187" valLabely="0" circRot="0" labelrot="0" Mcu_Id="Arduino Uno-1" id="SerialTerm-161" labelx="-16" boardRot="-1000000" objectName="SerialTerm-161" rotation="0" y="-300" boardPos="-1e+06,-1e+06" labely="-24" itemtype="SerialTerm" sizex="715" vflip="1" mainComp="false"/>
Unique Id: Connector-89:
Circuit Id: Connector-89
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-480" startpinid="Node-88-2" enodeid="Circ_eNode-769" valLabely="0" circRot="0" labelrot="0" id="Connector-89" labelx="-16" boardRot="-1000000" objectName="Connector-89" rotation="0" y="-268" boardPos="-1e+06,-1e+06" endpinid="Push-63-pinP0" labely="-24" itemtype="Connector" pointList="-480,-268,-532,-268,-532,-240" vflip="1" mainComp="false"/>
Unique Id: Connector-90:
Circuit Id: Connector-90
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-480" startpinid="Node-88-1" enodeid="Circ_eNode-769" valLabely="0" circRot="0" labelrot="0" id="Connector-90" labelx="-16" boardRot="-1000000" objectName="Connector-90" rotation="0" y="-268" boardPos="-1e+06,-1e+06" endpinid="Push-64-pinP0" labely="-24" itemtype="Connector" pointList="-480,-268,-480,-240" vflip="1" mainComp="false"/>
Unique Id: Connector-95:
Circuit Id: Connector-95
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-424" startpinid="Node-94-2" enodeid="Circ_eNode-769" valLabely="0" circRot="0" labelrot="0" id="Connector-95" labelx="-16" boardRot="-1000000" objectName="Connector-95" rotation="0" y="-268" boardPos="-1e+06,-1e+06" endpinid="Node-88-0" labely="-24" itemtype="Connector" pointList="-424,-268,-480,-268" vflip="1" mainComp="false"/>
Unique Id: Connector-96:
Circuit Id: Connector-96
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-424" startpinid="Node-94-1" enodeid="Circ_eNode-769" valLabely="0" circRot="0" labelrot="0" id="Connector-96" labelx="-16" boardRot="-1000000" objectName="Connector-96" rotation="0" y="-268" boardPos="-1e+06,-1e+06" endpinid="Push-65-pinP0" labely="-24" itemtype="Connector" pointList="-424,-268,-424,-240" vflip="1" mainComp="false"/>
Unique Id: Connector-103:
Circuit Id: Connector-103
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-480" startpinid="Node-102-2" enodeid="Circ_eNode-770" valLabely="0" circRot="nan" labelrot="0" id="Connector-103" labelx="-16" boardRot="-1000000" objectName="Connector-103" rotation="0" y="-60" boardPos="-1e+06,-1e+06" endpinid="Push-80-pinP0" labely="-24" itemtype="Connector" pointList="-480,-60,-532,-60,-532,-44" vflip="1" mainComp="false"/>
Unique Id: Connector-104:
Circuit Id: Connector-104
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-480" startpinid="Node-102-1" enodeid="Circ_eNode-770" valLabely="0" circRot="0" labelrot="0" id="Connector-104" labelx="-16" boardRot="-1000000" objectName="Connector-104" rotation="0" y="-60" boardPos="-1e+06,-1e+06" endpinid="Push-78-pinP0" labely="-24" itemtype="Connector" pointList="-480,-60,-480,-44" vflip="1" mainComp="false"/>
Unique Id: Connector-106:
Circuit Id: Connector-106
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-424" startpinid="Node-105-2" enodeid="Circ_eNode-770" valLabely="0" circRot="0" labelrot="0" id="Connector-106" labelx="-16" boardRot="-1000000" objectName="Connector-106" rotation="0" y="-60" boardPos="-1e+06,-1e+06" endpinid="Node-102-0" labely="-24" itemtype="Connector" pointList="-424,-60,-480,-60" vflip="1" mainComp="false"/>
Unique Id: Connector-107:
Circuit Id: Connector-107
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-424" startpinid="Node-105-1" enodeid="Circ_eNode-770" valLabely="0" circRot="0" labelrot="0" id="Connector-107" labelx="-16" boardRot="-1000000" objectName="Connector-107" rotation="0" y="-60" boardPos="-1e+06,-1e+06" endpinid="Push-79-pinP0" labely="-24" itemtype="Connector" pointList="-424,-60,-424,-44" vflip="1" mainComp="false"/>
Unique Id: Connector-166:
Circuit Id: Connector-166
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-480" startpinid="Node-165-2" enodeid="Circ_eNode-771" valLabely="0" circRot="0" labelrot="0" id="Connector-166" labelx="-16" boardRot="-1000000" objectName="Connector-166" rotation="0" y="-164" boardPos="-1e+06,-1e+06" endpinid="Push-66-pinP0" labely="-24" itemtype="Connector" pointList="-480,-164,-532,-164,-532,-140" vflip="1" mainComp="false"/>
Unique Id: Connector-167:
Circuit Id: Connector-167
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-480" startpinid="Node-165-1" enodeid="Circ_eNode-771" valLabely="0" circRot="0" labelrot="0" id="Connector-167" labelx="-16" boardRot="-1000000" objectName="Connector-167" rotation="0" y="-164" boardPos="-1e+06,-1e+06" endpinid="Push-67-pinP0" labely="-24" itemtype="Connector" pointList="-480,-164,-480,-140" vflip="1" mainComp="false"/>
Unique Id: Connector-169:
Circuit Id: Connector-169
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-424" startpinid="Node-168-2" enodeid="Circ_eNode-771" valLabely="0" circRot="0" labelrot="0" id="Connector-169" labelx="-16" boardRot="-1000000" objectName="Connector-169" rotation="0" y="-164" boardPos="-1e+06,-1e+06" endpinid="Node-165-0" labely="-24" itemtype="Connector" pointList="-424,-164,-480,-164" vflip="1" mainComp="false"/>
Unique Id: Connector-170:
Circuit Id: Connector-170
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-424" startpinid="Node-168-1" enodeid="Circ_eNode-771" valLabely="0" circRot="0" labelrot="0" id="Connector-170" labelx="-16" boardRot="-1000000" objectName="Connector-170" rotation="0" y="-164" boardPos="-1e+06,-1e+06" endpinid="Push-68-pinP0" labely="-24" itemtype="Connector" pointList="-424,-164,-424,-140" vflip="1" mainComp="false"/>
Unique Id: Connector-177:
Circuit Id: Connector-177
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-296" startpinid="Arduino Uno-1-PD6" enodeid="Circ_eNode-773" valLabely="0" circRot="0" labelrot="0" id="Connector-177" labelx="-16" boardRot="-1000000" objectName="Connector-177" rotation="0" y="-236" boardPos="-1e+06,-1e+06" endpinid="Push-171-switch0pinN" labely="-24" itemtype="Connector" pointList="-296,-236,-336,-236,-336,-328,-404,-328" vflip="1" mainComp="false"/>
Unique Id: Connector-178:
Circuit Id: Connector-178
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-296" startpinid="Arduino Uno-1-PD5" enodeid="Circ_eNode-774" valLabely="0" circRot="0" labelrot="0" id="Connector-178" labelx="-16" boardRot="-1000000" objectName="Connector-178" rotation="0" y="-244" boardPos="-1e+06,-1e+06" endpinid="Push-172-switch0pinN" labely="-24" itemtype="Connector" pointList="-296,-244,-332,-244,-332,-368,-404,-368" vflip="1" mainComp="false"/>
Unique Id: Connector-179:
Circuit Id: Connector-179
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-296" startpinid="Arduino Uno-1-PD4" enodeid="Circ_eNode-775" valLabely="0" circRot="0" labelrot="0" id="Connector-179" labelx="-16" boardRot="-1000000" objectName="Connector-179" rotation="0" y="-252" boardPos="-1e+06,-1e+06" endpinid="Push-173-switch0pinN" labely="-24" itemtype="Connector" pointList="-296,-252,-328,-252,-328,-404,-404,-404" vflip="1" mainComp="false"/>
Unique Id: Connector-182:
Circuit Id: Connector-182
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-436" startpinid="Push-171-pinP0" enodeid="Circ_eNode-776" valLabely="0" circRot="0" labelrot="0" id="Connector-182" labelx="-16" boardRot="-1000000" objectName="Connector-182" rotation="0" y="-328" boardPos="-1e+06,-1e+06" endpinid="Node-186-0" labely="-24" itemtype="Connector" pointList="-436,-328,-472,-328" vflip="1" mainComp="false"/>
Unique Id: Connector-185:
Circuit Id: Connector-185
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-436" startpinid="Push-172-pinP0" enodeid="Circ_eNode-776" valLabely="0" circRot="0" labelrot="0" id="Connector-185" labelx="-16" boardRot="-1000000" objectName="Connector-185" rotation="0" y="-368" boardPos="-1e+06,-1e+06" endpinid="Node-189-0" labely="-24" itemtype="Connector" pointList="-436,-368,-472,-368" vflip="1" mainComp="false"/>
Unique Id: Connector-188:
Circuit Id: Connector-188
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-436" startpinid="Push-173-pinP0" enodeid="Circ_eNode-776" valLabely="0" circRot="0" labelrot="0" id="Connector-188" labelx="-16" boardRot="-1000000" objectName="Connector-188" rotation="0" y="-404" boardPos="-1e+06,-1e+06" endpinid="Node-189-1" labely="-24" itemtype="Connector" pointList="-436,-404,-472,-404,-472,-368" vflip="1" mainComp="false"/>
Unique Id: Connector-190:
Circuit Id: Connector-190
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-472" startpinid="Node-189-2" enodeid="Circ_eNode-776" valLabely="0" circRot="0" labelrot="0" id="Connector-190" labelx="-16" boardRot="-1000000" objectName="Connector-190" rotation="0" y="-368" boardPos="-1e+06,-1e+06" endpinid="Node-192-0" labely="-24" itemtype="Connector" pointList="-472,-368,-472,-348" vflip="1" mainComp="false"/>
Unique Id: Connector-181:
Circuit Id: Connector-181
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-436" startpinid="Push-174-pinP0" enodeid="Circ_eNode-776" valLabely="0" circRot="0" labelrot="0" id="Connector-181" labelx="-16" boardRot="-1000000" objectName="Connector-181" rotation="0" y="-292" boardPos="-1e+06,-1e+06" endpinid="Node-186-2" labely="-24" itemtype="Connector" pointList="-436,-292,-472,-292,-472,-328" vflip="1" mainComp="false"/>
Unique Id: Connector-191:
Circuit Id: Connector-191
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-508" startpinid="Ground-180-Gnd" enodeid="Circ_eNode-776" valLabely="0" circRot="0" labelrot="0" id="Connector-191" labelx="-16" boardRot="-1000000" objectName="Connector-191" rotation="0" y="-304" boardPos="-1e+06,-1e+06" endpinid="Node-192-1" labely="-24" itemtype="Connector" pointList="-508,-304,-508,-348,-472,-348" vflip="1" mainComp="false"/>
Unique Id: Connector-193:
Circuit Id: Connector-193
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-472" startpinid="Node-192-2" enodeid="Circ_eNode-776" valLabely="0" circRot="0" labelrot="0" id="Connector-193" labelx="-16" boardRot="-1000000" objectName="Connector-193" rotation="0" y="-348" boardPos="-1e+06,-1e+06" endpinid="Node-186-1" labely="-24" itemtype="Connector" pointList="-472,-348,-472,-328" vflip="1" mainComp="false"/>
Unique Id: Connector-553:
Circuit Id: Connector-553
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-500" startpinid="Diode-113-lPin" enodeid="Circ_eNode-777" valLabely="0" circRot="0" labelrot="0" id="Connector-553" labelx="-16" boardRot="-1000000" objectName="Connector-553" rotation="0" y="-28" boardPos="-1e+06,-1e+06" endpinid="Push-80-switch0pinN" labely="-24" itemtype="Connector" pointList="-500,-28,-500,-44" vflip="1" mainComp="false"/>
Unique Id: Connector-554:
Circuit Id: Connector-554
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-500" startpinid="Diode-120-lPin" enodeid="Circ_eNode-778" valLabely="0" circRot="0" labelrot="0" id="Connector-554" labelx="-16" boardRot="-1000000" objectName="Connector-554" rotation="0" y="-120" boardPos="-1e+06,-1e+06" endpinid="Push-66-switch0pinN" labely="-24" itemtype="Connector" pointList="-500,-120,-500,-140" vflip="1" mainComp="false"/>
Unique Id: Connector-555:
Circuit Id: Connector-555
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-448" startpinid="Diode-117-lPin" enodeid="Circ_eNode-779" valLabely="0" circRot="0" labelrot="0" id="Connector-555" labelx="-16" boardRot="-1000000" objectName="Connector-555" rotation="0" y="-120" boardPos="-1e+06,-1e+06" endpinid="Push-67-switch0pinN" labely="-24" itemtype="Connector" pointList="-448,-120,-448,-140" vflip="1" mainComp="false"/>
Unique Id: Connector-556:
Circuit Id: Connector-556
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-388" startpinid="Diode-116-lPin" enodeid="Circ_eNode-780" valLabely="0" circRot="0" labelrot="0" id="Connector-556" labelx="-16" boardRot="-1000000" objectName="Connector-556" rotation="0" y="-120" boardPos="-1e+06,-1e+06" endpinid="Push-68-switch0pinN" labely="-24" itemtype="Connector" pointList="-388,-120,-388,-140,-392,-140" vflip="1" mainComp="false"/>
Unique Id: Connector-557:
Circuit Id: Connector-557
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-388" startpinid="Diode-121-lPin" enodeid="Circ_eNode-781" valLabely="0" circRot="0" labelrot="0" id="Connector-557" labelx="-16" boardRot="-1000000" objectName="Connector-557" rotation="0" y="-228" boardPos="-1e+06,-1e+06" endpinid="Push-65-switch0pinN" labely="-24" itemtype="Connector" pointList="-388,-228,-388,-240,-392,-240" vflip="1" mainComp="false"/>
Unique Id: Connector-558:
Circuit Id: Connector-558
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-444" startpinid="Diode-124-lPin" enodeid="Circ_eNode-782" valLabely="0" circRot="0" labelrot="0" id="Connector-558" labelx="-16" boardRot="-1000000" objectName="Connector-558" rotation="0" y="-228" boardPos="-1e+06,-1e+06" endpinid="Push-64-switch0pinN" labely="-24" itemtype="Connector" pointList="-444,-228,-444,-240,-448,-240" vflip="1" mainComp="false"/>
Unique Id: Connector-559:
Circuit Id: Connector-559
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-500" startpinid="Diode-108-lPin" enodeid="Circ_eNode-783" valLabely="0" circRot="0" labelrot="0" id="Connector-559" labelx="-16" boardRot="-1000000" objectName="Connector-559" rotation="0" y="-224" boardPos="-1e+06,-1e+06" endpinid="Push-63-switch0pinN" labely="-24" itemtype="Connector" pointList="-500,-224,-500,-240" vflip="1" mainComp="false"/>
Unique Id: Connector-563:
Circuit Id: Connector-563
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-500" startpinid="Diode-120-rPin" enodeid="Circ_eNode-784" valLabely="0" circRot="-1.1951277993834117e-310" labelrot="0" id="Connector-563" labelx="-16" boardRot="-1000000" objectName="Connector-563" rotation="0" y="-88" boardPos="-1e+06,-1e+06" endpinid="Node-564-1" labely="-24" itemtype="Connector" pointList="-500,-88,-488,-88,-488,-84" vflip="1" mainComp="false"/>
Unique Id: Connector-565:
Circuit Id: Connector-565
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-488" startpinid="Node-564-2" enodeid="Circ_eNode-784" valLabely="0" circRot="0" labelrot="0" id="Connector-565" labelx="-16" boardRot="-1000000" objectName="Connector-565" rotation="0" y="-84" boardPos="-1e+06,-1e+06" endpinid="Diode-108-rPin" labely="-24" itemtype="Connector" pointList="-488,-84,-488,-192,-500,-192" vflip="1" mainComp="false"/>
Unique Id: Connector-569:
Circuit Id: Connector-569
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-448" startpinid="Diode-117-rPin" enodeid="Circ_eNode-785" valLabely="0" circRot="0" labelrot="0" id="Connector-569" labelx="-16" boardRot="-1000000" objectName="Connector-569" rotation="0" y="-88" boardPos="-1e+06,-1e+06" endpinid="Node-570-1" labely="-24" itemtype="Connector" pointList="-448,-88,-432,-88" vflip="1" mainComp="false"/>
Unique Id: Connector-571:
Circuit Id: Connector-571
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-432" startpinid="Node-570-2" enodeid="Circ_eNode-785" valLabely="0" circRot="0" labelrot="0" id="Connector-571" labelx="-16" boardRot="-1000000" objectName="Connector-571" rotation="0" y="-88" boardPos="-1e+06,-1e+06" endpinid="Diode-124-rPin" labely="-24" itemtype="Connector" pointList="-432,-88,-432,-196,-444,-196" vflip="1" mainComp="false"/>
Unique Id: Connector-575:
Circuit Id: Connector-575
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-388" startpinid="Diode-116-rPin" enodeid="enode-807" valLabely="0" circRot="0" labelrot="0" id="Connector-575" labelx="-16" boardRot="-1000000" objectName="Connector-575" rotation="0" y="-88" boardPos="-1e+06,-1e+06" endpinid="Node-576-1" labely="-24" itemtype="Connector" pointList="-388,-88,-380,-88" vflip="1" mainComp="false"/>
Unique Id: Connector-577:
Circuit Id: Connector-577
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-380" startpinid="Node-576-2" enodeid="enode-807" valLabely="0" circRot="0" labelrot="0" id="Connector-577" labelx="-16" boardRot="-1000000" objectName="Connector-577" rotation="0" y="-88" boardPos="-1e+06,-1e+06" endpinid="Diode-121-rPin" labely="-24" itemtype="Connector" pointList="-380,-88,-380,-196,-388,-196" vflip="1" mainComp="false"/>
Unique Id: Connector-97:
Circuit Id: Connector-97
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-296" startpinid="Arduino Uno-1-PB1" enodeid="Circ_eNode-771" valLabely="0" circRot="0" labelrot="0" id="Connector-97" labelx="-16" boardRot="-1000000" objectName="Connector-97" rotation="0" y="-204" boardPos="-1e+06,-1e+06" endpinid="Node-168-0" labely="-24" itemtype="Connector" pointList="-296,-204,-360,-204,-360,-164,-424,-164" vflip="1" mainComp="false"/>
Unique Id: Connector-98:
Circuit Id: Connector-98
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-296" startpinid="Arduino Uno-1-PB2" enodeid="Circ_eNode-770" valLabely="0" circRot="0" labelrot="0" id="Connector-98" labelx="-16" boardRot="-1000000" objectName="Connector-98" rotation="0" y="-196" boardPos="-1e+06,-1e+06" endpinid="Node-105-0" labely="-24" itemtype="Connector" pointList="-296,-196,-352,-196,-352,-60,-424,-60" vflip="1" mainComp="false"/>
Unique Id: Connector-551:
Circuit Id: Connector-551
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-296" startpinid="Arduino Uno-1-PB4" enodeid="Circ_eNode-785" valLabely="0" circRot="0" labelrot="0" id="Connector-551" labelx="-16" boardRot="-1000000" objectName="Connector-551" rotation="0" y="-180" boardPos="-1e+06,-1e+06" endpinid="Node-593-0" labely="-24" itemtype="Connector" pointList="-296,-180,-340,-180,-340,48,-432,48,-432,16" vflip="1" mainComp="false"/>
Unique Id: Connector-550:
Circuit Id: Connector-550
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-296" startpinid="Arduino Uno-1-PB3" enodeid="Circ_eNode-784" valLabely="0" circRot="0" labelrot="0" id="Connector-550" labelx="-16" boardRot="-1000000" objectName="Connector-550" rotation="0" y="-188" boardPos="-1e+06,-1e+06" endpinid="Node-590-0" labely="-24" itemtype="Connector" pointList="-296,-188,-344,-188,-344,36,-488,36,-488,16" vflip="1" mainComp="false"/>
Unique Id: Connector-589:
Circuit Id: Connector-589
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-500" startpinid="Diode-113-rPin" enodeid="Circ_eNode-784" valLabely="0" circRot="0" labelrot="0" id="Connector-589" labelx="-16" boardRot="-1000000" objectName="Connector-589" rotation="0" y="4" boardPos="-1e+06,-1e+06" endpinid="Node-590-1" labely="-24" itemtype="Connector" pointList="-500,4,-500,16,-488,16" vflip="1" mainComp="false"/>
Unique Id: Connector-591:
Circuit Id: Connector-591
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-488" startpinid="Node-590-2" enodeid="Circ_eNode-784" valLabely="0" circRot="0" labelrot="0" id="Connector-591" labelx="-16" boardRot="-1000000" objectName="Connector-591" rotation="0" y="16" boardPos="-1e+06,-1e+06" endpinid="Node-564-0" labely="-24" itemtype="Connector" pointList="-488,16,-488,-84" vflip="1" mainComp="false"/>
Unique Id: Connector-592:
Circuit Id: Connector-592
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-448" startpinid="Diode-112-rPin" enodeid="Circ_eNode-785" valLabely="0" circRot="0" labelrot="0" id="Connector-592" labelx="-16" boardRot="-1000000" objectName="Connector-592" rotation="0" y="8" boardPos="-1e+06,-1e+06" endpinid="Node-593-1" labely="-24" itemtype="Connector" pointList="-448,8,-448,16,-432,16" vflip="1" mainComp="false"/>
Unique Id: Connector-594:
Circuit Id: Connector-594
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-432" startpinid="Node-593-2" enodeid="Circ_eNode-785" valLabely="0" circRot="0" labelrot="0" id="Connector-594" labelx="-16" boardRot="-1000000" objectName="Connector-594" rotation="0" y="16" boardPos="-1e+06,-1e+06" endpinid="Node-570-0" labely="-24" itemtype="Connector" pointList="-432,16,-432,-88" vflip="1" mainComp="false"/>
Unique Id: Connector-87:
Circuit Id: Connector-87
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-296" startpinid="Arduino Uno-1-PB0" enodeid="Circ_eNode-769" valLabely="0" circRot="0" labelrot="0" id="Connector-87" labelx="-16" boardRot="-1000000" objectName="Connector-87" rotation="0" y="-212" boardPos="-1e+06,-1e+06" endpinid="Node-94-0" labely="-24" itemtype="Connector" pointList="-296,-212,-348,-212,-348,-268,-424,-268" vflip="1" mainComp="false"/>
Unique Id: Connector-682:
Circuit Id: Connector-682
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-152" startpinid="Arduino Uno-1-PC1" enodeid="Circ_eNode-787" valLabely="0" circRot="0" labelrot="0" id="Connector-682" labelx="-16" boardRot="-1000000" objectName="Connector-682" rotation="0" y="-252" boardPos="-1e+06,-1e+06" endpinid="74HC4067-612-Z" labely="-24" itemtype="Connector" pointList="-152,-252,-140,-252,-140,-280,-80,-280" vflip="1" mainComp="false"/>
Unique Id: Connector-683:
Circuit Id: Connector-683
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-152" startpinid="Arduino Uno-1-PC2" enodeid="Circ_eNode-788" valLabely="0" circRot="0" labelrot="0" id="Connector-683" labelx="-16" boardRot="-1000000" objectName="Connector-683" rotation="0" y="-260" boardPos="-1e+06,-1e+06" endpinid="74HC4067-612-S0" labely="-24" itemtype="Connector" pointList="-152,-260,-100,-260,-100,-264,-80,-264" vflip="1" mainComp="false"/>
Unique Id: Connector-684:
Circuit Id: Connector-684
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-152" startpinid="Arduino Uno-1-PC3" enodeid="Circ_eNode-789" valLabely="0" circRot="0" labelrot="0" id="Connector-684" labelx="-16" boardRot="-1000000" objectName="Connector-684" rotation="0" y="-268" boardPos="-1e+06,-1e+06" endpinid="74HC4067-612-S1" labely="-24" itemtype="Connector" pointList="-152,-268,-104,-268,-104,-256,-80,-256" vflip="1" mainComp="false"/>
Unique Id: Connector-685:
Circuit Id: Connector-685
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-152" startpinid="Arduino Uno-1-PC4" enodeid="Circ_eNode-790" valLabely="0" circRot="0" labelrot="0" id="Connector-685" labelx="-16" boardRot="-1000000" objectName="Connector-685" rotation="0" y="-276" boardPos="-1e+06,-1e+06" endpinid="74HC4067-612-S2" labely="-24" itemtype="Connector" pointList="-152,-276,-108,-276,-108,-248,-80,-248" vflip="1" mainComp="false"/>
Unique Id: Connector-686:
Circuit Id: Connector-686
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-152" startpinid="Arduino Uno-1-PC5" enodeid="Circ_eNode-791" valLabely="0" circRot="0" labelrot="0" id="Connector-686" labelx="-16" boardRot="-1000000" objectName="Connector-686" rotation="0" y="-284" boardPos="-1e+06,-1e+06" endpinid="74HC4067-612-S3" labely="-24" itemtype="Connector" pointList="-152,-284,-112,-284,-112,-240,-80,-240" vflip="1" mainComp="false"/>
Unique Id: Connector-691:
Circuit Id: Connector-691
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-32" startpinid="74HC4067-612-Y0" enodeid="Circ_eNode-792" valLabely="0" circRot="0" labelrot="0" id="Connector-691" labelx="-16" boardRot="-1000000" objectName="Connector-691" rotation="0" y="-280" boardPos="-1e+06,-1e+06" endpinid="Push-687-pinP0" labely="-24" itemtype="Connector" pointList="-32,-280,20,-280" vflip="1" mainComp="false"/>
Unique Id: Connector-692:
Circuit Id: Connector-692
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-32" startpinid="74HC4067-612-Y1" enodeid="Circ_eNode-793" valLabely="0" circRot="0" labelrot="0" id="Connector-692" labelx="-16" boardRot="-1000000" objectName="Connector-692" rotation="0" y="-272" boardPos="-1e+06,-1e+06" endpinid="Push-688-pinP0" labely="-24" itemtype="Connector" pointList="-32,-272,12,-272,12,-232,20,-232" vflip="1" mainComp="false"/>
Unique Id: Connector-693:
Circuit Id: Connector-693
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-32" startpinid="74HC4067-612-Y2" enodeid="Circ_eNode-794" valLabely="0" circRot="0" labelrot="0" id="Connector-693" labelx="-16" boardRot="-1000000" objectName="Connector-693" rotation="0" y="-264" boardPos="-1e+06,-1e+06" endpinid="Push-689-pinP0" labely="-24" itemtype="Connector" pointList="-32,-264,4,-264,4,-184,20,-184" vflip="1" mainComp="false"/>
Unique Id: Connector-694:
Circuit Id: Connector-694
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="52" startpinid="Push-687-switch0pinN" enodeid="Circ_eNode-795" valLabely="0" circRot="0" labelrot="0" id="Connector-694" labelx="-16" boardRot="-1000000" objectName="Connector-694" rotation="0" y="-280" boardPos="-1e+06,-1e+06" endpinid="Node-696-0" labely="-24" itemtype="Connector" pointList="52,-280,92,-280,92,-232" vflip="1" mainComp="false"/>
Unique Id: Connector-695:
Circuit Id: Connector-695
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="52" startpinid="Push-688-switch0pinN" enodeid="Circ_eNode-795" valLabely="0" circRot="0" labelrot="0" id="Connector-695" labelx="-16" boardRot="-1000000" objectName="Connector-695" rotation="0" y="-232" boardPos="-1e+06,-1e+06" endpinid="Node-696-1" labely="-24" itemtype="Connector" pointList="52,-232,92,-232" vflip="1" mainComp="false"/>
Unique Id: Connector-697:
Circuit Id: Connector-697
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="92" startpinid="Node-696-2" enodeid="Circ_eNode-795" valLabely="0" circRot="0" labelrot="0" id="Connector-697" labelx="-16" boardRot="-1000000" objectName="Connector-697" rotation="0" y="-232" boardPos="-1e+06,-1e+06" endpinid="Node-699-0" labely="-24" itemtype="Connector" pointList="92,-232,92,-184" vflip="1" mainComp="false"/>
Unique Id: Connector-698:
Circuit Id: Connector-698
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="52" startpinid="Push-689-switch0pinN" enodeid="Circ_eNode-795" valLabely="0" circRot="0" labelrot="0" id="Connector-698" labelx="-16" boardRot="-1000000" objectName="Connector-698" rotation="0" y="-184" boardPos="-1e+06,-1e+06" endpinid="Node-699-1" labely="-24" itemtype="Connector" pointList="52,-184,92,-184" vflip="1" mainComp="false"/>
Unique Id: Connector-700:
Circuit Id: Connector-700
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="92" startpinid="Node-699-2" enodeid="Circ_eNode-795" valLabely="0" circRot="0" labelrot="0" id="Connector-700" labelx="-16" boardRot="-1000000" objectName="Connector-700" rotation="0" y="-184" boardPos="-1e+06,-1e+06" endpinid="Ground-690-Gnd" labely="-24" itemtype="Connector" pointList="92,-184,92,-156" vflip="1" mainComp="false"/>
Unique Id: Connector-701:
Circuit Id: Connector-701
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-448" startpinid="Push-78-switch0pinN" enodeid="Circ_eNode-796" valLabely="0" circRot="0" labelrot="0" id="Connector-701" labelx="-16" boardRot="-1000000" objectName="Connector-701" rotation="0" y="-44" boardPos="-1e+06,-1e+06" endpinid="Diode-112-lPin" labely="-24" itemtype="Connector" pointList="-448,-44,-448,-24" vflip="1" mainComp="false"/>
Unique Id: Connector-702:
Circuit Id: Connector-702
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-392" startpinid="Push-79-switch0pinN" enodeid="Circ_eNode-797" valLabely="0" circRot="0" labelrot="0" id="Connector-702" labelx="-16" boardRot="-1000000" objectName="Connector-702" rotation="0" y="-44" boardPos="-1e+06,-1e+06" endpinid="Diode-109-lPin" labely="-24" itemtype="Connector" pointList="-392,-44,-392,-24" vflip="1" mainComp="false"/>
Unique Id: Connector-586:
Circuit Id: Connector-586
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-392" startpinid="Diode-109-rPin" enodeid="enode-807" valLabely="0" circRot="0" labelrot="0" id="Connector-586" labelx="-16" boardRot="-1000000" objectName="Connector-586" rotation="0" y="8" boardPos="-1e+06,-1e+06" endpinid="Node-803-0" labely="-24" itemtype="Connector" pointList="-392,8,-392,24,-380,24" vflip="1" mainComp="false"/>
Unique Id: Connector-804:
Circuit Id: Connector-804
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-380" startpinid="Node-803-2" enodeid="enode-807" valLabely="0" circRot="0" labelrot="0" id="Connector-804" labelx="-16" boardRot="-1000000" objectName="Connector-804" rotation="0" y="24" boardPos="-1e+06,-1e+06" endpinid="Node-576-0" labely="-24" itemtype="Connector" pointList="-380,24,-380,-88" vflip="1" mainComp="false"/>
Unique Id: Connector-807:
Circuit Id: Connector-807
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-296" startpinid="Arduino Uno-1-PB5" enodeid="enode-807" valLabely="0" circRot="0" labelrot="0" id="Connector-807" labelx="-16" boardRot="-1000000" objectName="Connector-807" rotation="0" y="-172" boardPos="-1e+06,-1e+06" endpinid="Node-803-1" labely="-24" itemtype="Connector" pointList="-296,-172,-332,-172,-332,80,-380,80,-380,24" vflip="1" mainComp="false"/>
Unique Id: Connector-808:
Circuit Id: Connector-808
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-296" startpinid="Arduino Uno-1-PD7" enodeid="enode-808" valLabely="0" circRot="0" labelrot="0" id="Connector-808" labelx="-16" boardRot="-1000000" objectName="Connector-808" rotation="0" y="-228" boardPos="-1e+06,-1e+06" endpinid="Push-174-switch0pinN" labely="-24" itemtype="Connector" pointList="-296,-228,-340,-228,-340,-292,-404,-292" vflip="1" mainComp="false"/>
Unique Id: Connector-811:
Circuit Id: Connector-811
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-152" startpinid="Arduino Uno-1-PC0" enodeid="enode-811" valLabely="0" circRot="0" labelrot="0" id="Connector-811" labelx="-16" boardRot="-1000000" objectName="Connector-811" rotation="0" y="-244" boardPos="-1e+06,-1e+06" endpinid="Push-809-pinP0" labely="-24" itemtype="Connector" pointList="-152,-244,-128,-244,-128,-116,-72,-116" vflip="1" mainComp="false"/>
Unique Id: Connector-813:
Circuit Id: Connector-813
<item valLabRot="0" hflip="1" circPos="0,0" Show_id="false" valLabelx="0" x="-40" startpinid="Push-809-switch0pinN" enodeid="enode-813" valLabely="0" circRot="0" labelrot="0" id="Connector-813" labelx="-16" boardRot="-1000000" objectName="Connector-813" rotation="0" y="-116" boardPos="-1e+06,-1e+06" endpinid="Ground-812-Gnd" labely="-24" itemtype="Connector" pointList="-40,-116,-16,-116,-16,-92" vflip="1" mainComp="false"/>
</circuit>

View File

@ -0,0 +1,8 @@
TARGET_BOARD=arduino:avr:uno
COM_PORT=/dev/ttyACM0
build:
arduino-cli compile -b ${TARGET_BOARD}
upload:
arduino-cli upload -b ${TARGET_BOARD} -p ${COM_PORT}