Project in progress
Sous vide Making by Hacking existing Rice Cooker

Sous vide Making by Hacking existing Rice Cooker

This project uses the SRP-1037FG cooker, which doesn't work anymore as a rice cooker after some use.

  • 1,993 views
  • 2 comments
  • 11 respects

Components and supplies

84mrvdejlrve7gm0dems
Arduino LCD Screen
×1
Rice cooker
SRP-1037FG
×1

About this project

Let's try hacking the electric cooker with the explanation.

What is a Suvid Machine?

The Suvid Machine is a recipe made a long time ago, and in 1799, the British Count Benjamin Thompson theoretically devised the first method of cooking, a recipe that warms food in a sealed plastic bag for long periods in warm water.

However, due to practicality such as cost of cooking, time, etc., it is not used positively.

Ingredients cooked with a Suvid machine preserve texture deformation, nutritional preservation, taste, form and juice, and are particularly excellent for producing soft texture in meat. It has the advantage that the loss of nutrients can be minimized because it is cooked at low temperature.

The disadvantage is: the price is very expensive. I have not been able to buy it for over 2 million won. Nowadays, for the household use, a water bead machine with a price of 200,000 won has been started to be installed in the cooking pot. There are not many kinds and there is a disadvantage that it can not heat a large amount of materials.

The solution

Ohm's law is inverse, so the heater capacity is estimated to be about 1 kilo watt.

220V / 220V / 43.5 ohms = about 5.057A 

Voltage x Current = Power

220V x 5.057A = 1112W 

I searched the internet and found the electricity consumption in the electric cooker specification is similar to 1100W. The heater capacity of 1100W does not seem to be sufficient for use as a bead machine. The heater may not work even if once you connect the 220V to the alligator clip to see if the heater works.

I have been touching it for a few seconds with the power supply and it turns out to be hot. Completion of testing of most parts in electric cooker.

1.77 inch TFT LCD operation successful. Standard LCD display provided by Arduino. Simple operation successful but the screen size is too small. Since Arduino is basically a TFT LCD, there is no need to add a library and it is easy to program. It is not enough to display all the desired temperature and time warning messages. I need to find a larger TFT LCD. If you want to display only the temperature information, you can use O.K.

2.4 inch TFT LCD Hacking ...

I bought a TFT LCD in China and the price is cheap, but there is no description, no test program or driver ...

I downloaded the program from the site I found by asking my brother, but it does not work ...

There's no doubt about the hardware misplacement of the Arduino shield, but ...

I suspected it was defective and changed the board and LCD module, but still do not work ...

The ones that sent text to the serial monitor are well visible ...

Compiling and uploading seems to be OK ...

Make sure that the size and shape of the product photos are the same on the downloaded site.

I do not know, I looked up Driver IC, and I can not tell because the IC is not coming out ...

I was worried for a while ...

Alas, TFT LCD was disassembled ...

To find the IC number ...

But...

I did not see the IC even though I disassembled it all ...

Fixed LCD problem that has long been deceived ...

After a few days of hardship, I found out ...

TFT LCD photo floating on the internet is same ...

There are two different types of driving ICs ...

In the manufacturer, the drive IC is called SPDF5408, but ...

In fact, the driver called ILI9341 was built ...

The driver is totally different.

The operation succeeded after replacing the library ...

Today's lesson ...

If you do not have a datasheet ... you will have to fight with lots of shits .

Disassembled the rice cooker sensor ...

I tried to disassemble the sensor to determine the part number of the thermistor.

It is tightly sealed, giving up the opening ...

If you have spare parts, I will open them even if i break them ...

It is not easy to obtain parts like this ...

If you fail to hack the thermistor value, consider replacing it with a known temperature sensor ...

Hacking the thermistor and temperature characteristics makes the hardware easier, while the software gets more complicated, while connecting the temperature sensors I know will make the hardware simpler but software easier ...

This problem will be determined after the temperature thermistor hack ..

The most inconvenient and unfortunate part of operating the TFT LCD is the font ...

The default fonts are based on an unsightly unsightly font in the old block breaking game, though the letters are a bit bigger ...

I was pretty good with Arduino (the Arduino instructor and long-time programmers) and I asked them how to use fonts that are nice to them ...

It's hard to get fonts, especially if you want to use Hangul ...

I asked a friend who was writing a part of the program at the Merkurton convention to look for a pretty-looking font. I spent a lot of time looking for it, but it was not so common that I finally found it.

I asked to create a font to fit the screen ...

Shaking his head ...

Nogada does not have such a nogada ...

finally...

I made it myself ...

It is convenient to use the utility as a bit image but it is too slow because the LCD is low so it is hard to display it as a bitmap ...

I draw the coordinates by using the relatively fast Line command ...

To make matters worse ...

Each segment of the 7 segments in the screen design received by the designer did not match the shape of each of the segments.

(Originally, I have to work with the designer again to get the coordinates of the segments and the coordinate values ​​that are located in them ... I think the designer is too busy,

The code is as complex and long as a mop, thanks to ...

The time was devastated ...

depending on...

We have matched segments and numbers using arrays ...

I wrote a very simple automata ...

I feel burdened with the first project of Arduino ...

Since you have registered the test program in the attachment file, please download and run it if you need it ...

The program is long ...

The trap looks dirty and complicated ...

// Define the TFT LCD digit segments from 0 - 9

byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 }, // = 0

{ 0,1,1,0,0,0,0 }, // = 1

{ 1,1,0,1,1,0,1 }, // = 2

{ 1,1,1,1,0,0,1 }, // = 3

{ 0,1,1,0,0,1,1 }, // = 4

{ 1,0,1,1,0,1,1 }, // = 5

{ 1,0,1,1,1,1,1 }, // = 6

{ 1,1,1,0,0,0,0 }, // = 7

{ 1,1,1,1,1,1,1 }, // = 8

{ 1,1,1,1,0,1,1 } // = 9

};

int Diff_c_y = 30; // Difference y is 30 pixel for segment c

int Diff_d_y = 60; // Difference y is 60 pixel for segment d

int Diff_c_y_low = 10; //

int Diff_d_y_low = 20; //

int MoveX_low = 19; // Move to 18 pixel to right

int MoveX = 46; // Move to 46 pixel to right

void loop()

{

while(1)

{

seven_seg_set_temp_high_byte(8,WHITE);

seven_seg_set_temp_low_byte(8,WHITE);

seven_seg_now_temp_high_byte(8, WHITE); // present temp, upper byte LCD screen display CLEAR

seven_seg_now_temp_low_byte(8, WHITE); //

present temp, lower byte LCD screen display CLEAR

for (int i=0; i<10; i++) {

seven_seg_set_temp_high_byte(i,RED); //

present temp, upper byte LCD screen display

seven_seg_set_temp_low_byte(i,RED); //

present temp, lower byte LCD screen display

seven_seg_now_temp_high_byte(i, BLUE); //

present temp, upper byte LCD screen display

seven_seg_now_temp_low_byte(i, BLUE); //

present temp, lower byte LCD screen display

delay(1000);

seven_seg_set_temp_high_byte(i,WHITE);

seven_seg_set_temp_low_byte(i,WHITE);

seven_seg_now_temp_high_byte(i, WHITE); //

present temp, upper byte LCD screen display CLEAR

seven_seg_now_temp_low_byte(i, WHITE); //

present temp, lower byte LCD screen display CLEAR

} //for

} // while

} // end of loop

//

set temp, LCD screen display

void seven_seg_set_temp_high_byte(byte HighByte, int COLOR) {

byte segCount = 0;

// for (byte segCount = 0; segCount < 7; ++segCount) {

set_high_byte_segment_a (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

set_high_byte_segment_b (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

set_high_byte_segment_c (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

set_high_byte_segment_d (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

set_high_byte_segment_e (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

set_high_byte_segment_f (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

set_high_byte_segment_g (seven_seg_digits[HighByte][segCount], COLOR);

// } // for

} // end of function

//

set temp, lower byte LCD screen display

void seven_seg_set_temp_low_byte(byte HighByte, int COLOR) {

byte segCount = 0;

// for (byte segCount = 0; segCount < 7; ++segCount) {

set_low_byte_segment_a (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

set_low_byte_segment_b (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

set_low_byte_segment_c (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

set_low_byte_segment_d (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

set_low_byte_segment_e (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

set_low_byte_segment_f (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

set_low_byte_segment_g (seven_seg_digits[HighByte][segCount], COLOR);

// } // for

} // end of function

//

present temp, upper byte display

void seven_seg_now_temp_high_byte(byte HighByte, int COLOR) {

byte segCount = 0;

// for (byte segCount = 0; segCount < 7; ++segCount) {

time_high_byte_segment_a (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

time_high_byte_segment_b (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

time_high_byte_segment_c (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

time_high_byte_segment_d (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

time_high_byte_segment_e (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

time_high_byte_segment_f (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

time_high_byte_segment_g (seven_seg_digits[HighByte][segCount], COLOR);

// } // for

} // end of function

//////////////////////////////////////////////

//

present temp, lower byte display

/////////////////////////////////////////////

void seven_seg_now_temp_low_byte(byte HighByte, int COLOR) {

byte segCount = 0;

// for (byte segCount = 0; segCount < 7; ++segCount) {

time_low_byte_segment_a (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

time_low_byte_segment_b (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

time_low_byte_segment_c (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

time_low_byte_segment_d (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

time_low_byte_segment_e (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

time_low_byte_segment_f (seven_seg_digits[HighByte][segCount], COLOR);

segCount++;

time_low_byte_segment_g (seven_seg_digits[HighByte][segCount], COLOR);

// } // for

} // end of function

// -------------------------------------------------

// set temp. upper. 7 segment a

void set_high_byte_segment_a (boolean disp,int COLOR)

{

if (disp) {

for (int i=0;i < 8 ; i++) {

tft.drawLine(92+i,110+i,128-i,110+i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

// set temp upper 7 segment b

void set_high_byte_segment_b (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 4 ; i++) {

tft.drawLine(128-i,113+i,128-i,140-i,COLOR);

} // for

for (int i=0;i < 6 ; i++) {

tft.drawLine(126-i,115+i,126-i,141-i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

// set temp upper 7 segment c

void set_high_byte_segment_c (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 8 ; i++) {

tft.drawLine(129 -i,111+Diff_c_y + i,129-i,143+Diff_c_y - i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

// set temp upper 7 segment d

void set_high_byte_segment_d (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 8 ; i++) {

tft.drawLine(98-i,(108 + Diff_d_y + i),119+i,(108 + Diff_d_y + i),COLOR);

}

} // if

} // end of function

// -------------------------------------------------

// set temp upper 7 segment e

void set_high_byte_segment_e (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 8 ; i++) {

tft.drawLine(90+i,143+i,90+i,173-i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

// set temp upper 7 segment f

void set_high_byte_segment_f (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 4 ; i++) {

tft.drawLine(90 +i,111+i,90+i,140+i,COLOR);

}//for

for (int i=0;i < 4 ; i++) {

tft.drawLine(94+i,115+i,94+i,141-i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

// set temp upper 7 segment g

void set_high_byte_segment_g (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 4 ; i++) {

tft.drawLine(98-i,140+i,121+i,140+i,COLOR);

} //for

for (int i=0;i < 4 ; i++) {

tft.drawLine(94+i,144+i,124-i,144+i,COLOR);

} //for

} // if

} // end of function

// ============================================================

// set temp lower

//=============================================================

// -------------------------------------------------

// set temp lower 7 segment a

void set_low_byte_segment_a (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 8 ; i++) {

tft.drawLine(92+MoveX+i,110+i,128+MoveX-i,110+i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

// set temp lower 7 segment b

void set_low_byte_segment_b (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 4 ; i++) {

tft.drawLine(129+MoveX-i,111+i,129+MoveX-i,139+i,COLOR);

} //for

for (int i=0;i < 6 ; i++) {

tft.drawLine(126+MoveX-i,115+i,126+MoveX-i,141-i,COLOR);

} //for

} // if

} // end of function

// -------------------------------------------------

// set temp lower 7 segment c

void set_low_byte_segment_c (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 8 ; i++) {

tft.drawLine(129+MoveX-i,111+Diff_c_y + i,129+MoveX-i,145+Diff_c_y - i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

set temp lower

7 segment d

void set_low_byte_segment_d (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 8 ; i++) {

tft.drawLine(98+MoveX-i,(108 + Diff_d_y + i),119+MoveX+i,(108 + Diff_d_y + i),COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

set temp lower

7 segment e

void set_low_byte_segment_e (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 8 ; i++) {

tft.drawLine(90+MoveX+i,143+i,90+MoveX+i,173-i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

set temp lower

7 segment f

void set_low_byte_segment_f (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 4 ; i++) {

tft.drawLine(90+MoveX+i,111+i,90+MoveX+i,140+i,COLOR);

} // for

for (int i=0;i < 4 ; i++) {

tft.drawLine(94+MoveX+i,115+i,94+MoveX+i,141-i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

set temp lower

7 segment g

void set_low_byte_segment_g (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 4 ; i++) {

tft.drawLine(98+MoveX-i,140+i,121+MoveX+i,140+i,COLOR);

} // for

for (int i=0;i < 4 ; i++) {

tft.drawLine(94+MoveX+i,144+i,124+MoveX-i,144+i,COLOR);

} // for

} // if

} // end of function

// ============================================================

// present temp upper byte

//=============================================================

// -------------------------------------------------

//

present temp upper byte

7 segment a

void time_high_byte_segment_a (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 3 ; i++) {

tft.drawLine(210+i,149+i,224-i,149+i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

present temp upper byte

7 segment b

void time_high_byte_segment_b (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 2 ; i++) {

tft.drawLine(225 -i,150+i,225-i,160+i,COLOR);

} // for

for (int i=0;i < 2 ; i++) {

tft.drawLine(223-i,152+i,223-i,161-i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

present temp upper byte

7 segment c

void time_high_byte_segment_c (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 4 ; i++) {

tft.drawLine(225 -i,151+Diff_c_y_low+i,225-i,164+Diff_c_y_low - i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

present temp upper byte

7 segment d

void time_high_byte_segment_d (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 3 ; i++) {

tft.drawLine(212-i,(153 + Diff_d_y_low + i),222+i,(153 + Diff_d_y_low + i),COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

present temp upper byte

7 segment e

void time_high_byte_segment_e (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 4 ; i++) {

tft.drawLine(209+i,162+i,209+i,174-i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

present temp upper byte

7 segment f

void time_high_byte_segment_f (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 2 ; i++) {

tft.drawLine(211+i,152+i,211+i,162-i,COLOR);

} // for

for (int i=0;i < 2 ; i++) {

tft.drawLine(209 +i,150+i,209+i,160+i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

present temp upper byte

7 segment g

void time_high_byte_segment_g (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 2 ; i++) {

tft.drawLine(214-i,160+i,220+i,160+i,COLOR);

}

for (int i=0;i < 2 ; i++) {

tft.drawLine(212+i,162+i,222-i,162+i,COLOR);

} // for

} // if

} // end of function

// ============================================================

//

present temp upper byte

//=============================================================

// -------------------------------------------------

//

present temp upper byte

7 segment a

void time_low_byte_segment_a (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 3 ; i++) {

tft.drawLine(210+MoveX_low+i,149+i,224+MoveX_low-i,149+i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

present temp upper byte

7 segment b

void time_low_byte_segment_b (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 2 ; i++) {

tft.drawLine(225+MoveX_low-i,150+i,225+MoveX_low-i,160+i,COLOR);

} // for

for (int i=0;i < 2 ; i++) {

tft.drawLine(223+MoveX_low-i,152+i,223+MoveX_low-i,161-i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

present temp upper byte

7 segment c

void time_low_byte_segment_c (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 4 ; i++) {

tft.drawLine(225+MoveX_low-i,151+Diff_c_y_low+i,225+MoveX_low-i,164+Diff_c_y_low - i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

present temp upper byte

7 segment d

void time_low_byte_segment_d (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 3 ; i++) {

tft.drawLine(212+MoveX_low-i,(153 + Diff_d_y_low + i),222+MoveX_low+i,(153 + Diff_d_y_low + i),COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

present temp lower

7 segment e

void time_low_byte_segment_e (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 4 ; i++) {

tft.drawLine(209+MoveX_low+i,162+i,209+MoveX_low+i,174-i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

present temp lower

7 segment f

void time_low_byte_segment_f (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 2 ; i++) {

tft.drawLine(209+MoveX_low+i,150+i,209+MoveX_low+i,160+i,COLOR);

} // for

for (int i=0;i < 2 ; i++) {

tft.drawLine(211+MoveX_low+i,152+i,211+MoveX_low+i,162-i,COLOR);

} // for

} // if

} // end of function

// -------------------------------------------------

//

present temp lower

7 segment g

void time_low_byte_segment_g (boolean disp, int COLOR)

{

if (disp) {

for (int i=0;i < 2 ; i++) {

tft.drawLine(214+MoveX_low-i,160+i,220+MoveX_low+i,160+i,COLOR);

} // for

for (int i=0;i < 2 ; i++) {

tft.drawLine(212+MoveX_low+i,162+i,222+MoveX_low-i,162+i,COLOR);

} // for

} // if

} // end of function

<Temperature timer setting bar Heater reservation button operation test>

The set temperature was programmed to display the current time with the temperature setting and temperature graph ...

In order to be intuitive to understand at a glance, the screen design has graphically displayed the temperature and the remaining time. When heating, when the heater is reserved, the reservation LED is lit as an LED, which is also relatively faster than the bitmap (Square, circle) using ...

The source code is attached to the ...

Yesterday I had an all day trouble adding an all day library ...

There are a few things I found out ...

first,

Arduino does not need to add a library and then re-run it after finishing the sketch.

second,

I put a compressed file or folder in the Program Files (x86) \ arduino \ libraris directory ...

This folder is the directory used by the Aduno system ...

Library \ Documents \ Arduino \ libraries directory and add it to sketch -> Include Library -> Add zip library ...

I just downloaded the library from gitHUB without thinking ...

I noticed that the contents of the files may be different for each library. (Very important)

I have to do a lot of unnecessary tasks that can not be done because of this thing .. (ㅠ. ㅠ)

Once I solved the library problem ...

Another problem ...

I was writing a program and suddenly a strange message appeared ...

You can zoom in on the message screen ...

Message that the sketch (source file) is too big to compile ...

There are a lot of programs to be used in the future. I have already used all the memory, so I need to reduce the program size.

dump....

I sat down ...

Looking at the sky ...

I lost my say ...

Now how do you ...

I'm going back to my hardware troubles when I selected LCD again ...

You can use the Aduno Mega ...

If you attach it to the front of the rice cooker as originally planned, the size is too big and the TFT LCD is biased to one side.

The head gets complicated ...

< A Fundamental Reconsideration on Arduino Board ... >

Can Bead sous vide Can Bead Machine

After compilation error due to over capacity on the Aduno Uno board ...

We are rethinking the use of the Arduino Mega Board after a hard time ...

At first, the Arduino Mega Boards were bigger than Uno, and since they were sticking out laterally after mounting the TFT LCD, I did not use them in terms of mechanism.

As the program capacity became a problem, we began reviewing again ...

Once I plugged the pin array into the mega board ...

It did not work ...

For sure...

Friends who have a lot of experience on the Internet or Arduino told me that Shield is compatible without any action ...

In addition, looking at the circuit diagram, three D ports (PD4, PD5, PD6) were not connected to the circuit at all and were open. (I could not understand ... If you do not connect these three pins, Maybe it does not seem to be compatible.)

One site on the Internet says that Uno and Mega are fully compatible (http://kevinrye.net/index_files/arduino_mega_2560.php) ...

It seems that they didn't test all the compatibility tests, that only the LED flashes or the program is uploaded ...

ArduinoMEGA_0146-6

In the uno board, as shown in the above pin layout diagram, are PD0 ~ PD7 connected to pins 0 ~ 7?

PD0 ~ PD7 are not used as simple I / O inside the CPU, but they seem to be used as a data bus, so that they feel more inevitable ...

There are two ways to try

First, how to redefine the pin by considering the pin layout in the program and ...

Secondly, it is a way to physically disconnect the hardware by reconnecting the hardware and disconnecting the shield.

But the first way is to redefine the pin layout without touching the hardware, but it seems like PB0 ~ PB7 are used as data bus ...

I thought I might have a subtle impact on timing ...

The second method is that the PD4 ~ PD6 3 pins can not be connected to the pin connector on the CPU.

I also search for articles related to mega ...

I have also found a post that Mega Shield will not be compatible with Uno because it runs at 3.3V ...

I thought that it would be better to change the Uno to Mega even if I fix the whole device once ...

If you have experience with this, please advice ... Black ... Black ... ㅠ. ㅠ.

Various components of electric rice cooker (heater, switch, sensor, etc.) are used as they are but ...

The control circuit, including the CPU, is supposed to be programmed with the Arduino ...

In the rice cooker, pull out the module with the motherboard fixed and ...

Unscrew the fixing screw and ...

Cut all connected wires, including connectors ...

Remove the motherboard ...

The front panel requires the switch to be used as is, so without removing the PCB ...

The TFT LCD will be fixed in padded format ...

Arduino mega board and power unit (5V switching power, 12V switching power) and SSR for controlling the heater are directly measured and arranged, and the device is designed ...

Red is going to cut with laser cutting machine ...

I plan to mark only green without cutting ...

Since the size of the main board is the same as that of the main board, it is possible to match the sizes exactly by screwing the components together and then joining them again.

The tool design is written in Rhino, a 3D modeling tool, and is attached to the file in Rhino format.

When the key input is received from all microcontrollers, chattering (vibration caused by the machine when the contact of the switch is opened or closed.) When the switch is turned on or off, the intermittent state is repeated due to the vibration of the contact point. If this happens, the same character will be shot multiple times.)

There are two ways to do this ...

The first is the combination of the capacitor and the resistor by the hardware method, and the method of absorbing the appearance of the voltage when the chattering occurs in the capacitor and ...

Secondly, it detects the change of the input value by the method of software, measures the time at that point, compares it with a predetermined time (Debounced delay), and distinguishes whether chattering or normal key input is performed. It has the disadvantage of having to write it, but it does not have to use parts, so it has the advantage of simpler hardware and less material cost ...

This project also needs to take measures against Debounce because it gets taller.

I experimented with simple circuits as shown in the picture above ...

Press the key once to turn on the LED ...

Press again to turn off ...

Well, it worked fine ...

Please refer to the attached file for the program source ... debounce.test

Arduino and TFT LCD Shield Fixture to be attached to the front of the rice cooker ...

Combined with Arduino and Shield, it was designed and printed as a 3D printer for fixing to the front of the electric cooker ...

Hye Hye helped the maker ...

The first output will reflect the revision of some of the fixtures and output one more time ...

Because the front part of the rice cooker is rounded, the inside of the equipment is designed so that it gets a little bit ... (It was supposed to output the supporter so that the equipment could be rounded.

After attaching Arduino and TFT LCD shield to the instrument and fixing it ...

The front side of the TFT LCD is laser-cut and fixed to the front to hide the dirty content ...

I put it on the front of the rice cooker ...

It fits exactly to the curve ...

At last, we operate TFT LCD on Arduino Mega Board ...

Meantime...

We have the wrong information that Aduino Megaboda is fully compatible (Pin to Pin) with Aduino Uno board.

After a lot of hard work ...

The connection to the mega board was successful ...

But rather than the joy of setting ...

I spent a lot of time trying to find cause ...

Like...

If you do an investigation with the real criminal ...

Like I can not catch the killer after all ...

It is a lethal mistake that the Uno and Mega Boards are fully compatible ...

The detailed analysis of the circuit diagram of Aduno Uno and Megaboard ...

The definition and arrangement of the pins as well as the number of pins were also very different ...

So ...

Give up the shield ...

I was able to find the pins and connect them ...

In the program, I have found all pin definitions and matched them ...

The most worried data bus in the process is the 8-bit data ...

Fortunately, I was able to connect using Port A ...

When I traveled to Jeju Island ...

I was thinking all over the TFT LCD ...

I did not have any sightseeing .... ㅠ. ㅠ.

My good time ...

Modify the SD interface settings on the Arduino Mega Board ... ...

As I explained in my previous story ...

The TFT LCD Shield for Arduino Uno has been operated by setting and changing the hardware pin connection ...

The image on the SD card does not come up on the TFT LCD ...

Uno and hardware pins were matched 1: 1 with pin numbers (10, 11, 12, 13) ...

Does not work ...

again...

Looking at the schematics of Uno and Mega ...

Apart from the pin number, the function for communicating with the SD card was differently mapped to the pin number ...

After moving the pins, normal operation ...

Unomega

10 -> 10 times

11 -> 51

12 -> 50 times

13 -> 52

conclusion

Arduino mega differs from Uno in circuit and pin arrangement is completely different ...

However, I have installed a port to absorb the functions of Uno, but it is not pin to pin compatible ...

After all, it's a natural story ...

Shield for Uno does not work even if it is attached to mega board ...

Software Timer Interrupt Coding...

...

Whether LED blinks on a bead machine or makes repetitive movements at a fixed time ...

There are two ways of causing a hardware interrupt to be executed every predetermined cycle by a hardware interrupt so that a specific routine is executed and a method by software interruption.

The hardware-based method can be advantageous when the interrupt situation or condition is complicated, but ...

In this case, I have created an interrupt service routine that is called once per second, because it only requires a simple timer interrupt such as time setting, LED blinking, and setting value blinking in the TFT LCD setting.

What should be noted here is ...

MsTimer2.h, a timer library that worked normally in Arduino Uno, did not work on mega and it took a lot of time ...

I found that the Mega and the Uno are very different from each other in hardware such as the pin assignment, but I have learned from previous experiments.

In this test program, I noticed that the library is also not compatible with the board ...

So if you are using a megaboard, you should use a header file that works on the megaboard that you uploaded as an attachment file ...

The test program is ...

Flashing the LED every 1 second ...

Serial port to current seconds ...

Output every minute and minutes ...

A test program that displays the hour when time passes ...

If you use it as a timer, you will have to input the setting value and count down.

Set power supply, mega board and shield position for power supply ...

Present temperature display with RGB LED ...

If the bead lid cuts acryl and engraves letters and changes the color of the lid according to the current temperature ...

Even at a distance, I was able to carry a certain temperature even if I looked at the color of the lid.

I have enjoyed two kinds of effects: interior fun and practicality ...

First, the RGB LED operates at 12V, and the GPIO of the Arduino is about 5V, so there is not enough voltage or current to drive it directly.

So I connected the FET to drive the RGB LED ...

Theoretically, you have to operate with the above circuit only ...

It does not work because it actually connects ...

As shown in the above data sheet, it is said that about 4.5A of current can flow about 10A.

The solution is to use one more FET ...

But...

In order to drive the RGB LEDs, the circuit must be more complicated because there are three more circuits ...

Plan to run with ULN2003 changed ...

I did not change the brightness of the LED, and after a long time ...

All digital I / O pins were not PWM capable and I / O ports were moved and working normally ...

Now we are slowly seeing the end of this project ...

Just a little more ...

The hardware is more than 90% complete ...

Please note that the test program is uploaded as an attachment file ...

Most mobile phone charging adapters available today do not have a coupling screw ...

Cutting forcing by attaching cutting tool to Dremel ...

After forcibly removing the lid ...

The board was removed ...

The AD-DC converter with a capacity of 0.42A is selected as the 12V power supply.

I chose the small size ...

You can measure the size of the motherboard by ...

I designed the machine so that I can cut the laser in the same size as the main board ...

.

I printed out the actual size of the printer and put each part on it.

The hole positions for fixation were precisely matched ..

Present temperature display with RGB LED ...

If the bead lid cuts acryl and engraves letters and changes the color of the lid according to the current temperature ...

Even at a distance, I was able to carry a certain temperature even if I looked at the color of the lid.

I have enjoyed two kinds of effects: interior fun and practicality ...

First, the RGB LED operates at 12V, and the GPIO of the Arduino is about 5V, so there is not enough voltage or current to drive it directly.

So I connected the FET to drive the RGB LED ...

Theoretically, you have to operate with the above circuit only ...

It does not work because it actually connects ...

As shown in the above data sheet, it is said that about 4.5A of current can flow about 10A.

The solution is to use one more FET ...

But...

In order to drive the RGB LEDs, the circuit must be more complicated because there are three more circuits ...

Plan to run with ULN2003 changed ...

I did not change the brightness of the LED, and after a long time ...

All digital I / O pins were not PWM capable and I / O ports were moved and working normally ...

Now we are slowly seeing the end of this project ...

Just a little more ...

The hardware is more than 90% complete ...

Please note that the test program is uploaded as an attachment file ...

Create AIDINO Mega Bead Shield # 1

I made a shield board for Arduino Mega ...

Soldering is done by aligning the connectors that can be connected to the Arduino Mega Board.

Cutting with angle saw ...

Solder all the way to Teflon wire ...

Try running the test program ...

Action successful ...

Key setting and status transition diagram for numerical bead machine operation

The button key attached to the rice cooker differs from the use of a bead machine ...

So ...

Some buttons (start button) are made of thin metal and added ...

The rest is to use the same key as it is ...

The state transition diagram below is ...

It tells you the status change of which button to press when from standby to do the next action ...

I can not think of it as final because I just saw it as I thought.

It may change according to future situation ...

Front switch panel ...

I need a switch to run a bead machine ...

In this project ...

Hack the switch on the front of the rice cooker and use it ...

Hacking and tracing PCB board pattern and connecting to each connector by detecting position and connection point of each switch ...

Solder the points of each connector and use the shrink tubing to clean the wires ...

see...

Now you can use the front switch of the rice cooker as it is ...

The pin number of the Arduino Mega is

Connect 7 pins by setting input pins to 30, 31, 32, 33, 34, 35, 36 ...

About temperature sensing ...

The electric rice cooker (naturally) also has a temperature sensor ...

If you can use this temperature sensor ...

In fact, the ...

because...

It is the most advantageous that there is a sensor at the position where the temperature sensing is the best in terms of mechanism,

However, if you want to use a temperature sensor that is mounted on an electric cooker ...

Hacking the temperature characteristics of a temperature sensor that is not open at all and reverse it ...

It is necessary to find out the change of the resistance value of the sensor and the temperature of the rice cooker while giving the temperature change.

So ...

Using the LM35 temperature sensor, which includes temperature characteristics and data sheets as well as source code, the coding is very simple and ...

There is no need to calibrate the temperature and the values ​​received on the analog input ... (there is a calculation formula for reading the temperature).

And if you use three temperature sensors ...

Because the number of sensors is large, we can find more accurate temperature values ​​...

If one or more temperature sensors fail during operation, a warning message may be issued ...

In fact, when I connected the sensor, one of the three temperature sensing values ​​is read differently from the two,

I tried to melt the silicon with the silicone gun after attaching the bond.

Three problems ...

first...

The switch that recognizes that the rice cooker is put on because of applying the bond did not work well ...

second...

I searched the internet and it was hard to use due to the possibility of melting due to the heat generated when the silicon melts at low temperatures.

Finally, the third ...

I actually connected to Arduino and measured the temperature and output it with Serial.print function ...

The three sensors (T1, T2, T3) have similar measured values ​​...

The temperature on the front of the rice cooker and the temperature of the back of the rice cooker with three sensors were very large. I could not read the correct temperature as shown in the picture above.

The situation is like this ...

I can not help it now ...

The previous temperature sensor was needed again ...

I contacted the electric cooker manufacturer in a hurry and asked if I could buy only the temperature sensor.

I'm not ...

If you sell parts to a consumer, you may have a material or an accident, so we do not sell it at our headquarters ...

I went to the center and assessed it. (I had experience working at a large research institute, so I could design an electronic circuit and write a note if necessary.

Removing existing sensors and ...

Replace the newly purchased temperature sensor ...

I connected the removed sensor to Arduino and wrote the program and checked the temperature value.

Temperature drifts up to 2 degrees ...

It may be because of the noise on the analog input ...

How to reduce the noise by delaying or taking an average value when reading the temperature in the program ...

How to use IR filter ...

You can implement a method of reducing noise by connecting a capacitor to an analog reference voltage.

In conclusion...

I decided to use the temperature sensor in the existing rice cooker and ...

It seems that there is a need to reduce the deviation of the temperature values ​​measured by the hardware and software methods and increase the accuracy.

Complete mainboard ...

The main board is finished ...

First, I used the laser cutter to mark the outline and fix the name of each part to fix the SSR which controls the heater of 5V, 12V and the rice cooker of Arduino Mega ...

Place each part in the outlined position so that the position of the fixing hole matches the part placement and wiring.

Think of the wiring path so that wiring is as short as possible and the associated parts are the shortest distance ...

By securing a hexagonal column nut on an acrylic plate, space is secured in the hole (middle portion) where the entire board is fixed by keeping the Arduino Mega Board in close contact with the acrylic.

Even if there is a fever in Adu-no-Mega, it gives a space to allow air to flow in, giving room for heat to escape ...

In each hole, make a screw groove with a tapping drill blade so that the bolt can be fixed even if there is no other nut.

Tapping all the holes and ...

Fix parts on board ...

Wires that are likely to be shorted are put in a shrink tube to heat them all to a safe state.

Tie the wires to the rack ...

Mainboard Board Completion ...

Using SSR for heater on off ...

In order to turn off the heater of the rice cooker, we have to use relay or SSR (Solid State Relay) ...

Rather than using relatively inexpensive relays, we will use SSR ...

I chose SSR because ...

First, it does not sound when it is turned on ...

Second, the switching noise is very small compared to the relay when it is turned on.

Third, Debouncing Noise noise is very low on On Off ...

Fourth, the output from the Arduino digital pin can be driven without a separate component or circuit ...

Test on On Off by connecting 220V incandescent lamp instead of heater ...

Hack the temperature sensor in the rice cooker ...

The temperature sensor in the rice cooker has no information ...

This is because data sheets can not be found because part model numbers are not known either ...

Therefore, if you want to use unknown parts, you have to hack ...

To measure the temperature, we connected a precision thermometer and a voltmeter to measure ...

The temperature is continuously raised, and the measured value is output to the serial monitor for each temperature, and each value is recorded.

By turning on the heater and continuously raising the temperature, the temperature and the voltage across the analog input pin (A / D converter) are measured and plotted and analyzed ...

The circuit is ...

Connect a 15K ohm resistor in series to the temperature sensor of the rice cooker to obtain the output voltage at the intermediate connection point ...

Connect parts to a small breadboard and measure the relationship between temperature and voltage ...

The data values ​​in the graph above are manually entered by hand.

I would like to use a program to automatically import the measured data into Excel, but ...

There is an error because there is not enough time ...

Calculate the temperature value in the Arduino based on the measured value of the graph ...

Arduino Mega Shield Making # 2

Making the last bead shield # 1 was the wiring to connect the TFT LCD ...

Temperature sensor, heater control, RGB LED connection, 12V power supply, 5V power supply, connector wiring for switch input of front panel of rice cooker was added ...

Electric rice cooker on analog pin Connector for connecting 1 temperature sensor and 3 separate temperature sensors Electromagnetic rice cooker Temperature sensor 2 pin, Temperature sensor 5V Power 1 pin, Each sensor output 3 pin, GND 1 pin Total 7 pin connector required .

Electromagnetic cooker switch input connects to digital pin 30 ~ 37 ...

The 12V power supply supplies the output of the AD-DC converter to the shield board through a 2-pin connector. The SSR control is controlled via pin 11 of the digital pin and the RGB LED is controlled by 12V with ULN2003.

Since the FET that I connected last time had to write another FET one more because of the driving voltage, I plan to use relatively cheap and simple UNL2003 ...

It supplies 12V to the pin 8 and pin 9 of the above semiconductor chip and connects the three outputs connected to the three inputs to the RGB LED ...

Finally...

On the TFT LCD side, use a universal board to solder the connector wires and connect them to the bead shield ...

Answers to questions about the Suvid Machine ...

I met a reader who accidentally saw all my bead machine making machines ...

The reader asked two questions ...

The first is whether the sensed temperature is changing and how to cope ...

The second question was, like other machines, why not circulate water ...

The answer to the first question is ...

As I mentioned in the previous story, there was a temperature error ...

In the Arduino circuit, there was no noise reduction or compensation circuit for this noise ...

If you need to do this, you have to make it in the shield ...

I can solve some of the hardware ...

Software can also calibrate and reduce noise ...

Use the IR filter algorithm we talked about in the previous story ...

By reading a number of temperature values ​​and then averaging them, it will be possible to use a low pass filter consisting of a capacitor and a resistor in the hardware ...

Answer the second question ...

Since we are planning to cover the lid in the process of remodeling the electromagnetic rice cooker that is currently being manufactured, it is difficult to arrange the components and components that can circulate the water with the pump etc. ...

The pressure cooker's pot is much thicker than the water tank thickness of a general water bead machine, so heat transfer and blocking are relatively good.

Actually, even if you measure the four corners and the center with a precision thermometer (see the figure below), there is no need to make the flow of water because there is not much temperature difference.

If the temperature difference inside the pressure cooker is large, is not the temperature difference enough to make rice delicious?

but...

If you make a large number of bead machines with a large tank size, you may need to consider this because the temperature difference can be severe.

Arduino Mega Shield PCB Production # 1

Arduino Mega Shield Board, who was doing his own work well, did not suddenly start to work after his friends came and visited him.

It is not easy to debug while tracing the wiring, since there is a lot of wiring and bad eyes ...

If you make the PCB and upload the file at this opportunity ...

If there are those who would like to follow up later, I think I can easily follow it without wires.

(Of course I have never seen PCBs before ... I mean, it takes a lot of time to make it because I have to make it while studying from the beginning ...)

Circuit design tools are very expensive to purchase formally ...

Of course you can use it in the dark path, but ...

I am studying Ki-CAD because I think it will be possible to do a lot of work using Ki-CAD, which is an open project base.

I first drew the circuit as shown below ...

It's a circuit. There's nothing particularly difficult ...

just...

Work done by soldering all day ...

Printed on the board, I get a little hands on the work ...

Once you have made it, you can use it without hesitation.

ULN2003 does not have a library in Ki-CAD.

The measurement temperature is slightly unstable when I measure the temperature through the Adouino shield ...

I have measured the analog reference voltage with the oscilloscope I have ...

The reference voltage is shaken ...

We have added a circuit to reduce the noise by attaching a low pass filter to the capacitor on the Aduinomega shield board ...

I plan to experiment later on how useful this project is.

Please note that the circuit and ULN2003 library are attached files.

Arduino Mega Shield PCB Production # 2

In the completed schematic, each device is numbered with annotate schematic components ...

Electrical Rule Check finds errors in circuit connection and completes the preparation of PCB by creating NET list ...

After drawing PCB outline (PCB cutting line) ...

I am ready to move the parts within it and prepare to play ...

Now you just need to wire ...

Arduino Shield I did not have a connector that fit exactly, so I used it to replace the hole size and spacing ...

I have heard that there is a library of Arduino Shields for Son Hojo ...

When I asked where I was, I did not know exactly where I was and I have seen it once ...

So ...

Stop working front ...

I will find the Arduino Shield Library and Foot Print and work again ...

The work files are kept in the attached file, so if you need ...

Water Bead Shield Rework # 1

After a long time asking Google ...

I found the Arduino Mega Shield library ...

I used the Arduino Mega shield library to redraw the circuit from the beginning ...

In this case, to reduce the noise, we place two capacitors, 0.1uF and 100uF, respectively, in the power supply.

And I removed the pins that are compatible with the Aduino Uno ...

In the future I've considered connections that might possibly lead to additional ...

Completing the circuit and turning the Electronic Rule Check ...

I have an error like the above ...

Even if an error occurs, the NetList is generated, but ...

If you proceed without catching the error, it may cause problems such as not wiring on PCB later, so it is better to catch all errors.

As you can see above, the red circle is ...

It means that the power line shows an error ...

The meaning of the error means that there is no part connected to the power supply, and if the Power Flag is added, the error disappears ...

I fixed the error by putting the Power Flag in the place ...

I got all the errors ...

Completion of circuit diagram ...

Schematics and UNL2003 and Arduino Mega Shield library are attached files ...

Water Bead Shield Rework # 2

I found the Arduino Mega shield library through the internet ...

There are a lot of Eagle libraries, but KiCAD is not much more than I thought ...

The search for the Arduino Mega Shield Library and FootPrint did not work together, so I had to work with the pin array and label to match each other ...

Once you have loaded the NetList, arrange the parts appropriately and ...

Looking at the circuit diagram, find the best place to wire the parts and replace them ...

Completed wiring ...

There are many Dip type parts and the wiring is not open ...

Considering future extensibility, we put the connector as far as possible ...

If you do not need it, you can not use it.

After finishing wiring ...

Add Filled Zone function puts copper plate on GND ...

Plate the front plate, the back plate, and finish the plate ...

It is the first production of PCB and I have finished it ...

I think I can do better if I try again next time ...

I have a few tips ...

The via hole used 38 pieces ...

I heard that there are a lot of via holes in the PCB manufacturing cost.

I found out that there was a long time ago when the size of the idle hole was very small (0.3mm or less).

In the case of PCBs like the ones we made today (0.6mm), we do not affect the unit price.

After making the production ...

Search the Internet to see if the pattern track is too thin ...

The wiring used was class 2 (0.25mm) ...

If you calculate the pattern width 0.25mm with PCB track thickness calculation program ...

I can run the current of about 535mA ...

Water Bead Shield Rework # 3

Now the Suvid Shield is complete ...

We have manufactured the side board to connect the TFT-LCD with Suvid Shield ...

Actually...

I did not think I would make a side board, but after I finished the Suvid shield board, I added a circuit to the circuit diagram suddenly because I thought about the board side. I made a PCB and put it beside the bead shield PCB, Cut lines were made to order two PCBs in one.

PCB is made by placing it beside the bead shield PCB and making V-cut line for V-cut so that two PCBs can be ordered in one.

Now the bead shield related PCB is finished ...

We will make the first production, test it and fix it ...

Each gerber file is uploaded with an attachment ...

Suvid shield production # 3 (PCB order)

After checking the size and component placement of the bead shield PCB ...

Now the final PCB order ...

Because the budget of the project has already been exhausted a long time and we have to save a lot of money ...

I searched for cheap places in China and got a quote ...

The quantity needed is 5 bead shields and 5 board ...

To save money, I sent an e-mail asking me to attach two PCBs and to insert a V-cut (dashed line cut by hand).

If you put a V-cut, it would be better to send two pieces separately ...

Uh ...

I have to tell you how much the price goes up ...

Decide whether or not to ...

Quote from another place ...

It seems to be manufactured in Hong Kong ...

I've been using the same PCB Gerber file in two ...

The price is almost double the difference ...

The mail came from the mail that the solder mask Gerber file was missing and I sent it again ...

I tried to attach a file to this entire story and I can not attach more than 5 files ...

So I attached a solder mask file to this story ...

Code

Temperature timer setting bar Heater reservation button operation testArduino
#include <EasyTransfer.h>


#include <Adafruit_GFX.h>      // Core graphics library
#include <Adafruit_TFTLCD.h> // Hardware-specific library
#include <SD.h>
#include <SPI.h>




void seven_seg_set_temp_high_byte(byte HighByte, int COLOR);
void seven_seg_set_temp_low_byte(byte HighByte, int COLOR);

void seven_seg_now_temp_high_byte(byte HighByte, int COLOR);
void seven_seg_now_temp_low_byte(byte HighByte, int COLOR);


//create object
EasyTransfer ET;

struct RECEIVE_DATA_STRUCTURE {
  //put your variable definitions here for the data you want to receive
  //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
  int button;
  int current_temp;
  int set_temp;
};

//give a name to the group of data
RECEIVE_DATA_STRUCTURE mydata;
// The control pins for the LCD can be assigned to any digital or
// analog pins...but we'll use the analog pins as this allows us to
// double up the pins with the touch screen (see the TFT paint example).
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_CD A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0

// When using the BREAKOUT BOARD only, use these 8 data lines to the LCD:
// For the Arduino Uno, Duemilanove, Diecimila, etc.:
//   D0 connects to digital pin 8  (Notice these are
//   D1 connects to digital pin 9   NOT in order!)
//   D2 connects to digital pin 2
//   D3 connects to digital pin 3
//   D4 connects to digital pin 4
//   D5 connects to digital pin 5
//   D6 connects to digital pin 6
//   D7 connects to digital pin 7
// For the Arduino Mega, use digital pins 22 through 29
// (on the 2-row header at the end of the board).

// For Arduino Uno/Duemilanove, etc
//  connect the SD card with DI going to pin 11, DO going to pin 12 and SCK going to pin 13 (stan

//  Then pin 10 goes to CS (or whatever you have set up)
#define SD_CS 10     // Set the chip select line to whatever you use (10 doesnt conflict with the library)\
  // In the SD card, place 24 bit color BMP files (be sure they are 24-bit!)
// There are examples in the sketch folder

// our TFT wiring
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, A4);
uint8_t         spi_save;

#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x08EF
#define MAGENTA 0xF5E0
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
#define MYDEFINE 0x79F

int COLOR;

int local_current_temp = 0;
int local_set_temp = 0;

int Diff_c_y = 30;  // Difference y is 30 pixel for segment c
int Diff_d_y = 60;  // Difference y is 60 pixel for segment d
int Diff_c_y_low = 10; //      y ...
int Diff_d_y_low = 20;  //     y ...

int MoveX_low = 19;  // Move to 18 pixel to right for  
int MoveX = 46;  // Move to 46 pixel to right

  // Define the TFT LCD digit segments from 0 - 9
byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 },  // = 0
                                 { 0,1,1,0,0,0,0 },  // = 1
                                 { 1,1,0,1,1,0,1 },  // = 2
                                 { 1,1,1,1,0,0,1 },  // = 3
                                 { 0,1,1,0,0,1,1 },  // = 4
                                 { 1,0,1,1,0,1,1 },  // = 5
                                 { 1,0,1,1,1,1,1 },  // = 6
                                 { 1,1,1,0,0,0,0 },  // = 7
                                 { 1,1,1,1,1,1,1 },  // = 8
                                 { 1,1,1,1,0,1,1 }   // = 9
                               };


void setup()
{
  Serial.begin(9600);
  //start the library, pass in the data details and the name of the serial port. Can be Serial, Serial1, Serial2, etc.
  ET.begin(details(mydata), &Serial);

  tft.reset();

  uint16_t identifier = tft.readID();

  tft.begin(identifier);

  Serial.print(F("Initializing SD card..."));
  if (!SD.begin(SD_CS)) {
    Serial.println(F("failed!"));
    return;
  }
  
  Serial.println(F("OK!"));
  spi_save = SPCR;

  tft.setRotation(1);
   bmpDraw("default.bmp", 0, 0);// 
 //    bmpDraw("fulldisp.bmp", 0, 0);// 

  //tft_settemp(0);
  //tft_currtemp(0);
 // tft_timebar(0);
}

 // a function to be executed periodically
void repeatMe() {
    Serial.print("Uptime (s): ");
    Serial.println(millis() / 1000);
}

void loop()
{

/*

while(1)
{
  seven_seg_set_temp_high_byte(8,WHITE);
  seven_seg_set_temp_low_byte(8,WHITE);  
  seven_seg_now_temp_high_byte(8, WHITE);  //   LCD  CLEAR
  seven_seg_now_temp_low_byte(8, WHITE);  //   LCD  CLEAR

  for (int i=0; i<10; i++) {
  seven_seg_set_temp_high_byte(i,RED); //   LCD 
  seven_seg_set_temp_low_byte(i,RED); //   LCD 
  
  seven_seg_now_temp_high_byte(i, BLUE);  //   LCD  
  seven_seg_now_temp_low_byte(i, BLUE);  //   LCD  
  
 delay(1000);
  seven_seg_set_temp_high_byte(i,WHITE); 
  seven_seg_set_temp_low_byte(i,WHITE); 
  
  seven_seg_now_temp_high_byte(i, WHITE);  //   LCD  CLEAR
    seven_seg_now_temp_low_byte(i, WHITE);  //   LCD  CLEAR
 } //for
} // while

*/

 // tft_settemp(local_set_temp); // 
  // tft_currtemp(local_current_temp); //  (  )
  

 
   int toggle =0; 
   int ti_bar=10; 
   int temp_bar = 20;
  my_cleaner_hour();
   
 while(1) {
   toggle = toggle %2;
   
  if (toggle) {
   tft.fillCircle(137, 37, 4, RED); //  on  
   tft.fillCircle(182, 37, 4, RED); //  on  
   
   if (ti_bar < 1) {   ti_bar=10;   }
      tft_timebar(ti_bar); // 
     ti_bar--;
     
     if (temp_bar > 110) { temp_bar = 20;}
     tft_tempbar(temp_bar);
     temp_bar += 10;
  } else
  {
       tft.fillCircle(137, 37, 4, WHITE); //  OFF  
       tft.fillCircle(182, 37, 4, WHITE); //  OFF  
  }// else if
  
     toggle++;
     delay(250);
 } // end of while

/*
// ---------------------------------------------- 
    if (mydata.button == HIGH) {
      tft.fillCircle(137, 37, 4, RED);  //  ON

    }
    else {

      tft.fillCircle(137, 37, 4, WHITE);  //  OFF
    }
  //you should make this delay shorter then your transmit delay or else messages could be lost
  delay(250);
*/

} // end of loop

// This function opens a Windows Bitmap (BMP) file and
// displays it at the given coordinates.  It's sped up
// by reading many pixels worth of data at a time
// (rather than pixel by pixel).  Increasing the buffer
// size takes more of the Arduino's precious RAM but
// makes loading a little faster.  20 pixels seems a
// good balance.

#define BUFFPIXEL 20

void bmpDraw(char *filename, int x, int y) {
  File     bmpFile;
  int      bmpWidth, bmpHeight;   // W+H in pixels
  uint8_t  bmpDepth;              // Bit depth (currently must be 24)
  uint32_t bmpImageoffset;        // Start of image data in file
  uint32_t rowSize;               // Not always = bmpWidth; may have padding
  uint8_t  sdbuffer[3 * BUFFPIXEL]; // pixel in buffer (R+G+B per pixel)
  uint16_t lcdbuffer[BUFFPIXEL];  // pixel out buffer (16-bit per pixel)
  uint8_t  buffidx = sizeof(sdbuffer); // Current position in sdbuffer
  boolean  goodBmp = false;       // Set to true on valid header parse
  boolean  flip    = true;        // BMP is stored bottom-to-top
  int      w, h, row, col;
  uint8_t  r, g, b;
  uint32_t pos = 0, startTime = millis();
  uint8_t  lcdidx = 0;
  boolean  first = true;

  if ((x >= tft.width()) || (y >= tft.height())) return;

  Serial.println();
  Serial.print("Loading image '");
  Serial.print(filename);
  Serial.println('\'');
  // Open requested file on SD card
  SPCR = spi_save;
  if ((bmpFile = SD.open(filename)) == NULL) {
    Serial.print("File not found");
    return;
  }

  // Parse BMP header
  if (read16(bmpFile) == 0x4D42) { // BMP signature
    Serial.print(F("File size: ")); Serial.println(read32(bmpFile));
    (void)read32(bmpFile); // Read & ignore creator bytes
    bmpImageoffset = read32(bmpFile); // Start of image data
    Serial.print(F("Image Offset: ")); Serial.println(bmpImageoffset, DEC);
    // Read DIB header
    Serial.print(F("Header size: ")); Serial.println(read32(bmpFile));
    bmpWidth  = read32(bmpFile);
    bmpHeight = read32(bmpFile);
    if (read16(bmpFile) == 1) { // # planes -- must be '1'
      bmpDepth = read16(bmpFile); // bits per pixel
      Serial.print(F("Bit Depth: ")); Serial.println(bmpDepth);
      if ((bmpDepth == 24) && (read32(bmpFile) == 0)) { // 0 = uncompressed

        goodBmp = true; // Supported BMP format -- proceed!
        Serial.print(F("Image size: "));
        Serial.print(bmpWidth);
        Serial.print('x');
        Serial.println(bmpHeight);

        // BMP rows are padded (if needed) to 4-byte boundary
        rowSize = (bmpWidth * 3 + 3) & ~3;

        // If bmpHeight is negative, image is in top-down order.
        // This is not canon but has been observed in the wild.
        if (bmpHeight < 0) {
          bmpHeight = -bmpHeight;
          flip      = false;
        }

        // Crop area to be loaded
        w = bmpWidth;
        h = bmpHeight;
        if ((x + w - 1) >= tft.width())  w = tft.width()  - x;
        if ((y + h - 1) >= tft.height()) h = tft.height() - y;

        // Set TFT address window to clipped image bounds
        SPCR = 0;
        tft.setAddrWindow(x, y, x + w - 1, y + h - 1);

        for (row = 0; row < h; row++) { // For each scanline...
          // Seek to start of scan line.  It might seem labor-
          // intensive to be doing this on every line, but this
          // method covers a lot of gritty details like cropping
          // and scanline padding.  Also, the seek only takes
          // place if the file position actually needs to change
          // (avoids a lot of cluster math in SD library).
          if (flip) // Bitmap is stored bottom-to-top order (normal BMP)
            pos = bmpImageoffset + (bmpHeight - 1 - row) * rowSize;
          else     // Bitmap is stored top-to-bottom
            pos = bmpImageoffset + row * rowSize;
          SPCR = spi_save;
          if (bmpFile.position() != pos) { // Need seek?
            bmpFile.seek(pos);
            buffidx = sizeof(sdbuffer); // Force buffer reload
          }

          for (col = 0; col < w; col++) { // For each column...
            // Time to read more pixel data?
            if (buffidx >= sizeof(sdbuffer)) { // Indeed
              // Push LCD buffer to the display first
              if (lcdidx > 0) {
                SPCR   = 0;
                tft.pushColors(lcdbuffer, lcdidx, first);
                lcdidx = 0;
                first  = false;
              }
              SPCR = spi_save;
              bmpFile.read(sdbuffer, sizeof(sdbuffer));
              buffidx = 0; // Set index to beginning
            }

            // Convert pixel from BMP to TFT format
            b = sdbuffer[buffidx++];
            g = sdbuffer[buffidx++];
            r = sdbuffer[buffidx++];
            lcdbuffer[lcdidx++] = tft.color565(r, g, b);
          } // end pixel
        } // end scanline
        // Write any remaining data to LCD
        if (lcdidx > 0) {
          SPCR = 0;
          tft.pushColors(lcdbuffer, lcdidx, first);
        }
        Serial.print(F("Loaded in "));
        Serial.print(millis() - startTime);
        Serial.println(" ms");
      } // end goodBmp
    }
  }

  bmpFile.close();
  if (!goodBmp) Serial.println("BMP format not recognized.");
}

// These read 16- and 32-bit types from the SD card file.
// BMP data is stored little-endian, Arduino is little-endian too.
// May need to reverse subscript order if porting elsewhere.

uint16_t read16(File f) {
  uint16_t result;
  ((uint8_t *)&result)[0] = f.read(); // LSB
  ((uint8_t *)&result)[1] = f.read(); // MSB
  return result;
}

uint32_t read32(File f) {
  uint32_t result;
  ((uint8_t *)&result)[0] = f.read(); // LSB
  ((uint8_t *)&result)[1] = f.read();
  ((uint8_t *)&result)[2] = f.read();
  ((uint8_t *)&result)[3] = f.read(); // MSB
  return result;
}


/*   */


void my_cleaner_hour() {
  
  tft.drawRect (37,39,15,139,RED);
  tft.fillRect(39, 165, 12, 11, WHITE);
  tft.fillRect(39, 151, 12, 11, WHITE);
  tft.fillRect(39, 137, 12, 11, WHITE);
  tft.fillRect(39, 124, 12, 11, WHITE);
  tft.fillRect(39, 110, 12, 11, WHITE);
  tft.fillRect(39, 96, 12, 11, WHITE);
  tft.fillRect(39, 83, 12, 11, WHITE);
  tft.fillRect(39, 69, 12, 11, WHITE);
  tft.fillRect(39, 55, 12, 11, WHITE);
  tft.fillRect(39, 41, 12, 11, WHITE);

}
void my_cleaner_temp() {

  tft.fillRect(273, 159, 5, 20, WHITE);
  tft.fillRect(273, 145, 5, 12, WHITE);
  tft.fillRect(273, 131, 5, 12, WHITE);
  tft.fillRect(273, 117, 5, 12, WHITE);
  tft.fillRect(273, 103, 5, 12, WHITE);
  tft.fillRect(273, 89, 5, 12, WHITE);
  tft.fillRect(273, 75, 5, 12, WHITE);
  tft.fillRect(273, 61, 5, 12, WHITE);
  tft.fillCircle(275, 48, 2, WHITE);
  tft.fillRect(273, 50, 5, 9, WHITE);
  tft.fillCircle(275, 182, 7, RED);

}

void tft_timebar(int hourtime) {
 // my_cleaner_hour();

  switch (hourtime) {

    case 1:
      my_cleaner_hour();
      tft.fillRect(39, 165, 12, 11, GREEN);
      break;

    case 2:
      my_cleaner_hour();
      tft.fillRect(39, 165, 12, 11, GREEN);
      tft.fillRect(39, 151, 12, 11, GREEN);
      break;

    case 3:
      my_cleaner_hour();
      tft.fillRect(39, 165, 12, 11, GREEN);
      tft.fillRect(39, 151, 12, 11, GREEN);
      tft.fillRect(39, 137, 12, 11, GREEN);
      break;

    case 4:
      my_cleaner_hour();
      tft.fillRect(39, 165, 12, 11, GREEN);
      tft.fillRect(39, 151, 12, 11, GREEN);
      tft.fillRect(39, 137, 12, 11, GREEN);
      tft.fillRect(39, 124, 12, 11, GREEN);
      break;

    case 5:
      my_cleaner_hour();
      tft.fillRect(39, 165, 12, 11, GREEN);
      tft.fillRect(39, 151, 12, 11, GREEN);
      tft.fillRect(39, 137, 12, 11, GREEN);
      tft.fillRect(39, 124, 12, 11, GREEN);
      tft.fillRect(39, 110, 12, 11, GREEN);
      break;

    case 6:
      my_cleaner_hour();
      tft.fillRect(39, 165, 12, 11, GREEN);
      tft.fillRect(39, 151, 12, 11, GREEN);
      tft.fillRect(39, 137, 12, 11, GREEN);
      tft.fillRect(39, 124, 12, 11, GREEN);
      tft.fillRect(39, 110, 12, 11, GREEN);
      tft.fillRect(39, 96, 12, 11, GREEN);
      break;

    case 7:
      my_cleaner_hour();
      tft.fillRect(39, 165, 12, 11, GREEN);
      tft.fillRect(39, 151, 12, 11, GREEN);
      tft.fillRect(39, 137, 12, 11, GREEN);
      tft.fillRect(39, 124, 12, 11, GREEN);
      tft.fillRect(39, 110, 12, 11, GREEN);
      tft.fillRect(39, 96, 12, 11, GREEN);
      tft.fillRect(39, 83, 12, 11, GREEN);
      break;

    case 8:
      my_cleaner_hour();
      tft.fillRect(39, 165, 12, 11, GREEN);
      tft.fillRect(39, 151, 12, 11, GREEN);
      tft.fillRect(39, 137, 12, 11, GREEN);
      tft.fillRect(39, 124, 12, 11, GREEN);
      tft.fillRect(39, 110, 12, 11, GREEN);
      tft.fillRect(39, 96, 12, 11, GREEN);
      tft.fillRect(39, 83, 12, 11, GREEN);
      tft.fillRect(39, 69, 12, 11, GREEN);
      break;
    case 9:
      my_cleaner_hour();
      tft.fillRect(39, 165, 12, 11, GREEN);
      tft.fillRect(39, 151, 12, 11, GREEN);
      tft.fillRect(39, 137, 12, 11, GREEN);
      tft.fillRect(39, 124, 12, 11, GREEN);
      tft.fillRect(39, 110, 12, 11, GREEN);
      tft.fillRect(39, 96, 12, 11, GREEN);
      tft.fillRect(39, 83, 12, 11, GREEN);
      tft.fillRect(39, 69, 12, 11, GREEN);
      tft.fillRect(39, 55, 12, 11, GREEN);
      break;

    case 10:
      my_cleaner_hour();
      tft.fillRect(39, 165, 12, 11, GREEN);
      tft.fillRect(39, 151, 12, 11, GREEN);
      tft.fillRect(39, 137, 12, 11, GREEN);
      tft.fillRect(39, 124, 12, 11, GREEN);
      tft.fillRect(39, 110, 12, 11, GREEN);
      tft.fillRect(39, 96, 12, 11, GREEN);
      tft.fillRect(39, 83, 12, 11, GREEN);
      tft.fillRect(39, 69, 12, 11, GREEN);
      tft.fillRect(39, 55, 12, 11, GREEN);
      tft.fillRect(39, 41, 12, 11, GREEN);
      break;

    default:
      my_cleaner_hour();
      break;
  }

}
void tft_tempbar(int c) {

  tft.fillCircle(275, 182, 7, RED);

  int range = map(c, 20, 100, 1, 9);
  my_cleaner_temp();
  switch (range) {
    case 1:
      my_cleaner_temp();
      tft.fillRect(273, 159, 5, 20, RED);
      break;
    case 2:
      my_cleaner_temp();
      tft.fillRect(273, 159, 5, 20, RED);
      tft.fillRect(273, 145, 5, 12, RED);
      break;
    case 3:
      my_cleaner_temp();
      tft.fillRect(273, 159, 5, 20, RED);
      tft.fillRect(273, 145, 5, 12, RED);
      tft.fillRect(273, 131, 5, 12, RED);
      break;
    case 4:
      my_cleaner_temp();
      tft.fillRect(273, 159, 5, 20, RED);
      tft.fillRect(273, 145, 5, 12, RED);
      tft.fillRect(273, 131, 5, 12, RED);
      tft.fillRect(273, 117, 5, 12, RED);
      break;
    case 5:
      my_cleaner_temp();
      tft.fillRect(273, 159, 5, 20, RED);
      tft.fillRect(273, 145, 5, 12, RED);
      tft.fillRect(273, 131, 5, 12, RED);
      tft.fillRect(273, 117, 5, 12, RED);
      tft.fillRect(273, 103, 5, 12, RED);
      break;
    case 6:
      my_cleaner_temp();
      tft.fillRect(273, 159, 5, 20, RED);
      tft.fillRect(273, 145, 5, 12, RED);
      tft.fillRect(273, 131, 5, 12, RED);
      tft.fillRect(273, 117, 5, 12, RED);
      tft.fillRect(273, 103, 5, 12, RED);
      tft.fillRect(273, 89, 5, 12, RED);
      break;
    case 7:
      my_cleaner_temp();
      tft.fillRect(273, 159, 5, 20, RED);
      tft.fillRect(273, 145, 5, 12, RED);
      tft.fillRect(273, 131, 5, 12, RED);
      tft.fillRect(273, 117, 5, 12, RED);
      tft.fillRect(273, 103, 5, 12, RED);
      tft.fillRect(273, 89, 5, 12, RED);
      tft.fillRect(273, 75, 5, 12, RED);
      break;
    case 8:
      my_cleaner_temp();
      tft.fillRect(273, 159, 5, 20, RED);
      tft.fillRect(273, 145, 5, 12, RED);
      tft.fillRect(273, 131, 5, 12, RED);
      tft.fillRect(273, 117, 5, 12, RED);
      tft.fillRect(273, 103, 5, 12, RED);
      tft.fillRect(273, 89, 5, 12, RED);
      tft.fillRect(273, 75, 5, 12, RED);
      tft.fillRect(273, 61, 5, 12, RED);
      break;
    case 9:
      my_cleaner_temp();
      tft.fillRect(273, 159, 5, 20, RED);
      tft.fillRect(273, 145, 5, 12, RED);
      tft.fillRect(273, 131, 5, 12, RED);
      tft.fillRect(273, 117, 5, 12, RED);
      tft.fillRect(273, 103, 5, 12, RED);
      tft.fillRect(273, 89, 5, 12, RED);
      tft.fillRect(273, 75, 5, 12, RED);
      tft.fillRect(273, 61, 5, 12, RED);
      tft.fillCircle(275, 48, 2, RED);
      tft.fillRect(273, 50, 5, 9, RED);
      break;
  }

}


void tft_settemp(int b) {
  tft.fillRect(92, 112, 85, 65, BLACK);
  tft.setCursor(92, 112);
  tft.setTextColor(MAGENTA);
  tft.setTextSize(7);
  tft.println(b);
}

void tft_currtemp(int a) {

  tft.fillRect(210, 147, 40, 35, BLACK);
  tft.setCursor(210, 147);
  tft.setTextColor(RED);
  tft.setTextSize(3);
  tft.println(a);

  tft_tempbar(a);

}



//     
void seven_seg_set_temp_high_byte(byte HighByte, int COLOR) {

  
   byte segCount = 0;                            
                               
  //  for (byte segCount = 0; segCount < 7; ++segCount) {
         set_high_byte_segment_a (seven_seg_digits[HighByte][segCount], COLOR);
         segCount++;
         set_high_byte_segment_b (seven_seg_digits[HighByte][segCount], COLOR);   
         segCount++; 
         set_high_byte_segment_c (seven_seg_digits[HighByte][segCount], COLOR); 
         segCount++; 
         set_high_byte_segment_d (seven_seg_digits[HighByte][segCount], COLOR);
         segCount++; 
         set_high_byte_segment_e (seven_seg_digits[HighByte][segCount], COLOR);  
         segCount++; 
         set_high_byte_segment_f (seven_seg_digits[HighByte][segCount], COLOR);  
         segCount++; 
         set_high_byte_segment_g (seven_seg_digits[HighByte][segCount], COLOR);        
 //   } // for
} // end of function
 
//     
void seven_seg_set_temp_low_byte(byte HighByte, int COLOR) {

   byte segCount = 0;                            
                               
  //  for (byte segCount = 0; segCount < 7; ++segCount) {
         set_low_byte_segment_a (seven_seg_digits[HighByte][segCount], COLOR);
         segCount++;
         set_low_byte_segment_b (seven_seg_digits[HighByte][segCount], COLOR);   
         segCount++; 
         set_low_byte_segment_c (seven_seg_digits[HighByte][segCount], COLOR); 
         segCount++; 
         set_low_byte_segment_d (seven_seg_digits[HighByte][segCount], COLOR);
         segCount++; 
         set_low_byte_segment_e (seven_seg_digits[HighByte][segCount], COLOR);  
         segCount++; 
         set_low_byte_segment_f (seven_seg_digits[HighByte][segCount], COLOR);  
         segCount++; 
         set_low_byte_segment_g (seven_seg_digits[HighByte][segCount], COLOR);        
 //   } // for
} // end of function
 
 
 
//     
 void seven_seg_now_temp_high_byte(byte HighByte, int COLOR) {

   byte segCount = 0;                            
                               
  //  for (byte segCount = 0; segCount < 7; ++segCount) {
         time_high_byte_segment_a (seven_seg_digits[HighByte][segCount], COLOR);
         segCount++;
         time_high_byte_segment_b (seven_seg_digits[HighByte][segCount], COLOR);   
         segCount++; 
         time_high_byte_segment_c (seven_seg_digits[HighByte][segCount], COLOR); 
         segCount++; 
         time_high_byte_segment_d (seven_seg_digits[HighByte][segCount], COLOR);
         segCount++; 
         time_high_byte_segment_e (seven_seg_digits[HighByte][segCount], COLOR);  
         segCount++; 
         time_high_byte_segment_f (seven_seg_digits[HighByte][segCount], COLOR);  
         segCount++; 
         time_high_byte_segment_g (seven_seg_digits[HighByte][segCount], COLOR);        
 //   } // for
} // end of function

//////////////////////////////////////////////
//     
/////////////////////////////////////////////
 void seven_seg_now_temp_low_byte(byte HighByte, int COLOR) {

  
   byte segCount = 0;                            
                               
  //  for (byte segCount = 0; segCount < 7; ++segCount) {
         time_low_byte_segment_a (seven_seg_digits[HighByte][segCount], COLOR);
         segCount++;
         time_low_byte_segment_b (seven_seg_digits[HighByte][segCount], COLOR);   
         segCount++; 
         time_low_byte_segment_c (seven_seg_digits[HighByte][segCount], COLOR); 
         segCount++; 
         time_low_byte_segment_d (seven_seg_digits[HighByte][segCount], COLOR);
         segCount++; 
         time_low_byte_segment_e (seven_seg_digits[HighByte][segCount], COLOR);  
         segCount++; 
         time_low_byte_segment_f (seven_seg_digits[HighByte][segCount], COLOR);  
         segCount++; 
         time_low_byte_segment_g (seven_seg_digits[HighByte][segCount], COLOR);        
 //   } // for
} // end of function







 
// -------------------------------------------------
//    7 segment a
 void set_high_byte_segment_a (boolean disp,int COLOR)
  {
   if (disp) {  
    for (int i=0;i < 8 ; i++) {
        tft.drawLine(92+i,110+i,128-i,110+i,COLOR); 
      } // for
  } // if
 } // end of function
  
// -------------------------------------------------


  //    7 segment b
 void set_high_byte_segment_b (boolean disp, int COLOR)
 {
    if (disp) {
      for (int i=0;i < 4 ; i++) {
        tft.drawLine(128-i,113+i,128-i,140-i,COLOR); 
      } // for 
      
      for (int i=0;i < 6 ; i++) {
        tft.drawLine(126-i,115+i,126-i,141-i,COLOR); 
      } // for      
    } // if
   
} // end of function


 // -------------------------------------------------
  //    7 segment c
 void set_high_byte_segment_c (boolean disp, int COLOR)
 {
    if (disp) {
        for (int i=0;i < 8 ; i++) {
        tft.drawLine(129 -i,111+Diff_c_y + i,129-i,143+Diff_c_y - i,COLOR); 
      } // for
    } // if
} // end of function


// -------------------------------------------------
//    7 segment d
void set_high_byte_segment_d (boolean disp, int COLOR)
 {
    if (disp) {
     for (int i=0;i < 8 ; i++) {
  tft.drawLine(98-i,(108 + Diff_d_y + i),119+i,(108 + Diff_d_y + i),COLOR); 
}   
    } // if
} // end of function 

// -------------------------------------------------
  //    7 segment e

 void set_high_byte_segment_e (boolean disp, int COLOR)
 {
    if (disp) {
      for (int i=0;i < 8 ; i++) {
        tft.drawLine(90+i,143+i,90+i,173-i,COLOR); 
      } // for
    } // if
} // end of function

// -------------------------------------------------
  //    7 segment f
 void set_high_byte_segment_f (boolean disp, int COLOR)
 {
    if (disp) {
      for (int i=0;i < 4 ; i++) {
        tft.drawLine(90 +i,111+i,90+i,140+i,COLOR); 
      }//for  
      
      for (int i=0;i < 4 ; i++) {
        tft.drawLine(94+i,115+i,94+i,141-i,COLOR); 
      }  // for
    } // if
} // end of function


// -------------------------------------------------
  //    7 segment g

 void set_high_byte_segment_g (boolean disp, int COLOR)
 {
    if (disp) {
      for (int i=0;i < 4 ; i++) {
        tft.drawLine(98-i,140+i,121+i,140+i,COLOR); 
      } //for
      for (int i=0;i < 4 ; i++) {
        tft.drawLine(94+i,144+i,124-i,144+i,COLOR); 
      } //for   
    } // if
} // end of function

// ============================================================
//   
//=============================================================
// -------------------------------------------------
  //     7 segment a


 void set_low_byte_segment_a (boolean disp, int COLOR)
 {
    if (disp) {
      for (int i=0;i < 8 ; i++) {
        tft.drawLine(92+MoveX+i,110+i,128+MoveX-i,110+i,COLOR); 
      } // for   
     } // if
} // end of function

// -------------------------------------------------
  //     7 segment b
 void set_low_byte_segment_b (boolean disp, int COLOR)
 {
    if (disp) {
      for (int i=0;i < 4 ; i++) {
        tft.drawLine(129+MoveX-i,111+i,129+MoveX-i,139+i,COLOR); 
      } //for

      for (int i=0;i < 6 ; i++) {
        tft.drawLine(126+MoveX-i,115+i,126+MoveX-i,141-i,COLOR); 
      }  //for  
    } // if
} // end of function

// -------------------------------------------------
  //    7 segment c
 void set_low_byte_segment_c (boolean disp, int COLOR)
 {
    if (disp) {
       for (int i=0;i < 8 ; i++) {
        tft.drawLine(129+MoveX-i,111+Diff_c_y + i,129+MoveX-i,145+Diff_c_y - i,COLOR); 
       }  // for 
    } // if
} // end of function

// -------------------------------------------------
  //    7 segment d
 void set_low_byte_segment_d (boolean disp, int COLOR)
 {
    if (disp) {
       for (int i=0;i < 8 ; i++) {
        tft.drawLine(98+MoveX-i,(108 + Diff_d_y + i),119+MoveX+i,(108 + Diff_d_y + i),COLOR); 
      } // for
    } // if
} // end of function

// -------------------------------------------------
  //    7 segment e
 void set_low_byte_segment_e (boolean disp, int COLOR)
 {
    if (disp) {
       for (int i=0;i < 8 ; i++) {
        tft.drawLine(90+MoveX+i,143+i,90+MoveX+i,173-i,COLOR); 
       } // for
    } // if
} // end of function

// -------------------------------------------------
  //    7 segment f
 void set_low_byte_segment_f (boolean disp, int COLOR)
 {
    if (disp) {
      for (int i=0;i < 4 ; i++) {
        tft.drawLine(90+MoveX+i,111+i,90+MoveX+i,140+i,COLOR); 
      }  // for 
      for (int i=0;i < 4 ; i++) {
        tft.drawLine(94+MoveX+i,115+i,94+MoveX+i,141-i,COLOR); 
      }   // for      
    } // if
} // end of function

// -------------------------------------------------
  //    7 segment g


 void set_low_byte_segment_g (boolean disp, int COLOR)
 {
    if (disp) {
      for (int i=0;i < 4 ; i++) {
        tft.drawLine(98+MoveX-i,140+i,121+MoveX+i,140+i,COLOR); 
      } // for
      for (int i=0;i < 4 ; i++) {
        tft.drawLine(94+MoveX+i,144+i,124+MoveX-i,144+i,COLOR); 
      } // for
    } // if
} // end of function

// ============================================================
//    
//=============================================================

// -------------------------------------------------
  //     7 segment a
 void time_high_byte_segment_a (boolean disp, int COLOR)
 {
    if (disp) {
     for (int i=0;i < 3 ; i++) {
      tft.drawLine(210+i,149+i,224-i,149+i,COLOR); 
    }  // for
    } // if
} // end of function

// -------------------------------------------------
  //     7 segment b

 void time_high_byte_segment_b (boolean disp, int COLOR)
 {
    if (disp) {
       for (int i=0;i < 2 ; i++) {
        tft.drawLine(225 -i,150+i,225-i,160+i,COLOR); 
       } // for

      for (int i=0;i < 2 ; i++) {
        tft.drawLine(223-i,152+i,223-i,161-i,COLOR); 
      }  // for
    } // if
} // end of function

// -------------------------------------------------
  //     7 segment c

 void time_high_byte_segment_c (boolean disp, int COLOR)
 {
    if (disp) {
        for (int i=0;i < 4 ; i++) {
        tft.drawLine(225 -i,151+Diff_c_y_low+i,225-i,164+Diff_c_y_low - i,COLOR); 
      }  // for
    } // if
} // end of function

// -------------------------------------------------
  //     7 segment d
 void time_high_byte_segment_d (boolean disp, int COLOR)
 {
    if (disp) {
       for (int i=0;i < 3 ; i++) {
        tft.drawLine(212-i,(153 + Diff_d_y_low + i),222+i,(153 + Diff_d_y_low + i),COLOR); 
      }  // for
    } // if
} // end of function

 
// -------------------------------------------------
  //     7 segment e

 void time_high_byte_segment_e (boolean disp, int COLOR)
 {
    if (disp) {
       for (int i=0;i < 4 ; i++) {
        tft.drawLine(209+i,162+i,209+i,174-i,COLOR); 
      }  // for
    } // if
} // end of function

// -------------------------------------------------
  //     7 segment f
 void time_high_byte_segment_f (boolean disp, int COLOR)
 {
    if (disp) {
      for (int i=0;i < 2 ; i++) {
        tft.drawLine(211+i,152+i,211+i,162-i,COLOR); 
      } // for
      for (int i=0;i < 2 ; i++) {
        tft.drawLine(209 +i,150+i,209+i,160+i,COLOR); 
      } // for
    } // if
} // end of function

// -------------------------------------------------
  //     7 segment g

 void time_high_byte_segment_g (boolean disp, int COLOR)
 {
    if (disp) {
      for (int i=0;i < 2 ; i++) {
        tft.drawLine(214-i,160+i,220+i,160+i,COLOR); 
...

This file has been truncated, please download it to see its full contents.
Debounce_test.inoArduino
 /*
 Debounce

 Each time the input pin goes from LOW to HIGH (e.g. because of a push-button
 press), the output pin is toggled from LOW to HIGH or HIGH to LOW.  There's
 a minimum delay between toggles to debounce the circuit (i.e. to ignore
 noise).

 The circuit:
 * LED attached from pin 13 to ground
 * pushbutton attached from pin 2 to +5V
 * 10K resistor attached from pin 2 to ground

 * Note: On most Arduino boards, there is already an LED on the board
 connected to pin 13, so you don't need any extra components for this example.


 created 21 November 2006
 by David A. Mellis
 modified 30 Aug 2011
 by Limor Fried
 modified 28 Dec 2012
 by Mike Walters

 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/Debounce
 */

// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 2;    // the number of the pushbutton pin
const int ledPin = 13;      // the number of the LED pin

// Variables will change:
int ledState = HIGH;         // the current state of the output pin
int buttonState;             // the current reading from the input pin
int lastButtonState = LOW;   // the previous reading from the input pin

// the following variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long lastDebounceTime = 0;  // the last time the output pin was toggled
long debounceDelay = 50;    // the debounce time; increase if the output flickers

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);

  // set initial LED state
  digitalWrite(ledPin, ledState);
}

void loop() {
  // read the state of the switch into a local variable:
  int reading = digitalRead(buttonPin);

  // check to see if you just pressed the button
  // (i.e. the input went from LOW to HIGH),  and you've waited
  // long enough since the last press to ignore any noise:

  // If the switch changed, due to noise or pressing:
  if (reading != lastButtonState) {
    // reset the debouncing timer
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    // whatever the reading is at, it's been there for longer
    // than the debounce delay, so take it as the actual current state:

    // if the button state has changed:
    if (reading != buttonState) {
      buttonState = reading;

      // only toggle the LED if the new button state is HIGH
      if (buttonState == HIGH) {
        ledState = !ledState;
      }
    }
  }

  // set the LED:
  digitalWrite(ledPin, ledState);

  // save the reading.  Next time through the loop,
  // it'll be the lastButtonState:
  lastButtonState = reading;
}
mainboardArduino
No preview (download only).
ULN2003 libraryC/C++
EESchema-LIBRARY Version 2.3
#encoding utf-8
#
# C
#
DEF C C 0 10 N Y 1 F N
F0 "C" 25 100 50 H V L CNN
F1 "C" 25 -100 50 H V L CNN
F2 "" 38 -150 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 C?
 C_????_*
 C_????
 SMD*_c
 Capacitor*
$ENDFPLIST
DRAW
P 2 0 1 20 -80 -30 80 -30 N
P 2 0 1 20 -80 30 80 30 N
X ~ 1 0 150 110 D 40 40 1 1 P
X ~ 2 0 -150 110 U 40 40 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X02
#
DEF CONN_01X02 P 0 40 Y N 1 F N
F0 "P" 0 150 50 H V C CNN
F1 "CONN_01X02" 100 0 50 V V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 Pin_Header_Straight_1X02
 Pin_Header_Angled_1X02
 Socket_Strip_Straight_1X02
 Socket_Strip_Angled_1X02
$ENDFPLIST
DRAW
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 100 50 -100 0 1 0 N
X P1 1 -200 50 150 R 50 50 1 1 P
X P2 2 -200 -50 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X04
#
DEF CONN_01X04 P 0 40 Y N 1 F N
F0 "P" 0 250 50 H V C CNN
F1 "CONN_01X04" 100 0 50 V V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 Pin_Header_Straight_1X04
 Pin_Header_Angled_1X04
 Socket_Strip_Straight_1X04
 Socket_Strip_Angled_1X04
$ENDFPLIST
DRAW
S -50 -145 10 -155 0 1 0 N
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 155 10 145 0 1 0 N
S -50 200 50 -200 0 1 0 N
X P1 1 -200 150 150 R 50 50 1 1 P
X P2 2 -200 50 150 R 50 50 1 1 P
X P3 3 -200 -50 150 R 50 50 1 1 P
X P4 4 -200 -150 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X08
#
DEF CONN_01X08 P 0 40 Y N 1 F N
F0 "P" 0 450 50 H V C CNN
F1 "CONN_01X08" 100 0 50 V V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 Pin_Header_Straight_1X08
 Pin_Header_Angled_1X08
 Socket_Strip_Straight_1X08
 Socket_Strip_Angled_1X08
$ENDFPLIST
DRAW
S -50 -400 50 400 0 1 0 N
S -50 -345 10 -355 0 1 0 N
S -50 -245 10 -255 0 1 0 N
S -50 -145 10 -155 0 1 0 N
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 155 10 145 0 1 0 N
S -50 255 10 245 0 1 0 N
S -50 355 10 345 0 1 0 N
X P1 1 -200 350 150 R 50 50 1 1 P
X P2 2 -200 250 150 R 50 50 1 1 P
X P3 3 -200 150 150 R 50 50 1 1 P
X P4 4 -200 50 150 R 50 50 1 1 P
X P5 5 -200 -50 150 R 50 50 1 1 P
X P6 6 -200 -150 150 R 50 50 1 1 P
X P7 7 -200 -250 150 R 50 50 1 1 P
X P8 8 -200 -350 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X09
#
DEF CONN_01X09 P 0 40 Y N 1 F N
F0 "P" 0 500 50 H V C CNN
F1 "CONN_01X09" 100 0 50 V V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 Pin_Header_Straight_1X09
 Pin_Header_Angled_1X09
 Socket_Strip_Straight_1X09
 Socket_Strip_Angled_1X09
$ENDFPLIST
DRAW
S -50 -395 10 -405 0 1 0 N
S -50 -295 10 -305 0 1 0 N
S -50 -195 10 -205 0 1 0 N
S -50 -95 10 -105 0 1 0 N
S -50 5 10 -5 0 1 0 N
S -50 105 10 95 0 1 0 N
S -50 205 10 195 0 1 0 N
S -50 305 10 295 0 1 0 N
S -50 405 10 395 0 1 0 N
S -50 450 50 -450 0 1 0 N
X P1 1 -200 400 150 R 50 50 1 1 P
X P2 2 -200 300 150 R 50 50 1 1 P
X P3 3 -200 200 150 R 50 50 1 1 P
X P4 4 -200 100 150 R 50 50 1 1 P
X P5 5 -200 0 150 R 50 50 1 1 P
X P6 6 -200 -100 150 R 50 50 1 1 P
X P7 7 -200 -200 150 R 50 50 1 1 P
X P8 8 -200 -300 150 R 50 50 1 1 P
X P9 9 -200 -400 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X10
#
DEF CONN_01X10 P 0 40 Y N 1 F N
F0 "P" 0 550 50 H V C CNN
F1 "CONN_01X10" 100 0 50 V V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 Pin_Header_Straight_1X10
 Pin_Header_Angled_1X10
 Socket_Strip_Straight_1X10
 Socket_Strip_Angled_1X10
$ENDFPLIST
DRAW
S -50 -445 10 -455 0 1 0 N
S -50 -345 10 -355 0 1 0 N
S -50 -245 10 -255 0 1 0 N
S -50 -145 10 -155 0 1 0 N
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 155 10 145 0 1 0 N
S -50 255 10 245 0 1 0 N
S -50 355 10 345 0 1 0 N
S -50 455 10 445 0 1 0 N
S -50 500 50 -500 0 1 0 N
X P1 1 -200 450 150 R 50 50 1 1 P
X P2 2 -200 350 150 R 50 50 1 1 P
X P3 3 -200 250 150 R 50 50 1 1 P
X P4 4 -200 150 150 R 50 50 1 1 P
X P5 5 -200 50 150 R 50 50 1 1 P
X P6 6 -200 -50 150 R 50 50 1 1 P
X P7 7 -200 -150 150 R 50 50 1 1 P
X P8 8 -200 -250 150 R 50 50 1 1 P
X P9 9 -200 -350 150 R 50 50 1 1 P
X P10 10 -200 -450 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_02X10
#
DEF CONN_02X10 P 0 1 Y N 1 F N
F0 "P" 0 550 50 H V C CNN
F1 "CONN_02X10" 0 0 50 V V C CNN
F2 "" 0 -1200 50 H V C CNN
F3 "" 0 -1200 50 H V C CNN
$FPLIST
 Pin_Header_Straight_2X10
 Pin_Header_Angled_2X10
 Socket_Strip_Straight_2X10
 Socket_Strip_Angled_2X10
$ENDFPLIST
DRAW
S -100 -445 -50 -455 0 1 0 N
S -100 -345 -50 -355 0 1 0 N
S -100 -245 -50 -255 0 1 0 N
S -100 -145 -50 -155 0 1 0 N
S -100 -45 -50 -55 0 1 0 N
S -100 55 -50 45 0 1 0 N
S -100 155 -50 145 0 1 0 N
S -100 255 -50 245 0 1 0 N
S -100 355 -50 345 0 1 0 N
S -100 455 -50 445 0 1 0 N
S -100 500 100 -500 0 1 0 N
S 50 -445 100 -455 0 1 0 N
S 50 -345 100 -355 0 1 0 N
S 50 -245 100 -255 0 1 0 N
S 50 -145 100 -155 0 1 0 N
S 50 -45 100 -55 0 1 0 N
S 50 55 100 45 0 1 0 N
S 50 155 100 145 0 1 0 N
S 50 255 100 245 0 1 0 N
S 50 355 100 345 0 1 0 N
S 50 455 100 445 0 1 0 N
X P1 1 -250 450 150 R 50 50 1 1 P
X P2 2 250 450 150 L 50 50 1 1 P
X P3 3 -250 350 150 R 50 50 1 1 P
X P4 4 250 350 150 L 50 50 1 1 P
X P5 5 -250 250 150 R 50 50 1 1 P
X P6 6 250 250 150 L 50 50 1 1 P
X P7 7 -250 150 150 R 50 50 1 1 P
X P8 8 250 150 150 L 50 50 1 1 P
X P9 9 -250 50 150 R 50 50 1 1 P
X P10 10 250 50 150 L 50 50 1 1 P
X P20 20 250 -450 150 L 50 50 1 1 P
X P11 11 -250 -50 150 R 50 50 1 1 P
X P12 12 250 -50 150 L 50 50 1 1 P
X P13 13 -250 -150 150 R 50 50 1 1 P
X P14 14 250 -150 150 L 50 50 1 1 P
X P15 15 -250 -250 150 R 50 50 1 1 P
X P16 16 250 -250 150 L 50 50 1 1 P
X P17 17 -250 -350 150 R 50 50 1 1 P
X P18 18 250 -350 150 L 50 50 1 1 P
X P19 19 -250 -450 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_02X18
#
DEF CONN_02X18 P 0 1 Y N 1 F N
F0 "P" 0 950 50 H V C CNN
F1 "CONN_02X18" 0 0 50 V V C CNN
F2 "" 0 -1050 50 H V C CNN
F3 "" 0 -1050 50 H V C CNN
$FPLIST
 Pin_Header_Straight_2X18
 Pin_Header_Angled_2X18
 Socket_Strip_Straight_2X18
 Socket_Strip_Angled_2X18
$ENDFPLIST
DRAW
S -100 -845 -50 -855 0 1 0 N
S -100 -745 -50 -755 0 1 0 N
S -100 -645 -50 -655 0 1 0 N
S -100 -545 -50 -555 0 1 0 N
S -100 -445 -50 -455 0 1 0 N
S -100 -345 -50 -355 0 1 0 N
S -100 -245 -50 -255 0 1 0 N
S -100 -145 -50 -155 0 1 0 N
S -100 -45 -50 -55 0 1 0 N
S -100 55 -50 45 0 1 0 N
S -100 155 -50 145 0 1 0 N
S -100 255 -50 245 0 1 0 N
S -100 355 -50 345 0 1 0 N
S -100 455 -50 445 0 1 0 N
S -100 555 -50 545 0 1 0 N
S -100 655 -50 645 0 1 0 N
S -100 755 -50 745 0 1 0 N
S -100 855 -50 845 0 1 0 N
S -100 900 100 -900 0 1 0 N
S 50 -845 100 -855 0 1 0 N
S 50 -745 100 -755 0 1 0 N
S 50 -645 100 -655 0 1 0 N
S 50 -545 100 -555 0 1 0 N
S 50 -445 100 -455 0 1 0 N
S 50 -345 100 -355 0 1 0 N
S 50 -245 100 -255 0 1 0 N
S 50 -145 100 -155 0 1 0 N
S 50 -45 100 -55 0 1 0 N
S 50 55 100 45 0 1 0 N
S 50 155 100 145 0 1 0 N
S 50 255 100 245 0 1 0 N
S 50 355 100 345 0 1 0 N
S 50 455 100 445 0 1 0 N
S 50 555 100 545 0 1 0 N
S 50 655 100 645 0 1 0 N
S 50 755 100 745 0 1 0 N
S 50 855 100 845 0 1 0 N
X P1 1 -250 850 150 R 50 50 1 1 P
X P2 2 250 850 150 L 50 50 1 1 P
X P3 3 -250 750 150 R 50 50 1 1 P
X P4 4 250 750 150 L 50 50 1 1 P
X P5 5 -250 650 150 R 50 50 1 1 P
X P6 6 250 650 150 L 50 50 1 1 P
X P7 7 -250 550 150 R 50 50 1 1 P
X P8 8 250 550 150 L 50 50 1 1 P
X P9 9 -250 450 150 R 50 50 1 1 P
X P10 10 250 450 150 L 50 50 1 1 P
X P20 20 250 -50 150 L 50 50 1 1 P
X P30 30 250 -550 150 L 50 50 1 1 P
X P11 11 -250 350 150 R 50 50 1 1 P
X P21 21 -250 -150 150 R 50 50 1 1 P
X P31 31 -250 -650 150 R 50 50 1 1 P
X P12 12 250 350 150 L 50 50 1 1 P
X P22 22 250 -150 150 L 50 50 1 1 P
X P32 32 250 -650 150 L 50 50 1 1 P
X P13 13 -250 250 150 R 50 50 1 1 P
X P23 23 -250 -250 150 R 50 50 1 1 P
X P33 33 -250 -750 150 R 50 50 1 1 P
X P14 14 250 250 150 L 50 50 1 1 P
X P24 24 250 -250 150 L 50 50 1 1 P
X P34 34 250 -750 150 L 50 50 1 1 P
X P15 15 -250 150 150 R 50 50 1 1 P
X P25 25 -250 -350 150 R 50 50 1 1 P
X P35 35 -250 -850 150 R 50 50 1 1 P
X P16 16 250 150 150 L 50 50 1 1 P
X P26 26 250 -350 150 L 50 50 1 1 P
X P36 36 250 -850 150 L 50 50 1 1 P
X P17 17 -250 50 150 R 50 50 1 1 P
X P27 27 -250 -450 150 R 50 50 1 1 P
X P18 18 250 50 150 L 50 50 1 1 P
X P28 28 250 -450 150 L 50 50 1 1 P
X P19 19 -250 -50 150 R 50 50 1 1 P
X P29 29 -250 -550 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CP1
#
DEF CP1 C 0 10 N N 1 F N
F0 "C" 25 100 50 H V L CNN
F1 "CP1" 25 -100 50 H V L CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 SMD*_Pol
 C_Axial*
 C_Radial*
 c_elec*
 C*elec
 TantalC*
 CP*
$ENDFPLIST
DRAW
A 0 -150 128 1287 513 0 1 20 N -80 -50 80 -50
P 2 0 1 20 -80 30 80 30 N
P 2 0 1 0 -70 90 -30 90 N
P 2 0 1 0 -50 70 -50 110 N
X ~ 1 0 150 110 D 40 40 1 1 P
X ~ 2 0 -150 130 U 40 40 1 1 P
ENDDRAW
ENDDEF
#
# GND
#
DEF GND #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -250 50 H I C CNN
F1 "GND" 0 -150 50 H V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
DRAW
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
X GND 1 0 0 0 D 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# R
#
DEF R R 0 0 N Y 1 F N
F0 "R" 80 0 50 V V C CNN
F1 "R" 0 0 50 V V C CNN
F2 "" -70 0 50 V V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 R_*
 Resistor_*
$ENDFPLIST
DRAW
S -40 -100 40 100 0 1 10 N
X ~ 1 0 150 50 D 50 50 1 1 P
X ~ 2 0 -150 50 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# UNL2003
#
DEF UNL2003 U 0 40 Y Y 1 F N
F0 "U" 200 200 60 H V C CNN
F1 "UNL2003" 400 -1000 60 H V C CNN
F2 "" 200 0 60 H I C CNN
F3 "" 200 0 60 H I C CNN
DRAW
S 100 100 800 -900 0 1 0 N
P 4 0 1 0 400 100 400 0 500 0 500 100 N
X IN1 1 -100 -100 200 R 50 50 1 1 I
X IN2 2 -100 -200 200 R 50 50 1 1 I
X IN3 3 -100 -300 200 R 50 50 1 1 I
X IN4 4 -100 -400 200 R 50 50 1 1 I
X IN5 5 -100 -500 200 R 50 50 1 1 I
X IN6 6 -100 -600 200 R 50 50 1 1 I
X IN7 7 -100 -700 200 R 50 50 1 1 I
X GND 8 -100 -800 200 R 50 50 1 1 I
X VCC 9 1000 -800 200 L 50 50 1 1 I
X OUT7 10 1000 -700 200 L 50 50 1 1 O
X OUT6 11 1000 -600 200 L 50 50 1 1 O
X OUT5 12 1000 -500 200 L 50 50 1 1 O
X OUT4 13 1000 -400 200 L 50 50 1 1 O
X OUT3 14 1000 -300 200 L 50 50 1 1 O
X OUT2 15 1000 -200 200 L 50 50 1 1 O
X OUT1 16 1000 -100 200 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
#End Library
circuit C/C++
EESchema Schematic File Version 2
LIBS:unl2003
LIBS:power
LIBS:device
LIBS:transistors
LIBS:conn
LIBS:linear
LIBS:regul
LIBS:74xx
LIBS:cmos4000
LIBS:adc-dac
LIBS:memory
LIBS:xilinx
LIBS:microcontrollers
LIBS:dsp
LIBS:microchip
LIBS:analog_switches
LIBS:motorola
LIBS:texas
LIBS:intel
LIBS:audio
LIBS:interface
LIBS:digital-audio
LIBS:philips
LIBS:display
LIBS:cypress
LIBS:siliconi
LIBS:opto
LIBS:atmel
LIBS:contrib
LIBS:valves
LIBS:-cache
EELAYER 25 0
EELAYER END
$Descr A4 11693 8268
encoding utf-8
Sheet 1 1
Title ""
Date ""
Rev ""
Comp ""
Comment1 ""
Comment2 ""
Comment3 ""
Comment4 ""
$EndDescr
$Comp
L CONN_01X04 P5
U 1 1 57BAAA1F
P 3800 1200
F 0 "P5" H 3800 1450 50  0000 C CNN
F 1 "TEMP_SENSOR" V 3950 1200 50  0000 C CNN
F 2 "Connectors_Molex:Molex_PicoBlade_53047-0410" H 3800 1200 50  0001 C CNN
F 3 "" H 3800 1200 50  0000 C CNN
	1    3800 1200
	-1   0    0    1   
$EndComp
$Comp
L CONN_01X04 P6
U 1 1 57BAAB40
P 4250 5900
F 0 "P6" H 4250 6150 50  0000 C CNN
F 1 "RGB LED" V 4350 5900 50  0000 C CNN
F 2 "Connectors_Molex:Molex_PicoBlade_53047-0410" H 4250 5900 50  0001 C CNN
F 3 "" H 4250 5900 50  0000 C CNN
	1    4250 5900
	1    0    0    -1  
$EndComp
$Comp
L CONN_01X02 P8
U 1 1 57BAABD7
P 4450 6600
F 0 "P8" H 4450 6750 50  0000 C CNN
F 1 "12V" V 4550 6600 50  0000 C CNN
F 2 "Socket_Strips:Socket_Strip_Angled_1x02" H 4450 6600 50  0001 C CNN
F 3 "" H 4450 6600 50  0000 C CNN
	1    4450 6600
	1    0    0    1   
$EndComp
$Comp
L CONN_01X02 P12
U 1 1 57BAAC10
P 7850 5900
F 0 "P12" H 7850 6050 50  0000 C CNN
F 1 "SSR CONTROL" H 8200 5900 50  0000 C CNN
F 2 "Connectors_JST:JST_EH_S02B-EH_02x2.50mm_Angled" H 7850 5900 50  0001 C CNN
F 3 "" H 7850 5900 50  0000 C CNN
	1    7850 5900
	1    0    0    -1  
$EndComp
$Comp
L CONN_01X02 P13
U 1 1 57BAAFA6
P 8100 2000
F 0 "P13" H 8100 2150 50  0000 C CNN
F 1 "5V" V 8200 2000 50  0000 C CNN
F 2 "Connectors_Harwin:Harwin_LTek-Male_02x2.00mm_Straight" H 8100 2000 50  0001 C CNN
F 3 "" H 8100 2000 50  0000 C CNN
	1    8100 2000
	1    0    0    1   
$EndComp
$Comp
L CONN_01X08 P11
U 1 1 57BAAFD3
P 6750 1950
F 0 "P11" H 6750 2400 50  0000 C CNN
F 1 "CONN_01X08" V 6850 1950 50  0000 C CNN
F 2 "Connectors_JST:JST_EH_B08B-EH-A_08x2.50mm_Straight" H 6750 1950 50  0001 C CNN
F 3 "" H 6750 1950 50  0000 C CNN
	1    6750 1950
	0    1    -1   0   
$EndComp
$Comp
L CONN_01X08 P9
U 1 1 57BAB173
P 5600 1950
F 0 "P9" H 5600 2400 50  0000 C CNN
F 1 "ANALOG_INPUT 1" V 5700 1950 50  0000 C CNN
F 2 "Connectors_JST:JST_EH_B08B-EH-A_08x2.50mm_Straight" H 5600 1950 50  0001 C CNN
F 3 "" H 5600 1950 50  0000 C CNN
	1    5600 1950
	0    1    -1   0   
$EndComp
$Comp
L CONN_01X10 P7
U 1 1 57BAB23B
P 4400 1950
F 0 "P7" H 4400 2500 50  0000 C CNN
F 1 "ANALOG IN 2" V 4500 1950 50  0000 C CNN
F 2 "Connectors_JST:JST_EH_B10B-EH-A_10x2.50mm_Straight" H 4400 1950 50  0001 C CNN
F 3 "" H 4400 1950 50  0000 C CNN
	1    4400 1950
	0    1    -1   0   
$EndComp
$Comp
L CONN_01X08 P1
U 1 1 57BAB35D
P 2100 7600
F 0 "P1" H 2100 8050 50  0000 C CNN
F 1 "COMMUNICATION" V 2200 7600 50  0000 C CNN
F 2 "Pin_Headers:Pin_Header_Straight_1x08" H 2100 7600 50  0001 C CNN
F 3 "" H 2100 7600 50  0000 C CNN
	1    2100 7600
	0    1    1    0   
$EndComp
$Comp
L CONN_01X08 P4
U 1 1 57BAB3DC
P 3700 7550
F 0 "P4" H 3700 8000 50  0000 C CNN
F 1 "PWM 1" V 3800 7550 50  0000 C CNN
F 2 "Connectors_Molex:Molex_KK-6410-08_08x2.54mm_Straight" H 3700 7550 50  0001 C CNN
F 3 "" H 3700 7550 50  0000 C CNN
	1    3700 7550
	0    -1   1    0   
$EndComp
$Comp
L CONN_01X10 P10
U 1 1 57BAB49C
P 6650 6200
F 0 "P10" H 6650 6750 50  0000 C CNN
F 1 "PWM 2" V 6750 6200 50  0000 C CNN
F 2 "Connectors_JST:JST_EH_B10B-EH-A_10x2.50mm_Straight" H 6650 6200 50  0001 C CNN
F 3 "" H 6650 6200 50  0000 C CNN
	1    6650 6200
	0    -1   1    0   
$EndComp
NoConn ~ 7100 2150
NoConn ~ 7000 2150
NoConn ~ 6900 2150
$Comp
L GND #PWR01
U 1 1 57BACD12
P 6500 2300
F 0 "#PWR01" H 6500 2050 50  0001 C CNN
F 1 "GND" H 6500 2150 50  0000 C CNN
F 2 "" H 6500 2300 50  0000 C CNN
F 3 "" H 6500 2300 50  0000 C CNN
	1    6500 2300
	1    0    0    -1  
$EndComp
NoConn ~ 6400 2150
$Comp
L GND #PWR02
U 1 1 57BACEC2
P 7900 2200
F 0 "#PWR02" H 7900 1950 50  0001 C CNN
F 1 "GND" H 7900 2050 50  0000 C CNN
F 2 "" H 7900 2200 50  0000 C CNN
F 3 "" H 7900 2200 50  0000 C CNN
	1    7900 2200
	1    0    0    -1  
$EndComp
$Comp
L CONN_02X10 P14
U 1 1 57BACF05
P 8850 3650
F 0 "P14" H 8850 4200 50  0000 C CNN
F 1 "TFT_LCD_CON" V 8850 3650 50  0000 C CNN
F 2 "Connect:IDC_Header_Straight_20pins" H 8850 2450 50  0000 C CNN
F 3 "" H 8850 2450 50  0000 C CNN
	1    8850 3650
	1    0    0    -1  
$EndComp
Text Label 8350 3150 0    60   ~ 0
3.3V
Text Label 7700 1950 0    60   ~ 0
5V
NoConn ~ 5450 2150
NoConn ~ 5350 2150
NoConn ~ 5250 2150
Text Label 8250 3300 0    60   ~ 0
LCD_RD
Text Label 5950 2250 0    60   ~ 0
LCD_RD
Text Label 8250 3400 0    60   ~ 0
LCD_WR
Text Label 5850 2350 0    60   ~ 0
LCD_WR
Text Label 8250 3500 0    60   ~ 0
LCD_RS
Text Label 8250 3600 0    60   ~ 0
LCD_CS
Text Label 5750 2450 0    60   ~ 0
LCD_RS
Text Label 5650 2550 0    60   ~ 0
LCS_CS
Text Label 8250 3700 0    60   ~ 0
LCD_RST
Text Label 5550 2650 0    60   ~ 0
LCD_RST
NoConn ~ 3550 4700
NoConn ~ 3050 4700
Text Label 8250 3800 0    60   ~ 0
LCD_D0
Text Label 3700 4600 0    60   ~ 0
LCD_D0
Text Label 8250 3900 0    60   ~ 0
LCD_D1
Text Label 2550 4650 0    60   ~ 0
LCD_D1
Text Label 8250 4000 0    60   ~ 0
LCD_D2
Text Label 3700 4500 0    60   ~ 0
LCD_D2
Text Label 8250 4100 0    60   ~ 0
LCD_D3
Text Label 2550 4550 0    60   ~ 0
LCD_D3
Text Label 3700 4400 0    60   ~ 0
LCD_D4
Text Label 9250 4100 0    60   ~ 0
LCD_D4
Text Label 9250 4000 0    60   ~ 0
LCD_D5
Text Label 2550 4400 0    60   ~ 0
LCD_D5
Text Label 9250 3900 0    60   ~ 0
LCD_D6
Text Label 3700 4300 0    60   ~ 0
LCD_D6
Text Label 9250 3800 0    60   ~ 0
LCD_D7
Text Label 2550 4300 0    60   ~ 0
LCD_D7
Text Label 3650 3100 0    60   ~ 0
SD_SCK
Text Label 9250 3700 0    60   ~ 0
SD_SCK
Text Label 9250 3600 0    60   ~ 0
SD_DO
Text Label 3650 3200 0    60   ~ 0
SD_DO
Text Label 9250 3500 0    60   ~ 0
SD_DI
Text Label 2650 3200 0    60   ~ 0
LCD_DI
Text Label 9250 3400 0    60   ~ 0
SD_SS
Text Label 6450 5650 0    60   ~ 0
SD_SS
Text Label 6650 2250 0    60   ~ 0
5V
Text Label 9250 3300 0    60   ~ 0
GND
Text Label 9250 3200 0    60   ~ 0
5V
Text Label 8350 2650 0    60   ~ 0
5V
Text Label 8700 2800 0    60   ~ 0
GND
$Comp
L GND #PWR03
U 1 1 57BB4855
P 7650 6100
F 0 "#PWR03" H 7650 5850 50  0001 C CNN
F 1 "GND" H 7650 5950 50  0000 C CNN
F 2 "" H 7650 6100 50  0000 C CNN
F 3 "" H 7650 6100 50  0000 C CNN
	1    7650 6100
	1    0    0    -1  
$EndComp
Text Label 4050 6200 3    60   ~ 0
12V
$Comp
L UNL2003 U1
U 1 1 57BB5592
P 2900 5650
F 0 "U1" H 3100 5850 60  0000 C CNN
F 1 "UNL2003" H 3300 4650 60  0000 C CNN
F 2 "Housings_DIP:DIP-16_W7.62mm" H 3100 5650 60  0001 C CNN
F 3 "" H 3100 5650 60  0001 C CNN
	1    2900 5650
	1    0    0    -1  
$EndComp
$Comp
L GND #PWR04
U 1 1 57BAF102
P 4250 6850
F 0 "#PWR04" H 4250 6600 50  0001 C CNN
F 1 "GND" H 4250 6700 50  0000 C CNN
F 2 "" H 4250 6850 50  0000 C CNN
F 3 "" H 4250 6850 50  0000 C CNN
	1    4250 6850
	1    0    0    -1  
$EndComp
NoConn ~ 3900 6050
NoConn ~ 3900 6150
NoConn ~ 3900 6250
NoConn ~ 3900 6350
NoConn ~ 2800 6050
NoConn ~ 2800 6150
NoConn ~ 2800 6250
NoConn ~ 2800 6350
NoConn ~ 3350 7350
NoConn ~ 3450 7350
NoConn ~ 3850 7350
NoConn ~ 3950 7350
NoConn ~ 4050 7350
Text Label 2500 5750 0    60   ~ 0
RGB_R
Text Label 2500 5850 0    60   ~ 0
RGB_G
Text Label 2500 5950 0    60   ~ 0
RGB_B
Text Label 3150 7200 0    60   ~ 0
RGB_R
Text Label 3550 7150 0    60   ~ 0
RGB_G
Text Label 3700 7000 0    60   ~ 0
RGB_B
NoConn ~ 1750 7400
NoConn ~ 1850 7400
NoConn ~ 1950 7400
NoConn ~ 2050 7400
NoConn ~ 2150 7400
NoConn ~ 2250 7400
NoConn ~ 2350 7400
NoConn ~ 2450 7400
$Comp
L CONN_01X09 P2
U 1 1 57BB1CDC
P 3000 1850
F 0 "P2" H 3000 2350 50  0000 C CNN
F 1 "KEY_INPUT" V 3100 1850 50  0000 C CNN
F 2 "Connectors_Molex:Molex_PicoBlade_53047-0910" H 3000 1850 50  0001 C CNN
F 3 "" H 3000 1850 50  0000 C CNN
	1    3000 1850
	1    0    0    -1  
$EndComp
Text Label 2250 3900 0    60   ~ 0
KEY_INPUT1
Text Label 3600 3900 0    60   ~ 0
KEY_INPUT2
Text Label 2050 1450 0    60   ~ 0
KEY_INPUT1
Text Label 2050 1550 0    60   ~ 0
KEY_INPUT2
Text Label 2250 4000 0    60   ~ 0
KEY_INPUT3
Text Label 2050 1650 0    60   ~ 0
KEY_INPUT3
Text Label 3600 4000 0    60   ~ 0
KEY_INPUT4
Text Label 2050 1750 0    60   ~ 0
KEY_INPUT4
Text Label 2250 4100 0    60   ~ 0
KEY_INPUT5
Text Label 2150 1850 0    60   ~ 0
KEY_INPUT5
Text Label 3600 4100 0    60   ~ 0
KEY_INPUT6
Text Label 2200 1950 0    60   ~ 0
KEY_INPUT6
Text Label 2250 4200 0    60   ~ 0
KEY_INPUT7
NoConn ~ 3550 4200
Text Label 2400 2150 0    60   ~ 0
5V
$Comp
L GND #PWR05
U 1 1 57BB54AF
P 2700 2550
F 0 "#PWR05" H 2700 2300 50  0001 C CNN
F 1 "GND" H 2700 2400 50  0000 C CNN
F 2 "" H 2700 2550 50  0000 C CNN
F 3 "" H 2700 2550 50  0000 C CNN
	1    2700 2550
	1    0    0    -1  
$EndComp
NoConn ~ 3050 3000
NoConn ~ 3550 3000
NoConn ~ 3050 3100
NoConn ~ 3050 3300
NoConn ~ 3050 3400
NoConn ~ 3050 3500
NoConn ~ 3050 3600
NoConn ~ 3050 3700
NoConn ~ 3050 3800
NoConn ~ 3550 3300
NoConn ~ 3550 3400
NoConn ~ 3550 3500
NoConn ~ 3550 3600
NoConn ~ 3550 3700
NoConn ~ 3550 3800
Text Label 6700 5850 0    60   ~ 0
HEATER_ON_OFF
NoConn ~ 6200 6000
NoConn ~ 6300 6000
NoConn ~ 6600 6000
NoConn ~ 6700 6000
NoConn ~ 6800 6000
NoConn ~ 6900 6000
NoConn ~ 7000 6000
NoConn ~ 7100 6000
Text Label 4200 1050 0    60   ~ 0
5V
$Comp
L R R1
U 1 1 57BB9F46
P 4700 1350
F 0 "R1" V 4600 1350 50  0000 C CNN
F 1 "15K" V 4700 1350 50  0000 C CNN
F 2 "Resistors_ThroughHole:Resistor_Horizontal_RM7mm" V 4630 1350 50  0001 C CNN
F 3 "" H 4700 1350 50  0000 C CNN
	1    4700 1350
	0    -1   -1   0   
$EndComp
Wire Wire Line
	7650 1950 7900 1950
Wire Wire Line
	6500 2150 6500 2300
Connection ~ 7900 2050
Wire Wire Line
	6800 2150 6800 2400
Wire Wire Line
	6800 2400 8600 2400
Wire Wire Line
	8600 2400 8600 3200
Wire Wire Line
	6700 2150 6700 2250
Wire Wire Line
	6700 2250 7650 2250
Wire Wire Line
	7650 1950 7650 2650
Wire Wire Line
	6600 2150 6600 2300
Wire Wire Line
	6600 2300 7700 2300
Wire Wire Line
	7700 2050 7700 2700
Wire Wire Line
	7700 2050 7900 2050
Wire Wire Line
	7900 2050 7900 2200
Wire Wire Line
	5950 2150 5950 2800
Wire Wire Line
	5950 2800 8150 2800
Wire Wire Line
	8150 2800 8150 3300
Wire Wire Line
	8150 3300 8600 3300
Wire Wire Line
	5850 2150 5850 2850
Wire Wire Line
	5850 2850 8100 2850
Wire Wire Line
	8100 2850 8100 3400
Wire Wire Line
	8100 3400 8600 3400
Wire Wire Line
	5750 2150 5750 2900
Wire Wire Line
	5750 2900 8050 2900
Wire Wire Line
	8050 2900 8050 3500
Wire Wire Line
	8050 3500 8600 3500
Wire Wire Line
	5650 2150 5650 2950
Wire Wire Line
	5650 2950 8000 2950
Wire Wire Line
	8000 2950 8000 3600
Wire Wire Line
	8000 3600 8600 3600
Wire Wire Line
	5550 2150 5550 3000
Wire Wire Line
	5550 3000 7950 3000
Wire Wire Line
	7950 3000 7950 3700
Wire Wire Line
	7950 3700 8600 3700
Wire Wire Line
	3550 4600 7950 4600
Wire Wire Line
	7950 4600 7950 3800
Wire Wire Line
	7950 3800 8600 3800
Wire Wire Line
	3050 4600 2950 4600
Wire Wire Line
	2950 4600 2950 4850
Wire Wire Line
	2950 4850 3650 4850
Wire Wire Line
	3650 4850 3650 4650
Wire Wire Line
	3650 4650 8000 4650
Wire Wire Line
	8000 4650 8000 3900
Wire Wire Line
	8000 3900 8600 3900
Wire Wire Line
	3550 4500 7850 4500
Wire Wire Line
	7850 4500 7850 4000
Wire Wire Line
	7850 4000 8600 4000
Wire Wire Line
	3050 4500 2900 4500
Wire Wire Line
	2900 4500 2900 4900
Wire Wire Line
	2900 4900 8050 4900
Wire Wire Line
	8050 4900 8050 4100
Wire Wire Line
	8050 4100 8600 4100
Wire Wire Line
	3550 4400 9700 4400
Wire Wire Line
	9700 4400 9700 4100
Wire Wire Line
	9700 4100 9100 4100
Wire Wire Line
	3050 4400 2400 4400
Wire Wire Line
	2400 4400 2400 4950
Wire Wire Line
	2400 4950 9750 4950
Wire Wire Line
	9750 4950 9750 4000
Wire Wire Line
	9750 4000 9100 4000
Wire Wire Line
	3550 4300 9800 4300
Wire Wire Line
	9800 4300 9800 3900
Wire Wire Line
	9800 3900 9100 3900
Wire Wire Line
	3050 4300 2350 4300
Wire Wire Line
	2350 4300 2350 5050
Wire Wire Line
	2350 5050 9850 5050
Wire Wire Line
	9850 5050 9850 3800
Wire Wire Line
	9850 3800 9100 3800
Wire Wire Line
	3550 3100 6800 3100
Wire Wire Line
	6800 3100 6800 5250
Wire Wire Line
	6800 5250 9950 5250
Wire Wire Line
	9950 5250 9950 3700
Wire Wire Line
	9950 3700 9100 3700
Wire Wire Line
	3550 3200 6700 3200
Wire Wire Line
	6700 3200 6700 5350
Wire Wire Line
	6700 5350 10050 5350
Wire Wire Line
	10050 5350 10050 3600
Wire Wire Line
	10050 3600 9100 3600
Wire Wire Line
	3050 3200 2550 3200
Wire Wire Line
	2550 3200 2550 2850
Wire Wire Line
	2550 2850 4100 2850
Wire Wire Line
	4100 2850 4100 3300
Wire Wire Line
	4100 3300 6600 3300
Wire Wire Line
	6600 3300 6600 5450
Wire Wire Line
	6600 5450 10150 5450
Wire Wire Line
	10150 5450 10150 3500
Wire Wire Line
	10150 3500 9100 3500
Wire Wire Line
	6400 6000 6400 5650
Wire Wire Line
	6400 5650 10550 5650
Wire Wire Line
	10550 5650 10550 3400
Wire Wire Line
	10550 3400 9100 3400
Wire Wire Line
	7700 2700 10100 2700
Wire Wire Line
	10100 2700 10100 3300
Wire Wire Line
	10100 3300 9100 3300
Connection ~ 7700 2300
Wire Wire Line
	7650 2650 10050 2650
Wire Wire Line
	10050 2650 10050 3200
Wire Wire Line
	10050 3200 9100 3200
Connection ~ 7650 2250
Wire Wire Line
	6500 6000 6500 5850
Wire Wire Line
	6500 5850 7650 5850
Wire Wire Line
	4050 6050 4050 6550
Wire Wire Line
	4050 5750 3900 5750
Wire Wire Line
	4050 5850 3900 5850
Wire Wire Line
	4050 5950 3900 5950
Wire Wire Line
	3900 6450 3900 6550
Wire Wire Line
	3900 6550 4250 6550
Connection ~ 4050 6550
Wire Wire Line
	4250 6650 4250 6850
Wire Wire Line
	2800 6450 2800 6750
Wire Wire Line
	2800 6750 4250 6750
Connection ~ 4250 6750
Wire Wire Line
	2800 5750 2500 5750
Wire Wire Line
	2500 5750 2500 7100
Wire Wire Line
	2500 7100 3550 7100
Wire Wire Line
	3550 7100 3550 7350
Wire Wire Line
	2800 5850 2550 5850
Wire Wire Line
	2550 5850 2550 7050
Wire Wire Line
	2550 7050 3650 7050
Wire Wire Line
	3650 7050 3650 7350
Wire Wire Line
	2800 5950 2600 5950
Wire Wire Line
	2600 5950 2600 7000
Wire Wire Line
	2600 7000 3750 7000
Wire Wire Line
	3750 7000 3750 7350
Wire Wire Line
	3050 3900 1900 3900
Wire Wire Line
	1900 3900 1900 1450
Wire Wire Line
	1900 1450 2800 1450
Wire Wire Line
	3550 3900 4650 3900
Wire Wire Line
	4650 3900 4650 2350
Wire Wire Line
	4650 2350 1950 2350
Wire Wire Line
	1950 2350 1950 1550
Wire Wire Line
	1950 1550 2800 1550
Wire Wire Line
	3050 4000 2050 4000
Wire Wire Line
	2050 4000 2050 1650
Wire Wire Line
	2050 1650 2800 1650
Wire Wire Line
	3550 4000 4700 4000
Wire Wire Line
	4700 4000 4700 2400
Wire Wire Line
	4700 2400 2100 2400
Wire Wire Line
	2100 2400 2100 1750
Wire Wire Line
	2100 1750 2800 1750
Wire Wire Line
	3050 4100 2150 4100
Wire Wire Line
	2150 4100 2150 1850
Wire Wire Line
	2150 1850 2800 1850
Wire Wire Line
	3550 4100 4750 4100
Wire Wire Line
	4750 4100 4750 2450
Wire Wire Line
	4750 2450 2200 2450
Wire Wire Line
	2200 2450 2200 1950
Wire Wire Line
	2200 1950 2800 1950
Wire Wire Line
	3050 4200 2250 4200
Wire Wire Line
	2250 4200 2250 2050
Wire Wire Line
	2250 2050 2800 2050
Wire Wire Line
	2800 2150 2400 2150
Wire Wire Line
	2700 2550 2700 2250
Wire Wire Line
	2700 2250 2800 2250
Wire Wire Line
	4000 1050 4450 1050
Wire Wire Line
	4000 1350 4550 1350
Wire Wire Line
	4350 1150 4000 1150
Wire Wire Line
	4350 800  4350 1150
Wire Wire Line
	4000 1250 5050 1250
Wire Wire Line
	4850 1350 5050 1350
Wire Wire Line
	5050 2300 4850 2300
Wire Wire Line
	4850 2300 4850 2150
NoConn ~ 4750 2150
NoConn ~ 4650 2150
NoConn ~ 4550 2150
NoConn ~ 4450 2150
NoConn ~ 4350 2150
NoConn ~ 4250 2150
NoConn ~ 4150 2150
NoConn ~ 4050 2150
NoConn ~ 3950 2150
$Comp
L C C2
U 1 1 57BBA6E5
P 4600 1050
F 0 "C2" V 4650 1150 50  0000 L CNN
F 1 "0.1uF" V 4700 900 50  0000 L CNN
F 2 "Capacitors_ThroughHole:C_Rect_L7_W2.5_P5" H 4638 900 50  0001 C CNN
F 3 "" H 4600 1050 50  0000 C CNN
	1    4600 1050
	0    1    1    0   
$EndComp
Connection ~ 4350 1050
Wire Wire Line
	4750 1050 5300 1050
Wire Wire Line
	5300 1050 5300 1250
$Comp
L GND #PWR06
U 1 1 57BBA94C
P 5300 1250
F 0 "#PWR06" H 5300 1000 50  0001 C CNN
F 1 "GND" H 5300 1100 50  0000 C CNN
F 2 "" H 5300 1250 50  0000 C CNN
F 3 "" H 5300 1250 50  0000 C CNN
	1    5300 1250
	1    0    0    -1  
$EndComp
$Comp
L CP1 C1
U 1 1 57BBAA0D
P 4600 800
F 0 "C1" V 4650 900 50  0000 L CNN
F 1 "100uF" V 4650 500 50  0000 L CNN
F 2 "Capacitors_ThroughHole:C_Radial_D5_L11_P2" H 4600 800 50  0001 C CNN
F 3 "" H 4600 800 50  0000 C CNN
	1    4600 800 
	0    -1   -1   0   
$EndComp
Wire Wire Line
	5050 1250 5050 2300
Connection ~ 5050 1350
Wire Wire Line
	4450 800  4350 800 
Wire Wire Line
	4750 800  4900 800 
Wire Wire Line
	4900 800  4900 1050
Connection ~ 4900 1050
Wire Wire Line
	7650 5950 7650 6100
$Comp
L CONN_02X18 P3
U 1 1 57BAB2A6
P 3300 3850
F 0 "P3" H 3300 4800 50  0000 C CNN
F 1 "DIGITAL_PIN" V 3300 3850 50  0000 C CNN
F 2 "Pin_Headers:Pin_Header_Straight_2x18" H 3300 2800 50  0001 C CNN
F 3 "" H 3300 2800 50  0000 C CNN
	1    3300 3850
	-1   0    0    1   
$EndComp
$Comp
L CONN_01X02 P15
U 1 1 57BBFF5E
P 6350 1250
F 0 "P15" H 6350 1400 50  0000 C CNN
F 1 "TEMP_R_SET" V 6450 1250 50  0000 C CNN
F 2 "Resistors_ThroughHole:Resistor_Horizontal_RM10mm" H 6350 1250 50  0001 C CNN
F 3 "" H 6350 1250 50  0000 C CNN
	1    6350 1250
	1    0    0    -1  
$EndComp
Wire Wire Line
	5050 1550 5550 1550
Wire Wire Line
	5550 1550 5550 1200
Wire Wire Line
	5550 1200 6150 1200
Connection ~ 5050 1550
Wire Wire Line
	4400 1350 4400 1650
Wire Wire Line
	4250 1650 5700 1650
Wire Wire Line
	5700 1650 5700 1300
Wire Wire Line
	5700 1300 6150 1300
Connection ~ 4400 1350
$Comp
L GND #PWR07
U 1 1 57BC0B01
P 4250 1650
F 0 "#PWR07" H 4250 1400 50  0001 C CNN
F 1 "GND" H 4150 1650 50  0000 C CNN
F 2 "" H 4250 1650 50  0000 C CNN
F 3 "" H 4250 1650 50  0000 C CNN
	1    4250 1650
	1    0    0    -1  
$EndComp
Connection ~ 4400 1650
$EndSCHEMATC
newshield.schC/C++
EESchema Schematic File Version 2
LIBS:arduino_mega_shield
LIBS:power
LIBS:device
LIBS:transistors
LIBS:conn
LIBS:linear
LIBS:regul
LIBS:74xx
LIBS:cmos4000
LIBS:adc-dac
LIBS:memory
LIBS:xilinx
LIBS:microcontrollers
LIBS:dsp
LIBS:microchip
LIBS:analog_switches
LIBS:motorola
LIBS:texas
LIBS:intel
LIBS:audio
LIBS:interface
LIBS:digital-audio
LIBS:philips
LIBS:display
LIBS:cypress
LIBS:siliconi
LIBS:opto
LIBS:atmel
LIBS:contrib
LIBS:valves
LIBS:unl2003
EELAYER 25 0
EELAYER END
$Descr A4 11693 8268
encoding utf-8
Sheet 1 1
Title ""
Date ""
Rev ""
Comp ""
Comment1 ""
Comment2 ""
Comment3 ""
Comment4 ""
$EndDescr
$Comp
L UNL2003 U1
U 1 1 57C3E2E7
P 8800 2900
F 0 "U1" H 9000 3100 60  0000 C CNN
F 1 "UNL2003" H 9200 1900 60  0000 C CNN
F 2 "" H 9000 2900 60  0001 C CNN
F 3 "" H 9000 2900 60  0001 C CNN
	1    8800 2900
	1    0    0    -1  
$EndComp
$Comp
L CONN_01X09 P3
U 1 1 57C3E459
P 7100 5450
F 0 "P3" H 7100 5950 50  0000 C CNN
F 1 "KeyInput" V 7200 5450 50  0000 C CNN
F 2 "" H 7100 5450 50  0000 C CNN
F 3 "" H 7100 5450 50  0000 C CNN
	1    7100 5450
	1    0    0    -1  
$EndComp
$Comp
L GND #PWR01
U 1 1 57C3EBAF
P 6900 6050
F 0 "#PWR01" H 6900 5800 50  0001 C CNN
F 1 "GND" H 6900 5900 50  0000 C CNN
F 2 "" H 6900 6050 50  0000 C CNN
F 3 "" H 6900 6050 50  0000 C CNN
	1    6900 6050
	1    0    0    -1  
$EndComp
NoConn ~ 6650 5750
Text GLabel 8700 3000 0    60   Input ~ 0
RGB_R
Text GLabel 8700 3100 0    60   Input ~ 0
RGB_G
Text GLabel 8700 3200 0    60   Input ~ 0
RGB_B
$Comp
L CONN_01X04 P6
U 1 1 57C4011C
P 10900 2650
F 0 "P6" H 10900 2900 50  0000 C CNN
F 1 "RGB_LED_OUT" V 11000 2650 50  0000 C CNN
F 2 "" H 10900 2650 50  0000 C CNN
F 3 "" H 10900 2650 50  0000 C CNN
	1    10900 2650
	1    0    0    -1  
$EndComp
NoConn ~ 8700 3600
$Comp
L CONN_01X02 P7
U 1 1 57C40616
P 10950 1100
F 0 "P7" H 10950 1250 50  0000 C CNN
F 1 "12V POWER" V 11050 1100 50  0000 C CNN
F 2 "" H 10950 1100 50  0000 C CNN
F 3 "" H 10950 1100 50  0000 C CNN
	1    10950 1100
	1    0    0    -1  
$EndComp
Text GLabel 10000 700  0    60   Input ~ 0
12V
Text GLabel 10050 1150 0    60   Input ~ 0
GND
Text GLabel 10450 4250 2    60   Input ~ 0
12V
$Comp
L GND #PWR02
U 1 1 57C40B70
P 10700 1350
F 0 "#PWR02" H 10700 1100 50  0001 C CNN
F 1 "GND" H 10700 1200 50  0000 C CNN
F 2 "" H 10700 1350 50  0000 C CNN
F 3 "" H 10700 1350 50  0000 C CNN
	1    10700 1350
	1    0    0    -1  
$EndComp
Text GLabel 7600 3750 2    60   Input ~ 0
+5V
$Comp
L GND #PWR03
U 1 1 57C41114
P 8700 3900
F 0 "#PWR03" H 8700 3650 50  0001 C CNN
F 1 "GND" H 8700 3750 50  0000 C CNN
F 2 "" H 8700 3900 50  0000 C CNN
F 3 "" H 8700 3900 50  0000 C CNN
	1    8700 3900
	1    0    0    -1  
$EndComp
$Comp
L GND #PWR04
U 1 1 57C4121D
P 4250 4300
F 0 "#PWR04" H 4250 4050 50  0001 C CNN
F 1 "GND" H 4250 4150 50  0000 C CNN
F 2 "" H 4250 4300 50  0000 C CNN
F 3 "" H 4250 4300 50  0000 C CNN
	1    4250 4300
	1    0    0    -1  
$EndComp
$Comp
L CONN_02X10 P2
U 1 1 57C4153B
P 1400 6050
F 0 "P2" H 1400 6600 50  0000 C CNN
F 1 "TFT_LCD_CON" V 1400 6050 50  0000 C CNN
F 2 "" H 1400 4850 50  0000 C CNN
F 3 "" H 1400 4850 50  0000 C CNN
	1    1400 6050
	1    0    0    -1  
$EndComp
Text GLabel 1150 5700 0    60   Input ~ 0
LCD_RD
Text GLabel 1150 5800 0    60   Input ~ 0
LCD_WR
Text GLabel 1150 5900 0    60   Input ~ 0
LCD_RS
Text GLabel 1150 6000 0    60   Input ~ 0
LCD_CS
Text GLabel 1150 6100 0    60   Input ~ 0
LCD_RST
Text GLabel 1150 6200 0    60   Input ~ 0
LCD_D0
Text GLabel 1150 6300 0    60   Input ~ 0
LCD_D1
Text GLabel 1150 6400 0    60   Input ~ 0
LCD_D2
Text GLabel 1150 6500 0    60   Input ~ 0
LCD_D3
Text GLabel 1650 5800 2    60   Input ~ 0
SD_SS
Text GLabel 1650 5900 2    60   Input ~ 0
SD_DI
Text GLabel 1650 6000 2    60   Input ~ 0
SD_DO
Text GLabel 1650 6100 2    60   Input ~ 0
SD_SCK
Text GLabel 1650 6200 2    60   Input ~ 0
LCD_D7
Text GLabel 1650 6300 2    60   Input ~ 0
LCD_D6
Text GLabel 1650 6400 2    60   Input ~ 0
LCD_D5
Text GLabel 1650 6500 2    60   Input ~ 0
LCD_D4
Text GLabel 1650 5600 2    60   Input ~ 0
+5V
Text GLabel 1650 5700 2    60   Input ~ 0
GND
Text GLabel 1000 5600 0    60   Input ~ 0
3.3V
Text GLabel 4750 1900 0    60   Input ~ 0
GND
Text GLabel 4750 2000 0    60   Input ~ 0
GND
Text GLabel 3150 650  0    60   Input ~ 0
3.3V
Text GLabel 3800 750  0    60   Input ~ 0
+5V
NoConn ~ 4750 1600
NoConn ~ 4750 2100
$Comp
L CONN_01X02 P4
U 1 1 57C42689
P 9350 1000
F 0 "P4" H 9350 1150 50  0000 C CNN
F 1 "POWER 5V" V 9450 1000 50  0000 C CNN
F 2 "" H 9350 1000 50  0000 C CNN
F 3 "" H 9350 1000 50  0000 C CNN
	1    9350 1000
	1    0    0    -1  
$EndComp
Text GLabel 8500 650  0    60   Input ~ 0
+5V
Text GLabel 8600 1050 0    60   Input ~ 0
GND
$Comp
L CONN_01X02 P5
U 1 1 57C427DB
P 9100 6100
F 0 "P5" H 9100 6250 50  0000 C CNN
F 1 "SSR (Heater)" V 9200 6100 50  0000 C CNN
F 2 "" H 9100 6100 50  0000 C CNN
F 3 "" H 9100 6100 50  0000 C CNN
	1    9100 6100
	1    0    0    -1  
$EndComp
Text GLabel 8900 6150 0    60   Input ~ 0
GND
Text GLabel 6650 4200 2    60   Input ~ 0
LCD_D0
Text GLabel 6650 4300 2    60   Input ~ 0
LCD_D1
Text GLabel 6650 4400 2    60   Input ~ 0
LCD_D2
Text GLabel 6650 4500 2    60   Input ~ 0
LCD_D3
Text GLabel 6650 4600 2    60   Input ~ 0
LCD_D4
Text GLabel 6650 4700 2    60   Input ~ 0
LCD_D5
Text GLabel 6650 4800 2    60   Input ~ 0
LCD_D6
Text GLabel 6650 4900 2    60   Input ~ 0
LCD_D7
NoConn ~ 4750 5700
NoConn ~ 4750 5800
NoConn ~ 4750 5900
NoConn ~ 4750 6000
Text GLabel 4750 4400 0    60   Input ~ 0
SD_SS
Text GLabel 4750 4500 0    60   Input ~ 0
SD_SCK
Text GLabel 4750 4600 0    60   Input ~ 0
SD_DI
Text GLabel 4750 4700 0    60   Input ~ 0
SD_DO
Text GLabel 3000 2300 0    60   Input ~ 0
LCD_RD
Text GLabel 3000 2400 0    60   Input ~ 0
LCD_WR
Text GLabel 3000 2500 0    60   Input ~ 0
LCD_RS
Text GLabel 3000 2600 0    60   Input ~ 0
LCD_CS
Text GLabel 3000 2700 0    60   Input ~ 0
LCD_RST
$Comp
L +5V #PWR05
U 1 1 57C44E3C
P 1550 3000
F 0 "#PWR05" H 1550 2850 50  0001 C CNN
F 1 "+5V" H 1550 3140 50  0000 C CNN
F 2 "" H 1550 3000 50  0000 C CNN
F 3 "" H 1550 3000 50  0000 C CNN
	1    1550 3000
	1    0    0    -1  
$EndComp
$Comp
L CONN_01X02 P1
U 1 1 57C44E60
P 1050 3300
F 0 "P1" H 1050 3450 50  0000 C CNN
F 1 "COOKER_TEMP_SENSOR" V 1150 3300 50  0000 C CNN
F 2 "" H 1050 3300 50  0000 C CNN
F 3 "" H 1050 3300 50  0000 C CNN
	1    1050 3300
	-1   0    0    1   
$EndComp
$Comp
L R R1
U 1 1 57C44EE4
P 1550 3600
F 0 "R1" V 1630 3600 50  0000 C CNN
F 1 "15K" V 1550 3600 50  0000 C CNN
F 2 "" V 1480 3600 50  0000 C CNN
F 3 "" H 1550 3600 50  0000 C CNN
	1    1550 3600
	1    0    0    -1  
$EndComp
$Comp
L GND #PWR06
U 1 1 57C4505E
P 1550 3900
F 0 "#PWR06" H 1550 3650 50  0001 C CNN
F 1 "GND" H 1550 3750 50  0000 C CNN
F 2 "" H 1550 3900 50  0000 C CNN
F 3 "" H 1550 3900 50  0000 C CNN
	1    1550 3900
	1    0    0    -1  
$EndComp
$Comp
L C C1
U 1 1 57C450E8
P 2050 3650
F 0 "C1" H 2075 3750 50  0000 L CNN
F 1 "C" H 2075 3550 50  0000 L CNN
F 2 "" H 2088 3500 50  0000 C CNN
F 3 "" H 2050 3650 50  0000 C CNN
	1    2050 3650
	1    0    0    -1  
$EndComp
$Comp
L CP C2
U 1 1 57C4515B
P 2300 3650
F 0 "C2" H 2325 3750 50  0000 L CNN
F 1 "CP" H 2325 3550 50  0000 L CNN
F 2 "" H 2338 3500 50  0000 C CNN
F 3 "" H 2300 3650 50  0000 C CNN
	1    2300 3650
	1    0    0    -1  
$EndComp
$Comp
L GND #PWR07
U 1 1 57C454BE
P 2200 3900
F 0 "#PWR07" H 2200 3650 50  0001 C CNN
F 1 "GND" H 2200 3750 50  0000 C CNN
F 2 "" H 2200 3900 50  0000 C CNN
F 3 "" H 2200 3900 50  0000 C CNN
	1    2200 3900
	1    0    0    -1  
$EndComp
$Comp
L CP C5
U 1 1 57C4B2CE
P 7400 4150
F 0 "C5" H 7425 4250 50  0000 L CNN
F 1 "CP" H 7425 4050 50  0000 L CNN
F 2 "" H 7438 4000 50  0000 C CNN
F 3 "" H 7400 4150 50  0000 C CNN
	1    7400 4150
	1    0    0    -1  
$EndComp
$Comp
L GND #PWR08
U 1 1 57C4B4F0
P 7400 4400
F 0 "#PWR08" H 7400 4150 50  0001 C CNN
F 1 "GND" H 7400 4250 50  0000 C CNN
F 2 "" H 7400 4400 50  0000 C CNN
F 3 "" H 7400 4400 50  0000 C CNN
	1    7400 4400
	1    0    0    -1  
$EndComp
$Comp
L C C6
U 1 1 57C4B564
P 7700 4150
F 0 "C6" H 7725 4250 50  0000 L CNN
F 1 "C" H 7725 4050 50  0000 L CNN
F 2 "" H 7738 4000 50  0000 C CNN
F 3 "" H 7700 4150 50  0000 C CNN
	1    7700 4150
	1    0    0    -1  
$EndComp
$Comp
L C C3
U 1 1 57C4B938
P 6450 6450
F 0 "C3" H 6475 6550 50  0000 L CNN
F 1 "C" H 6475 6350 50  0000 L CNN
F 2 "" H 6488 6300 50  0000 C CNN
F 3 "" H 6450 6450 50  0000 C CNN
	1    6450 6450
	1    0    0    -1  
$EndComp
$Comp
L CP C4
U 1 1 57C4B993
P 6650 6450
F 0 "C4" H 6675 6550 50  0000 L CNN
F 1 "CP" H 6675 6350 50  0000 L CNN
F 2 "" H 6688 6300 50  0000 C CNN
F 3 "" H 6650 6450 50  0000 C CNN
	1    6650 6450
	1    0    0    -1  
$EndComp
$Comp
L GND #PWR09
U 1 1 57C4BAF0
P 6450 6850
F 0 "#PWR09" H 6450 6600 50  0001 C CNN
F 1 "GND" H 6450 6700 50  0000 C CNN
F 2 "" H 6450 6850 50  0000 C CNN
F 3 "" H 6450 6850 50  0000 C CNN
	1    6450 6850
	1    0    0    -1  
$EndComp
$Comp
L CP C16
U 1 1 57C4C364
P 9900 4150
F 0 "C16" H 9925 4250 50  0000 L CNN
F 1 "CP" H 9925 4050 50  0000 L CNN
F 2 "" H 9938 4000 50  0000 C CNN
F 3 "" H 9900 4150 50  0000 C CNN
	1    9900 4150
	1    0    0    -1  
$EndComp
$Comp
L C C15
U 1 1 57C4C3BF
P 9650 4150
F 0 "C15" H 9675 4250 50  0000 L CNN
F 1 "C" H 9675 4050 50  0000 L CNN
F 2 "" H 9688 4000 50  0000 C CNN
F 3 "" H 9650 4150 50  0000 C CNN
	1    9650 4150
	1    0    0    -1  
$EndComp
$Comp
L GND #PWR010
U 1 1 57C4C778
P 9650 4450
F 0 "#PWR010" H 9650 4200 50  0001 C CNN
F 1 "GND" H 9650 4300 50  0000 C CNN
F 2 "" H 9650 4450 50  0000 C CNN
F 3 "" H 9650 4450 50  0000 C CNN
	1    9650 4450
	1    0    0    -1  
$EndComp
$Comp
L C C14
U 1 1 57C4CA19
P 10550 950
F 0 "C14" H 10575 1050 50  0000 L CNN
F 1 "C" H 10575 850 50  0000 L CNN
F 2 "" H 10588 800 50  0000 C CNN
F 3 "" H 10550 950 50  0000 C CNN
	1    10550 950 
	1    0    0    -1  
$EndComp
$Comp
L CP C11
U 1 1 57C4CA72
P 10300 950
F 0 "C11" H 10325 1050 50  0000 L CNN
F 1 "CP" H 10325 850 50  0000 L CNN
F 2 "" H 10338 800 50  0000 C CNN
F 3 "" H 10300 950 50  0000 C CNN
	1    10300 950 
	1    0    0    -1  
$EndComp
$Comp
L GND #PWR011
U 1 1 57C4E00E
P 8900 1200
F 0 "#PWR011" H 8900 950 50  0001 C CNN
F 1 "GND" H 8900 1050 50  0000 C CNN
F 2 "" H 8900 1200 50  0000 C CNN
F 3 "" H 8900 1200 50  0000 C CNN
	1    8900 1200
	1    0    0    -1  
$EndComp
$Comp
L CP C13
U 1 1 57C4E0BC
P 9000 850
F 0 "C13" H 9025 950 50  0000 L CNN
F 1 "CP" H 9025 750 50  0000 L CNN
F 2 "" H 9038 700 50  0000 C CNN
F 3 "" H 9000 850 50  0000 C CNN
	1    9000 850 
	1    0    0    -1  
$EndComp
$Comp
L C C12
U 1 1 57C4E12B
P 8800 850
F 0 "C12" H 8825 950 50  0000 L CNN
F 1 "C" H 8825 750 50  0000 L CNN
F 2 "" H 8838 700 50  0000 C CNN
F 3 "" H 8800 850 50  0000 C CNN
	1    8800 850 
	1    0    0    -1  
$EndComp
$Comp
L C C10
U 1 1 57C4F255
P 4050 1000
F 0 "C10" H 4075 1100 50  0000 L CNN
F 1 "C" H 4075 900 50  0000 L CNN
F 2 "" H 4088 850 50  0000 C CNN
F 3 "" H 4050 1000 50  0000 C CNN
	1    4050 1000
	1    0    0    -1  
$EndComp
$Comp
L CP C9
U 1 1 57C4F2B2
P 3850 1000
F 0 "C9" H 3875 1100 50  0000 L CNN
F 1 "CP" H 3875 900 50  0000 L CNN
F 2 "" H 3888 850 50  0000 C CNN
F 3 "" H 3850 1000 50  0000 C CNN
	1    3850 1000
	1    0    0    -1  
$EndComp
$Comp
L GND #PWR012
U 1 1 57C4F552
P 3950 1250
F 0 "#PWR012" H 3950 1000 50  0001 C CNN
F 1 "GND" H 3950 1100 50  0000 C CNN
F 2 "" H 3950 1250 50  0000 C CNN
F 3 "" H 3950 1250 50  0000 C CNN
	1    3950 1250
	1    0    0    -1  
$EndComp
$Comp
L CP C7
U 1 1 57C4FDF2
P 3250 1050
F 0 "C7" H 3275 1150 50  0000 L CNN
F 1 "CP" H 3275 950 50  0000 L CNN
F 2 "" H 3288 900 50  0000 C CNN
F 3 "" H 3250 1050 50  0000 C CNN
	1    3250 1050
	1    0    0    -1  
$EndComp
$Comp
L C C8
U 1 1 57C4FE7D
P 3450 1050
F 0 "C8" H 3475 1150 50  0000 L CNN
F 1 "C" H 3475 950 50  0000 L CNN
F 2 "" H 3488 900 50  0000 C CNN
F 3 "" H 3450 1050 50  0000 C CNN
	1    3450 1050
	1    0    0    -1  
$EndComp
$Comp
L GND #PWR013
U 1 1 57C50368
P 3350 1350
F 0 "#PWR013" H 3350 1100 50  0001 C CNN
F 1 "GND" H 3350 1200 50  0000 C CNN
F 2 "" H 3350 1350 50  0000 C CNN
F 3 "" H 3350 1350 50  0000 C CNN
	1    3350 1350
	1    0    0    -1  
$EndComp
$Comp
L CONN_01X08 P8
U 1 1 57C526FC
P 7000 3350
F 0 "P8" H 7000 3800 50  0000 C CNN
F 1 "COMMUNICATION" V 7100 3350 50  0000 C CNN
F 2 "" H 7000 3350 50  0000 C CNN
F 3 "" H 7000 3350 50  0000 C CNN
	1    7000 3350
	1    0    0    -1  
$EndComp
$Comp
L CONN_01X08 P9
U 1 1 57C53A4B
P 7900 2450
F 0 "P9" H 7900 2900 50  0000 C CNN
F 1 "PWM1" V 8000 2450 50  0000 C CNN
F 2 "" H 7900 2450 50  0000 C CNN
F 3 "" H 7900 2450 50  0000 C CNN
	1    7900 2450
	1    0    0    -1  
$EndComp
Text Label 6900 2400 0    60   ~ 0
RGB_B
Text Label 6900 2500 0    60   ~ 0
RGB_G
Text Label 6900 2600 0    60   ~ 0
RGB_R
Text GLabel 8350 2500 2    60   Input ~ 0
RGB_R
Text GLabel 8350 2400 2    60   Input ~ 0
RGB_G
Text GLabel 8350 2300 2    60   Input ~ 0
RGB_B
$Comp
L CONN_01X08 P13
U 1 1 57C55E3B
P 7450 1550
F 0 "P13" H 7450 2000 50  0000 C CNN
F 1 "PWM2" V 7550 1550 50  0000 C CNN
F 2 "" H 7450 1550 50  0000 C CNN
F 3 "" H 7450 1550 50  0000 C CNN
	1    7450 1550
	1    0    0    -1  
$EndComp
Text Label 6750 1300 0    60   ~ 0
GND
Text Label 6750 1700 0    60   ~ 0
SD_SS
$Comp
L ARDUINO_MEGA_SHIELD SHIELD1
U 1 1 57C3CA3C
P 5750 3550
F 0 "SHIELD1" H 5350 6050 60  0000 C CNN
F 1 "ARDUINO_MEGA_SHIELD" H 5650 850 60  0000 C CNN
F 2 "" H 5750 3550 60  0001 C CNN
F 3 "" H 5750 3550 60  0001 C CNN
	1    5750 3550
	1    0    0    -1  
$EndComp
Text GLabel 4750 1800 0    60   Input ~ 0
+5V
$Comp
L CONN_01X08 P11
U 1 1 57C59FB4
P 3900 2650
F 0 "P11" H 3900 3100 50  0000 C CNN
F 1 "ANALOG INPUT1" V 4000 2650 50  0000 C CNN
F 2 "" H 3900 2650 50  0000 C CNN
F 3 "" H 3900 2650 50  0000 C CNN
	1    3900 2650
	-1   0    0    -1  
$EndComp
Text Label 4250 2300 0    60   ~ 0
LCD_RD
Text Label 3250 2300 0    60   ~ 0
LCD_RD
Text Label 4250 2400 0    60   ~ 0
LCD_WR
Text Label 3250 2400 0    60   ~ 0
LCD_WR
Text Label 4250 2500 0    60   ~ 0
LCD_RS
Text Label 3250 2500 0    60   ~ 0
LCD_RS
Text Label 4250 2600 0    60   ~ 0
LCD_CS
Text Label 3250 2600 0    60   ~ 0
LCD_CS
Text Label 4250 2700 0    60   ~ 0
LCD_RST
Text Label 3200 2700 0    60   ~ 0
LCD_RST
$Comp
L CONN_01X08 P10
U 1 1 57C5C16E
P 3800 3550
F 0 "P10" H 3800 4000 50  0000 C CNN
F 1 "ANALOG INPUT2" V 3900 3550 50  0000 C CNN
F 2 "" H 3800 3550 50  0000 C CNN
F 3 "" H 3800 3550 50  0000 C CNN
	1    3800 3550
	-1   0    0    -1  
$EndComp
Text Label 4050 3200 0    60   ~ 0
TEMP_SENSOR
$Comp
L CONN_01X08 P12
U 1 1 57C62DD4
P 4150 5200
F 0 "P12" H 4150 5650 50  0000 C CNN
F 1 "PL0 - PL7" V 4250 5200 50  0000 C CNN
F 2 "" H 4150 5200 50  0000 C CNN
F 3 "" H 4150 5200 50  0000 C CNN
	1    4150 5200
	-1   0    0    -1  
$EndComp
Text Label 6900 2300 0    60   ~ 0
PWM5
Text Label 6900 2200 0    60   ~ 0
PWM6
Text Label 6900 2100 0    60   ~ 0
PWM7
Text Label 8000 3300 0    60   ~ 0
PWM5
Text Label 8000 3400 0    60   ~ 0
PWM6
Text Label 8000 3500 0    60   ~ 0
PWM7
$Comp
L CONN_01X08 P14
U 1 1 57C6C02C
P 10550 3350
F 0 "P14" H 10550 3800 50  0000 C CNN
F 1 "UNL2003_OUT" V 10650 3350 50  0000 C CNN
F 2 "" H 10550 3350 50  0000 C CNN
F 3 "" H 10550 3350 50  0000 C CNN
	1    10550 3350
	1    0    0    -1  
$EndComp
Text Label 9800 3000 0    60   ~ 0
RGB_R_OUT
Text Label 9800 3100 0    60   ~ 0
RGB_G_OUT
Text Label 9800 3200 0    60   ~ 0
RGB_B_OUT
Text Label 10100 3700 0    60   ~ 0
GND
Text Label 10250 2500 0    60   ~ 0
RGB_R_OUT
Text Label 10250 2600 0    60   ~ 0
RGB_G_OUT
Text Label 10250 2700 0    60   ~ 0
RGB_B_OUT
Text Label 10250 2800 0    60   ~ 0
12V
Text Label 6650 1600 0    60   ~ 0
SSR_CONTROL
Text Label 2400 3350 0    60   ~ 0
TEMP_SENSOR
Text Label 10200 4250 0    60   ~ 0
12V
Text Label 10050 700  0    60   ~ 0
12V
Text Label 8100 6050 0    60   ~ 0
SSR_CONTROL
Text Label 6500 6200 0    60   ~ 0
+5V
$Comp
L +5V #PWR014
U 1 1 57C7EAB0
P 7200 3850
F 0 "#PWR014" H 7200 3700 50  0001 C CNN
F 1 "+5V" H 7200 3990 50  0000 C CNN
F 2 "" H 7200 3850 50  0000 C CNN
F 3 "" H 7200 3850 50  0000 C CNN
	1    7200 3850
	1    0    0    -1  
$EndComp
Text Label 4100 1700 0    60   ~ 0
3.3V
$Comp
L +3.3V #PWR015
U 1 1 57C83095
P 2750 850
F 0 "#PWR015" H 2750 700 50  0001 C CNN
F 1 "+3.3V" H 2750 990 50  0000 C CNN
F 2 "" H 2750 850 50  0000 C CNN
F 3 "" H 2750 850 50  0000 C CNN
	1    2750 850 
	1    0    0    -1  
$EndComp
Wire Wire Line
	6650 5050 6900 5050
Wire Wire Line
	6650 5150 6900 5150
Wire Wire Line
	6650 5250 6900 5250
Wire Wire Line
	6650 5350 6900 5350
Wire Wire Line
	6650 5450 6900 5450
Wire Wire Line
	6650 5550 6900 5550
Wire Wire Line
	6650 5650 6900 5650
Wire Wire Line
	6750 5750 6900 5750
Wire Wire Line
	6900 6050 6900 5850
Wire Wire Line
	9800 3000 10350 3000
Wire Wire Line
	9800 3100 10350 3100
Wire Wire Line
	9800 3200 10350 3200
Wire Wire Line
	8700 3700 8700 3900
Wire Wire Line
	10050 1150 10750 1150
Wire Wire Line
	10700 1350 10700 1150
Connection ~ 10700 1150
Wire Wire Line
	4250 4250 4750 4250
Wire Wire Line
	4250 4150 4250 4300
Wire Wire Line
	4250 4150 4750 4150
Connection ~ 4250 4250
Wire Wire Line
	1550 3000 1550 3250
Wire Wire Line
	1250 3250 2300 3250
Wire Wire Line
	1250 3350 3050 3350
Wire Wire Line
	1550 3350 1550 3450
Connection ~ 1550 3350
Wire Wire Line
	1550 3750 1550 3900
Wire Wire Line
	2050 3250 2050 3500
Connection ~ 1550 3250
Wire Wire Line
	2300 3250 2300 3500
Connection ~ 2050 3250
Wire Wire Line
	2050 3800 2300 3800
Wire Wire Line
	2200 3900 2200 3800
Connection ~ 2200 3800
Wire Wire Line
	3150 650  3450 650 
Connection ~ 1550 3000
Wire Wire Line
	1150 5600 1000 5600
Wire Wire Line
	3800 750  4050 750 
Connection ~ 8700 3900
Wire Wire Line
	6650 3950 7700 3950
Wire Wire Line
	7400 3750 7400 4000
Wire Wire Line
	7600 3750 7400 3750
Connection ~ 7400 3950
Wire Wire Line
	6650 4050 6750 4050
Wire Wire Line
	6750 4050 6750 3950
Connection ~ 6750 3950
Wire Wire Line
	7400 4300 7400 4400
Wire Wire Line
	7700 3950 7700 4000
Wire Wire Line
	7700 4300 7700 4350
Wire Wire Line
	7700 4350 7400 4350
Connection ~ 7400 4350
Wire Wire Line
	6750 5750 6750 5850
Wire Wire Line
	6750 5850 6450 5850
Wire Wire Line
	6450 5850 6450 6300
Wire Wire Line
	6650 6300 6650 6200
Wire Wire Line
	6650 6200 6450 6200
Connection ~ 6450 6200
Wire Wire Line
	6450 6600 6450 6850
Wire Wire Line
	9900 3700 9900 4000
Wire Wire Line
	9650 3900 9650 4000
Connection ~ 9900 3900
Wire Wire Line
	9900 4300 9900 4400
Wire Wire Line
	9900 4400 9650 4400
Wire Wire Line
	9650 4300 9650 4450
Connection ~ 9650 4400
Wire Wire Line
	10000 700  10750 700 
Wire Wire Line
	10750 700  10750 1050
Wire Wire Line
	10300 700  10300 800 
Connection ~ 10300 700 
Wire Wire Line
	10550 800  10550 700 
Connection ~ 10550 700 
Wire Wire Line
	10550 1100 10550 1150
Connection ~ 10550 1150
Wire Wire Line
	10300 1100 10300 1150
Connection ~ 10300 1150
Wire Wire Line
	8600 1050 9150 1050
Wire Wire Line
	8500 650  9150 650 
Wire Wire Line
	9150 650  9150 950 
Wire Wire Line
	8900 1050 8900 1200
Connection ~ 8900 1050
Wire Wire Line
	8800 1000 8800 1050
Connection ~ 8800 1050
Wire Wire Line
	9000 1000 9000 1050
Connection ~ 9000 1050
Wire Wire Line
	9000 700  9000 650 
Connection ~ 9000 650 
Wire Wire Line
	8800 700  8800 650 
Connection ~ 8800 650 
Wire Wire Line
	3850 850  4050 850 
Wire Wire Line
	4050 850  4050 750 
Connection ~ 4050 750 
Wire Wire Line
	3850 1150 3850 1200
Wire Wire Line
	3850 1200 4050 1200
Wire Wire Line
	4050 1200 4050 1150
Wire Wire Line
	3950 1250 3950 1200
Connection ~ 3950 1200
Wire Wire Line
	3450 650  3450 900 
Connection ~ 3450 650 
Wire Wire Line
	3250 850  3250 900 
Connection ~ 3450 850 
Wire Wire Line
	3250 1200 3250 1300
Wire Wire Line
	3250 1300 3450 1300
Wire Wire Line
	3450 1300 3450 1200
Wire Wire Line
	3350 1350 3350 1300
Connection ~ 3350 1300
Wire Wire Line
	6650 3000 6800 3000
Wire Wire Line
	6650 3100 6800 3100
Wire Wire Line
	6650 3200 6800 3200
Wire Wire Line
	6650 3300 6800 3300
Wire Wire Line
	6650 3400 6800 3400
Wire Wire Line
	6650 3500 6800 3500
Wire Wire Line
	6650 3600 6800 3600
Wire Wire Line
	6650 3700 6800 3700
Wire Wire Line
	6650 2100 7700 2100
Wire Wire Line
	6650 2200 7700 2200
Wire Wire Line
	6650 2300 7700 2300
Wire Wire Line
	6650 2400 7700 2400
Wire Wire Line
	6650 2500 7700 2500
Wire Wire Line
	6650 2600 7700 2600
Wire Wire Line
	6650 2700 7700 2700
Wire Wire Line
	6650 2800 7700 2800
Connection ~ 7650 2600
Connection ~ 7600 2500
Connection ~ 7550 2400
Wire Wire Line
	7550 1850 8350 1850
Wire Wire Line
	7600 1900 8300 1900
Wire Wire Line
	8300 2400 8350 2400
Wire Wire Line
	7650 1950 8250 1950
Wire Wire Line
	8250 2500 8350 2500
Wire Wire Line
	7650 2600 7650 1950
Wire Wire Line
	8350 1850 8350 2300
Wire Wire Line
	8300 1900 8300 2400
Wire Wire Line
	8250 1950 8250 2500
Wire Wire Line
...

This file has been truncated, please download it to see its full contents.
unl2003.libC/C++
EESchema-LIBRARY Version 2.3
#encoding utf-8
#
# UNL2003
#
DEF UNL2003 U 0 40 Y Y 1 F N
F0 "U" 200 200 60 H V C CNN
F1 "UNL2003" 400 -1000 60 H V C CNN
F2 "" 200 0 60 H I C CNN
F3 "" 200 0 60 H I C CNN
DRAW
S 100 100 800 -900 0 1 0 N
P 4 0 1 0 400 100 400 0 500 0 500 100 N
X IN1 1 -100 -100 200 R 50 50 1 1 I
X IN2 2 -100 -200 200 R 50 50 1 1 I
X IN3 3 -100 -300 200 R 50 50 1 1 I
X IN4 4 -100 -400 200 R 50 50 1 1 I
X IN5 5 -100 -500 200 R 50 50 1 1 I
X IN6 6 -100 -600 200 R 50 50 1 1 I
X IN7 7 -100 -700 200 R 50 50 1 1 I
X GND 8 -100 -800 200 R 50 50 1 1 I
X VCC 9 1000 -800 200 L 50 50 1 1 I
X OUT7 10 1000 -700 200 L 50 50 1 1 O
X OUT6 11 1000 -600 200 L 50 50 1 1 O
X OUT5 12 1000 -500 200 L 50 50 1 1 O
X OUT4 13 1000 -400 200 L 50 50 1 1 O
X OUT3 14 1000 -300 200 L 50 50 1 1 O
X OUT2 15 1000 -200 200 L 50 50 1 1 O
X OUT1 16 1000 -100 200 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
#End Library
arduino_mega_shield.libC/C++
EESchema-LIBRARY Version 2.3
#encoding utf-8
#
# ARDUINO_MEGA_SHIELD
#
DEF ARDUINO_MEGA_SHIELD SHIELD 0 40 Y Y 1 F N
F0 "SHIELD" -400 2500 60 H V C CNN
F1 "ARDUINO_MEGA_SHIELD" -100 -2700 60 H V C CNN
F2 "" 0 0 60 H I C CNN
F3 "" 0 0 60 H I C CNN
DRAW
T 0 0 750 60 0 0 0 Arduino Normal 0 C C
T 0 0 650 60 0 0 0 MEGA Normal 0 C C
S -700 -2600 600 2450 0 1 0 N
P 3 0 1 0 -600 700 500 700 500 700 N
X RX0 0 900 750 300 L 50 50 1 1 B
X TX0 1 900 850 300 L 50 50 1 1 B
X 2 2 900 950 300 L 50 50 1 1 B
X 3 3 900 1050 300 L 50 50 1 1 B
X 4 4 900 1150 300 L 50 50 1 1 B
X 5 5 900 1250 300 L 50 50 1 1 B
X 6 6 900 1350 300 L 50 50 1 1 B
X 7 7 900 1450 300 L 50 50 1 1 B
X 8 8 900 1650 300 L 50 50 1 1 B
X 9 9 900 1750 300 L 50 50 1 1 B
X 10 10 900 1850 300 L 50 50 1 1 B
X SDA 20 900 -50 300 L 50 50 1 1 B
X PC7 30 900 -1500 300 L 50 50 1 1 B
X PG1 40 -1000 -2250 300 R 50 50 1 1 B
X PB3_(MISO) 50 -1000 -1150 300 R 50 50 1 1 B
X 11 11 900 1950 300 L 50 50 1 1 B
X SCL 21 900 -150 300 L 50 50 1 1 B
X PC6 31 900 -1600 300 L 50 50 1 1 B
X PG0 41 -1000 -2150 300 R 50 50 1 1 B
X PB2_(MOSI) 51 -1000 -1050 300 R 50 50 1 1 B
X 12 12 900 2050 300 L 50 50 1 1 B
X PA0 22 900 -650 300 L 50 50 1 1 B
X PC5 32 900 -1700 300 L 50 50 1 1 B
X PL7 42 -1000 -2000 300 R 50 50 1 1 B
X PB1_(SCK) 52 -1000 -950 300 R 50 50 1 1 B
X 13 13 900 2150 300 L 50 50 1 1 B
X PA1 23 900 -750 300 L 50 50 1 1 B
X PC4 33 900 -1800 300 L 50 50 1 1 B
X PL6 43 -1000 -1900 300 R 50 50 1 1 B
X PB0_(SS) 53 -1000 -850 300 R 50 50 1 1 B
X TX3 14 900 550 300 L 50 50 1 1 B
X PA2 24 900 -850 300 L 50 50 1 1 B
X PC3 34 900 -1900 300 L 50 50 1 1 B
X PL5 44 -1000 -1800 300 R 50 50 1 1 B
X RX3 15 900 450 300 L 50 50 1 1 B
X PA3 25 900 -950 300 L 50 50 1 1 B
X PC2 35 900 -2000 300 L 50 50 1 1 B
X PL4 45 -1000 -1700 300 R 50 50 1 1 B
X TX2 16 900 350 300 L 50 50 1 1 B
X PA4 26 900 -1050 300 L 50 50 1 1 B
X PC1 36 900 -2100 300 L 50 50 1 1 B
X PL3 46 -1000 -1600 300 R 50 50 1 1 B
X RX2 17 900 250 300 L 50 50 1 1 B
X PA5 27 900 -1150 300 L 50 50 1 1 B
X PC0 37 900 -2200 300 L 50 50 1 1 B
X PL2 47 -1000 -1500 300 R 50 50 1 1 B
X TX1 18 900 150 300 L 50 50 1 1 B
X PA6 28 900 -1250 300 L 50 50 1 1 B
X PD7 38 -1000 -2450 300 R 50 50 1 1 B
X PL1 48 -1000 -1400 300 R 50 50 1 1 B
X RX1 19 900 50 300 L 50 50 1 1 B
X PA7 29 900 -1350 300 L 50 50 1 1 B
X PG2 39 -1000 -2350 300 R 50 50 1 1 B
X PL0 49 -1000 -1300 300 R 50 50 1 1 B
X 5V 5V -1000 1750 300 R 50 50 1 1 W
X AD0 AD0 -1000 1250 300 R 50 50 1 1 B
X AD1 AD1 -1000 1150 300 R 50 50 1 1 B
X AD2 AD2 -1000 1050 300 R 50 50 1 1 B
X AD3 AD3 -1000 950 300 R 50 50 1 1 B
X 3V3 3V3 -1000 1850 300 R 50 50 1 1 W
X AD4 AD4 -1000 850 300 R 50 50 1 1 B
X AD5 AD5 -1000 750 300 R 50 50 1 1 B
X AD6 AD6 -1000 650 300 R 50 50 1 1 B
X AD7 AD7 -1000 550 300 R 50 50 1 1 B
X AD8 AD8 -1000 350 300 R 50 50 1 1 B
X AD9 AD9 -1000 250 300 R 50 50 1 1 B
X RST RST -1000 1950 300 R 50 50 1 1 I
X AD10 AD10 -1000 150 300 R 50 50 1 1 B
X AD11 AD11 -1000 50 300 R 50 50 1 1 B
X GND1 GND1 -1000 1650 300 R 50 50 1 1 W
X AD12 AD12 -1000 -50 300 R 50 50 1 1 B
X GND2 GND2 -1000 1550 300 R 50 50 1 1 W
X AD13 AD13 -1000 -150 300 R 50 50 1 1 B
X GND3 GND3 900 2250 300 L 50 50 1 1 W
X AD14 AD14 -1000 -250 300 R 50 50 1 1 B
X GND4 GND4 -1000 -600 300 R 50 50 1 1 W
X 5V_4 5V_4 900 -400 300 L 50 50 1 1 W
X AD15 AD15 -1000 -350 300 R 50 50 1 1 B
X GND5 GND5 -1000 -700 300 R 50 50 1 1 W
X 5V_5 5V_5 900 -500 300 L 50 50 1 1 W
X AREF AREF 900 2350 300 L 50 50 1 1 W
X V_IN V_IN -1000 1450 300 R 50 50 1 1 W
ENDDRAW
ENDDEF
#
#End Library
newshield-cache.libC/C++
EESchema-LIBRARY Version 2.3
#encoding utf-8
#
# +3V3
#
DEF +3V3 #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "+3V3" 0 140 50 H V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
ALIAS +3.3V
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +3V3 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# +5V
#
DEF +5V #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "+5V" 0 140 50 H V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +5V 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# ARDUINO_MEGA_SHIELD
#
DEF ARDUINO_MEGA_SHIELD SHIELD 0 40 Y Y 1 F N
F0 "SHIELD" -400 2500 60 H V C CNN
F1 "ARDUINO_MEGA_SHIELD" -100 -2700 60 H V C CNN
F2 "" 0 0 60 H I C CNN
F3 "" 0 0 60 H I C CNN
DRAW
T 0 0 750 60 0 0 0 Arduino Normal 0 C C
T 0 0 650 60 0 0 0 MEGA Normal 0 C C
S -700 -2600 600 2450 0 1 0 N
P 3 0 1 0 -600 700 500 700 500 700 N
X RX0 0 900 750 300 L 50 50 1 1 B
X TX0 1 900 850 300 L 50 50 1 1 B
X 2 2 900 950 300 L 50 50 1 1 B
X 3 3 900 1050 300 L 50 50 1 1 B
X 4 4 900 1150 300 L 50 50 1 1 B
X 5 5 900 1250 300 L 50 50 1 1 B
X 6 6 900 1350 300 L 50 50 1 1 B
X 7 7 900 1450 300 L 50 50 1 1 B
X 8 8 900 1650 300 L 50 50 1 1 B
X 9 9 900 1750 300 L 50 50 1 1 B
X 10 10 900 1850 300 L 50 50 1 1 B
X PC7 30 900 -1500 300 L 50 50 1 1 B
X PG1 40 -1000 -2250 300 R 50 50 1 1 B
X PB3_(MISO) 50 -1000 -1150 300 R 50 50 1 1 B
X A0 A0 -1000 1250 300 R 50 50 1 1 B
X 11 11 900 1950 300 L 50 50 1 1 B
X PC6 31 900 -1600 300 L 50 50 1 1 B
X PG0 41 -1000 -2150 300 R 50 50 1 1 B
X PB2_(MOSI) 51 -1000 -1050 300 R 50 50 1 1 B
X A1 A1 -1000 1150 300 R 50 50 1 1 B
X 12 12 900 2050 300 L 50 50 1 1 B
X PA0 22 900 -650 300 L 50 50 1 1 B
X PC5 32 900 -1700 300 L 50 50 1 1 B
X PL7 42 -1000 -2000 300 R 50 50 1 1 B
X PB1_(SCK) 52 -1000 -950 300 R 50 50 1 1 B
X A2 A2 -1000 1050 300 R 50 50 1 1 B
X 13 13 900 2150 300 L 50 50 1 1 B
X PA1 23 900 -750 300 L 50 50 1 1 B
X PC4 33 900 -1800 300 L 50 50 1 1 B
X PL6 43 -1000 -1900 300 R 50 50 1 1 B
X PB0_(SS) 53 -1000 -850 300 R 50 50 1 1 B
X A3 A3 -1000 950 300 R 50 50 1 1 B
X TX3 14 900 550 300 L 50 50 1 1 B
X PA2 24 900 -850 300 L 50 50 1 1 B
X PC3 34 900 -1900 300 L 50 50 1 1 B
X PL5 44 -1000 -1800 300 R 50 50 1 1 B
X A4 A4 -1000 850 300 R 50 50 1 1 B
X RX3 15 900 450 300 L 50 50 1 1 B
X PA3 25 900 -950 300 L 50 50 1 1 B
X PC2 35 900 -2000 300 L 50 50 1 1 B
X PL4 45 -1000 -1700 300 R 50 50 1 1 B
X A5 A5 -1000 750 300 R 50 50 1 1 B
X TX2 16 900 350 300 L 50 50 1 1 B
X PA4 26 900 -1050 300 L 50 50 1 1 B
X PC1 36 900 -2100 300 L 50 50 1 1 B
X PL3 46 -1000 -1600 300 R 50 50 1 1 B
X A6 A6 -1000 650 300 R 50 50 1 1 B
X RX2 17 900 250 300 L 50 50 1 1 B
X PA5 27 900 -1150 300 L 50 50 1 1 B
X PC0 37 900 -2200 300 L 50 50 1 1 B
X PL2 47 -1000 -1500 300 R 50 50 1 1 B
X A7 A7 -1000 550 300 R 50 50 1 1 B
X TX1 18 900 150 300 L 50 50 1 1 B
X PA6 28 900 -1250 300 L 50 50 1 1 B
X PD7 38 -1000 -2450 300 R 50 50 1 1 B
X PL1 48 -1000 -1400 300 R 50 50 1 1 B
X A8 A8 -1000 350 300 R 50 50 1 1 B
X RX1 19 900 50 300 L 50 50 1 1 B
X PA7 29 900 -1350 300 L 50 50 1 1 B
X PG2 39 -1000 -2350 300 R 50 50 1 1 B
X PL0 49 -1000 -1300 300 R 50 50 1 1 B
X A9 A9 -1000 250 300 R 50 50 1 1 B
X A10 A10 -1000 150 300 R 50 50 1 1 B
X A11 A11 -1000 50 300 R 50 50 1 1 B
X A12 A12 -1000 -50 300 R 50 50 1 1 B
X A13 A13 -1000 -150 300 R 50 50 1 1 B
X 3V3 3V3 -1000 1850 300 R 50 50 1 1 W
X A14 A14 -1000 -250 300 R 50 50 1 1 B
X A15 A15 -1000 -350 300 R 50 50 1 1 B
X VIN VIN -1000 1450 300 R 50 50 1 1 W
X RST RST -1000 1950 300 R 50 50 1 1 I
X SDA 20/1 900 -50 300 L 50 50 1 1 B
X SCL 21/1 900 -150 300 L 50 50 1 1 B
X 5V/1 5V/1 -1000 1750 300 R 50 50 1 1 W
X GND1 GND1 -1000 1650 300 R 50 50 1 1 W
X 5V/2 5V/2 900 -400 300 L 50 50 1 1 W
X GND2 GND2 -1000 1550 300 R 50 50 1 1 W
X 5V/3 5V/3 900 -500 300 L 50 50 1 1 W
X GND3 GND3 900 2250 300 L 50 50 1 1 W
X GND4 GND4 -1000 -600 300 R 50 50 1 1 W
X GND5 GND5 -1000 -700 300 R 50 50 1 1 W
X AREF AREF 900 2350 300 L 50 50 1 1 W
ENDDRAW
ENDDEF
#
# C
#
DEF C C 0 10 N Y 1 F N
F0 "C" 25 100 50 H V L CNN
F1 "C" 25 -100 50 H V L CNN
F2 "" 38 -150 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 C?
 C_????_*
 C_????
 SMD*_c
 Capacitor*
$ENDFPLIST
DRAW
P 2 0 1 20 -80 -30 80 -30 N
P 2 0 1 20 -80 30 80 30 N
X ~ 1 0 150 110 D 40 40 1 1 P
X ~ 2 0 -150 110 U 40 40 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X02
#
DEF CONN_01X02 P 0 40 Y N 1 F N
F0 "P" 0 150 50 H V C CNN
F1 "CONN_01X02" 100 0 50 V V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 Pin_Header_Straight_1X02
 Pin_Header_Angled_1X02
 Socket_Strip_Straight_1X02
 Socket_Strip_Angled_1X02
$ENDFPLIST
DRAW
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 100 50 -100 0 1 0 N
X P1 1 -200 50 150 R 50 50 1 1 P
X P2 2 -200 -50 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X04
#
DEF CONN_01X04 P 0 40 Y N 1 F N
F0 "P" 0 250 50 H V C CNN
F1 "CONN_01X04" 100 0 50 V V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 Pin_Header_Straight_1X04
 Pin_Header_Angled_1X04
 Socket_Strip_Straight_1X04
 Socket_Strip_Angled_1X04
$ENDFPLIST
DRAW
S -50 -145 10 -155 0 1 0 N
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 155 10 145 0 1 0 N
S -50 200 50 -200 0 1 0 N
X P1 1 -200 150 150 R 50 50 1 1 P
X P2 2 -200 50 150 R 50 50 1 1 P
X P3 3 -200 -50 150 R 50 50 1 1 P
X P4 4 -200 -150 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X06
#
DEF CONN_01X06 P 0 40 Y N 1 F N
F0 "P" 0 350 50 H V C CNN
F1 "CONN_01X06" 100 0 50 V V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 Pin_Header_Straight_1X06
 Pin_Header_Angled_1X06
 Socket_Strip_Straight_1X06
 Socket_Strip_Angled_1X06
$ENDFPLIST
DRAW
S -50 -245 10 -255 0 1 0 N
S -50 -145 10 -155 0 1 0 N
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 155 10 145 0 1 0 N
S -50 255 10 245 0 1 0 N
S -50 300 50 -300 0 1 0 N
X P1 1 -200 250 150 R 50 50 1 1 P
X P2 2 -200 150 150 R 50 50 1 1 P
X P3 3 -200 50 150 R 50 50 1 1 P
X P4 4 -200 -50 150 R 50 50 1 1 P
X P5 5 -200 -150 150 R 50 50 1 1 P
X P6 6 -200 -250 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X08
#
DEF CONN_01X08 P 0 40 Y N 1 F N
F0 "P" 0 450 50 H V C CNN
F1 "CONN_01X08" 100 0 50 V V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 Pin_Header_Straight_1X08
 Pin_Header_Angled_1X08
 Socket_Strip_Straight_1X08
 Socket_Strip_Angled_1X08
$ENDFPLIST
DRAW
S -50 -400 50 400 0 1 0 N
S -50 -345 10 -355 0 1 0 N
S -50 -245 10 -255 0 1 0 N
S -50 -145 10 -155 0 1 0 N
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 155 10 145 0 1 0 N
S -50 255 10 245 0 1 0 N
S -50 355 10 345 0 1 0 N
X P1 1 -200 350 150 R 50 50 1 1 P
X P2 2 -200 250 150 R 50 50 1 1 P
X P3 3 -200 150 150 R 50 50 1 1 P
X P4 4 -200 50 150 R 50 50 1 1 P
X P5 5 -200 -50 150 R 50 50 1 1 P
X P6 6 -200 -150 150 R 50 50 1 1 P
X P7 7 -200 -250 150 R 50 50 1 1 P
X P8 8 -200 -350 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X09
#
DEF CONN_01X09 P 0 40 Y N 1 F N
F0 "P" 0 500 50 H V C CNN
F1 "CONN_01X09" 100 0 50 V V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 Pin_Header_Straight_1X09
 Pin_Header_Angled_1X09
 Socket_Strip_Straight_1X09
 Socket_Strip_Angled_1X09
$ENDFPLIST
DRAW
S -50 -395 10 -405 0 1 0 N
S -50 -295 10 -305 0 1 0 N
S -50 -195 10 -205 0 1 0 N
S -50 -95 10 -105 0 1 0 N
S -50 5 10 -5 0 1 0 N
S -50 105 10 95 0 1 0 N
S -50 205 10 195 0 1 0 N
S -50 305 10 295 0 1 0 N
S -50 405 10 395 0 1 0 N
S -50 450 50 -450 0 1 0 N
X P1 1 -200 400 150 R 50 50 1 1 P
X P2 2 -200 300 150 R 50 50 1 1 P
X P3 3 -200 200 150 R 50 50 1 1 P
X P4 4 -200 100 150 R 50 50 1 1 P
X P5 5 -200 0 150 R 50 50 1 1 P
X P6 6 -200 -100 150 R 50 50 1 1 P
X P7 7 -200 -200 150 R 50 50 1 1 P
X P8 8 -200 -300 150 R 50 50 1 1 P
X P9 9 -200 -400 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_02X10
#
DEF CONN_02X10 P 0 1 Y N 1 F N
F0 "P" 0 550 50 H V C CNN
F1 "CONN_02X10" 0 0 50 V V C CNN
F2 "" 0 -1200 50 H V C CNN
F3 "" 0 -1200 50 H V C CNN
$FPLIST
 Pin_Header_Straight_2X10
 Pin_Header_Angled_2X10
 Socket_Strip_Straight_2X10
 Socket_Strip_Angled_2X10
$ENDFPLIST
DRAW
S -100 -445 -50 -455 0 1 0 N
S -100 -345 -50 -355 0 1 0 N
S -100 -245 -50 -255 0 1 0 N
S -100 -145 -50 -155 0 1 0 N
S -100 -45 -50 -55 0 1 0 N
S -100 55 -50 45 0 1 0 N
S -100 155 -50 145 0 1 0 N
S -100 255 -50 245 0 1 0 N
S -100 355 -50 345 0 1 0 N
S -100 455 -50 445 0 1 0 N
S -100 500 100 -500 0 1 0 N
S 50 -445 100 -455 0 1 0 N
S 50 -345 100 -355 0 1 0 N
S 50 -245 100 -255 0 1 0 N
S 50 -145 100 -155 0 1 0 N
S 50 -45 100 -55 0 1 0 N
S 50 55 100 45 0 1 0 N
S 50 155 100 145 0 1 0 N
S 50 255 100 245 0 1 0 N
S 50 355 100 345 0 1 0 N
S 50 455 100 445 0 1 0 N
X P1 1 -250 450 150 R 50 50 1 1 P
X P2 2 250 450 150 L 50 50 1 1 P
X P3 3 -250 350 150 R 50 50 1 1 P
X P4 4 250 350 150 L 50 50 1 1 P
X P5 5 -250 250 150 R 50 50 1 1 P
X P6 6 250 250 150 L 50 50 1 1 P
X P7 7 -250 150 150 R 50 50 1 1 P
X P8 8 250 150 150 L 50 50 1 1 P
X P9 9 -250 50 150 R 50 50 1 1 P
X P10 10 250 50 150 L 50 50 1 1 P
X P20 20 250 -450 150 L 50 50 1 1 P
X P11 11 -250 -50 150 R 50 50 1 1 P
X P12 12 250 -50 150 L 50 50 1 1 P
X P13 13 -250 -150 150 R 50 50 1 1 P
X P14 14 250 -150 150 L 50 50 1 1 P
X P15 15 -250 -250 150 R 50 50 1 1 P
X P16 16 250 -250 150 L 50 50 1 1 P
X P17 17 -250 -350 150 R 50 50 1 1 P
X P18 18 250 -350 150 L 50 50 1 1 P
X P19 19 -250 -450 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CP
#
DEF CP C 0 10 N Y 1 F N
F0 "C" 25 100 50 H V L CNN
F1 "CP" 25 -100 50 H V L CNN
F2 "" 38 -150 50 H V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 CP*
 C_Axial*
 C_Radial*
 TantalC*
 C*elec
 c_elec*
 SMD*_Pol
$ENDFPLIST
DRAW
S -90 20 -90 40 0 1 0 N
S -90 20 90 20 0 1 0 N
S 90 -20 -90 -40 0 1 0 F
S 90 40 -90 40 0 1 0 N
S 90 40 90 20 0 1 0 N
P 2 0 1 0 -70 90 -30 90 N
P 2 0 1 0 -50 110 -50 70 N
X ~ 1 0 150 110 D 40 40 1 1 P
X ~ 2 0 -150 110 U 40 40 1 1 P
ENDDRAW
ENDDEF
#
# GND
#
DEF GND #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -250 50 H I C CNN
F1 "GND" 0 -150 50 H V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
DRAW
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
X GND 1 0 0 0 D 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# PWR_FLAG
#
DEF PWR_FLAG #FLG 0 0 N N 1 F P
F0 "#FLG" 0 95 50 H I C CNN
F1 "PWR_FLAG" 0 180 50 H V C CNN
F2 "" 0 0 50 H V C CNN
F3 "" 0 0 50 H V C CNN
DRAW
X pwr 1 0 0 0 U 50 50 0 0 w
P 6 0 1 0 0 0 0 50 -75 100 0 150 75 100 0 50 N
ENDDRAW
ENDDEF
#
# R
#
DEF R R 0 0 N Y 1 F N
F0 "R" 80 0 50 V V C CNN
F1 "R" 0 0 50 V V C CNN
F2 "" -70 0 50 V V C CNN
F3 "" 0 0 50 H V C CNN
$FPLIST
 R_*
 Resistor_*
$ENDFPLIST
DRAW
S -40 -100 40 100 0 1 10 N
X ~ 1 0 150 50 D 50 50 1 1 P
X ~ 2 0 -150 50 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# UNL2003
#
DEF UNL2003 U 0 40 Y Y 1 F N
F0 "U" 200 200 60 H V C CNN
F1 "UNL2003" 400 -1000 60 H V C CNN
F2 "" 200 0 60 H I C CNN
F3 "" 200 0 60 H I C CNN
DRAW
S 100 100 800 -900 0 1 0 N
P 4 0 1 0 400 100 400 0 500 0 500 100 N
X IN1 1 -100 -100 200 R 50 50 1 1 I
X IN2 2 -100 -200 200 R 50 50 1 1 I
X IN3 3 -100 -300 200 R 50 50 1 1 I
X IN4 4 -100 -400 200 R 50 50 1 1 I
X IN5 5 -100 -500 200 R 50 50 1 1 I
X IN6 6 -100 -600 200 R 50 50 1 1 I
X IN7 7 -100 -700 200 R 50 50 1 1 I
X GND 8 -100 -800 200 R 50 50 1 1 I
X VCC 9 1000 -800 200 L 50 50 1 1 I
X OUT7 10 1000 -700 200 L 50 50 1 1 O
X OUT6 11 1000 -600 200 L 50 50 1 1 O
X OUT5 12 1000 -500 200 L 50 50 1 1 O
X OUT4 13 1000 -400 200 L 50 50 1 1 O
X OUT3 14 1000 -300 200 L 50 50 1 1 O
X OUT2 15 1000 -200 200 L 50 50 1 1 O
X OUT1 16 1000 -100 200 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
#End Library
newshield.kicad_pcbC/C++
(kicad_pcb (version 4) (host pcbnew 4.0.3-stable)

  (general
    (links 165)
    (no_connects 0)
    (area 104.181 75.953047 255.027 131.393001)
    (thickness 1.6)
    (drawings 8)
    (tracks 1102)
    (zones 0)
    (modules 38)
    (nets 113)
  )

  (page A4)
  (layers
    (0 F.Cu signal)
    (31 B.Cu signal)
    (32 B.Adhes user)
    (33 F.Adhes user)
    (34 B.Paste user)
    (35 F.Paste user)
    (36 B.SilkS user)
    (37 F.SilkS user)
    (38 B.Mask user)
    (39 F.Mask user)
    (40 Dwgs.User user)
    (41 Cmts.User user)
    (42 Eco1.User user)
    (43 Eco2.User user)
    (44 Edge.Cuts user)
    (45 Margin user)
    (46 B.CrtYd user)
    (47 F.CrtYd user)
    (48 B.Fab user)
    (49 F.Fab user)
  )

  (setup
    (last_trace_width 0.5)
    (user_trace_width 0.5)
    (user_trace_width 0.7)
    (user_trace_width 0.9)
    (user_trace_width 1)
    (user_trace_width 1.2)
    (user_trace_width 1.5)
    (user_trace_width 2)
    (user_trace_width 2.5)
    (trace_clearance 0.2)
    (zone_clearance 0.508)
    (zone_45_only no)
    (trace_min 0.2)
    (segment_width 0.2)
    (edge_width 0.15)
    (via_size 0.6)
    (via_drill 0.4)
    (via_min_size 0.4)
    (via_min_drill 0.3)
    (uvia_size 0.3)
    (uvia_drill 0.1)
    (uvias_allowed no)
    (uvia_min_size 0.2)
    (uvia_min_drill 0.1)
    (pcb_text_width 0.3)
    (pcb_text_size 1.5 1.5)
    (mod_edge_width 0.15)
    (mod_text_size 1 1)
    (mod_text_width 0.15)
    (pad_size 1.524 1.524)
    (pad_drill 0.762)
    (pad_to_mask_clearance 0.2)
    (aux_axis_origin 0 0)
    (grid_origin 201.93 86.36)
    (visible_elements 7FFFFFFF)
    (pcbplotparams
      (layerselection 0x00030_80000001)
      (usegerberextensions false)
      (excludeedgelayer true)
      (linewidth 0.100000)
      (plotframeref false)
      (viasonmask false)
      (mode 1)
      (useauxorigin false)
      (hpglpennumber 1)
      (hpglpenspeed 20)
      (hpglpendiameter 15)
      (hpglpenoverlay 2)
      (psnegative false)
      (psa4output false)
      (plotreference true)
      (plotvalue true)
      (plotinvisibletext false)
      (padsonsilk false)
      (subtractmaskfromsilk false)
      (outputformat 1)
      (mirror false)
      (drillshape 1)
      (scaleselection 1)
      (outputdirectory ""))
  )

  (net 0 "")
  (net 1 +5V)
  (net 2 GND)
  (net 3 3.3V)
  (net 4 12V)
  (net 5 /TEMP_SENSOR)
  (net 6 LCD_RD)
  (net 7 LCD_WR)
  (net 8 SD_SS)
  (net 9 LCD_RS)
  (net 10 SD_DI)
  (net 11 LCD_CS)
  (net 12 SD_DO)
  (net 13 LCD_RST)
  (net 14 SD_SCK)
  (net 15 LCD_D0)
  (net 16 LCD_D7)
  (net 17 LCD_D1)
  (net 18 LCD_D6)
  (net 19 LCD_D2)
  (net 20 LCD_D5)
  (net 21 LCD_D3)
  (net 22 LCD_D4)
  (net 23 "Net-(P3-Pad1)")
  (net 24 "Net-(P3-Pad2)")
  (net 25 "Net-(P3-Pad3)")
  (net 26 "Net-(P3-Pad4)")
  (net 27 "Net-(P3-Pad5)")
  (net 28 "Net-(P3-Pad6)")
  (net 29 "Net-(P3-Pad7)")
  (net 30 /SSR_CONTROL)
  (net 31 /RGB_R_OUT)
  (net 32 /RGB_G_OUT)
  (net 33 /RGB_B_OUT)
  (net 34 "Net-(P8-Pad1)")
  (net 35 "Net-(P8-Pad2)")
  (net 36 "Net-(P8-Pad3)")
  (net 37 "Net-(P8-Pad4)")
  (net 38 "Net-(P8-Pad5)")
  (net 39 "Net-(P8-Pad6)")
  (net 40 "Net-(P8-Pad7)")
  (net 41 "Net-(P8-Pad8)")
  (net 42 /PWM7)
  (net 43 /PWM6)
  (net 44 /PWM5)
  (net 45 RGB_B)
  (net 46 RGB_G)
  (net 47 RGB_R)
  (net 48 "Net-(P9-Pad7)")
  (net 49 "Net-(P9-Pad8)")
  (net 50 "Net-(P10-Pad2)")
  (net 51 "Net-(P10-Pad3)")
  (net 52 "Net-(P10-Pad4)")
  (net 53 "Net-(P10-Pad5)")
  (net 54 "Net-(P10-Pad6)")
  (net 55 "Net-(P10-Pad7)")
  (net 56 "Net-(P10-Pad8)")
  (net 57 "Net-(P11-Pad6)")
  (net 58 "Net-(P11-Pad7)")
  (net 59 "Net-(P11-Pad8)")
  (net 60 "Net-(P12-Pad1)")
  (net 61 "Net-(P12-Pad2)")
  (net 62 "Net-(P12-Pad3)")
  (net 63 "Net-(P12-Pad4)")
  (net 64 "Net-(P12-Pad5)")
  (net 65 "Net-(P12-Pad6)")
  (net 66 "Net-(P12-Pad7)")
  (net 67 "Net-(P12-Pad8)")
  (net 68 "Net-(P13-Pad1)")
  (net 69 "Net-(P13-Pad3)")
  (net 70 "Net-(P13-Pad4)")
  (net 71 "Net-(P13-Pad7)")
  (net 72 "Net-(P13-Pad8)")
  (net 73 "Net-(P14-Pad4)")
  (net 74 "Net-(P14-Pad5)")
  (net 75 "Net-(P14-Pad6)")
  (net 76 "Net-(P14-Pad7)")
  (net 77 "Net-(SHIELD1-PadRST)")
  (net 78 "Net-(SHIELD1-Pad37)")
  (net 79 "Net-(SHIELD1-Pad38)")
  (net 80 "Net-(SHIELD1-Pad39)")
  (net 81 "Net-(SHIELD1-Pad40)")
  (net 82 "Net-(SHIELD1-Pad41)")
  (net 83 "Net-(U1-Pad7)")
  (net 84 "Net-(SHIELD1-PadVIN)")
  (net 85 "Net-(P15-Pad1)")
  (net 86 T_LCD_RST)
  (net 87 T_LCD_CS)
  (net 88 T_LCD_RS)
  (net 89 T_LCD_WR)
  (net 90 T_LCD_RD)
  (net 91 "Net-(P16-Pad1)")
  (net 92 T_GND)
  (net 93 "Net-(P16-Pad3)")
  (net 94 T_+5V)
  (net 95 T_3.3V)
  (net 96 "Net-(P16-Pad6)")
  (net 97 T_SD_SS)
  (net 98 T_SD_DI)
  (net 99 T_SD_DO)
  (net 100 T_SD_SCK)
  (net 101 T_LCD_D0)
  (net 102 T_LCD_D7)
  (net 103 T_LCD_D1)
  (net 104 T_LCD_D6)
  (net 105 T_LCD_D2)
  (net 106 T_LCD_D5)
  (net 107 T_LCD_D3)
  (net 108 T_LCD_D4)
  (net 109 "Net-(P21-Pad1)")
  (net 110 "Net-(P21-Pad2)")
  (net 111 "Net-(P22-Pad7)")
  (net 112 "Net-(P22-Pad8)")

  (net_class Default "This is the default net class."
    (clearance 0.2)
    (trace_width 0.25)
    (via_dia 0.6)
    (via_drill 0.4)
    (uvia_dia 0.3)
    (uvia_drill 0.1)
    (add_net +5V)
    (add_net /PWM5)
    (add_net /PWM6)
    (add_net /PWM7)
    (add_net /RGB_B_OUT)
    (add_net /RGB_G_OUT)
    (add_net /RGB_R_OUT)
    (add_net /SSR_CONTROL)
    (add_net /TEMP_SENSOR)
    (add_net 12V)
    (add_net 3.3V)
    (add_net GND)
    (add_net LCD_CS)
    (add_net LCD_D0)
    (add_net LCD_D1)
    (add_net LCD_D2)
    (add_net LCD_D3)
    (add_net LCD_D4)
    (add_net LCD_D5)
    (add_net LCD_D6)
    (add_net LCD_D7)
    (add_net LCD_RD)
    (add_net LCD_RS)
    (add_net LCD_RST)
    (add_net LCD_WR)
    (add_net "Net-(P10-Pad2)")
    (add_net "Net-(P10-Pad3)")
    (add_net "Net-(P10-Pad4)")
    (add_net "Net-(P10-Pad5)")
    (add_net "Net-(P10-Pad6)")
    (add_net "Net-(P10-Pad7)")
    (add_net "Net-(P10-Pad8)")
    (add_net "Net-(P11-Pad6)")
    (add_net "Net-(P11-Pad7)")
    (add_net "Net-(P11-Pad8)")
    (add_net "Net-(P12-Pad1)")
    (add_net "Net-(P12-Pad2)")
    (add_net "Net-(P12-Pad3)")
    (add_net "Net-(P12-Pad4)")
    (add_net "Net-(P12-Pad5)")
    (add_net "Net-(P12-Pad6)")
    (add_net "Net-(P12-Pad7)")
    (add_net "Net-(P12-Pad8)")
    (add_net "Net-(P13-Pad1)")
    (add_net "Net-(P13-Pad3)")
    (add_net "Net-(P13-Pad4)")
    (add_net "Net-(P13-Pad7)")
    (add_net "Net-(P13-Pad8)")
    (add_net "Net-(P14-Pad4)")
    (add_net "Net-(P14-Pad5)")
    (add_net "Net-(P14-Pad6)")
    (add_net "Net-(P14-Pad7)")
    (add_net "Net-(P15-Pad1)")
    (add_net "Net-(P16-Pad1)")
    (add_net "Net-(P16-Pad3)")
    (add_net "Net-(P16-Pad6)")
    (add_net "Net-(P21-Pad1)")
    (add_net "Net-(P21-Pad2)")
    (add_net "Net-(P22-Pad7)")
    (add_net "Net-(P22-Pad8)")
    (add_net "Net-(P3-Pad1)")
    (add_net "Net-(P3-Pad2)")
    (add_net "Net-(P3-Pad3)")
    (add_net "Net-(P3-Pad4)")
    (add_net "Net-(P3-Pad5)")
    (add_net "Net-(P3-Pad6)")
    (add_net "Net-(P3-Pad7)")
    (add_net "Net-(P8-Pad1)")
    (add_net "Net-(P8-Pad2)")
    (add_net "Net-(P8-Pad3)")
    (add_net "Net-(P8-Pad4)")
    (add_net "Net-(P8-Pad5)")
    (add_net "Net-(P8-Pad6)")
    (add_net "Net-(P8-Pad7)")
    (add_net "Net-(P8-Pad8)")
    (add_net "Net-(P9-Pad7)")
    (add_net "Net-(P9-Pad8)")
    (add_net "Net-(SHIELD1-Pad37)")
    (add_net "Net-(SHIELD1-Pad38)")
    (add_net "Net-(SHIELD1-Pad39)")
    (add_net "Net-(SHIELD1-Pad40)")
    (add_net "Net-(SHIELD1-Pad41)")
    (add_net "Net-(SHIELD1-PadRST)")
    (add_net "Net-(SHIELD1-PadVIN)")
    (add_net "Net-(U1-Pad7)")
    (add_net RGB_B)
    (add_net RGB_G)
    (add_net RGB_R)
    (add_net SD_DI)
    (add_net SD_DO)
    (add_net SD_SCK)
    (add_net SD_SS)
    (add_net T_+5V)
    (add_net T_3.3V)
    (add_net T_GND)
    (add_net T_LCD_CS)
    (add_net T_LCD_D0)
    (add_net T_LCD_D1)
    (add_net T_LCD_D2)
    (add_net T_LCD_D3)
    (add_net T_LCD_D4)
    (add_net T_LCD_D5)
    (add_net T_LCD_D6)
    (add_net T_LCD_D7)
    (add_net T_LCD_RD)
    (add_net T_LCD_RS)
    (add_net T_LCD_RST)
    (add_net T_LCD_WR)
    (add_net T_SD_DI)
    (add_net T_SD_DO)
    (add_net T_SD_SCK)
    (add_net T_SD_SS)
  )

  (module Connectors_JST:JST_EH_B08B-EH-A_08x2.50mm_Straight (layer F.Cu) (tedit 56EE9564) (tstamp 57CC3448)
    (at 250.19 86.36 270)
    (descr "JST EH series connector, B08B-EH-A, 2.50mm pitch, top entry")
    (tags "connector jst eh top vertical straight")
    (path /57CC7130)
    (fp_text reference P21 (at 0 -3 270) (layer F.SilkS)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_text value TFT_LCD_CON1 (at 0 5 270) (layer F.Fab)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_line (start -2.7 -1.8) (end -2.7 2.4) (layer F.SilkS) (width 0.15))
    (fp_line (start -2.7 2.4) (end 20.2 2.4) (layer F.SilkS) (width 0.15))
    (fp_line (start 20.2 2.4) (end 20.2 -1.8) (layer F.SilkS) (width 0.15))
    (fp_line (start 20.2 -1.8) (end -2.7 -1.8) (layer F.SilkS) (width 0.15))
    (fp_line (start -2.7 0) (end -2.2 0) (layer F.SilkS) (width 0.15))
    (fp_line (start -2.2 0) (end -2.2 -1.3) (layer F.SilkS) (width 0.15))
    (fp_line (start -2.2 -1.3) (end 19.7 -1.3) (layer F.SilkS) (width 0.15))
    (fp_line (start 19.7 -1.3) (end 19.7 0) (layer F.SilkS) (width 0.15))
    (fp_line (start 19.7 0) (end 20.2 0) (layer F.SilkS) (width 0.15))
    (fp_line (start -2.7 0.9) (end -1.7 0.9) (layer F.SilkS) (width 0.15))
    (fp_line (start -1.7 0.9) (end -1.7 2.4) (layer F.SilkS) (width 0.15))
    (fp_line (start 20.2 0.9) (end 19.2 0.9) (layer F.SilkS) (width 0.15))
    (fp_line (start 19.2 0.9) (end 19.2 2.4) (layer F.SilkS) (width 0.15))
    (fp_line (start 0 2.75) (end -0.3 3.35) (layer F.SilkS) (width 0.15))
    (fp_line (start -0.3 3.35) (end 0.3 3.35) (layer F.SilkS) (width 0.15))
    (fp_line (start 0.3 3.35) (end 0 2.75) (layer F.SilkS) (width 0.15))
    (fp_line (start -3.2 -2.3) (end -3.2 2.9) (layer F.CrtYd) (width 0.05))
    (fp_line (start -3.2 2.9) (end 20.7 2.9) (layer F.CrtYd) (width 0.05))
    (fp_line (start 20.7 2.9) (end 20.7 -2.3) (layer F.CrtYd) (width 0.05))
    (fp_line (start 20.7 -2.3) (end -3.2 -2.3) (layer F.CrtYd) (width 0.05))
    (pad 1 thru_hole rect (at 0 0 270) (size 1.85 1.85) (drill 0.9) (layers *.Cu *.Mask F.SilkS)
      (net 109 "Net-(P21-Pad1)"))
    (pad 2 thru_hole circle (at 2.5 0 270) (size 1.85 1.85) (drill 0.9) (layers *.Cu *.Mask F.SilkS)
      (net 110 "Net-(P21-Pad2)"))
    (pad 3 thru_hole circle (at 5 0 270) (size 1.85 1.85) (drill 0.9) (layers *.Cu *.Mask F.SilkS)
      (net 105 T_LCD_D2))
    (pad 4 thru_hole circle (at 7.5 0 270) (size 1.85 1.85) (drill 0.9) (layers *.Cu *.Mask F.SilkS)
      (net 107 T_LCD_D3))
    (pad 5 thru_hole circle (at 10 0 270) (size 1.85 1.85) (drill 0.9) (layers *.Cu *.Mask F.SilkS)
      (net 108 T_LCD_D4))
    (pad 6 thru_hole circle (at 12.5 0 270) (size 1.85 1.85) (drill 0.9) (layers *.Cu *.Mask F.SilkS)
      (net 106 T_LCD_D5))
    (pad 7 thru_hole circle (at 15 0 270) (size 1.85 1.85) (drill 0.9) (layers *.Cu *.Mask F.SilkS)
      (net 104 T_LCD_D6))
    (pad 8 thru_hole circle (at 17.5 0 270) (size 1.85 1.85) (drill 0.9) (layers *.Cu *.Mask F.SilkS)
      (net 102 T_LCD_D7))
    (model Connectors_JST.3dshapes/JST_EH_B08B-EH-A_08x2.50mm_Straight.wrl
      (at (xyz 0 0 0))
      (scale (xyz 1 1 1))
      (rotate (xyz 0 0 0))
    )
  )

  (module Capacitors_ThroughHole:C_Disc_D3_P2.5 (layer F.Cu) (tedit 57C83DCE) (tstamp 57C81075)
    (at 118.364 119.38 180)
    (descr "Capacitor 3mm Disc, Pitch 2.5mm")
    (tags Capacitor)
    (path /57C450E8)
    (fp_text reference C1 (at -0.254 2.286 180) (layer F.SilkS)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_text value 0.1 (at 1.25 2.5 180) (layer F.Fab)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_line (start -0.9 -1.5) (end 3.4 -1.5) (layer F.CrtYd) (width 0.05))
    (fp_line (start 3.4 -1.5) (end 3.4 1.5) (layer F.CrtYd) (width 0.05))
    (fp_line (start 3.4 1.5) (end -0.9 1.5) (layer F.CrtYd) (width 0.05))
    (fp_line (start -0.9 1.5) (end -0.9 -1.5) (layer F.CrtYd) (width 0.05))
    (fp_line (start -0.25 -1.25) (end 2.75 -1.25) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.75 1.25) (end -0.25 1.25) (layer F.SilkS) (width 0.15))
    (pad 1 thru_hole rect (at 0 0 180) (size 1.3 1.3) (drill 0.8) (layers *.Cu *.Mask F.SilkS)
      (net 1 +5V))
    (pad 2 thru_hole circle (at 2.5 0 180) (size 1.3 1.3) (drill 0.8001) (layers *.Cu *.Mask F.SilkS)
      (net 2 GND))
    (model Capacitors_ThroughHole.3dshapes/C_Disc_D3_P2.5.wrl
      (at (xyz 0.0492126 0 0))
      (scale (xyz 1 1 1))
      (rotate (xyz 0 0 0))
    )
  )

  (module Capacitors_ThroughHole:C_Radial_D5_L6_P2.5 (layer F.Cu) (tedit 0) (tstamp 57C8107B)
    (at 116.586 113.284 270)
    (descr "Radial Electrolytic Capacitor Diameter 5mm x Length 6mm, Pitch 2.5mm")
    (tags "Electrolytic Capacitor")
    (path /57C4515B)
    (fp_text reference C2 (at 1.25 -3.8 270) (layer F.SilkS)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_text value 100uF (at 1.25 3.8 270) (layer F.Fab)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_line (start 1.325 -2.499) (end 1.325 2.499) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.465 -2.491) (end 1.465 2.491) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.605 -2.475) (end 1.605 -0.095) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.605 0.095) (end 1.605 2.475) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.745 -2.451) (end 1.745 -0.49) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.745 0.49) (end 1.745 2.451) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.885 -2.418) (end 1.885 -0.657) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.885 0.657) (end 1.885 2.418) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.025 -2.377) (end 2.025 -0.764) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.025 0.764) (end 2.025 2.377) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.165 -2.327) (end 2.165 -0.835) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.165 0.835) (end 2.165 2.327) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.305 -2.266) (end 2.305 -0.879) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.305 0.879) (end 2.305 2.266) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.445 -2.196) (end 2.445 -0.898) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.445 0.898) (end 2.445 2.196) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.585 -2.114) (end 2.585 -0.896) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.585 0.896) (end 2.585 2.114) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.725 -2.019) (end 2.725 -0.871) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.725 0.871) (end 2.725 2.019) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.865 -1.908) (end 2.865 -0.823) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.865 0.823) (end 2.865 1.908) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.005 -1.78) (end 3.005 -0.745) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.005 0.745) (end 3.005 1.78) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.145 -1.631) (end 3.145 -0.628) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.145 0.628) (end 3.145 1.631) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.285 -1.452) (end 3.285 -0.44) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.285 0.44) (end 3.285 1.452) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.425 -1.233) (end 3.425 1.233) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.565 -0.944) (end 3.565 0.944) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.705 -0.472) (end 3.705 0.472) (layer F.SilkS) (width 0.15))
    (fp_circle (center 2.5 0) (end 2.5 -0.9) (layer F.SilkS) (width 0.15))
    (fp_circle (center 1.25 0) (end 1.25 -2.5375) (layer F.SilkS) (width 0.15))
    (fp_circle (center 1.25 0) (end 1.25 -2.8) (layer F.CrtYd) (width 0.05))
    (pad 1 thru_hole rect (at 0 0 270) (size 1.3 1.3) (drill 0.8) (layers *.Cu *.Mask F.SilkS)
      (net 1 +5V))
    (pad 2 thru_hole circle (at 2.5 0 270) (size 1.3 1.3) (drill 0.8) (layers *.Cu *.Mask F.SilkS)
      (net 2 GND))
    (model Capacitors_ThroughHole.3dshapes/C_Radial_D5_L6_P2.5.wrl
      (at (xyz 0.0492126 0 0))
      (scale (xyz 1 1 1))
      (rotate (xyz 0 0 90))
    )
  )

  (module Capacitors_ThroughHole:C_Disc_D3_P2.5 (layer F.Cu) (tedit 57C838F4) (tstamp 57C81081)
    (at 169.672 105.41 90)
    (descr "Capacitor 3mm Disc, Pitch 2.5mm")
    (tags Capacitor)
    (path /57C4B938)
    (fp_text reference C3 (at 2.54 2.286 90) (layer F.SilkS)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_text value 0.1uF (at 0.254 2.286 90) (layer F.Fab)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_line (start -0.9 -1.5) (end 3.4 -1.5) (layer F.CrtYd) (width 0.05))
    (fp_line (start 3.4 -1.5) (end 3.4 1.5) (layer F.CrtYd) (width 0.05))
    (fp_line (start 3.4 1.5) (end -0.9 1.5) (layer F.CrtYd) (width 0.05))
    (fp_line (start -0.9 1.5) (end -0.9 -1.5) (layer F.CrtYd) (width 0.05))
    (fp_line (start -0.25 -1.25) (end 2.75 -1.25) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.75 1.25) (end -0.25 1.25) (layer F.SilkS) (width 0.15))
    (pad 1 thru_hole rect (at 0 0 90) (size 1.3 1.3) (drill 0.8) (layers *.Cu *.Mask F.SilkS)
      (net 1 +5V))
    (pad 2 thru_hole circle (at 2.5 0 90) (size 1.3 1.3) (drill 0.8001) (layers *.Cu *.Mask F.SilkS)
      (net 2 GND))
    (model Capacitors_ThroughHole.3dshapes/C_Disc_D3_P2.5.wrl
      (at (xyz 0.0492126 0 0))
      (scale (xyz 1 1 1))
      (rotate (xyz 0 0 0))
    )
  )

  (module Capacitors_ThroughHole:C_Radial_D5_L6_P2.5 (layer F.Cu) (tedit 57C84188) (tstamp 57C81087)
    (at 132.334 124.714 180)
    (descr "Radial Electrolytic Capacitor Diameter 5mm x Length 6mm, Pitch 2.5mm")
    (tags "Electrolytic Capacitor")
    (path /57C4B993)
    (fp_text reference C4 (at -2.54 -1.27 180) (layer F.SilkS)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_text value 100uF (at -2.794 0.508 180) (layer F.Fab)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_line (start 1.325 -2.499) (end 1.325 2.499) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.465 -2.491) (end 1.465 2.491) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.605 -2.475) (end 1.605 -0.095) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.605 0.095) (end 1.605 2.475) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.745 -2.451) (end 1.745 -0.49) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.745 0.49) (end 1.745 2.451) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.885 -2.418) (end 1.885 -0.657) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.885 0.657) (end 1.885 2.418) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.025 -2.377) (end 2.025 -0.764) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.025 0.764) (end 2.025 2.377) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.165 -2.327) (end 2.165 -0.835) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.165 0.835) (end 2.165 2.327) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.305 -2.266) (end 2.305 -0.879) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.305 0.879) (end 2.305 2.266) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.445 -2.196) (end 2.445 -0.898) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.445 0.898) (end 2.445 2.196) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.585 -2.114) (end 2.585 -0.896) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.585 0.896) (end 2.585 2.114) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.725 -2.019) (end 2.725 -0.871) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.725 0.871) (end 2.725 2.019) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.865 -1.908) (end 2.865 -0.823) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.865 0.823) (end 2.865 1.908) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.005 -1.78) (end 3.005 -0.745) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.005 0.745) (end 3.005 1.78) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.145 -1.631) (end 3.145 -0.628) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.145 0.628) (end 3.145 1.631) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.285 -1.452) (end 3.285 -0.44) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.285 0.44) (end 3.285 1.452) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.425 -1.233) (end 3.425 1.233) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.565 -0.944) (end 3.565 0.944) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.705 -0.472) (end 3.705 0.472) (layer F.SilkS) (width 0.15))
    (fp_circle (center 2.5 0) (end 2.5 -0.9) (layer F.SilkS) (width 0.15))
    (fp_circle (center 1.25 0) (end 1.25 -2.5375) (layer F.SilkS) (width 0.15))
    (fp_circle (center 1.25 0) (end 1.25 -2.8) (layer F.CrtYd) (width 0.05))
    (pad 1 thru_hole rect (at 0 0 180) (size 1.3 1.3) (drill 0.8) (layers *.Cu *.Mask F.SilkS)
      (net 1 +5V))
    (pad 2 thru_hole circle (at 2.5 0 180) (size 1.3 1.3) (drill 0.8) (layers *.Cu *.Mask F.SilkS)
      (net 2 GND))
    (model Capacitors_ThroughHole.3dshapes/C_Radial_D5_L6_P2.5.wrl
      (at (xyz 0.0492126 0 0))
      (scale (xyz 1 1 1))
      (rotate (xyz 0 0 90))
    )
  )

  (module Capacitors_ThroughHole:C_Radial_D5_L6_P2.5 (layer F.Cu) (tedit 57C83D8A) (tstamp 57C8108D)
    (at 184.15 93.218 270)
    (descr "Radial Electrolytic Capacitor Diameter 5mm x Length 6mm, Pitch 2.5mm")
    (tags "Electrolytic Capacitor")
    (path /57C4B2CE)
    (fp_text reference C5 (at 3.048 -3.556 270) (layer F.SilkS)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_text value 100uF (at 1.27 -3.556 270) (layer F.Fab)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_line (start 1.325 -2.499) (end 1.325 2.499) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.465 -2.491) (end 1.465 2.491) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.605 -2.475) (end 1.605 -0.095) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.605 0.095) (end 1.605 2.475) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.745 -2.451) (end 1.745 -0.49) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.745 0.49) (end 1.745 2.451) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.885 -2.418) (end 1.885 -0.657) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.885 0.657) (end 1.885 2.418) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.025 -2.377) (end 2.025 -0.764) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.025 0.764) (end 2.025 2.377) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.165 -2.327) (end 2.165 -0.835) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.165 0.835) (end 2.165 2.327) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.305 -2.266) (end 2.305 -0.879) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.305 0.879) (end 2.305 2.266) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.445 -2.196) (end 2.445 -0.898) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.445 0.898) (end 2.445 2.196) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.585 -2.114) (end 2.585 -0.896) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.585 0.896) (end 2.585 2.114) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.725 -2.019) (end 2.725 -0.871) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.725 0.871) (end 2.725 2.019) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.865 -1.908) (end 2.865 -0.823) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.865 0.823) (end 2.865 1.908) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.005 -1.78) (end 3.005 -0.745) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.005 0.745) (end 3.005 1.78) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.145 -1.631) (end 3.145 -0.628) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.145 0.628) (end 3.145 1.631) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.285 -1.452) (end 3.285 -0.44) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.285 0.44) (end 3.285 1.452) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.425 -1.233) (end 3.425 1.233) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.565 -0.944) (end 3.565 0.944) (layer F.SilkS) (width 0.15))
    (fp_line (start 3.705 -0.472) (end 3.705 0.472) (layer F.SilkS) (width 0.15))
    (fp_circle (center 2.5 0) (end 2.5 -0.9) (layer F.SilkS) (width 0.15))
    (fp_circle (center 1.25 0) (end 1.25 -2.5375) (layer F.SilkS) (width 0.15))
    (fp_circle (center 1.25 0) (end 1.25 -2.8) (layer F.CrtYd) (width 0.05))
    (pad 1 thru_hole rect (at 0 0 270) (size 1.3 1.3) (drill 0.8) (layers *.Cu *.Mask F.SilkS)
      (net 1 +5V))
    (pad 2 thru_hole circle (at 2.5 0 270) (size 1.3 1.3) (drill 0.8) (layers *.Cu *.Mask F.SilkS)
      (net 2 GND))
    (model Capacitors_ThroughHole.3dshapes/C_Radial_D5_L6_P2.5.wrl
      (at (xyz 0.0492126 0 0))
      (scale (xyz 1 1 1))
      (rotate (xyz 0 0 90))
    )
  )

  (module Capacitors_ThroughHole:C_Disc_D3_P2.5 (layer F.Cu) (tedit 57CA543A) (tstamp 57C81093)
    (at 188.214 92.964 270)
    (descr "Capacitor 3mm Disc, Pitch 2.5mm")
    (tags Capacitor)
    (path /57C4B564)
    (fp_text reference C6 (at -1.778 0 270) (layer F.SilkS)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_text value 0.1uF (at -1.27 -1.524 270) (layer F.Fab)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_line (start -0.9 -1.5) (end 3.4 -1.5) (layer F.CrtYd) (width 0.05))
    (fp_line (start 3.4 -1.5) (end 3.4 1.5) (layer F.CrtYd) (width 0.05))
    (fp_line (start 3.4 1.5) (end -0.9 1.5) (layer F.CrtYd) (width 0.05))
    (fp_line (start -0.9 1.5) (end -0.9 -1.5) (layer F.CrtYd) (width 0.05))
    (fp_line (start -0.25 -1.25) (end 2.75 -1.25) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.75 1.25) (end -0.25 1.25) (layer F.SilkS) (width 0.15))
    (pad 1 thru_hole rect (at 0 0 270) (size 1.3 1.3) (drill 0.8) (layers *.Cu *.Mask F.SilkS)
      (net 1 +5V))
    (pad 2 thru_hole circle (at 2.5 0 270) (size 1.3 1.3) (drill 0.8001) (layers *.Cu *.Mask F.SilkS)
      (net 2 GND))
    (model Capacitors_ThroughHole.3dshapes/C_Disc_D3_P2.5.wrl
      (at (xyz 0.0492126 0 0))
      (scale (xyz 1 1 1))
      (rotate (xyz 0 0 0))
    )
  )

  (module Capacitors_ThroughHole:C_Radial_D5_L6_P2.5 (layer F.Cu) (tedit 57C84005) (tstamp 57C81099)
    (at 125.222 121.92 270)
    (descr "Radial Electrolytic Capacitor Diameter 5mm x Length 6mm, Pitch 2.5mm")
    (tags "Electrolytic Capacitor")
    (path /57C4FDF2)
    (fp_text reference C7 (at 1.524 -4.572 270) (layer F.SilkS)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_text value 100uF (at 1.524 -3.302 270) (layer F.Fab)
      (effects (font (size 1 1) (thickness 0.15)))
    )
    (fp_line (start 1.325 -2.499) (end 1.325 2.499) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.465 -2.491) (end 1.465 2.491) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.605 -2.475) (end 1.605 -0.095) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.605 0.095) (end 1.605 2.475) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.745 -2.451) (end 1.745 -0.49) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.745 0.49) (end 1.745 2.451) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.885 -2.418) (end 1.885 -0.657) (layer F.SilkS) (width 0.15))
    (fp_line (start 1.885 0.657) (end 1.885 2.418) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.025 -2.377) (end 2.025 -0.764) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.025 0.764) (end 2.025 2.377) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.165 -2.327) (end 2.165 -0.835) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.165 0.835) (end 2.165 2.327) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.305 -2.266) (end 2.305 -0.879) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.305 0.879) (end 2.305 2.266) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.445 -2.196) (end 2.445 -0.898) (layer F.SilkS) (width 0.15))
    (fp_line (start 2.445 0.898) (end 2.445 2.196) (layer F.SilkS) (width 0.15))
    (fp_line