Dump from SVN
This commit is contained in:
parent
9ec84017e4
commit
37522d26fc
51
circuit/ATMEGA328-PU.lib
Normal file
51
circuit/ATMEGA328-PU.lib
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
EESchema-LIBRARY Version 2.3
|
||||||
|
#encoding utf-8
|
||||||
|
#SamacSys ECAD Model ATMEGA328-PU
|
||||||
|
#/616917/50423/2.26/28/4/Integrated Circuit
|
||||||
|
DEF ATMEGA328-PU IC 0 30 Y Y 1 F N
|
||||||
|
F0 "IC" 2850 300 50 H V L CNN
|
||||||
|
F1 "ATMEGA328-PU" 2850 200 50 H V L CNN
|
||||||
|
F2 "DIP1016W53P254L3468H457Q28N" 2850 100 50 H I L CNN
|
||||||
|
F3 "https://componentsearchengine.com/Datasheets/1/ATMEGA328-PU.pdf" 2850 0 50 H I L CNN
|
||||||
|
F4 "8-bit Microcontrollers - MCU AVR 32K FLSH 1K EE2K SRAM-20MHz IND" 2850 -100 50 H I L CNN "Description"
|
||||||
|
F5 "4.5724" 2850 -200 50 H I L CNN "Height"
|
||||||
|
F6 "Microchip" 2850 -300 50 H I L CNN "Manufacturer_Name"
|
||||||
|
F7 "ATMEGA328-PU" 2850 -400 50 H I L CNN "Manufacturer_Part_Number"
|
||||||
|
F8 "9225299" 2850 -500 50 H I L CNN "RS Part Number"
|
||||||
|
F9 "http://uk.rs-online.com/web/p/products/9225299" 2850 -600 50 H I L CNN "RS Price/Stock"
|
||||||
|
F10 "ATMEGA328-PU" 2850 -700 50 H I L CNN "Arrow Part Number"
|
||||||
|
F11 "https://www.arrow.com/en/products/atmega328-pu/microchip-technology" 2850 -800 50 H I L CNN "Arrow Price/Stock"
|
||||||
|
DRAW
|
||||||
|
X (PCINT14/RESET)_PC6 1 0 0 200 R 50 50 0 0 B
|
||||||
|
X (PCINT16/RXD)_PD0 2 0 -100 200 R 50 50 0 0 B
|
||||||
|
X (PCINT17/TXD)_PD1 3 0 -200 200 R 50 50 0 0 B
|
||||||
|
X (PCINT18/INT0)_PD2 4 0 -300 200 R 50 50 0 0 B
|
||||||
|
X (PCINT19/OC2B/INT1)_PD3 5 0 -400 200 R 50 50 0 0 B
|
||||||
|
X (PCINT20/XCK/T0)_PD4 6 0 -500 200 R 50 50 0 0 B
|
||||||
|
X VCC 7 0 -600 200 R 50 50 0 0 B
|
||||||
|
X GND1 8 0 -700 200 R 50 50 0 0 B
|
||||||
|
X (PCINT6/XTAL1/TOSC1)_PB6 9 0 -800 200 R 50 50 0 0 B
|
||||||
|
X (PCINT7/XTAL2/TOSC2)_PB7 10 0 -900 200 R 50 50 0 0 B
|
||||||
|
X (PCINT21/OC0B/T1)_PD5 11 0 -1000 200 R 50 50 0 0 B
|
||||||
|
X (PCINT22/OC0A/AIN0)_PD6 12 0 -1100 200 R 50 50 0 0 B
|
||||||
|
X (PCINT23/AIN1)_PD7 13 0 -1200 200 R 50 50 0 0 B
|
||||||
|
X (PCINT0/CLKO/ICP1)_PB0 14 0 -1300 200 R 50 50 0 0 B
|
||||||
|
X PC5_(ADC5/SCL/PCINT13) 28 3000 0 200 L 50 50 0 0 B
|
||||||
|
X PC4_(ADC4/SDA/PCINT12) 27 3000 -100 200 L 50 50 0 0 B
|
||||||
|
X PC3_(ADC3/PCINT11) 26 3000 -200 200 L 50 50 0 0 B
|
||||||
|
X PC2_(ADC2/PCINT10) 25 3000 -300 200 L 50 50 0 0 B
|
||||||
|
X PC1_(ADC1/PCINT9) 24 3000 -400 200 L 50 50 0 0 B
|
||||||
|
X PC0_(ADC0/PCINT8) 23 3000 -500 200 L 50 50 0 0 B
|
||||||
|
X GND2 22 3000 -600 200 L 50 50 0 0 B
|
||||||
|
X AREF 21 3000 -700 200 L 50 50 0 0 B
|
||||||
|
X AVCC 20 3000 -800 200 L 50 50 0 0 B
|
||||||
|
X PB5_(SCK/PCINT5) 19 3000 -900 200 L 50 50 0 0 B
|
||||||
|
X PB4_(MISO/PCINT4) 18 3000 -1000 200 L 50 50 0 0 B
|
||||||
|
X PB3_(MOSI/OC2A/PCINT3) 17 3000 -1100 200 L 50 50 0 0 B
|
||||||
|
X PB2_(SS/OC1B/PCINT2) 16 3000 -1200 200 L 50 50 0 0 B
|
||||||
|
X PB1_(OC1A/PCINT1) 15 3000 -1300 200 L 50 50 0 0 B
|
||||||
|
P 5 0 1 6 200 100 2800 100 2800 -1400 200 -1400 200 100 N
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
#End Library
|
21
circuit/BOM.csv
Normal file
21
circuit/BOM.csv
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Reference Type, Quantity, Reference, Value, Footprint, Datasheet
|
||||||
|
"C","2","C3,C4,","22 pF","Capacitors_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm",""
|
||||||
|
"C","2","C1,C2,","100 uF","Capacitors_THT:CP_Radial_D6.3mm_P2.50mm",""
|
||||||
|
"DS","1","DS1,","WC1602A","Displays:WC1602A",""
|
||||||
|
"J","1","J1,","Power_in","Connectors:PINHEAD1-2",""
|
||||||
|
"J","1","J2,","Serial","Connectors:PINHEAD1-2",""
|
||||||
|
"J","1","J3,","TIMED_1","Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm",""
|
||||||
|
"J","1","J4,","TIMED_2","Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm",""
|
||||||
|
"J","1","J5,","TIMED_3","Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm",""
|
||||||
|
"JP","1","JP1,","Reset switch","Connectors:PINHEAD1-2",""
|
||||||
|
"R","4","R1,R4,R5,R3,","10 kOhm","Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal",""
|
||||||
|
"R","1","R2,","100 kOhm","Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal",""
|
||||||
|
"RV","1","RV1,","100 kOhm","Potentiometers:Potentiometer_Trimmer_ACP_CA6v_Horizontal",""
|
||||||
|
"SW","3","SW1,SW2,SW3,","SW_DIP_x01","Buttons_Switches_THT:SW_PUSH_6mm_h13mm",""
|
||||||
|
"U","1","U2,","ATMEGA328-PU","Housings_DIP:DIP-28_W7.62mm_Socket",""
|
||||||
|
"U","1","U3,","DS1307","Pin_Headers:Pin_Header_Straight_1x05_Pitch2.54mm",""
|
||||||
|
"U","1","U4,","DS18B20","Pin_Headers:Pin_Header_Straight_1x03_Pitch2.54mm",""
|
||||||
|
"U","1","U1,","L7805","TO_SOT_Packages_THT:TO-220-3_Vertical",""
|
||||||
|
"U","1","U5,","MCP23017","Housings_DIP:DIP-28_W7.62mm_Socket",""
|
||||||
|
"U","5","U6,U7,U8,U9,U10,","ULN2003_breakout","Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm",""
|
||||||
|
"Y","1","Y1,","16 MHz","Crystals:Crystal_HC50_Vertical",""
|
|
BIN
circuit/PCB printout.pdf
Normal file
BIN
circuit/PCB printout.pdf
Normal file
Binary file not shown.
389
circuit/circuit-cache.lib
Normal file
389
circuit/circuit-cache.lib
Normal file
@ -0,0 +1,389 @@
|
|||||||
|
EESchema-LIBRARY Version 2.3
|
||||||
|
#encoding utf-8
|
||||||
|
#
|
||||||
|
# ATMEGA168A-PU
|
||||||
|
#
|
||||||
|
DEF ATMEGA168A-PU U 0 40 Y Y 1 F N
|
||||||
|
F0 "U" -750 1250 50 H V L BNN
|
||||||
|
F1 "ATMEGA168A-PU" 400 -1400 50 H V L BNN
|
||||||
|
F2 "DIL28" 0 0 50 H I C CIN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
ALIAS ATMEGA48A-PU ATMEGA48PA-PU ATMEGA88A-PU ATMEGA88PA-PU ATMEGA168PA-PU ATMEGA328-PU ATMEGA328P-PU
|
||||||
|
$FPLIST
|
||||||
|
28DIP-ELL600
|
||||||
|
28dip600
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S -750 1200 850 -1300 0 1 10 f
|
||||||
|
X (PCINT14/~RESET~)PC6 1 1000 -350 150 L 40 40 1 1 B
|
||||||
|
X (PCINT16/RXD)PD0 2 1000 -500 150 L 40 40 1 1 B
|
||||||
|
X (PCINT17/TXD)PD1 3 1000 -600 150 L 40 40 1 1 B
|
||||||
|
X (PCINT18/INT0)PD2 4 1000 -700 150 L 40 40 1 1 B
|
||||||
|
X (PCINT19/OC2B/INT1)PD3 5 1000 -800 150 L 40 40 1 1 B
|
||||||
|
X (PCINT20/XCK/T0)PD4 6 1000 -900 150 L 40 40 1 1 B
|
||||||
|
X VCC 7 -900 1100 150 R 40 40 1 1 W
|
||||||
|
X GND 8 -900 -1200 150 R 40 40 1 1 W
|
||||||
|
X (PCINT6/XTAL1/TOSC1)PB6 9 1000 500 150 L 40 40 1 1 B
|
||||||
|
X (PCINT7/XTAL2/TOSC2)PB7 10 1000 400 150 L 40 40 1 1 B
|
||||||
|
X AVCC 20 -900 800 150 R 40 40 1 1 W
|
||||||
|
X (PCINT21/OC0B/T1)PD5 11 1000 -1000 150 L 40 40 1 1 B
|
||||||
|
X AREF 21 -900 500 150 R 40 40 1 1 B
|
||||||
|
X (PCINT22/OC0A/AIN0)PD6 12 1000 -1100 150 L 40 40 1 1 B
|
||||||
|
X GND 22 -900 -1100 150 R 40 40 1 1 W
|
||||||
|
X (PCINT23/AIN1)PD7 13 1000 -1200 150 L 40 40 1 1 B
|
||||||
|
X (PCINT8/ADC0)PC0 23 1000 250 150 L 40 40 1 1 B
|
||||||
|
X (PCINT0/CLKO/ICP1)PB0 14 1000 1100 150 L 40 40 1 1 B
|
||||||
|
X (PCINT9/ADC1)PC1 24 1000 150 150 L 40 40 1 1 B
|
||||||
|
X (PCINT1/OC1A)PB1 15 1000 1000 150 L 40 40 1 1 B
|
||||||
|
X (PCINT10/ADC2)PC2 25 1000 50 150 L 40 40 1 1 B
|
||||||
|
X (PCINT2/OC1B/~SS~)PB2 16 1000 900 150 L 40 40 1 1 B
|
||||||
|
X (PCINT11/ADC3)PC3 26 1000 -50 150 L 40 40 1 1 B
|
||||||
|
X (PCINT3/OC2A/MOSI)PB3 17 1000 800 150 L 40 40 1 1 B
|
||||||
|
X (PCINT12/SDA/ADC4)PC4 27 1000 -150 150 L 40 40 1 1 B
|
||||||
|
X (PCINT4/MISO)PB4 18 1000 700 150 L 40 40 1 1 B
|
||||||
|
X (PCINT13/SCL/ADC5)PC5 28 1000 -250 150 L 40 40 1 1 B
|
||||||
|
X (PCINT5/SCK)PB5 19 1000 600 150 L 40 40 1 1 B
|
||||||
|
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 I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
C_*
|
||||||
|
$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 50 50 1 1 P
|
||||||
|
X ~ 2 0 -150 110 U 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 I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
CP_*
|
||||||
|
$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 50 50 1 1 P
|
||||||
|
X ~ 2 0 -150 110 U 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# Conn_01x01
|
||||||
|
#
|
||||||
|
DEF Conn_01x01 J 0 40 Y N 1 F N
|
||||||
|
F0 "J" 0 100 50 H V C CNN
|
||||||
|
F1 "Conn_01x01" 0 -100 50 H V C CNN
|
||||||
|
F2 "" 0 0 50 H I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
Connector*:*_??x*mm*
|
||||||
|
Connector*:*1x??x*mm*
|
||||||
|
Pin?Header?Straight?1X*
|
||||||
|
Pin?Header?Angled?1X*
|
||||||
|
Socket?Strip?Straight?1X*
|
||||||
|
Socket?Strip?Angled?1X*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S -50 5 0 -5 1 1 6 N
|
||||||
|
S -50 50 50 -50 1 1 10 f
|
||||||
|
X Pin_1 1 -200 0 150 R 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# Conn_01x02
|
||||||
|
#
|
||||||
|
DEF Conn_01x02 J 0 40 Y N 1 F N
|
||||||
|
F0 "J" 0 100 50 H V C CNN
|
||||||
|
F1 "Conn_01x02" 0 -200 50 H V C CNN
|
||||||
|
F2 "" 0 0 50 H I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
Connector*:*_??x*mm*
|
||||||
|
Connector*:*1x??x*mm*
|
||||||
|
Pin?Header?Straight?1X*
|
||||||
|
Pin?Header?Angled?1X*
|
||||||
|
Socket?Strip?Straight?1X*
|
||||||
|
Socket?Strip?Angled?1X*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S -50 -95 0 -105 1 1 6 N
|
||||||
|
S -50 5 0 -5 1 1 6 N
|
||||||
|
S -50 50 50 -150 1 1 10 f
|
||||||
|
X Pin_1 1 -200 0 150 R 50 50 1 1 P
|
||||||
|
X Pin_2 2 -200 -100 150 R 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# Crystal
|
||||||
|
#
|
||||||
|
DEF Crystal Y 0 40 N N 1 F N
|
||||||
|
F0 "Y" 0 150 50 H V C CNN
|
||||||
|
F1 "Crystal" 0 -150 50 H V C CNN
|
||||||
|
F2 "" 0 0 50 H I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
Crystal*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S -45 100 45 -100 0 1 12 N
|
||||||
|
P 2 0 1 0 -100 0 -75 0 N
|
||||||
|
P 2 0 1 20 -75 -50 -75 50 N
|
||||||
|
P 2 0 1 20 75 -50 75 50 N
|
||||||
|
P 2 0 1 0 100 0 75 0 N
|
||||||
|
X 1 1 -150 0 50 R 50 50 1 1 P
|
||||||
|
X 2 2 150 0 50 L 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# DS1307
|
||||||
|
#
|
||||||
|
DEF DS1307 U 0 40 Y Y 1 F N
|
||||||
|
F0 "U" 0 300 60 H V C CNN
|
||||||
|
F1 "DS1307" 0 -300 60 H V C CNN
|
||||||
|
F2 "" 0 350 60 H I C CNN
|
||||||
|
F3 "" 0 350 60 H I C CNN
|
||||||
|
DRAW
|
||||||
|
S -100 250 100 -250 0 1 0 N
|
||||||
|
X DS 1 -300 200 200 R 50 50 1 1 I
|
||||||
|
X SCL 2 -300 100 200 R 50 50 1 1 I
|
||||||
|
X SDA 3 -300 0 200 R 50 50 1 1 I
|
||||||
|
X VCC 4 -300 -100 200 R 50 50 1 1 I
|
||||||
|
X GND 5 -300 -200 200 R 50 50 1 1 I
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# DS18B20
|
||||||
|
#
|
||||||
|
DEF DS18B20 U 0 40 Y Y 1 F N
|
||||||
|
F0 "U" 0 200 60 H V C CNN
|
||||||
|
F1 "DS18B20" 0 -200 60 H V C CNN
|
||||||
|
F2 "" -50 -50 60 H I C CNN
|
||||||
|
F3 "" -50 -50 60 H I C CNN
|
||||||
|
DRAW
|
||||||
|
S -100 150 100 -150 0 1 0 N
|
||||||
|
X GND 1 -300 100 200 R 50 50 1 1 I
|
||||||
|
X DS 2 -300 0 200 R 50 50 1 1 I
|
||||||
|
X Vcc 3 -300 -100 200 R 50 50 1 1 I
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# Jumper_NO_Small
|
||||||
|
#
|
||||||
|
DEF Jumper_NO_Small JP 0 30 N N 1 F N
|
||||||
|
F0 "JP" 0 80 50 H V C CNN
|
||||||
|
F1 "Jumper_NO_Small" 10 -60 50 H V C CNN
|
||||||
|
F2 "" 0 0 50 H I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
DRAW
|
||||||
|
C -40 0 20 0 1 0 N
|
||||||
|
C 40 0 20 0 1 0 N
|
||||||
|
X 1 1 -100 0 40 R 50 50 0 1 P
|
||||||
|
X 2 2 100 0 40 L 50 50 0 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# L7805
|
||||||
|
#
|
||||||
|
DEF L7805 U 0 10 Y Y 1 F N
|
||||||
|
F0 "U" -150 125 50 H V C CNN
|
||||||
|
F1 "L7805" 0 125 50 H V L CNN
|
||||||
|
F2 "" 25 -150 50 H I L CIN
|
||||||
|
F3 "" 0 -50 50 H I C CNN
|
||||||
|
ALIAS L7806 L7808 L7885 L7809 L7812 L7815 L7818 L7824
|
||||||
|
$FPLIST
|
||||||
|
TO?252*
|
||||||
|
TO?263*
|
||||||
|
TO?220*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S -200 75 200 -200 0 1 10 f
|
||||||
|
X IN 1 -300 0 100 R 50 50 1 1 W
|
||||||
|
X GND 2 0 -300 100 U 50 50 1 1 W
|
||||||
|
X OUT 3 300 0 100 L 50 50 1 1 w
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# MCP23017
|
||||||
|
#
|
||||||
|
DEF MCP23017 U 0 40 Y Y 1 F N
|
||||||
|
F0 "U" -100 1025 50 H V R CNN
|
||||||
|
F1 "MCP23017" -100 950 50 H V R CNN
|
||||||
|
F2 "" 50 -950 50 H I L CNN
|
||||||
|
F3 "" 250 1000 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
DIP-28_W7.62mm*
|
||||||
|
SOIC-28
|
||||||
|
SSOP-28
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S -400 900 400 -900 0 1 10 f
|
||||||
|
X GPB0 1 -500 800 100 R 50 50 1 1 B
|
||||||
|
X GPB1 2 -500 700 100 R 50 50 1 1 B
|
||||||
|
X GPB2 3 -500 600 100 R 50 50 1 1 B
|
||||||
|
X GPB3 4 -500 500 100 R 50 50 1 1 B
|
||||||
|
X GPB4 5 -500 400 100 R 50 50 1 1 B
|
||||||
|
X GPB5 6 -500 300 100 R 50 50 1 1 B
|
||||||
|
X GPB6 7 -500 200 100 R 50 50 1 1 B
|
||||||
|
X GPB7 8 -500 100 100 R 50 50 1 1 B
|
||||||
|
X VCC 9 0 1000 100 D 50 50 1 1 W
|
||||||
|
X GND 10 0 -1000 100 U 50 50 1 1 W
|
||||||
|
X INTA 20 500 300 100 L 50 50 1 1 O
|
||||||
|
X GPA0 21 -500 -100 100 R 50 50 1 1 B
|
||||||
|
X SCL 12 500 -300 100 L 50 50 1 1 I
|
||||||
|
X GPA1 22 -500 -200 100 R 50 50 1 1 B
|
||||||
|
X SDA 13 500 -400 100 L 50 50 1 1 B
|
||||||
|
X GPA2 23 -500 -300 100 R 50 50 1 1 B
|
||||||
|
X GPA3 24 -500 -400 100 R 50 50 1 1 B
|
||||||
|
X A0 15 500 -600 100 L 50 50 1 1 I
|
||||||
|
X GPA4 25 -500 -500 100 R 50 50 1 1 B
|
||||||
|
X A1 16 500 -700 100 L 50 50 1 1 I
|
||||||
|
X GPA5 26 -500 -600 100 R 50 50 1 1 B
|
||||||
|
X A2 17 500 -800 100 L 50 50 1 1 I
|
||||||
|
X GPA6 27 -500 -700 100 R 50 50 1 1 B
|
||||||
|
X ~RESET 18 500 800 100 L 50 50 1 1 I
|
||||||
|
X GPA7 28 -500 -800 100 R 50 50 1 1 B
|
||||||
|
X INTB 19 500 400 100 L 50 50 1 1 O
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# POT
|
||||||
|
#
|
||||||
|
DEF POT RV 0 40 N N 1 F N
|
||||||
|
F0 "RV" -175 0 50 V V C CNN
|
||||||
|
F1 "POT" -100 0 50 V V C CNN
|
||||||
|
F2 "" 0 0 50 H I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
Potentiometer*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S 40 100 -40 -100 0 1 10 N
|
||||||
|
P 2 0 1 0 100 0 60 0 N
|
||||||
|
P 3 0 1 0 45 0 90 20 90 -20 F
|
||||||
|
X 1 1 0 150 50 D 50 50 1 1 P
|
||||||
|
X 2 2 150 0 50 L 50 50 1 1 P
|
||||||
|
X 3 3 0 -150 50 U 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# Power_in
|
||||||
|
#
|
||||||
|
DEF Power_in J 0 40 Y Y 1 F N
|
||||||
|
F0 "J" 0 150 60 H V C CNN
|
||||||
|
F1 "Power_in" 50 -150 60 H V C CNN
|
||||||
|
F2 "" 0 -200 60 H I C CNN
|
||||||
|
F3 "" 0 -200 60 H I C CNN
|
||||||
|
DRAW
|
||||||
|
S -100 100 150 -100 0 1 0 N
|
||||||
|
X Vcc 1 -300 50 200 R 50 50 1 1 w
|
||||||
|
X GND 2 -300 -50 200 R 50 50 1 1 w
|
||||||
|
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 I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
R_*
|
||||||
|
R_*
|
||||||
|
$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
|
||||||
|
#
|
||||||
|
# SW_DIP_x01
|
||||||
|
#
|
||||||
|
DEF SW_DIP_x01 SW 0 0 Y N 1 F N
|
||||||
|
F0 "SW" 0 150 50 H V C CNN
|
||||||
|
F1 "SW_DIP_x01" 0 -150 50 H V C CNN
|
||||||
|
F2 "" 0 0 50 H I C CNN
|
||||||
|
F3 "" 0 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
SW?DIP?x1*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
C -80 0 20 0 0 0 N
|
||||||
|
C 80 0 20 0 0 0 N
|
||||||
|
P 2 0 0 0 -60 5 93 46 N
|
||||||
|
S -150 100 150 -100 0 1 10 f
|
||||||
|
X ~ 1 -300 0 200 R 50 50 1 1 P
|
||||||
|
X ~ 2 300 0 200 L 50 50 1 1 P
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# ULN2003_breakout
|
||||||
|
#
|
||||||
|
DEF ULN2003_breakout U 0 40 Y Y 1 F N
|
||||||
|
F0 "U" -50 350 60 H V C CNN
|
||||||
|
F1 "ULN2003_breakout" 0 -350 60 H V C CNN
|
||||||
|
F2 "" 0 100 60 H I C CNN
|
||||||
|
F3 "" 0 100 60 H I C CNN
|
||||||
|
DRAW
|
||||||
|
S -150 300 100 -300 0 1 0 N
|
||||||
|
X IN1 1 -350 250 200 R 50 50 1 1 I
|
||||||
|
X IN2 2 -350 150 200 R 50 50 1 1 I
|
||||||
|
X IN3 3 -350 50 200 R 50 50 1 1 I
|
||||||
|
X IN4 4 -350 -50 200 R 50 50 1 1 I
|
||||||
|
X Vmot 5 -350 -150 200 R 50 50 1 1 I
|
||||||
|
X GND 6 -350 -250 200 R 50 50 1 1 I
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
# WC1602A
|
||||||
|
#
|
||||||
|
DEF WC1602A DS 0 40 Y Y 1 F N
|
||||||
|
F0 "DS" -230 750 50 H V C CNN
|
||||||
|
F1 "WC1602A" 210 750 50 H V C CNN
|
||||||
|
F2 "Displays:WC1602A" 0 -900 50 H I C CIN
|
||||||
|
F3 "" 700 0 50 H I C CNN
|
||||||
|
$FPLIST
|
||||||
|
*WC*1602A*
|
||||||
|
$ENDFPLIST
|
||||||
|
DRAW
|
||||||
|
S -300 700 300 -700 1 1 10 f
|
||||||
|
X VSS 1 0 -800 100 U 50 50 1 1 W
|
||||||
|
X VDD 2 0 800 100 D 50 50 1 1 W
|
||||||
|
X VO 3 400 600 100 L 50 50 1 1 I
|
||||||
|
X RS 4 -400 400 100 R 50 50 1 1 I
|
||||||
|
X R/W 5 -400 500 100 R 50 50 1 1 I
|
||||||
|
X E 6 -400 600 100 R 50 50 1 1 I
|
||||||
|
X D0 7 -400 100 100 R 50 50 1 1 I
|
||||||
|
X D1 8 -400 0 100 R 50 50 1 1 I
|
||||||
|
X D2 9 -400 -100 100 R 50 50 1 1 I
|
||||||
|
X D3 10 -400 -200 100 R 50 50 1 1 I
|
||||||
|
X D4 11 -400 -300 100 R 50 50 1 1 I
|
||||||
|
X D5 12 -400 -400 100 R 50 50 1 1 I
|
||||||
|
X D6 13 -400 -500 100 R 50 50 1 1 I
|
||||||
|
X D7 14 -400 -600 100 R 50 50 1 1 I
|
||||||
|
X LED(+) 15 400 300 100 L 50 50 1 1 W
|
||||||
|
X LED(-) 16 400 200 100 L 50 50 1 1 W
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
#End Library
|
21
circuit/circuit-rescue.lib
Normal file
21
circuit/circuit-rescue.lib
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
EESchema-LIBRARY Version 2.3
|
||||||
|
#encoding utf-8
|
||||||
|
#
|
||||||
|
# DS1307-RESCUE-circuit
|
||||||
|
#
|
||||||
|
DEF DS1307-RESCUE-circuit U 0 40 Y Y 1 F N
|
||||||
|
F0 "U" 0 300 60 H V C CNN
|
||||||
|
F1 "DS1307-RESCUE-circuit" 0 -300 60 H V C CNN
|
||||||
|
F2 "" 0 350 60 H I C CNN
|
||||||
|
F3 "" 0 350 60 H I C CNN
|
||||||
|
DRAW
|
||||||
|
S -100 250 100 -250 0 1 0 N
|
||||||
|
X DS ~ -300 200 200 R 50 50 1 1 I
|
||||||
|
X GND ~ -300 -200 200 R 50 50 1 1 I
|
||||||
|
X SCL ~ -300 100 200 R 50 50 1 1 I
|
||||||
|
X SDA ~ -300 0 200 R 50 50 1 1 I
|
||||||
|
X VCC ~ -300 -100 200 R 50 50 1 1 I
|
||||||
|
ENDDRAW
|
||||||
|
ENDDEF
|
||||||
|
#
|
||||||
|
#End Library
|
981
circuit/circuit.bak
Normal file
981
circuit/circuit.bak
Normal file
@ -0,0 +1,981 @@
|
|||||||
|
EESchema Schematic File Version 2
|
||||||
|
LIBS:circuit-rescue
|
||||||
|
LIBS:power
|
||||||
|
LIBS:device
|
||||||
|
LIBS:switches
|
||||||
|
LIBS:relays
|
||||||
|
LIBS:motors
|
||||||
|
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:contrib
|
||||||
|
LIBS:valves
|
||||||
|
LIBS:atmel
|
||||||
|
LIBS:ATMEGA328-PU
|
||||||
|
LIBS:circuit-cache
|
||||||
|
EELAYER 25 0
|
||||||
|
EELAYER END
|
||||||
|
$Descr A4 11693 8268
|
||||||
|
encoding utf-8
|
||||||
|
Sheet 1 1
|
||||||
|
Title "Prolife F1 main PCB"
|
||||||
|
Date "2018-06-02"
|
||||||
|
Rev "2"
|
||||||
|
Comp "Systemtest"
|
||||||
|
Comment1 "http://systemtest.tk"
|
||||||
|
Comment2 "gergo@systemtest.tk"
|
||||||
|
Comment3 "Fándly Gergő Zoltán"
|
||||||
|
Comment4 "Created by:"
|
||||||
|
$EndDescr
|
||||||
|
$Comp
|
||||||
|
L ATMEGA328-PU U2
|
||||||
|
U 1 1 5B128B5D
|
||||||
|
P 4050 3050
|
||||||
|
F 0 "U2" H 3300 4300 50 0000 L BNN
|
||||||
|
F 1 "ATMEGA328-PU" H 4450 1650 50 0000 L BNN
|
||||||
|
F 2 "Housings_DIP:DIP-28_W7.62mm_Socket" H 4050 3050 50 0001 C CIN
|
||||||
|
F 3 "" H 4050 3050 50 0001 C CNN
|
||||||
|
1 4050 3050
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L L7805 U1
|
||||||
|
U 1 1 5B128D1C
|
||||||
|
P 950 1350
|
||||||
|
F 0 "U1" H 800 1475 50 0000 C CNN
|
||||||
|
F 1 "L7805" H 950 1475 50 0000 L CNN
|
||||||
|
F 2 "TO_SOT_Packages_THT:TO-220-3_Vertical" H 975 1200 50 0001 L CIN
|
||||||
|
F 3 "" H 950 1300 50 0001 C CNN
|
||||||
|
1 950 1350
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L CP C1
|
||||||
|
U 1 1 5B128F71
|
||||||
|
P 1200 900
|
||||||
|
F 0 "C1" H 1225 1000 50 0000 L CNN
|
||||||
|
F 1 "100 uF" H 1225 800 50 0000 L CNN
|
||||||
|
F 2 "Capacitors_THT:CP_Radial_D6.3mm_P2.50mm" H 1238 750 50 0001 C CNN
|
||||||
|
F 3 "" H 1200 900 50 0001 C CNN
|
||||||
|
1 1200 900
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L CP C2
|
||||||
|
U 1 1 5B12902A
|
||||||
|
P 1450 1500
|
||||||
|
F 0 "C2" H 1475 1600 50 0000 L CNN
|
||||||
|
F 1 "100 uF" H 1475 1400 50 0000 L CNN
|
||||||
|
F 2 "Capacitors_THT:CP_Radial_D6.3mm_P2.50mm" H 1488 1350 50 0001 C CNN
|
||||||
|
F 3 "" H 1450 1500 50 0001 C CNN
|
||||||
|
1 1450 1500
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Crystal Y1
|
||||||
|
U 1 1 5B1299EB
|
||||||
|
P 5500 2600
|
||||||
|
F 0 "Y1" H 5500 2750 50 0000 C CNN
|
||||||
|
F 1 "16 MHz" H 5500 2450 50 0000 C CNN
|
||||||
|
F 2 "Crystals:Crystal_HC50_Vertical" H 5500 2600 50 0001 C CNN
|
||||||
|
F 3 "" H 5500 2600 50 0001 C CNN
|
||||||
|
1 5500 2600
|
||||||
|
0 -1 -1 0
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L C C3
|
||||||
|
U 1 1 5B129B4C
|
||||||
|
P 5400 2250
|
||||||
|
F 0 "C3" H 5425 2350 50 0000 L CNN
|
||||||
|
F 1 "22 pF" H 5425 2150 50 0000 L CNN
|
||||||
|
F 2 "Capacitors_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm" H 5438 2100 50 0001 C CNN
|
||||||
|
F 3 "" H 5400 2250 50 0001 C CNN
|
||||||
|
1 5400 2250
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L C C4
|
||||||
|
U 1 1 5B129BD5
|
||||||
|
P 5400 2950
|
||||||
|
F 0 "C4" H 5425 3050 50 0000 L CNN
|
||||||
|
F 1 "22 pF" H 5425 2850 50 0000 L CNN
|
||||||
|
F 2 "Capacitors_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm" H 5438 2800 50 0001 C CNN
|
||||||
|
F 3 "" H 5400 2950 50 0001 C CNN
|
||||||
|
1 5400 2950
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Jumper_NO_Small JP1
|
||||||
|
U 1 1 5B12A50F
|
||||||
|
P 5600 3650
|
||||||
|
F 0 "JP1" H 5600 3730 50 0000 C CNN
|
||||||
|
F 1 "Reset switch" H 5610 3590 50 0000 C CNN
|
||||||
|
F 2 "Connectors:PINHEAD1-2" H 5600 3650 50 0001 C CNN
|
||||||
|
F 3 "" H 5600 3650 50 0001 C CNN
|
||||||
|
1 5600 3650
|
||||||
|
0 1 1 0
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R1
|
||||||
|
U 1 1 5B12A92B
|
||||||
|
P 5900 3150
|
||||||
|
F 0 "R1" V 5980 3150 50 0000 C CNN
|
||||||
|
F 1 "10 kOhm" V 5800 3150 50 0000 C CNN
|
||||||
|
F 2 "Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal" V 5830 3150 50 0001 C CNN
|
||||||
|
F 3 "" H 5900 3150 50 0001 C CNN
|
||||||
|
1 5900 3150
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L DS1307 U3
|
||||||
|
U 1 1 5B12C8A2
|
||||||
|
P 7850 1650
|
||||||
|
F 0 "U3" H 7850 1950 60 0000 C CNN
|
||||||
|
F 1 "DS1307" H 7850 1350 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x05_Pitch2.54mm" H 7850 2000 60 0001 C CNN
|
||||||
|
F 3 "" H 7850 2000 60 0001 C CNN
|
||||||
|
1 7850 1650
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
NoConn ~ 7550 1450
|
||||||
|
$Comp
|
||||||
|
L WC1602A DS1
|
||||||
|
U 1 1 5B12E203
|
||||||
|
P 7650 3850
|
||||||
|
F 0 "DS1" H 7420 4600 50 0000 C CNN
|
||||||
|
F 1 "WC1602A" H 7860 4600 50 0000 C CNN
|
||||||
|
F 2 "Displays:WC1602A" H 7650 2950 50 0001 C CIN
|
||||||
|
F 3 "" H 8350 3850 50 0001 C CNN
|
||||||
|
1 7650 3850
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L POT RV1
|
||||||
|
U 1 1 5B12E750
|
||||||
|
P 8000 2550
|
||||||
|
F 0 "RV1" V 7825 2550 50 0000 C CNN
|
||||||
|
F 1 "100 kOhm" V 7900 2550 50 0000 C CNN
|
||||||
|
F 2 "Potentiometers:Potentiometer_Trimmer_ACP_CA6v_Horizontal" H 8000 2550 50 0001 C CNN
|
||||||
|
F 3 "" H 8000 2550 50 0001 C CNN
|
||||||
|
1 8000 2550
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
NoConn ~ 7250 3750
|
||||||
|
NoConn ~ 7250 3850
|
||||||
|
NoConn ~ 7250 3950
|
||||||
|
NoConn ~ 7250 4050
|
||||||
|
$Comp
|
||||||
|
L Conn_01x02 J2
|
||||||
|
U 1 1 5B130764
|
||||||
|
P 5300 3550
|
||||||
|
F 0 "J2" H 5300 3650 50 0000 C CNN
|
||||||
|
F 1 "Serial" H 5300 3350 50 0000 C CNN
|
||||||
|
F 2 "Connectors:PINHEAD1-2" H 5300 3550 50 0001 C CNN
|
||||||
|
F 3 "" H 5300 3550 50 0001 C CNN
|
||||||
|
1 5300 3550
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L DS18B20 U4
|
||||||
|
U 1 1 5B131BC6
|
||||||
|
P 6700 2300
|
||||||
|
F 0 "U4" H 6700 2500 60 0000 C CNN
|
||||||
|
F 1 "DS18B20" H 6700 2100 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x03_Pitch2.54mm" H 6650 2250 60 0001 C CNN
|
||||||
|
F 3 "" H 6650 2250 60 0001 C CNN
|
||||||
|
1 6700 2300
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L ULN2003_breakout U6
|
||||||
|
U 1 1 5B1346BA
|
||||||
|
P 10250 1150
|
||||||
|
F 0 "U6" H 10200 1500 60 0000 C CNN
|
||||||
|
F 1 "ULN2003_breakout" H 10250 800 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm" H 10250 1250 60 0001 C CNN
|
||||||
|
F 3 "" H 10250 1250 60 0001 C CNN
|
||||||
|
1 10250 1150
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L ULN2003_breakout U7
|
||||||
|
U 1 1 5B1347B5
|
||||||
|
P 10250 2000
|
||||||
|
F 0 "U7" H 10200 2350 60 0000 C CNN
|
||||||
|
F 1 "ULN2003_breakout" H 10250 1650 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm" H 10250 2100 60 0001 C CNN
|
||||||
|
F 3 "" H 10250 2100 60 0001 C CNN
|
||||||
|
1 10250 2000
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L ULN2003_breakout U8
|
||||||
|
U 1 1 5B1347F6
|
||||||
|
P 10250 2850
|
||||||
|
F 0 "U8" H 10200 3200 60 0000 C CNN
|
||||||
|
F 1 "ULN2003_breakout" H 10250 2500 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm" H 10250 2950 60 0001 C CNN
|
||||||
|
F 3 "" H 10250 2950 60 0001 C CNN
|
||||||
|
1 10250 2850
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L ULN2003_breakout U9
|
||||||
|
U 1 1 5B134831
|
||||||
|
P 10250 3700
|
||||||
|
F 0 "U9" H 10200 4050 60 0000 C CNN
|
||||||
|
F 1 "ULN2003_breakout" H 10250 3350 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm" H 10250 3800 60 0001 C CNN
|
||||||
|
F 3 "" H 10250 3800 60 0001 C CNN
|
||||||
|
1 10250 3700
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L ULN2003_breakout U10
|
||||||
|
U 1 1 5B134894
|
||||||
|
P 10250 4550
|
||||||
|
F 0 "U10" H 10200 4900 60 0000 C CNN
|
||||||
|
F 1 "ULN2003_breakout" H 10250 4200 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm" H 10250 4650 60 0001 C CNN
|
||||||
|
F 3 "" H 10250 4650 60 0001 C CNN
|
||||||
|
1 10250 4550
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
NoConn ~ 4700 5450
|
||||||
|
NoConn ~ 4700 5550
|
||||||
|
$Comp
|
||||||
|
L MCP23017 U5
|
||||||
|
U 1 1 5B12D0B7
|
||||||
|
P 4200 5850
|
||||||
|
F 0 "U5" H 4100 6875 50 0000 R CNN
|
||||||
|
F 1 "MCP23017" H 4100 6800 50 0000 R CNN
|
||||||
|
F 2 "Housings_DIP:DIP-28_W7.62mm_Socket" H 4250 4900 50 0001 L CNN
|
||||||
|
F 3 "" H 4450 6850 50 0001 C CNN
|
||||||
|
1 4200 5850
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Conn_01x01 J3
|
||||||
|
U 1 1 5B140BDF
|
||||||
|
P 6200 2650
|
||||||
|
F 0 "J3" H 6200 2750 50 0000 C CNN
|
||||||
|
F 1 "TIMED_1" H 6200 2550 50 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Angled_1x03_Pitch2.54mm" H 6200 2650 50 0001 C CNN
|
||||||
|
F 3 "" H 6200 2650 50 0001 C CNN
|
||||||
|
1 6200 2650
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Conn_01x01 J4
|
||||||
|
U 1 1 5B140F78
|
||||||
|
P 6200 2950
|
||||||
|
F 0 "J4" H 6200 3050 50 0000 C CNN
|
||||||
|
F 1 "TIMED_2" H 6200 2850 50 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Angled_1x03_Pitch2.54mm" H 6200 2950 50 0001 C CNN
|
||||||
|
F 3 "" H 6200 2950 50 0001 C CNN
|
||||||
|
1 6200 2950
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Conn_01x01 J5
|
||||||
|
U 1 1 5B140FE3
|
||||||
|
P 6200 3250
|
||||||
|
F 0 "J5" H 6200 3350 50 0000 C CNN
|
||||||
|
F 1 "TIMED_3" H 6200 3150 50 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Angled_1x03_Pitch2.54mm" H 6200 3250 50 0001 C CNN
|
||||||
|
F 3 "" H 6200 3250 50 0001 C CNN
|
||||||
|
1 6200 3250
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L SW_DIP_x01 SW1
|
||||||
|
U 1 1 5B142312
|
||||||
|
P 1500 5350
|
||||||
|
F 0 "SW1" H 1500 5500 50 0000 C CNN
|
||||||
|
F 1 "SW_DIP_x01" H 1500 5200 50 0000 C CNN
|
||||||
|
F 2 "Buttons_Switches_THT:SW_PUSH_6mm_h13mm" H 1500 5350 50 0001 C CNN
|
||||||
|
F 3 "" H 1500 5350 50 0001 C CNN
|
||||||
|
1 1500 5350
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L SW_DIP_x01 SW2
|
||||||
|
U 1 1 5B1423A1
|
||||||
|
P 1500 6000
|
||||||
|
F 0 "SW2" H 1500 6150 50 0000 C CNN
|
||||||
|
F 1 "SW_DIP_x01" H 1500 5850 50 0000 C CNN
|
||||||
|
F 2 "Buttons_Switches_THT:SW_PUSH_6mm_h13mm" H 1500 6000 50 0001 C CNN
|
||||||
|
F 3 "" H 1500 6000 50 0001 C CNN
|
||||||
|
1 1500 6000
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L SW_DIP_x01 SW3
|
||||||
|
U 1 1 5B1423EA
|
||||||
|
P 1500 6650
|
||||||
|
F 0 "SW3" H 1500 6800 50 0000 C CNN
|
||||||
|
F 1 "SW_DIP_x01" H 1500 6500 50 0000 C CNN
|
||||||
|
F 2 "Buttons_Switches_THT:SW_PUSH_6mm_h13mm" H 1500 6650 50 0001 C CNN
|
||||||
|
F 3 "" H 1500 6650 50 0001 C CNN
|
||||||
|
1 1500 6650
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R4
|
||||||
|
U 1 1 5B143F7B
|
||||||
|
P 1200 5700
|
||||||
|
F 0 "R4" V 1280 5700 50 0000 C CNN
|
||||||
|
F 1 "10 kOhm" V 1100 5700 50 0000 C CNN
|
||||||
|
F 2 "Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal" V 1130 5700 50 0001 C CNN
|
||||||
|
F 3 "" H 1200 5700 50 0001 C CNN
|
||||||
|
1 1200 5700
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R5
|
||||||
|
U 1 1 5B143FF4
|
||||||
|
P 1200 6350
|
||||||
|
F 0 "R5" V 1280 6350 50 0000 C CNN
|
||||||
|
F 1 "10 kOhm" V 1100 6350 50 0000 C CNN
|
||||||
|
F 2 "Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal" V 1130 6350 50 0001 C CNN
|
||||||
|
F 3 "" H 1200 6350 50 0001 C CNN
|
||||||
|
1 1200 6350
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R3
|
||||||
|
U 1 1 5B1455DE
|
||||||
|
P 1200 5050
|
||||||
|
F 0 "R3" V 1280 5050 50 0000 C CNN
|
||||||
|
F 1 "10 kOhm" V 1100 5050 50 0000 C CNN
|
||||||
|
F 2 "Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal" V 1130 5050 50 0001 C CNN
|
||||||
|
F 3 "" H 1200 5050 50 0001 C CNN
|
||||||
|
1 1200 5050
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R2
|
||||||
|
U 1 1 5B145AC8
|
||||||
|
P 2100 4800
|
||||||
|
F 0 "R2" V 2180 4800 50 0000 C CNN
|
||||||
|
F 1 "100 kOhm" V 2000 4800 50 0000 C CNN
|
||||||
|
F 2 "Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal" V 2030 4800 50 0001 C CNN
|
||||||
|
F 3 "" H 2100 4800 50 0001 C CNN
|
||||||
|
1 2100 4800
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Power_in J1
|
||||||
|
U 1 1 5B14E95E
|
||||||
|
P 2050 750
|
||||||
|
F 0 "J1" H 2050 900 60 0000 C CNN
|
||||||
|
F 1 "Power_in" H 2100 600 60 0000 C CNN
|
||||||
|
F 2 "Connectors:PINHEAD1-2" H 2050 550 60 0001 C CNN
|
||||||
|
F 3 "" H 2050 550 60 0001 C CNN
|
||||||
|
1 2050 750
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
1700 1650 950 1650
|
||||||
|
Wire Wire Line
|
||||||
|
1700 800 1700 1650
|
||||||
|
Wire Wire Line
|
||||||
|
650 700 1750 700
|
||||||
|
Wire Wire Line
|
||||||
|
650 1350 650 700
|
||||||
|
Wire Wire Line
|
||||||
|
1200 700 1200 750
|
||||||
|
Connection ~ 1200 700
|
||||||
|
Wire Wire Line
|
||||||
|
1200 1050 1700 1050
|
||||||
|
Connection ~ 1700 1050
|
||||||
|
Wire Wire Line
|
||||||
|
1450 1650 1450 1650
|
||||||
|
Connection ~ 1450 1650
|
||||||
|
Wire Wire Line
|
||||||
|
1250 1350 3150 1350
|
||||||
|
Connection ~ 1450 1350
|
||||||
|
Wire Wire Line
|
||||||
|
3150 1350 3150 2550
|
||||||
|
Connection ~ 3150 1950
|
||||||
|
Connection ~ 3150 2250
|
||||||
|
Wire Wire Line
|
||||||
|
950 4150 3150 4150
|
||||||
|
Wire Wire Line
|
||||||
|
950 1650 950 4150
|
||||||
|
Wire Wire Line
|
||||||
|
5050 2550 5250 2550
|
||||||
|
Wire Wire Line
|
||||||
|
5250 2550 5250 2450
|
||||||
|
Wire Wire Line
|
||||||
|
5250 2450 5500 2450
|
||||||
|
Wire Wire Line
|
||||||
|
5050 2650 5250 2650
|
||||||
|
Wire Wire Line
|
||||||
|
5250 2650 5250 2750
|
||||||
|
Wire Wire Line
|
||||||
|
5250 2750 5500 2750
|
||||||
|
Wire Wire Line
|
||||||
|
5400 2800 5400 2750
|
||||||
|
Connection ~ 5400 2750
|
||||||
|
Wire Wire Line
|
||||||
|
5400 2450 5400 2400
|
||||||
|
Connection ~ 5400 2450
|
||||||
|
Wire Wire Line
|
||||||
|
5400 4750 5400 3100
|
||||||
|
Wire Wire Line
|
||||||
|
3150 4750 5400 4750
|
||||||
|
Wire Wire Line
|
||||||
|
5400 2100 5700 2100
|
||||||
|
Connection ~ 3150 1600
|
||||||
|
Wire Wire Line
|
||||||
|
5700 2100 5700 3200
|
||||||
|
Wire Wire Line
|
||||||
|
5700 3200 5400 3200
|
||||||
|
Connection ~ 5400 3200
|
||||||
|
Wire Wire Line
|
||||||
|
5050 3400 5900 3400
|
||||||
|
Wire Wire Line
|
||||||
|
5900 3400 5900 3300
|
||||||
|
Wire Wire Line
|
||||||
|
5900 3000 5900 1600
|
||||||
|
Wire Wire Line
|
||||||
|
5900 1600 3150 1600
|
||||||
|
Wire Wire Line
|
||||||
|
5600 3550 5600 3400
|
||||||
|
Connection ~ 5600 3400
|
||||||
|
Wire Wire Line
|
||||||
|
5600 3750 5600 4100
|
||||||
|
Wire Wire Line
|
||||||
|
5600 4100 5400 4100
|
||||||
|
Connection ~ 5400 4100
|
||||||
|
Wire Wire Line
|
||||||
|
3150 4150 3150 4750
|
||||||
|
Connection ~ 3150 4250
|
||||||
|
Wire Wire Line
|
||||||
|
7550 1550 5200 1550
|
||||||
|
Wire Wire Line
|
||||||
|
5200 1550 5200 3300
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3300 5050 3300
|
||||||
|
Wire Wire Line
|
||||||
|
7550 1650 5150 1650
|
||||||
|
Wire Wire Line
|
||||||
|
5150 1650 5150 3200
|
||||||
|
Wire Wire Line
|
||||||
|
5150 3200 5050 3200
|
||||||
|
Wire Wire Line
|
||||||
|
3150 1750 7550 1750
|
||||||
|
Connection ~ 3150 1750
|
||||||
|
Wire Wire Line
|
||||||
|
7550 1850 7100 1850
|
||||||
|
Wire Wire Line
|
||||||
|
7100 1850 7100 4650
|
||||||
|
Wire Wire Line
|
||||||
|
5400 4650 8050 4650
|
||||||
|
Connection ~ 5400 4650
|
||||||
|
Connection ~ 7100 4650
|
||||||
|
Wire Wire Line
|
||||||
|
7650 2050 7650 3050
|
||||||
|
Wire Wire Line
|
||||||
|
7650 2050 7300 2050
|
||||||
|
Wire Wire Line
|
||||||
|
7300 2050 7300 1750
|
||||||
|
Connection ~ 7300 1750
|
||||||
|
Wire Wire Line
|
||||||
|
8000 2400 8000 2300
|
||||||
|
Wire Wire Line
|
||||||
|
8000 2300 7650 2300
|
||||||
|
Connection ~ 7650 2300
|
||||||
|
Wire Wire Line
|
||||||
|
8000 2700 8000 2800
|
||||||
|
Wire Wire Line
|
||||||
|
8000 2800 7100 2800
|
||||||
|
Connection ~ 7100 2800
|
||||||
|
Wire Wire Line
|
||||||
|
8150 2550 8150 3250
|
||||||
|
Wire Wire Line
|
||||||
|
8150 3250 8050 3250
|
||||||
|
Wire Wire Line
|
||||||
|
7250 3450 5200 3450
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3450 5200 3850
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3850 5050 3850
|
||||||
|
Wire Wire Line
|
||||||
|
7250 3350 7100 3350
|
||||||
|
Connection ~ 7100 3350
|
||||||
|
Wire Wire Line
|
||||||
|
7250 4150 6850 4150
|
||||||
|
Wire Wire Line
|
||||||
|
6850 4150 6850 3950
|
||||||
|
Wire Wire Line
|
||||||
|
6850 3950 5050 3950
|
||||||
|
Wire Wire Line
|
||||||
|
7250 4250 6800 4250
|
||||||
|
Wire Wire Line
|
||||||
|
6800 4250 6800 4050
|
||||||
|
Wire Wire Line
|
||||||
|
6800 4050 5050 4050
|
||||||
|
Wire Wire Line
|
||||||
|
7250 4350 6750 4350
|
||||||
|
Wire Wire Line
|
||||||
|
6750 4350 6750 4150
|
||||||
|
Wire Wire Line
|
||||||
|
6750 4150 5050 4150
|
||||||
|
Wire Wire Line
|
||||||
|
7250 4450 6700 4450
|
||||||
|
Wire Wire Line
|
||||||
|
6700 4450 6700 4250
|
||||||
|
Wire Wire Line
|
||||||
|
6700 4250 5050 4250
|
||||||
|
Wire Wire Line
|
||||||
|
8050 4650 8050 3650
|
||||||
|
Connection ~ 7650 4650
|
||||||
|
Wire Wire Line
|
||||||
|
8050 3550 8200 3550
|
||||||
|
Wire Wire Line
|
||||||
|
8200 3550 8200 2000
|
||||||
|
Wire Wire Line
|
||||||
|
8200 2000 5250 2000
|
||||||
|
Wire Wire Line
|
||||||
|
5250 2000 5250 2050
|
||||||
|
Wire Wire Line
|
||||||
|
5250 2050 5050 2050
|
||||||
|
Wire Wire Line
|
||||||
|
7250 3250 6950 3250
|
||||||
|
Wire Wire Line
|
||||||
|
6950 3250 6950 3750
|
||||||
|
Wire Wire Line
|
||||||
|
6950 3750 5050 3750
|
||||||
|
Wire Wire Line
|
||||||
|
5100 3550 5050 3550
|
||||||
|
Wire Wire Line
|
||||||
|
5050 3650 5100 3650
|
||||||
|
Wire Wire Line
|
||||||
|
9900 900 5100 900
|
||||||
|
Wire Wire Line
|
||||||
|
5100 900 5100 2150
|
||||||
|
Wire Wire Line
|
||||||
|
5100 2150 5050 2150
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1000 5300 1000
|
||||||
|
Wire Wire Line
|
||||||
|
5300 1000 5300 2250
|
||||||
|
Wire Wire Line
|
||||||
|
5300 2250 5050 2250
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1100 5800 1100
|
||||||
|
Wire Wire Line
|
||||||
|
5800 1100 5800 2350
|
||||||
|
Wire Wire Line
|
||||||
|
5800 2350 5050 2350
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1200 5950 1200
|
||||||
|
Wire Wire Line
|
||||||
|
5950 1200 5950 2400
|
||||||
|
Wire Wire Line
|
||||||
|
5950 2400 5100 2400
|
||||||
|
Wire Wire Line
|
||||||
|
5100 2400 5100 2450
|
||||||
|
Wire Wire Line
|
||||||
|
5100 2450 5050 2450
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1300 9450 1300
|
||||||
|
Wire Wire Line
|
||||||
|
9450 1300 9450 4700
|
||||||
|
Wire Wire Line
|
||||||
|
9450 4700 9900 4700
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3850 9450 3850
|
||||||
|
Connection ~ 9450 3850
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3000 9450 3000
|
||||||
|
Connection ~ 9450 3000
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2150 9450 2150
|
||||||
|
Connection ~ 9450 2150
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1400 9500 1400
|
||||||
|
Wire Wire Line
|
||||||
|
9500 1400 9500 4800
|
||||||
|
Wire Wire Line
|
||||||
|
6800 4800 9900 4800
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3950 9500 3950
|
||||||
|
Connection ~ 9500 3950
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3100 9500 3100
|
||||||
|
Connection ~ 9500 3100
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2250 9500 2250
|
||||||
|
Connection ~ 9500 2250
|
||||||
|
Wire Wire Line
|
||||||
|
6800 4800 6800 4650
|
||||||
|
Connection ~ 6800 4650
|
||||||
|
Connection ~ 9500 4800
|
||||||
|
Wire Wire Line
|
||||||
|
9450 1500 8150 1500
|
||||||
|
Wire Wire Line
|
||||||
|
8150 1500 8150 750
|
||||||
|
Wire Wire Line
|
||||||
|
8150 750 2800 750
|
||||||
|
Wire Wire Line
|
||||||
|
2800 750 2800 1350
|
||||||
|
Connection ~ 2800 1350
|
||||||
|
Connection ~ 9450 1500
|
||||||
|
Wire Wire Line
|
||||||
|
5100 3200 5100 6250
|
||||||
|
Wire Wire Line
|
||||||
|
5100 6250 4700 6250
|
||||||
|
Connection ~ 5100 3200
|
||||||
|
Wire Wire Line
|
||||||
|
5150 3300 5150 6150
|
||||||
|
Wire Wire Line
|
||||||
|
5150 6150 4700 6150
|
||||||
|
Connection ~ 5150 3300
|
||||||
|
Wire Wire Line
|
||||||
|
4700 6450 5050 6450
|
||||||
|
Wire Wire Line
|
||||||
|
4750 6450 4750 6850
|
||||||
|
Wire Wire Line
|
||||||
|
4750 6650 4700 6650
|
||||||
|
Wire Wire Line
|
||||||
|
4700 6550 4750 6550
|
||||||
|
Connection ~ 4750 6550
|
||||||
|
Wire Wire Line
|
||||||
|
4750 6850 4200 6850
|
||||||
|
Connection ~ 4750 6650
|
||||||
|
Wire Wire Line
|
||||||
|
5050 6450 5050 4750
|
||||||
|
Connection ~ 5050 4750
|
||||||
|
Connection ~ 4750 6450
|
||||||
|
Connection ~ 2600 1350
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1750 9750 1750
|
||||||
|
Wire Wire Line
|
||||||
|
9750 1750 9750 5050
|
||||||
|
Wire Wire Line
|
||||||
|
9750 5050 5350 5050
|
||||||
|
Wire Wire Line
|
||||||
|
5350 5050 5350 6900
|
||||||
|
Wire Wire Line
|
||||||
|
5350 6900 3500 6900
|
||||||
|
Wire Wire Line
|
||||||
|
3500 6900 3500 5050
|
||||||
|
Wire Wire Line
|
||||||
|
3500 5050 3700 5050
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1850 9700 1850
|
||||||
|
Wire Wire Line
|
||||||
|
9700 1850 9700 5100
|
||||||
|
Wire Wire Line
|
||||||
|
9700 5100 5400 5100
|
||||||
|
Wire Wire Line
|
||||||
|
5400 5100 5400 6950
|
||||||
|
Wire Wire Line
|
||||||
|
5400 6950 3450 6950
|
||||||
|
Wire Wire Line
|
||||||
|
3450 6950 3450 5150
|
||||||
|
Wire Wire Line
|
||||||
|
3450 5150 3700 5150
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1950 9650 1950
|
||||||
|
Wire Wire Line
|
||||||
|
9650 1950 9650 5150
|
||||||
|
Wire Wire Line
|
||||||
|
9650 5150 5450 5150
|
||||||
|
Wire Wire Line
|
||||||
|
5450 5150 5450 7000
|
||||||
|
Wire Wire Line
|
||||||
|
5450 7000 3400 7000
|
||||||
|
Wire Wire Line
|
||||||
|
3400 7000 3400 5250
|
||||||
|
Wire Wire Line
|
||||||
|
3400 5250 3700 5250
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2050 9600 2050
|
||||||
|
Wire Wire Line
|
||||||
|
9600 2050 9600 5200
|
||||||
|
Wire Wire Line
|
||||||
|
9600 5200 5500 5200
|
||||||
|
Wire Wire Line
|
||||||
|
5500 5200 5500 7050
|
||||||
|
Wire Wire Line
|
||||||
|
5500 7050 3350 7050
|
||||||
|
Wire Wire Line
|
||||||
|
3350 7050 3350 5350
|
||||||
|
Wire Wire Line
|
||||||
|
3350 5350 3700 5350
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2600 9400 2600
|
||||||
|
Wire Wire Line
|
||||||
|
9400 2600 9400 5250
|
||||||
|
Wire Wire Line
|
||||||
|
9400 5250 5550 5250
|
||||||
|
Wire Wire Line
|
||||||
|
5550 5250 5550 7100
|
||||||
|
Wire Wire Line
|
||||||
|
5550 7100 3300 7100
|
||||||
|
Wire Wire Line
|
||||||
|
3300 7100 3300 5450
|
||||||
|
Wire Wire Line
|
||||||
|
3300 5450 3700 5450
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2700 9350 2700
|
||||||
|
Wire Wire Line
|
||||||
|
9350 2700 9350 5300
|
||||||
|
Wire Wire Line
|
||||||
|
9350 5300 5600 5300
|
||||||
|
Wire Wire Line
|
||||||
|
5600 5300 5600 7150
|
||||||
|
Wire Wire Line
|
||||||
|
5600 7150 3250 7150
|
||||||
|
Wire Wire Line
|
||||||
|
3250 7150 3250 5550
|
||||||
|
Wire Wire Line
|
||||||
|
3250 5550 3700 5550
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2800 9300 2800
|
||||||
|
Wire Wire Line
|
||||||
|
9300 2800 9300 5350
|
||||||
|
Wire Wire Line
|
||||||
|
9300 5350 5650 5350
|
||||||
|
Wire Wire Line
|
||||||
|
5650 5350 5650 7200
|
||||||
|
Wire Wire Line
|
||||||
|
5650 7200 3200 7200
|
||||||
|
Wire Wire Line
|
||||||
|
3200 7200 3200 5650
|
||||||
|
Wire Wire Line
|
||||||
|
3200 5650 3700 5650
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2900 9250 2900
|
||||||
|
Wire Wire Line
|
||||||
|
9250 2900 9250 5400
|
||||||
|
Wire Wire Line
|
||||||
|
9250 5400 5700 5400
|
||||||
|
Wire Wire Line
|
||||||
|
5700 5400 5700 7250
|
||||||
|
Wire Wire Line
|
||||||
|
5700 7250 3150 7250
|
||||||
|
Wire Wire Line
|
||||||
|
3150 7250 3150 5750
|
||||||
|
Wire Wire Line
|
||||||
|
3150 5750 3700 5750
|
||||||
|
Wire Wire Line
|
||||||
|
4200 4850 4700 4850
|
||||||
|
Wire Wire Line
|
||||||
|
4700 4850 4700 5050
|
||||||
|
Wire Wire Line
|
||||||
|
4200 4850 4200 4550
|
||||||
|
Wire Wire Line
|
||||||
|
4200 4550 2600 4550
|
||||||
|
Wire Wire Line
|
||||||
|
2600 4550 2600 1350
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3450 9200 3450
|
||||||
|
Wire Wire Line
|
||||||
|
9200 3450 9200 5450
|
||||||
|
Wire Wire Line
|
||||||
|
9200 5450 5750 5450
|
||||||
|
Wire Wire Line
|
||||||
|
5750 5450 5750 7300
|
||||||
|
Wire Wire Line
|
||||||
|
5750 7300 3100 7300
|
||||||
|
Wire Wire Line
|
||||||
|
3100 7300 3100 5950
|
||||||
|
Wire Wire Line
|
||||||
|
3100 5950 3700 5950
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3550 9150 3550
|
||||||
|
Wire Wire Line
|
||||||
|
9150 3550 9150 5500
|
||||||
|
Wire Wire Line
|
||||||
|
9150 5500 5800 5500
|
||||||
|
Wire Wire Line
|
||||||
|
5800 5500 5800 7350
|
||||||
|
Wire Wire Line
|
||||||
|
5800 7350 3050 7350
|
||||||
|
Wire Wire Line
|
||||||
|
3050 7350 3050 6050
|
||||||
|
Wire Wire Line
|
||||||
|
3050 6050 3700 6050
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3650 9100 3650
|
||||||
|
Wire Wire Line
|
||||||
|
9100 3650 9100 5550
|
||||||
|
Wire Wire Line
|
||||||
|
9100 5550 5850 5550
|
||||||
|
Wire Wire Line
|
||||||
|
5850 5550 5850 7400
|
||||||
|
Wire Wire Line
|
||||||
|
5850 7400 3000 7400
|
||||||
|
Wire Wire Line
|
||||||
|
3000 7400 3000 6150
|
||||||
|
Wire Wire Line
|
||||||
|
3000 6150 3700 6150
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3750 9050 3750
|
||||||
|
Wire Wire Line
|
||||||
|
9050 3750 9050 5600
|
||||||
|
Wire Wire Line
|
||||||
|
9050 5600 5900 5600
|
||||||
|
Wire Wire Line
|
||||||
|
5900 5600 5900 7450
|
||||||
|
Wire Wire Line
|
||||||
|
5900 7450 2950 7450
|
||||||
|
Wire Wire Line
|
||||||
|
2950 7450 2950 6250
|
||||||
|
Wire Wire Line
|
||||||
|
2950 6250 3700 6250
|
||||||
|
Wire Wire Line
|
||||||
|
9900 4300 9000 4300
|
||||||
|
Wire Wire Line
|
||||||
|
9000 4300 9000 5650
|
||||||
|
Wire Wire Line
|
||||||
|
9000 5650 5950 5650
|
||||||
|
Wire Wire Line
|
||||||
|
5950 5650 5950 7500
|
||||||
|
Wire Wire Line
|
||||||
|
5950 7500 2900 7500
|
||||||
|
Wire Wire Line
|
||||||
|
2900 7500 2900 6350
|
||||||
|
Wire Wire Line
|
||||||
|
2900 6350 3700 6350
|
||||||
|
Wire Wire Line
|
||||||
|
9900 4400 8950 4400
|
||||||
|
Wire Wire Line
|
||||||
|
8950 4400 8950 5700
|
||||||
|
Wire Wire Line
|
||||||
|
8950 5700 6000 5700
|
||||||
|
Wire Wire Line
|
||||||
|
6000 5700 6000 7550
|
||||||
|
Wire Wire Line
|
||||||
|
6000 7550 2850 7550
|
||||||
|
Wire Wire Line
|
||||||
|
2850 7550 2850 6450
|
||||||
|
Wire Wire Line
|
||||||
|
2850 6450 3700 6450
|
||||||
|
Wire Wire Line
|
||||||
|
9900 4500 8900 4500
|
||||||
|
Wire Wire Line
|
||||||
|
8900 4500 8900 5750
|
||||||
|
Wire Wire Line
|
||||||
|
8900 5750 6050 5750
|
||||||
|
Wire Wire Line
|
||||||
|
6050 5750 6050 7600
|
||||||
|
Wire Wire Line
|
||||||
|
6050 7600 2800 7600
|
||||||
|
Wire Wire Line
|
||||||
|
2800 7600 2800 6550
|
||||||
|
Wire Wire Line
|
||||||
|
2800 6550 3700 6550
|
||||||
|
Wire Wire Line
|
||||||
|
9900 4600 8850 4600
|
||||||
|
Wire Wire Line
|
||||||
|
8850 4600 8850 5800
|
||||||
|
Wire Wire Line
|
||||||
|
8850 5800 6100 5800
|
||||||
|
Wire Wire Line
|
||||||
|
6100 5800 6100 7650
|
||||||
|
Wire Wire Line
|
||||||
|
6100 7650 2750 7650
|
||||||
|
Wire Wire Line
|
||||||
|
2750 7650 2750 6650
|
||||||
|
Wire Wire Line
|
||||||
|
2750 6650 3700 6650
|
||||||
|
Wire Wire Line
|
||||||
|
6000 2650 6000 2800
|
||||||
|
Wire Wire Line
|
||||||
|
6000 2800 5050 2800
|
||||||
|
Wire Wire Line
|
||||||
|
6000 2950 5950 2950
|
||||||
|
Wire Wire Line
|
||||||
|
5950 2950 5950 2900
|
||||||
|
Wire Wire Line
|
||||||
|
5950 2900 5050 2900
|
||||||
|
Wire Wire Line
|
||||||
|
6000 3250 6000 3350
|
||||||
|
Wire Wire Line
|
||||||
|
6000 3350 5250 3350
|
||||||
|
Wire Wire Line
|
||||||
|
5250 3350 5250 3000
|
||||||
|
Wire Wire Line
|
||||||
|
5250 3000 5050 3000
|
||||||
|
Wire Wire Line
|
||||||
|
5050 3100 5050 4700
|
||||||
|
Wire Wire Line
|
||||||
|
5050 4700 2450 4700
|
||||||
|
Wire Wire Line
|
||||||
|
2450 4700 2450 4950
|
||||||
|
Wire Wire Line
|
||||||
|
2450 4950 2100 4950
|
||||||
|
Wire Wire Line
|
||||||
|
2100 4650 2100 4150
|
||||||
|
Connection ~ 2100 4150
|
||||||
|
Wire Wire Line
|
||||||
|
2100 4950 2100 6650
|
||||||
|
Wire Wire Line
|
||||||
|
2100 5350 1800 5350
|
||||||
|
Wire Wire Line
|
||||||
|
2100 6000 1800 6000
|
||||||
|
Connection ~ 2100 5350
|
||||||
|
Wire Wire Line
|
||||||
|
2100 6650 1800 6650
|
||||||
|
Connection ~ 2100 6000
|
||||||
|
Wire Wire Line
|
||||||
|
1950 1350 1950 4550
|
||||||
|
Wire Wire Line
|
||||||
|
1950 4550 1200 4550
|
||||||
|
Wire Wire Line
|
||||||
|
1200 4550 1200 4900
|
||||||
|
Connection ~ 1950 1350
|
||||||
|
Wire Wire Line
|
||||||
|
1200 5200 1200 5550
|
||||||
|
Connection ~ 1200 5350
|
||||||
|
Wire Wire Line
|
||||||
|
1200 5850 1200 6200
|
||||||
|
Connection ~ 1200 6000
|
||||||
|
Wire Wire Line
|
||||||
|
1200 6500 1200 6650
|
||||||
|
Wire Wire Line
|
||||||
|
1700 800 1750 800
|
||||||
|
Wire Wire Line
|
||||||
|
6400 2300 6050 2300
|
||||||
|
Wire Wire Line
|
||||||
|
6050 2300 6050 1950
|
||||||
|
Wire Wire Line
|
||||||
|
6050 1950 5050 1950
|
||||||
|
Wire Wire Line
|
||||||
|
6400 2200 6400 2050
|
||||||
|
Wire Wire Line
|
||||||
|
6400 2050 7100 2050
|
||||||
|
Connection ~ 7100 2050
|
||||||
|
Wire Wire Line
|
||||||
|
6400 2400 6250 2400
|
||||||
|
Wire Wire Line
|
||||||
|
6250 2400 6250 1750
|
||||||
|
Connection ~ 6250 1750
|
||||||
|
$EndSCHEMATC
|
880
circuit/circuit.dsn
Normal file
880
circuit/circuit.dsn
Normal file
@ -0,0 +1,880 @@
|
|||||||
|
(pcb H:\Munkák\Prolife_F1\circuit\circuit.dsn
|
||||||
|
(parser
|
||||||
|
(string_quote ")
|
||||||
|
(space_in_quoted_tokens on)
|
||||||
|
(host_cad "KiCad's Pcbnew")
|
||||||
|
(host_version "4.0.7")
|
||||||
|
)
|
||||||
|
(resolution um 10)
|
||||||
|
(unit um)
|
||||||
|
(structure
|
||||||
|
(layer F.Cu
|
||||||
|
(type signal)
|
||||||
|
(property
|
||||||
|
(index 0)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(layer B.Cu
|
||||||
|
(type signal)
|
||||||
|
(property
|
||||||
|
(index 1)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(boundary
|
||||||
|
(rect pcb 12612.9 -11635 275146 -163755)
|
||||||
|
)
|
||||||
|
(via "Via[0-1]_600:400_um")
|
||||||
|
(rule
|
||||||
|
(width 250)
|
||||||
|
(clearance 200.1)
|
||||||
|
(clearance 200.1 (type default_smd))
|
||||||
|
(clearance 50 (type smd_smd))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(placement
|
||||||
|
(component Capacitors_THT:CP_Radial_D6.3mm_P2.50mm
|
||||||
|
(place C1 15240 -31750 front 0 (PN "100 uF"))
|
||||||
|
(place C2 22860 -31750 front 0 (PN "100 uF"))
|
||||||
|
)
|
||||||
|
(component Capacitors_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm
|
||||||
|
(place C3 36830 -33020 front 0 (PN "22 pF"))
|
||||||
|
(place C4 39370 -40640 front 180 (PN "22 pF"))
|
||||||
|
)
|
||||||
|
(component Displays:WC1602A
|
||||||
|
(place DS1 21590 -64770 front 0 (PN WC1602A))
|
||||||
|
)
|
||||||
|
(component "Connectors:PINHEAD1-2"
|
||||||
|
(place J1 17780 -16510 front 0 (PN Power_in))
|
||||||
|
(place J2 203200 -114300 front 0 (PN Serial))
|
||||||
|
(place JP1 247650 -148590 front 0 (PN "Reset switch"))
|
||||||
|
)
|
||||||
|
(component Connectors:PINTST
|
||||||
|
(place J3 173990 -60960 front 0 (PN TIMED_1))
|
||||||
|
(place J4 121920 -107950 front 0 (PN TIMED_2))
|
||||||
|
(place J5 158750 -106680 front 0 (PN TIMED_3))
|
||||||
|
)
|
||||||
|
(component Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal
|
||||||
|
(place R1 44450 -130810 front 0 (PN "10 kOhm"))
|
||||||
|
(place R2 157480 -160020 front 0 (PN "100 kOhm"))
|
||||||
|
(place R3 17780 -132080 front 90 (PN "10 kOhm"))
|
||||||
|
(place R4 29210 -147320 front 0 (PN "10 kOhm"))
|
||||||
|
(place R5 43180 -138430 front 0 (PN "10 kOhm"))
|
||||||
|
)
|
||||||
|
(component "Potentiometers:Potentiometer_Trimmer-EVM3E"
|
||||||
|
(place RV1 259080 -74930 front 0 (PN "100 kOhm"))
|
||||||
|
)
|
||||||
|
(component Buttons_Switches_THT:SW_PUSH_6mm_h13mm
|
||||||
|
(place SW1 17780 -109220 front 0 (PN SW_DIP_x01))
|
||||||
|
(place SW2 31750 -109220 front 0 (PN SW_DIP_x01))
|
||||||
|
(place SW3 83820 -113030 front 0 (PN SW_DIP_x01))
|
||||||
|
)
|
||||||
|
(component "TO_SOT_Packages_THT:TO-220-3_Vertical"
|
||||||
|
(place U1 17780 -24130 front 0 (PN L7805))
|
||||||
|
)
|
||||||
|
(component Pin_Headers:Pin_Header_Straight_1x05_Pitch1.00mm
|
||||||
|
(place U3 142240 -138430 front 0 (PN DS1307))
|
||||||
|
)
|
||||||
|
(component Pin_Headers:Pin_Header_Straight_1x03_Pitch1.00mm
|
||||||
|
(place U4 157480 -121920 front 0 (PN DS18B20))
|
||||||
|
)
|
||||||
|
(component "Housings_DIP:DIP-28_W7.62mm_Socket"
|
||||||
|
(place U5 74930 -15240 front 0 (PN MCP23017))
|
||||||
|
(place U2 50800 -15240 front 0 (PN "ATMEGA328-PU"))
|
||||||
|
)
|
||||||
|
(component Pin_Headers:Pin_Header_Straight_1x06_Pitch1.00mm
|
||||||
|
(place U6 101600 -101600 front 0 (PN ULN2003_breakout))
|
||||||
|
(place U7 116840 -124460 front 0 (PN ULN2003_breakout))
|
||||||
|
(place U8 267970 -101600 front 0 (PN ULN2003_breakout))
|
||||||
|
(place U9 160020 -60960 front 0 (PN ULN2003_breakout))
|
||||||
|
(place U10 133350 -44450 front 0 (PN ULN2003_breakout))
|
||||||
|
)
|
||||||
|
(component Crystals:Crystal_HC50_Vertical
|
||||||
|
(place Y1 44450 -39370 front 90 (PN "16 MHz"))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(library
|
||||||
|
(image Capacitors_THT:CP_Radial_D6.3mm_P2.50mm
|
||||||
|
(outline (path signal 100 4400 0 4245.83 -973.404 3798.4 -1851.52 3101.52 -2548.4
|
||||||
|
2223.4 -2995.83 1250 -3150 276.596 -2995.83 -601.524 -2548.4
|
||||||
|
-1298.4 -1851.52 -1745.83 -973.404 -1900 0 -1745.83 973.404
|
||||||
|
-1298.4 1851.52 -601.524 2548.4 276.596 2995.83 1250 3150
|
||||||
|
2223.4 2995.83 3101.52 2548.4 3798.4 1851.52 4245.83 973.404))
|
||||||
|
(outline (path signal 100 -2200 0 -1000 0))
|
||||||
|
(outline (path signal 100 -1600 650 -1600 -650))
|
||||||
|
(outline (path signal 120 1250 3200 1250 -3200))
|
||||||
|
(outline (path signal 120 1290 3200 1290 -3200))
|
||||||
|
(outline (path signal 120 1330 3200 1330 -3200))
|
||||||
|
(outline (path signal 120 1370 3198 1370 -3198))
|
||||||
|
(outline (path signal 120 1410 3197 1410 -3197))
|
||||||
|
(outline (path signal 120 1450 3194 1450 -3194))
|
||||||
|
(outline (path signal 120 1490 3192 1490 -3192))
|
||||||
|
(outline (path signal 120 1530 3188 1530 980))
|
||||||
|
(outline (path signal 120 1530 -980 1530 -3188))
|
||||||
|
(outline (path signal 120 1570 3185 1570 980))
|
||||||
|
(outline (path signal 120 1570 -980 1570 -3185))
|
||||||
|
(outline (path signal 120 1610 3180 1610 980))
|
||||||
|
(outline (path signal 120 1610 -980 1610 -3180))
|
||||||
|
(outline (path signal 120 1650 3176 1650 980))
|
||||||
|
(outline (path signal 120 1650 -980 1650 -3176))
|
||||||
|
(outline (path signal 120 1690 3170 1690 980))
|
||||||
|
(outline (path signal 120 1690 -980 1690 -3170))
|
||||||
|
(outline (path signal 120 1730 3165 1730 980))
|
||||||
|
(outline (path signal 120 1730 -980 1730 -3165))
|
||||||
|
(outline (path signal 120 1770 3158 1770 980))
|
||||||
|
(outline (path signal 120 1770 -980 1770 -3158))
|
||||||
|
(outline (path signal 120 1810 3152 1810 980))
|
||||||
|
(outline (path signal 120 1810 -980 1810 -3152))
|
||||||
|
(outline (path signal 120 1850 3144 1850 980))
|
||||||
|
(outline (path signal 120 1850 -980 1850 -3144))
|
||||||
|
(outline (path signal 120 1890 3137 1890 980))
|
||||||
|
(outline (path signal 120 1890 -980 1890 -3137))
|
||||||
|
(outline (path signal 120 1930 3128 1930 980))
|
||||||
|
(outline (path signal 120 1930 -980 1930 -3128))
|
||||||
|
(outline (path signal 120 1971 3119 1971 980))
|
||||||
|
(outline (path signal 120 1971 -980 1971 -3119))
|
||||||
|
(outline (path signal 120 2011 3110 2011 980))
|
||||||
|
(outline (path signal 120 2011 -980 2011 -3110))
|
||||||
|
(outline (path signal 120 2051 3100 2051 980))
|
||||||
|
(outline (path signal 120 2051 -980 2051 -3100))
|
||||||
|
(outline (path signal 120 2091 3090 2091 980))
|
||||||
|
(outline (path signal 120 2091 -980 2091 -3090))
|
||||||
|
(outline (path signal 120 2131 3079 2131 980))
|
||||||
|
(outline (path signal 120 2131 -980 2131 -3079))
|
||||||
|
(outline (path signal 120 2171 3067 2171 980))
|
||||||
|
(outline (path signal 120 2171 -980 2171 -3067))
|
||||||
|
(outline (path signal 120 2211 3055 2211 980))
|
||||||
|
(outline (path signal 120 2211 -980 2211 -3055))
|
||||||
|
(outline (path signal 120 2251 3042 2251 980))
|
||||||
|
(outline (path signal 120 2251 -980 2251 -3042))
|
||||||
|
(outline (path signal 120 2291 3029 2291 980))
|
||||||
|
(outline (path signal 120 2291 -980 2291 -3029))
|
||||||
|
(outline (path signal 120 2331 3015 2331 980))
|
||||||
|
(outline (path signal 120 2331 -980 2331 -3015))
|
||||||
|
(outline (path signal 120 2371 3001 2371 980))
|
||||||
|
(outline (path signal 120 2371 -980 2371 -3001))
|
||||||
|
(outline (path signal 120 2411 2986 2411 980))
|
||||||
|
(outline (path signal 120 2411 -980 2411 -2986))
|
||||||
|
(outline (path signal 120 2451 2970 2451 980))
|
||||||
|
(outline (path signal 120 2451 -980 2451 -2970))
|
||||||
|
(outline (path signal 120 2491 2954 2491 980))
|
||||||
|
(outline (path signal 120 2491 -980 2491 -2954))
|
||||||
|
(outline (path signal 120 2531 2937 2531 980))
|
||||||
|
(outline (path signal 120 2531 -980 2531 -2937))
|
||||||
|
(outline (path signal 120 2571 2919 2571 980))
|
||||||
|
(outline (path signal 120 2571 -980 2571 -2919))
|
||||||
|
(outline (path signal 120 2611 2901 2611 980))
|
||||||
|
(outline (path signal 120 2611 -980 2611 -2901))
|
||||||
|
(outline (path signal 120 2651 2882 2651 980))
|
||||||
|
(outline (path signal 120 2651 -980 2651 -2882))
|
||||||
|
(outline (path signal 120 2691 2863 2691 980))
|
||||||
|
(outline (path signal 120 2691 -980 2691 -2863))
|
||||||
|
(outline (path signal 120 2731 2843 2731 980))
|
||||||
|
(outline (path signal 120 2731 -980 2731 -2843))
|
||||||
|
(outline (path signal 120 2771 2822 2771 980))
|
||||||
|
(outline (path signal 120 2771 -980 2771 -2822))
|
||||||
|
(outline (path signal 120 2811 2800 2811 980))
|
||||||
|
(outline (path signal 120 2811 -980 2811 -2800))
|
||||||
|
(outline (path signal 120 2851 2778 2851 980))
|
||||||
|
(outline (path signal 120 2851 -980 2851 -2778))
|
||||||
|
(outline (path signal 120 2891 2755 2891 980))
|
||||||
|
(outline (path signal 120 2891 -980 2891 -2755))
|
||||||
|
(outline (path signal 120 2931 2731 2931 980))
|
||||||
|
(outline (path signal 120 2931 -980 2931 -2731))
|
||||||
|
(outline (path signal 120 2971 2706 2971 980))
|
||||||
|
(outline (path signal 120 2971 -980 2971 -2706))
|
||||||
|
(outline (path signal 120 3011 2681 3011 980))
|
||||||
|
(outline (path signal 120 3011 -980 3011 -2681))
|
||||||
|
(outline (path signal 120 3051 2654 3051 980))
|
||||||
|
(outline (path signal 120 3051 -980 3051 -2654))
|
||||||
|
(outline (path signal 120 3091 2627 3091 980))
|
||||||
|
(outline (path signal 120 3091 -980 3091 -2627))
|
||||||
|
(outline (path signal 120 3131 2599 3131 980))
|
||||||
|
(outline (path signal 120 3131 -980 3131 -2599))
|
||||||
|
(outline (path signal 120 3171 2570 3171 980))
|
||||||
|
(outline (path signal 120 3171 -980 3171 -2570))
|
||||||
|
(outline (path signal 120 3211 2540 3211 980))
|
||||||
|
(outline (path signal 120 3211 -980 3211 -2540))
|
||||||
|
(outline (path signal 120 3251 2510 3251 980))
|
||||||
|
(outline (path signal 120 3251 -980 3251 -2510))
|
||||||
|
(outline (path signal 120 3291 2478 3291 980))
|
||||||
|
(outline (path signal 120 3291 -980 3291 -2478))
|
||||||
|
(outline (path signal 120 3331 2445 3331 980))
|
||||||
|
(outline (path signal 120 3331 -980 3331 -2445))
|
||||||
|
(outline (path signal 120 3371 2411 3371 980))
|
||||||
|
(outline (path signal 120 3371 -980 3371 -2411))
|
||||||
|
(outline (path signal 120 3411 2375 3411 980))
|
||||||
|
(outline (path signal 120 3411 -980 3411 -2375))
|
||||||
|
(outline (path signal 120 3451 2339 3451 980))
|
||||||
|
(outline (path signal 120 3451 -980 3451 -2339))
|
||||||
|
(outline (path signal 120 3491 2301 3491 -2301))
|
||||||
|
(outline (path signal 120 3531 2262 3531 -2262))
|
||||||
|
(outline (path signal 120 3571 2222 3571 -2222))
|
||||||
|
(outline (path signal 120 3611 2180 3611 -2180))
|
||||||
|
(outline (path signal 120 3651 2137 3651 -2137))
|
||||||
|
(outline (path signal 120 3691 2092 3691 -2092))
|
||||||
|
(outline (path signal 120 3731 2045 3731 -2045))
|
||||||
|
(outline (path signal 120 3771 1997 3771 -1997))
|
||||||
|
(outline (path signal 120 3811 1946 3811 -1946))
|
||||||
|
(outline (path signal 120 3851 1894 3851 -1894))
|
||||||
|
(outline (path signal 120 3891 1839 3891 -1839))
|
||||||
|
(outline (path signal 120 3931 1781 3931 -1781))
|
||||||
|
(outline (path signal 120 3971 1721 3971 -1721))
|
||||||
|
(outline (path signal 120 4011 1658 4011 -1658))
|
||||||
|
(outline (path signal 120 4051 1591 4051 -1591))
|
||||||
|
(outline (path signal 120 4091 1520 4091 -1520))
|
||||||
|
(outline (path signal 120 4131 1445 4131 -1445))
|
||||||
|
(outline (path signal 120 4171 1364 4171 -1364))
|
||||||
|
(outline (path signal 120 4211 1278 4211 -1278))
|
||||||
|
(outline (path signal 120 4251 1184 4251 -1184))
|
||||||
|
(outline (path signal 120 4291 1081 4291 -1081))
|
||||||
|
(outline (path signal 120 4331 966 4331 -966))
|
||||||
|
(outline (path signal 120 4371 834 4371 -834))
|
||||||
|
(outline (path signal 120 4411 676 4411 -676))
|
||||||
|
(outline (path signal 120 4451 468 4451 -468))
|
||||||
|
(outline (path signal 120 -2200 0 -1000 0))
|
||||||
|
(outline (path signal 120 -1600 650 -1600 -650))
|
||||||
|
(outline (path signal 50 -2250 3500 -2250 -3500))
|
||||||
|
(outline (path signal 50 -2250 -3500 4750 -3500))
|
||||||
|
(outline (path signal 50 4750 -3500 4750 3500))
|
||||||
|
(outline (path signal 50 4750 3500 -2250 3500))
|
||||||
|
(pin Rect[A]Pad_1600x1600_um 1 0 0)
|
||||||
|
(pin Round[A]Pad_1600_um 2 2500 0)
|
||||||
|
)
|
||||||
|
(image Capacitors_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm
|
||||||
|
(outline (path signal 100 -250 800 -250 -800))
|
||||||
|
(outline (path signal 100 -250 -800 2750 -800))
|
||||||
|
(outline (path signal 100 2750 -800 2750 800))
|
||||||
|
(outline (path signal 100 2750 800 -250 800))
|
||||||
|
(outline (path signal 120 663 861 1837 861))
|
||||||
|
(outline (path signal 120 663 -861 1837 -861))
|
||||||
|
(outline (path signal 50 -1050 1150 -1050 -1150))
|
||||||
|
(outline (path signal 50 -1050 -1150 3550 -1150))
|
||||||
|
(outline (path signal 50 3550 -1150 3550 1150))
|
||||||
|
(outline (path signal 50 3550 1150 -1050 1150))
|
||||||
|
(pin Round[A]Pad_1600_um 1 0 0)
|
||||||
|
(pin Round[A]Pad_1600_um 2 2500 0)
|
||||||
|
)
|
||||||
|
(image Displays:WC1602A
|
||||||
|
(outline (path signal 120 -8140 -33640 72140 -33640))
|
||||||
|
(outline (path signal 120 72140 -33640 72140 2640))
|
||||||
|
(outline (path signal 120 72140 2640 -7340 2640))
|
||||||
|
(outline (path signal 120 -8140 2640 -8140 -33640))
|
||||||
|
(outline (path signal 120 -8130 2640 -7340 2640))
|
||||||
|
(outline (path signal 50 -8250 2750 -8250 -33750))
|
||||||
|
(outline (path signal 50 -8250 -33750 72250 -33750))
|
||||||
|
(outline (path signal 50 72250 2750 72250 -33750))
|
||||||
|
(outline (path signal 120 -1500 3000 1500 3000))
|
||||||
|
(outline (path signal 50 -8250 2750 72250 2750))
|
||||||
|
(outline (path signal 100 1000 2500 0 1500))
|
||||||
|
(outline (path signal 100 0 1500 -1000 2500))
|
||||||
|
(outline (path signal 100 -1000 2500 -8000 2500))
|
||||||
|
(outline (path signal 120 200 -8000 63700 -8000))
|
||||||
|
(outline (path signal 120 -299.72 -22499.3 -299.72 -8500))
|
||||||
|
(outline (path signal 120 63700.7 -23000 200 -23000))
|
||||||
|
(outline (path signal 120 64200 -8500 64200 -22500))
|
||||||
|
(outline (path signal 120 -5000 -3000 68000 -3000))
|
||||||
|
(outline (path signal 120 68000 -3000 68000 -28000))
|
||||||
|
(outline (path signal 120 68000 -28000 -5000 -28000))
|
||||||
|
(outline (path signal 120 -5000 -28000 -5000 -3000))
|
||||||
|
(outline (path signal 100 1000 2500 72000 2500))
|
||||||
|
(outline (path signal 100 72000 2500 72000 -33500))
|
||||||
|
(outline (path signal 100 72000 -33500 -8000 -33500))
|
||||||
|
(outline (path signal 100 -8000 -33500 -8000 2500))
|
||||||
|
(pin Rect[A]Pad_1800x2600_um 1 0 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 2 2540 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 3 5080 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 4 7620 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 5 10160 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 6 12700 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 7 15240 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 8 17780 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 9 20320 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 10 22860 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 11 25400 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 12 27940 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 13 30480 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 14 33020 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 15 35560 0)
|
||||||
|
(pin Oval[A]Pad_1800x2600_um 16 38100 0)
|
||||||
|
(pin Round[A]Pad_3000_um @1 -5499.1 0)
|
||||||
|
(pin Round[A]Pad_3000_um @2 -5499.1 -31000.7)
|
||||||
|
(pin Round[A]Pad_3000_um @3 69499.5 -31000.7)
|
||||||
|
(pin Round[A]Pad_3000_um @4 69500 0)
|
||||||
|
)
|
||||||
|
(image "Connectors:PINHEAD1-2"
|
||||||
|
(outline (path signal 120 3810 1270 -1270 1270))
|
||||||
|
(outline (path signal 120 3810 -3170 -1270 -3170))
|
||||||
|
(outline (path signal 120 -1270 3170 3810 3170))
|
||||||
|
(outline (path signal 120 -1270 3170 -1270 -3170))
|
||||||
|
(outline (path signal 120 3810 3170 3810 -3170))
|
||||||
|
(outline (path signal 50 -1520 3420 4060 3420))
|
||||||
|
(outline (path signal 50 -1520 3420 -1520 -3420))
|
||||||
|
(outline (path signal 50 4060 -3420 4060 3420))
|
||||||
|
(outline (path signal 50 4060 -3420 -1520 -3420))
|
||||||
|
(pin Oval[A]Pad_1510x3010_um 1 0 0)
|
||||||
|
(pin Oval[A]Pad_1510x3010_um 2 2540 0)
|
||||||
|
)
|
||||||
|
(image Connectors:PINTST
|
||||||
|
(outline (path signal 50 1100 0 1046.16 -339.919 889.919 -646.564 646.564 -889.919
|
||||||
|
339.919 -1046.16 0 -1100 -339.919 -1046.16 -646.564 -889.919
|
||||||
|
-889.919 -646.564 -1046.16 -339.919 -1100 0 -1046.16 339.919
|
||||||
|
-889.919 646.564 -646.564 889.919 -339.919 1046.16 0 1100
|
||||||
|
339.919 1046.16 646.564 889.919 889.919 646.564 1046.16 339.919))
|
||||||
|
(outline (path signal 100 721.11 0 685.817 -222.835 583.39 -423.858 423.858 -583.39
|
||||||
|
222.835 -685.817 0 -721.11 -222.835 -685.817 -423.858 -583.39
|
||||||
|
-583.39 -423.858 -685.817 -222.835 -721.11 0 -685.817 222.835
|
||||||
|
-583.39 423.858 -423.858 583.39 -222.835 685.817 0 721.11
|
||||||
|
222.835 685.817 423.858 583.39 583.39 423.858 685.817 222.835))
|
||||||
|
(outline (path signal 120 803.219 0 763.906 -248.208 649.817 -472.12 472.12 -649.817
|
||||||
|
248.208 -763.906 0 -803.219 -248.208 -763.906 -472.12 -649.817
|
||||||
|
-649.817 -472.12 -763.906 -248.208 -803.219 0 -763.906 248.208
|
||||||
|
-649.817 472.12 -472.12 649.817 -248.208 763.906 0 803.219
|
||||||
|
248.208 763.906 472.12 649.817 649.817 472.12 763.906 248.208))
|
||||||
|
(pin Round[A]Pad_1143_um 1 0 0)
|
||||||
|
)
|
||||||
|
(image Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal
|
||||||
|
(outline (path signal 100 1850 1600 1850 -1600))
|
||||||
|
(outline (path signal 100 1850 -1600 10850 -1600))
|
||||||
|
(outline (path signal 100 10850 -1600 10850 1600))
|
||||||
|
(outline (path signal 100 10850 1600 1850 1600))
|
||||||
|
(outline (path signal 100 0 0 1850 0))
|
||||||
|
(outline (path signal 100 12700 0 10850 0))
|
||||||
|
(outline (path signal 120 1790 1660 1790 -1660))
|
||||||
|
(outline (path signal 120 1790 -1660 10910 -1660))
|
||||||
|
(outline (path signal 120 10910 -1660 10910 1660))
|
||||||
|
(outline (path signal 120 10910 1660 1790 1660))
|
||||||
|
(outline (path signal 120 980 0 1790 0))
|
||||||
|
(outline (path signal 120 11720 0 10910 0))
|
||||||
|
(outline (path signal 50 -1050 1950 -1050 -1950))
|
||||||
|
(outline (path signal 50 -1050 -1950 13750 -1950))
|
||||||
|
(outline (path signal 50 13750 -1950 13750 1950))
|
||||||
|
(outline (path signal 50 13750 1950 -1050 1950))
|
||||||
|
(pin Round[A]Pad_1600_um 1 0 0)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 2 12700 0)
|
||||||
|
)
|
||||||
|
(image "Potentiometers:Potentiometer_Trimmer-EVM3E"
|
||||||
|
(outline (path signal 120 1780 1750 1780 -530))
|
||||||
|
(outline (path signal 120 1270 1750 1780 1750))
|
||||||
|
(outline (path signal 120 -1780 1750 -1270 1750))
|
||||||
|
(outline (path signal 120 -1780 -530 -1780 1750))
|
||||||
|
(outline (path signal 50 2200 -2450 -2200 -2450))
|
||||||
|
(outline (path signal 50 2200 2600 2200 -2450))
|
||||||
|
(outline (path signal 50 -2200 2600 2200 2600))
|
||||||
|
(outline (path signal 50 -2200 -2450 -2200 2600))
|
||||||
|
(outline (path signal 100 900 -1380 900 -1730))
|
||||||
|
(outline (path signal 100 1550 -1380 900 -1380))
|
||||||
|
(outline (path signal 100 -900 -1320 -900 -1730))
|
||||||
|
(outline (path signal 100 -1550 -1320 -900 -1320))
|
||||||
|
(outline (path signal 100 -250 230 -250 970))
|
||||||
|
(outline (path signal 100 -1000 230 -250 230))
|
||||||
|
(outline (path signal 100 -1000 -280 -1000 230))
|
||||||
|
(outline (path signal 100 -250 -280 -1000 -280))
|
||||||
|
(outline (path signal 100 -250 -1020 -250 -280))
|
||||||
|
(outline (path signal 100 250 -1020 -250 -1020))
|
||||||
|
(outline (path signal 100 250 -280 250 -1020))
|
||||||
|
(outline (path signal 100 1000 -280 250 -280))
|
||||||
|
(outline (path signal 100 1000 230 1000 -280))
|
||||||
|
(outline (path signal 100 250 230 1000 230))
|
||||||
|
(outline (path signal 100 250 970 250 230))
|
||||||
|
(outline (path signal 100 -250 970 250 970))
|
||||||
|
(outline (path signal 100 -1550 -1730 -1550 1520))
|
||||||
|
(outline (path signal 100 1550 -1730 -1550 -1730))
|
||||||
|
(outline (path signal 100 1550 1520 1550 -1730))
|
||||||
|
(outline (path signal 100 -1550 1520 1550 1520))
|
||||||
|
(outline (path signal 100 260 -30 247.275 -110.344 210.344 -182.824 152.824 -240.344
|
||||||
|
80.344 -277.275 0 -290 -80.344 -277.275 -152.824 -240.344
|
||||||
|
-210.344 -182.824 -247.275 -110.344 -260 -30 -247.275 50.344
|
||||||
|
-210.344 122.824 -152.824 180.344 -80.344 217.275 0 230 80.344 217.275
|
||||||
|
152.824 180.344 210.344 122.824 247.275 50.344))
|
||||||
|
(outline (path signal 100 1210 -30 1150.78 -403.911 978.911 -741.22 711.22 -1008.91
|
||||||
|
373.911 -1180.78 0 -1240 -373.911 -1180.78 -711.22 -1008.91
|
||||||
|
-978.911 -741.22 -1150.78 -403.911 -1210 -30 -1150.78 343.911
|
||||||
|
-978.911 681.22 -711.22 948.911 -373.911 1120.78 0 1180 373.911 1120.78
|
||||||
|
711.22 948.911 978.911 681.22 1150.78 343.911))
|
||||||
|
(outline (path signal 100 1550 -30 1474.14 -508.976 1253.98 -941.067 911.067 -1283.98
|
||||||
|
478.976 -1504.14 0 -1580 -478.976 -1504.14 -911.067 -1283.98
|
||||||
|
-1253.98 -941.067 -1474.14 -508.976 -1550 -30 -1474.14 448.976
|
||||||
|
-1253.98 881.067 -911.067 1223.98 -478.976 1444.14 0 1520
|
||||||
|
478.976 1444.14 911.067 1223.98 1253.98 881.067 1474.14 448.976))
|
||||||
|
(pin Rect[T]Pad_1200x1200_um 1 -1400 -1620)
|
||||||
|
(pin Rect[T]Pad_1200x1200_um 3 1400 -1620)
|
||||||
|
(pin Rect[T]Pad_1600x1500_um 2 0 1620)
|
||||||
|
)
|
||||||
|
(image Buttons_Switches_THT:SW_PUSH_6mm_h13mm
|
||||||
|
(outline (path signal 100 3250 750 6250 750))
|
||||||
|
(outline (path signal 100 6250 750 6250 -5250))
|
||||||
|
(outline (path signal 100 6250 -5250 250 -5250))
|
||||||
|
(outline (path signal 100 250 -5250 250 750))
|
||||||
|
(outline (path signal 100 250 750 3250 750))
|
||||||
|
(outline (path signal 50 7750 -6000 8000 -6000))
|
||||||
|
(outline (path signal 50 8000 -6000 8000 -5750))
|
||||||
|
(outline (path signal 50 7750 1500 8000 1500))
|
||||||
|
(outline (path signal 50 8000 1500 8000 1250))
|
||||||
|
(outline (path signal 50 -1500 1250 -1500 1500))
|
||||||
|
(outline (path signal 50 -1500 1500 -1250 1500))
|
||||||
|
(outline (path signal 50 -1500 -5750 -1500 -6000))
|
||||||
|
(outline (path signal 50 -1500 -6000 -1250 -6000))
|
||||||
|
(outline (path signal 50 -1250 1500 7750 1500))
|
||||||
|
(outline (path signal 50 -1500 -5750 -1500 1250))
|
||||||
|
(outline (path signal 50 7750 -6000 -1250 -6000))
|
||||||
|
(outline (path signal 50 8000 1250 8000 -5750))
|
||||||
|
(outline (path signal 120 1000 -5500 5500 -5500))
|
||||||
|
(outline (path signal 120 -250 -1500 -250 -3000))
|
||||||
|
(outline (path signal 120 5500 1000 1000 1000))
|
||||||
|
(outline (path signal 120 6750 -3000 6750 -1500))
|
||||||
|
(outline (path signal 100 5265.56 -2250 5166.92 -2872.84 4880.63 -3434.72 4434.72 -3880.63
|
||||||
|
3872.84 -4166.92 3250 -4265.56 2627.16 -4166.92 2065.28 -3880.63
|
||||||
|
1619.37 -3434.72 1333.08 -2872.84 1234.44 -2250 1333.08 -1627.16
|
||||||
|
1619.37 -1065.28 2065.28 -619.374 2627.16 -333.084 3250 -234.436
|
||||||
|
3872.84 -333.084 4434.72 -619.374 4880.63 -1065.28 5166.92 -1627.16))
|
||||||
|
(pin Round[A]Pad_2000_um (rotate 90) 2 0 -4500)
|
||||||
|
(pin Round[A]Pad_2000_um (rotate 90) 1 0 0)
|
||||||
|
(pin Round[A]Pad_2000_um (rotate 90) 2@1 6500 -4500)
|
||||||
|
(pin Round[A]Pad_2000_um (rotate 90) 1@1 6500 0)
|
||||||
|
)
|
||||||
|
(image "TO_SOT_Packages_THT:TO-220-3_Vertical"
|
||||||
|
(outline (path signal 100 -2460 2500 -2460 -1900))
|
||||||
|
(outline (path signal 100 -2460 -1900 7540 -1900))
|
||||||
|
(outline (path signal 100 7540 -1900 7540 2500))
|
||||||
|
(outline (path signal 100 7540 2500 -2460 2500))
|
||||||
|
(outline (path signal 100 -2460 1230 7540 1230))
|
||||||
|
(outline (path signal 100 690 2500 690 1230))
|
||||||
|
(outline (path signal 100 4390 2500 4390 1230))
|
||||||
|
(outline (path signal 120 -2580 2620 7660 2620))
|
||||||
|
(outline (path signal 120 -2580 -2021 7660 -2021))
|
||||||
|
(outline (path signal 120 -2580 2620 -2580 -2021))
|
||||||
|
(outline (path signal 120 7660 2620 7660 -2021))
|
||||||
|
(outline (path signal 120 -2580 1110 7660 1110))
|
||||||
|
(outline (path signal 120 690 2620 690 1110))
|
||||||
|
(outline (path signal 120 4391 2620 4391 1110))
|
||||||
|
(outline (path signal 50 -2710 2750 -2710 -2160))
|
||||||
|
(outline (path signal 50 -2710 -2160 7790 -2160))
|
||||||
|
(outline (path signal 50 7790 -2160 7790 2750))
|
||||||
|
(outline (path signal 50 7790 2750 -2710 2750))
|
||||||
|
(pin Rect[A]Pad_1800x1800_um 1 0 0)
|
||||||
|
(pin Oval[A]Pad_1800x1800_um 2 2540 0)
|
||||||
|
(pin Oval[A]Pad_1800x1800_um 3 5080 0)
|
||||||
|
)
|
||||||
|
(image Pin_Headers:Pin_Header_Straight_1x05_Pitch1.00mm
|
||||||
|
(outline (path signal 100 -317.5 500 635 500))
|
||||||
|
(outline (path signal 100 635 500 635 -4500))
|
||||||
|
(outline (path signal 100 635 -4500 -635 -4500))
|
||||||
|
(outline (path signal 100 -635 -4500 -635 182.5))
|
||||||
|
(outline (path signal 100 -635 182.5 -317.5 500))
|
||||||
|
(outline (path signal 120 -695 -4560 -394.493 -4560))
|
||||||
|
(outline (path signal 120 394.493 -4560 695 -4560))
|
||||||
|
(outline (path signal 120 -695 -685 -695 -4560))
|
||||||
|
(outline (path signal 120 695 -685 695 -4560))
|
||||||
|
(outline (path signal 120 -695 -685 -608.276 -685))
|
||||||
|
(outline (path signal 120 608.276 -685 695 -685))
|
||||||
|
(outline (path signal 120 -695 0 -695 685))
|
||||||
|
(outline (path signal 120 -695 685 0 685))
|
||||||
|
(outline (path signal 50 -1150 1000 -1150 -5000))
|
||||||
|
(outline (path signal 50 -1150 -5000 1150 -5000))
|
||||||
|
(outline (path signal 50 1150 -5000 1150 1000))
|
||||||
|
(outline (path signal 50 1150 1000 -1150 1000))
|
||||||
|
(pin Rect[A]Pad_850x850_um 1 0 0)
|
||||||
|
(pin Oval[A]Pad_850x850_um 2 0 -1000)
|
||||||
|
(pin Oval[A]Pad_850x850_um 3 0 -2000)
|
||||||
|
(pin Oval[A]Pad_850x850_um 4 0 -3000)
|
||||||
|
(pin Oval[A]Pad_850x850_um 5 0 -4000)
|
||||||
|
)
|
||||||
|
(image Pin_Headers:Pin_Header_Straight_1x03_Pitch1.00mm
|
||||||
|
(outline (path signal 100 -317.5 500 635 500))
|
||||||
|
(outline (path signal 100 635 500 635 -2500))
|
||||||
|
(outline (path signal 100 635 -2500 -635 -2500))
|
||||||
|
(outline (path signal 100 -635 -2500 -635 182.5))
|
||||||
|
(outline (path signal 100 -635 182.5 -317.5 500))
|
||||||
|
(outline (path signal 120 -695 -2560 -394.493 -2560))
|
||||||
|
(outline (path signal 120 394.493 -2560 695 -2560))
|
||||||
|
(outline (path signal 120 -695 -685 -695 -2560))
|
||||||
|
(outline (path signal 120 695 -685 695 -2560))
|
||||||
|
(outline (path signal 120 -695 -685 -608.276 -685))
|
||||||
|
(outline (path signal 120 608.276 -685 695 -685))
|
||||||
|
(outline (path signal 120 -695 0 -695 685))
|
||||||
|
(outline (path signal 120 -695 685 0 685))
|
||||||
|
(outline (path signal 50 -1150 1000 -1150 -3000))
|
||||||
|
(outline (path signal 50 -1150 -3000 1150 -3000))
|
||||||
|
(outline (path signal 50 1150 -3000 1150 1000))
|
||||||
|
(outline (path signal 50 1150 1000 -1150 1000))
|
||||||
|
(pin Rect[A]Pad_850x850_um 1 0 0)
|
||||||
|
(pin Oval[A]Pad_850x850_um 2 0 -1000)
|
||||||
|
(pin Oval[A]Pad_850x850_um 3 0 -2000)
|
||||||
|
)
|
||||||
|
(image "Housings_DIP:DIP-28_W7.62mm_Socket"
|
||||||
|
(outline (path signal 100 1635 1270 6985 1270))
|
||||||
|
(outline (path signal 100 6985 1270 6985 -34290))
|
||||||
|
(outline (path signal 100 6985 -34290 635 -34290))
|
||||||
|
(outline (path signal 100 635 -34290 635 270))
|
||||||
|
(outline (path signal 100 635 270 1635 1270))
|
||||||
|
(outline (path signal 100 -1270 1330 -1270 -34350))
|
||||||
|
(outline (path signal 100 -1270 -34350 8890 -34350))
|
||||||
|
(outline (path signal 100 8890 -34350 8890 1330))
|
||||||
|
(outline (path signal 100 8890 1330 -1270 1330))
|
||||||
|
(outline (path signal 120 2810 1330 1160 1330))
|
||||||
|
(outline (path signal 120 1160 1330 1160 -34350))
|
||||||
|
(outline (path signal 120 1160 -34350 6460 -34350))
|
||||||
|
(outline (path signal 120 6460 -34350 6460 1330))
|
||||||
|
(outline (path signal 120 6460 1330 4810 1330))
|
||||||
|
(outline (path signal 120 -1330 1390 -1330 -34410))
|
||||||
|
(outline (path signal 120 -1330 -34410 8950 -34410))
|
||||||
|
(outline (path signal 120 8950 -34410 8950 1390))
|
||||||
|
(outline (path signal 120 8950 1390 -1330 1390))
|
||||||
|
(outline (path signal 50 -1550 1600 -1550 -34650))
|
||||||
|
(outline (path signal 50 -1550 -34650 9150 -34650))
|
||||||
|
(outline (path signal 50 9150 -34650 9150 1600))
|
||||||
|
(outline (path signal 50 9150 1600 -1550 1600))
|
||||||
|
(pin Rect[A]Pad_1600x1600_um 1 0 0)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 15 7620 -33020)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 2 0 -2540)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 16 7620 -30480)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 3 0 -5080)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 17 7620 -27940)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 4 0 -7620)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 18 7620 -25400)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 5 0 -10160)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 19 7620 -22860)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 6 0 -12700)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 20 7620 -20320)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 7 0 -15240)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 21 7620 -17780)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 8 0 -17780)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 22 7620 -15240)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 9 0 -20320)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 23 7620 -12700)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 10 0 -22860)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 24 7620 -10160)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 11 0 -25400)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 25 7620 -7620)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 12 0 -27940)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 26 7620 -5080)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 13 0 -30480)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 27 7620 -2540)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 14 0 -33020)
|
||||||
|
(pin Oval[A]Pad_1600x1600_um 28 7620 0)
|
||||||
|
)
|
||||||
|
(image Pin_Headers:Pin_Header_Straight_1x06_Pitch1.00mm
|
||||||
|
(outline (path signal 100 -317.5 500 635 500))
|
||||||
|
(outline (path signal 100 635 500 635 -5500))
|
||||||
|
(outline (path signal 100 635 -5500 -635 -5500))
|
||||||
|
(outline (path signal 100 -635 -5500 -635 182.5))
|
||||||
|
(outline (path signal 100 -635 182.5 -317.5 500))
|
||||||
|
(outline (path signal 120 -695 -5560 -394.493 -5560))
|
||||||
|
(outline (path signal 120 394.493 -5560 695 -5560))
|
||||||
|
(outline (path signal 120 -695 -685 -695 -5560))
|
||||||
|
(outline (path signal 120 695 -685 695 -5560))
|
||||||
|
(outline (path signal 120 -695 -685 -608.276 -685))
|
||||||
|
(outline (path signal 120 608.276 -685 695 -685))
|
||||||
|
(outline (path signal 120 -695 0 -695 685))
|
||||||
|
(outline (path signal 120 -695 685 0 685))
|
||||||
|
(outline (path signal 50 -1150 1000 -1150 -6000))
|
||||||
|
(outline (path signal 50 -1150 -6000 1150 -6000))
|
||||||
|
(outline (path signal 50 1150 -6000 1150 1000))
|
||||||
|
(outline (path signal 50 1150 1000 -1150 1000))
|
||||||
|
(pin Rect[A]Pad_850x850_um 1 0 0)
|
||||||
|
(pin Oval[A]Pad_850x850_um 2 0 -1000)
|
||||||
|
(pin Oval[A]Pad_850x850_um 3 0 -2000)
|
||||||
|
(pin Oval[A]Pad_850x850_um 4 0 -3000)
|
||||||
|
(pin Oval[A]Pad_850x850_um 5 0 -4000)
|
||||||
|
(pin Oval[A]Pad_850x850_um 6 0 -5000)
|
||||||
|
)
|
||||||
|
(image Crystals:Crystal_HC50_Vertical
|
||||||
|
(outline (path signal 100 -750 2325 5650 2325))
|
||||||
|
(outline (path signal 100 -750 -2325 5650 -2325))
|
||||||
|
(outline (path signal 100 -750 1900 5650 1900))
|
||||||
|
(outline (path signal 100 -750 -1900 5650 -1900))
|
||||||
|
(outline (path signal 120 -750 2525 5650 2525))
|
||||||
|
(outline (path signal 120 -750 -2525 5650 -2525))
|
||||||
|
(outline (path signal 50 -3600 2800 -3600 -2800))
|
||||||
|
(outline (path signal 50 -3600 -2800 8500 -2800))
|
||||||
|
(outline (path signal 50 8500 -2800 8500 2800))
|
||||||
|
(outline (path signal 50 8500 2800 -3600 2800))
|
||||||
|
(pin Round[A]Pad_2300_um 1 0 0)
|
||||||
|
(pin Round[A]Pad_2300_um 2 4900 0)
|
||||||
|
)
|
||||||
|
(padstack Round[A]Pad_1143_um
|
||||||
|
(shape (circle F.Cu 1143))
|
||||||
|
(shape (circle B.Cu 1143))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Round[A]Pad_1600_um
|
||||||
|
(shape (circle F.Cu 1600))
|
||||||
|
(shape (circle B.Cu 1600))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Round[A]Pad_2000_um
|
||||||
|
(shape (circle F.Cu 2000))
|
||||||
|
(shape (circle B.Cu 2000))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Round[A]Pad_2300_um
|
||||||
|
(shape (circle F.Cu 2300))
|
||||||
|
(shape (circle B.Cu 2300))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Round[A]Pad_3000_um
|
||||||
|
(shape (circle F.Cu 3000))
|
||||||
|
(shape (circle B.Cu 3000))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Oval[A]Pad_1510x3010_um
|
||||||
|
(shape (path F.Cu 1510 0 -750 0 750))
|
||||||
|
(shape (path B.Cu 1510 0 -750 0 750))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Oval[A]Pad_1600x1600_um
|
||||||
|
(shape (path F.Cu 1600 0 0 0 0))
|
||||||
|
(shape (path B.Cu 1600 0 0 0 0))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Oval[A]Pad_1800x2600_um
|
||||||
|
(shape (path F.Cu 1800 0 -400 0 400))
|
||||||
|
(shape (path B.Cu 1800 0 -400 0 400))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Oval[A]Pad_1800x1800_um
|
||||||
|
(shape (path F.Cu 1800 0 0 0 0))
|
||||||
|
(shape (path B.Cu 1800 0 0 0 0))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Oval[A]Pad_850x850_um
|
||||||
|
(shape (path F.Cu 850 0 0 0 0))
|
||||||
|
(shape (path B.Cu 850 0 0 0 0))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Rect[A]Pad_850x850_um
|
||||||
|
(shape (rect F.Cu -425 -425 425 425))
|
||||||
|
(shape (rect B.Cu -425 -425 425 425))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Rect[T]Pad_1200x1200_um
|
||||||
|
(shape (rect F.Cu -600 -600 600 600))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Rect[T]Pad_1600x1500_um
|
||||||
|
(shape (rect F.Cu -800 -750 800 750))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Rect[A]Pad_1600x1600_um
|
||||||
|
(shape (rect F.Cu -800 -800 800 800))
|
||||||
|
(shape (rect B.Cu -800 -800 800 800))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Rect[A]Pad_1800x2600_um
|
||||||
|
(shape (rect F.Cu -900 -1300 900 1300))
|
||||||
|
(shape (rect B.Cu -900 -1300 900 1300))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack Rect[A]Pad_1800x1800_um
|
||||||
|
(shape (rect F.Cu -900 -900 900 900))
|
||||||
|
(shape (rect B.Cu -900 -900 900 900))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
(padstack "Via[0-1]_600:400_um"
|
||||||
|
(shape (circle F.Cu 600))
|
||||||
|
(shape (circle B.Cu 600))
|
||||||
|
(attach off)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(network
|
||||||
|
(net "Net-(C1-Pad1)"
|
||||||
|
(pins C1-1 J1-1 U1-1)
|
||||||
|
)
|
||||||
|
(net "Net-(C1-Pad2)"
|
||||||
|
(pins C1-2 C2-2 C3-1 C4-2 DS1-1 DS1-5 DS1-16 J1-2 JP1-2 R2-1 RV1-3 U1-2 U3-5
|
||||||
|
U4-1 U5-15 U5-16 U5-17 U5-10 U6-6 U7-6 U8-6 U9-6 U10-6 U2-8 U2-22)
|
||||||
|
)
|
||||||
|
(net "Net-(C2-Pad1)"
|
||||||
|
(pins C2-1 DS1-2 R1-1 R3-1 RV1-1 U1-3 U3-4 U4-3 U5-18 U5-9 U6-5 U7-5 U8-5 U9-5
|
||||||
|
U10-5 U2-20 U2-7 U2-21)
|
||||||
|
)
|
||||||
|
(net "Net-(C3-Pad2)"
|
||||||
|
(pins C3-2 Y1-2 U2-9)
|
||||||
|
)
|
||||||
|
(net "Net-(C4-Pad1)"
|
||||||
|
(pins C4-1 Y1-1 U2-10)
|
||||||
|
)
|
||||||
|
(net "Net-(DS1-Pad3)"
|
||||||
|
(pins DS1-3 RV1-2)
|
||||||
|
)
|
||||||
|
(net "Net-(DS1-Pad4)"
|
||||||
|
(pins DS1-4 U2-5)
|
||||||
|
)
|
||||||
|
(net "Net-(DS1-Pad6)"
|
||||||
|
(pins DS1-6 U2-4)
|
||||||
|
)
|
||||||
|
(net "Net-(DS1-Pad7)"
|
||||||
|
(pins DS1-7)
|
||||||
|
)
|
||||||
|
(net "Net-(DS1-Pad8)"
|
||||||
|
(pins DS1-8)
|
||||||
|
)
|
||||||
|
(net "Net-(DS1-Pad9)"
|
||||||
|
(pins DS1-9)
|
||||||
|
)
|
||||||
|
(net "Net-(DS1-Pad10)"
|
||||||
|
(pins DS1-10)
|
||||||
|
)
|
||||||
|
(net "Net-(DS1-Pad11)"
|
||||||
|
(pins DS1-11 U2-6)
|
||||||
|
)
|
||||||
|
(net "Net-(DS1-Pad12)"
|
||||||
|
(pins DS1-12 U2-11)
|
||||||
|
)
|
||||||
|
(net "Net-(DS1-Pad13)"
|
||||||
|
(pins DS1-13 U2-12)
|
||||||
|
)
|
||||||
|
(net "Net-(DS1-Pad14)"
|
||||||
|
(pins DS1-14 U2-13)
|
||||||
|
)
|
||||||
|
(net "Net-(DS1-Pad15)"
|
||||||
|
(pins DS1-15 U2-15)
|
||||||
|
)
|
||||||
|
(net "Net-(J2-Pad1)"
|
||||||
|
(pins J2-1 U2-2)
|
||||||
|
)
|
||||||
|
(net "Net-(J2-Pad2)"
|
||||||
|
(pins J2-2 U2-3)
|
||||||
|
)
|
||||||
|
(net "Net-(J3-Pad1)"
|
||||||
|
(pins J3-1 U2-23)
|
||||||
|
)
|
||||||
|
(net "Net-(J4-Pad1)"
|
||||||
|
(pins J4-1 U2-24)
|
||||||
|
)
|
||||||
|
(net "Net-(J5-Pad1)"
|
||||||
|
(pins J5-1 U2-25)
|
||||||
|
)
|
||||||
|
(net "Net-(JP1-Pad1)"
|
||||||
|
(pins JP1-1 R1-2 U2-1)
|
||||||
|
)
|
||||||
|
(net "Net-(R2-Pad2)"
|
||||||
|
(pins R2-2 SW1-2 SW1-2@1 SW2-2 SW2-2@1 SW3-2 SW3-2@1 U2-26)
|
||||||
|
)
|
||||||
|
(net "Net-(R3-Pad2)"
|
||||||
|
(pins R3-2 R4-1 SW1-1 SW1-1@1)
|
||||||
|
)
|
||||||
|
(net "Net-(R4-Pad2)"
|
||||||
|
(pins R4-2 R5-1 SW2-1 SW2-1@1)
|
||||||
|
)
|
||||||
|
(net "Net-(R5-Pad2)"
|
||||||
|
(pins R5-2 SW3-1 SW3-1@1)
|
||||||
|
)
|
||||||
|
(net "Net-(U2-Pad16)"
|
||||||
|
(pins U6-1 U2-16)
|
||||||
|
)
|
||||||
|
(net "Net-(U2-Pad17)"
|
||||||
|
(pins U6-2 U2-17)
|
||||||
|
)
|
||||||
|
(net "Net-(U2-Pad18)"
|
||||||
|
(pins U6-3 U2-18)
|
||||||
|
)
|
||||||
|
(net "Net-(U2-Pad19)"
|
||||||
|
(pins U6-4 U2-19)
|
||||||
|
)
|
||||||
|
(net "Net-(U2-Pad27)"
|
||||||
|
(pins U3-3 U5-13 U2-27)
|
||||||
|
)
|
||||||
|
(net "Net-(U2-Pad14)"
|
||||||
|
(pins U4-2 U2-14)
|
||||||
|
)
|
||||||
|
(net "Net-(U2-Pad28)"
|
||||||
|
(pins U3-2 U5-12 U2-28)
|
||||||
|
)
|
||||||
|
(net "Net-(U3-Pad1)"
|
||||||
|
(pins U3-1)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad1)"
|
||||||
|
(pins U5-1 U7-1)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad2)"
|
||||||
|
(pins U5-2 U7-2)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad3)"
|
||||||
|
(pins U5-3 U7-3)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad4)"
|
||||||
|
(pins U5-4 U7-4)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad5)"
|
||||||
|
(pins U5-5 U8-1)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad19)"
|
||||||
|
(pins U5-19)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad6)"
|
||||||
|
(pins U5-6 U8-2)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad20)"
|
||||||
|
(pins U5-20)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad7)"
|
||||||
|
(pins U5-7 U8-3)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad21)"
|
||||||
|
(pins U5-21 U9-1)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad8)"
|
||||||
|
(pins U5-8 U8-4)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad22)"
|
||||||
|
(pins U5-22 U9-2)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad23)"
|
||||||
|
(pins U5-23 U9-3)
|
||||||
|
)
|
||||||
|
(net "Net-(U5-Pad24)"
|
||||||
|
(pins U5-24 U9-4)
|
||||||
|
)
|
||||||
|
(net "Net-(U10-Pad1)"
|
||||||
|
(pins U5-25 U10-1)
|
||||||
|
)
|
||||||
|
(net "Net-(U10-Pad2)"
|
||||||
|
(pins U5-26 U10-2)
|
||||||
|
)
|
||||||
|
(net "Net-(U10-Pad3)"
|
||||||
|
(pins U5-27 U10-3)
|
||||||
|
)
|
||||||
|
(net "Net-(U10-Pad4)"
|
||||||
|
(pins U5-28 U10-4)
|
||||||
|
)
|
||||||
|
(class kicad_default "" "Net-(C1-Pad1)" "Net-(C1-Pad2)" "Net-(C2-Pad1)"
|
||||||
|
"Net-(C3-Pad2)" "Net-(C4-Pad1)" "Net-(DS1-Pad10)" "Net-(DS1-Pad11)"
|
||||||
|
"Net-(DS1-Pad12)" "Net-(DS1-Pad13)" "Net-(DS1-Pad14)" "Net-(DS1-Pad15)"
|
||||||
|
"Net-(DS1-Pad3)" "Net-(DS1-Pad4)" "Net-(DS1-Pad6)" "Net-(DS1-Pad7)"
|
||||||
|
"Net-(DS1-Pad8)" "Net-(DS1-Pad9)" "Net-(J2-Pad1)" "Net-(J2-Pad2)" "Net-(J3-Pad1)"
|
||||||
|
"Net-(J4-Pad1)" "Net-(J5-Pad1)" "Net-(JP1-Pad1)" "Net-(R2-Pad2)" "Net-(R3-Pad2)"
|
||||||
|
"Net-(R4-Pad2)" "Net-(R5-Pad2)" "Net-(U10-Pad1)" "Net-(U10-Pad2)" "Net-(U10-Pad3)"
|
||||||
|
"Net-(U10-Pad4)" "Net-(U2-Pad14)" "Net-(U2-Pad16)" "Net-(U2-Pad17)"
|
||||||
|
"Net-(U2-Pad18)" "Net-(U2-Pad19)" "Net-(U2-Pad27)" "Net-(U2-Pad28)"
|
||||||
|
"Net-(U3-Pad1)" "Net-(U5-Pad1)" "Net-(U5-Pad19)" "Net-(U5-Pad2)" "Net-(U5-Pad20)"
|
||||||
|
"Net-(U5-Pad21)" "Net-(U5-Pad22)" "Net-(U5-Pad23)" "Net-(U5-Pad24)"
|
||||||
|
"Net-(U5-Pad3)" "Net-(U5-Pad4)" "Net-(U5-Pad5)" "Net-(U5-Pad6)" "Net-(U5-Pad7)"
|
||||||
|
"Net-(U5-Pad8)"
|
||||||
|
(circuit
|
||||||
|
(use_via Via[0-1]_600:400_um)
|
||||||
|
)
|
||||||
|
(rule
|
||||||
|
(width 250)
|
||||||
|
(clearance 200.1)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(wiring
|
||||||
|
(wire (path B.Cu 250 15240 -31750 15240 -26670 17780 -24130)(net "Net-(C1-Pad1)")(type protect))
|
||||||
|
(wire (path B.Cu 250 17780 -16510 17780 -24130)(net "Net-(C1-Pad1)")(type protect))
|
||||||
|
(wire (path B.Cu 250 20320 -27940 22860 -27940)(net "Net-(C1-Pad2)")(type protect))
|
||||||
|
(wire (path B.Cu 250 24090 -29170 25360 -31750)(net "Net-(C1-Pad2)")(type protect))
|
||||||
|
(wire (path B.Cu 250 22860 -27940 24090 -29170)(net "Net-(C1-Pad2)")(type protect))
|
||||||
|
(wire (path B.Cu 250 17740 -31750 17740 -30520)(net "Net-(C1-Pad2)")(type protect))
|
||||||
|
(wire (path B.Cu 250 20320 -27940 20320 -24130)(net "Net-(C1-Pad2)")(type protect))
|
||||||
|
(wire (path B.Cu 250 17740 -30520 20320 -27940)(net "Net-(C1-Pad2)")(type protect))
|
||||||
|
(wire (path B.Cu 250 20320 -16510 20320 -24130)(net "Net-(C1-Pad2)")(type protect))
|
||||||
|
(wire (path B.Cu 250 22860 -24130 25400 -24130)(net "Net-(C2-Pad1)")(type protect))
|
||||||
|
(wire (path B.Cu 250 24130 -33020 22860 -31750)(net "Net-(C2-Pad1)")(type protect))
|
||||||
|
(wire (path B.Cu 250 25400 -34290 24130 -33020)(net "Net-(C2-Pad1)")(type protect))
|
||||||
|
(wire (path B.Cu 250 27940 -34290 25400 -34290)(net "Net-(C2-Pad1)")(type protect))
|
||||||
|
(wire (path B.Cu 250 27940 -27940 27940 -34290)(net "Net-(C2-Pad1)")(type protect))
|
||||||
|
(wire (path B.Cu 250 25400 -24130 27940 -27940)(net "Net-(C2-Pad1)")(type protect))
|
||||||
|
)
|
||||||
|
)
|
7379
circuit/circuit.kicad_pcb
Normal file
7379
circuit/circuit.kicad_pcb
Normal file
File diff suppressed because it is too large
Load Diff
7376
circuit/circuit.kicad_pcb-bak
Normal file
7376
circuit/circuit.kicad_pcb-bak
Normal file
File diff suppressed because it is too large
Load Diff
692
circuit/circuit.net
Normal file
692
circuit/circuit.net
Normal file
@ -0,0 +1,692 @@
|
|||||||
|
(export (version D)
|
||||||
|
(design
|
||||||
|
(source H:/Munkák/Prolife_F1/circuit/circuit.sch)
|
||||||
|
(date "2018-06-03 11:45:03")
|
||||||
|
(tool "Eeschema 4.0.7")
|
||||||
|
(sheet (number 1) (name /) (tstamps /)
|
||||||
|
(title_block
|
||||||
|
(title "Prolife F1 main PCB")
|
||||||
|
(company Systemtest)
|
||||||
|
(rev 2)
|
||||||
|
(date 2018-06-02)
|
||||||
|
(source circuit.sch)
|
||||||
|
(comment (number 1) (value http://systemtest.tk))
|
||||||
|
(comment (number 2) (value gergo@systemtest.tk))
|
||||||
|
(comment (number 3) (value "Fándly Gergő Zoltán"))
|
||||||
|
(comment (number 4) (value "Created by:")))))
|
||||||
|
(components
|
||||||
|
(comp (ref U2)
|
||||||
|
(value ATMEGA328-PU)
|
||||||
|
(footprint Housings_DIP:DIP-28_W7.62mm_Socket)
|
||||||
|
(libsource (lib atmel) (part ATMEGA328-PU))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B128B5D))
|
||||||
|
(comp (ref U1)
|
||||||
|
(value L7805)
|
||||||
|
(footprint TO_SOT_Packages_THT:TO-220-3_Vertical)
|
||||||
|
(libsource (lib regul) (part L7805))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B128D1C))
|
||||||
|
(comp (ref C1)
|
||||||
|
(value "100 uF")
|
||||||
|
(footprint Capacitors_THT:CP_Radial_D6.3mm_P2.50mm)
|
||||||
|
(libsource (lib device) (part CP))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B128F71))
|
||||||
|
(comp (ref C2)
|
||||||
|
(value "100 uF")
|
||||||
|
(footprint Capacitors_THT:CP_Radial_D6.3mm_P2.50mm)
|
||||||
|
(libsource (lib device) (part CP))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B12902A))
|
||||||
|
(comp (ref Y1)
|
||||||
|
(value "16 MHz")
|
||||||
|
(footprint Crystals:Crystal_HC50_Vertical)
|
||||||
|
(libsource (lib device) (part Crystal))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B1299EB))
|
||||||
|
(comp (ref C3)
|
||||||
|
(value "22 pF")
|
||||||
|
(footprint Capacitors_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm)
|
||||||
|
(libsource (lib device) (part C))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B129B4C))
|
||||||
|
(comp (ref C4)
|
||||||
|
(value "22 pF")
|
||||||
|
(footprint Capacitors_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm)
|
||||||
|
(libsource (lib device) (part C))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B129BD5))
|
||||||
|
(comp (ref JP1)
|
||||||
|
(value "Reset switch")
|
||||||
|
(footprint Connectors:PINHEAD1-2)
|
||||||
|
(libsource (lib device) (part Jumper_NO_Small))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B12A50F))
|
||||||
|
(comp (ref R1)
|
||||||
|
(value "10 kOhm")
|
||||||
|
(footprint Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal)
|
||||||
|
(libsource (lib device) (part R))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B12A92B))
|
||||||
|
(comp (ref U3)
|
||||||
|
(value DS1307)
|
||||||
|
(footprint Pin_Headers:Pin_Header_Straight_1x05_Pitch2.54mm)
|
||||||
|
(libsource (lib conn) (part DS1307))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B12C8A2))
|
||||||
|
(comp (ref DS1)
|
||||||
|
(value WC1602A)
|
||||||
|
(footprint Displays:WC1602A)
|
||||||
|
(libsource (lib display) (part WC1602A))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B12E203))
|
||||||
|
(comp (ref RV1)
|
||||||
|
(value "100 kOhm")
|
||||||
|
(footprint Potentiometers:Potentiometer_Trimmer_ACP_CA6v_Horizontal)
|
||||||
|
(libsource (lib device) (part POT))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B12E750))
|
||||||
|
(comp (ref J2)
|
||||||
|
(value Serial)
|
||||||
|
(footprint Connectors:PINHEAD1-2)
|
||||||
|
(libsource (lib conn) (part Conn_01x02))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B130764))
|
||||||
|
(comp (ref U4)
|
||||||
|
(value DS18B20)
|
||||||
|
(footprint Pin_Headers:Pin_Header_Straight_1x03_Pitch2.54mm)
|
||||||
|
(libsource (lib conn) (part DS18B20))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B131BC6))
|
||||||
|
(comp (ref U6)
|
||||||
|
(value ULN2003_breakout)
|
||||||
|
(footprint Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm)
|
||||||
|
(libsource (lib conn) (part ULN2003_breakout))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B1346BA))
|
||||||
|
(comp (ref U7)
|
||||||
|
(value ULN2003_breakout)
|
||||||
|
(footprint Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm)
|
||||||
|
(libsource (lib conn) (part ULN2003_breakout))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B1347B5))
|
||||||
|
(comp (ref U8)
|
||||||
|
(value ULN2003_breakout)
|
||||||
|
(footprint Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm)
|
||||||
|
(libsource (lib conn) (part ULN2003_breakout))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B1347F6))
|
||||||
|
(comp (ref U9)
|
||||||
|
(value ULN2003_breakout)
|
||||||
|
(footprint Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm)
|
||||||
|
(libsource (lib conn) (part ULN2003_breakout))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B134831))
|
||||||
|
(comp (ref U10)
|
||||||
|
(value ULN2003_breakout)
|
||||||
|
(footprint Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm)
|
||||||
|
(libsource (lib conn) (part ULN2003_breakout))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B134894))
|
||||||
|
(comp (ref U5)
|
||||||
|
(value MCP23017)
|
||||||
|
(footprint Housings_DIP:DIP-28_W7.62mm_Socket)
|
||||||
|
(libsource (lib microchip) (part MCP23017))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B12D0B7))
|
||||||
|
(comp (ref J3)
|
||||||
|
(value TIMED_1)
|
||||||
|
(footprint Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm)
|
||||||
|
(libsource (lib conn) (part Conn_01x01))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B140BDF))
|
||||||
|
(comp (ref J4)
|
||||||
|
(value TIMED_2)
|
||||||
|
(footprint Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm)
|
||||||
|
(libsource (lib conn) (part Conn_01x01))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B140F78))
|
||||||
|
(comp (ref J5)
|
||||||
|
(value TIMED_3)
|
||||||
|
(footprint Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm)
|
||||||
|
(libsource (lib conn) (part Conn_01x01))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B140FE3))
|
||||||
|
(comp (ref SW1)
|
||||||
|
(value SW_DIP_x01)
|
||||||
|
(footprint Buttons_Switches_THT:SW_PUSH_6mm_h13mm)
|
||||||
|
(libsource (lib switches) (part SW_DIP_x01))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B142312))
|
||||||
|
(comp (ref SW2)
|
||||||
|
(value SW_DIP_x01)
|
||||||
|
(footprint Buttons_Switches_THT:SW_PUSH_6mm_h13mm)
|
||||||
|
(libsource (lib switches) (part SW_DIP_x01))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B1423A1))
|
||||||
|
(comp (ref SW3)
|
||||||
|
(value SW_DIP_x01)
|
||||||
|
(footprint Buttons_Switches_THT:SW_PUSH_6mm_h13mm)
|
||||||
|
(libsource (lib switches) (part SW_DIP_x01))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B1423EA))
|
||||||
|
(comp (ref R4)
|
||||||
|
(value "10 kOhm")
|
||||||
|
(footprint Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal)
|
||||||
|
(libsource (lib device) (part R))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B143F7B))
|
||||||
|
(comp (ref R5)
|
||||||
|
(value "10 kOhm")
|
||||||
|
(footprint Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal)
|
||||||
|
(libsource (lib device) (part R))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B143FF4))
|
||||||
|
(comp (ref R3)
|
||||||
|
(value "10 kOhm")
|
||||||
|
(footprint Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal)
|
||||||
|
(libsource (lib device) (part R))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B1455DE))
|
||||||
|
(comp (ref R2)
|
||||||
|
(value "100 kOhm")
|
||||||
|
(footprint Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal)
|
||||||
|
(libsource (lib device) (part R))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B145AC8))
|
||||||
|
(comp (ref J1)
|
||||||
|
(value Power_in)
|
||||||
|
(footprint Connectors:PINHEAD1-2)
|
||||||
|
(libsource (lib conn) (part Power_in))
|
||||||
|
(sheetpath (names /) (tstamps /))
|
||||||
|
(tstamp 5B14E95E)))
|
||||||
|
(libparts
|
||||||
|
(libpart (lib atmel) (part ATMEGA168A-PU)
|
||||||
|
(aliases
|
||||||
|
(alias ATMEGA48A-PU)
|
||||||
|
(alias ATMEGA48PA-PU)
|
||||||
|
(alias ATMEGA88A-PU)
|
||||||
|
(alias ATMEGA88PA-PU)
|
||||||
|
(alias ATMEGA168PA-PU)
|
||||||
|
(alias ATMEGA328-PU)
|
||||||
|
(alias ATMEGA328P-PU))
|
||||||
|
(description "PDIP28 Narrow, 16k Flash, 1kB SRAM, 512B EEPROM")
|
||||||
|
(docs http://www.atmel.com/images/atmel-8271-8-bit-avr-microcontroller-atmega48a-48pa-88a-88pa-168a-168pa-328-328p_datasheet.pdf)
|
||||||
|
(footprints
|
||||||
|
(fp 28DIP-ELL600)
|
||||||
|
(fp 28dip600))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) U)
|
||||||
|
(field (name Value) ATMEGA168A-PU)
|
||||||
|
(field (name Footprint) DIL28))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name "(PCINT14/~RESET~)PC6") (type BiDi))
|
||||||
|
(pin (num 2) (name "(PCINT16/RXD)PD0") (type BiDi))
|
||||||
|
(pin (num 3) (name "(PCINT17/TXD)PD1") (type BiDi))
|
||||||
|
(pin (num 4) (name "(PCINT18/INT0)PD2") (type BiDi))
|
||||||
|
(pin (num 5) (name "(PCINT19/OC2B/INT1)PD3") (type BiDi))
|
||||||
|
(pin (num 6) (name "(PCINT20/XCK/T0)PD4") (type BiDi))
|
||||||
|
(pin (num 7) (name VCC) (type power_in))
|
||||||
|
(pin (num 8) (name GND) (type power_in))
|
||||||
|
(pin (num 9) (name "(PCINT6/XTAL1/TOSC1)PB6") (type BiDi))
|
||||||
|
(pin (num 10) (name "(PCINT7/XTAL2/TOSC2)PB7") (type BiDi))
|
||||||
|
(pin (num 11) (name "(PCINT21/OC0B/T1)PD5") (type BiDi))
|
||||||
|
(pin (num 12) (name "(PCINT22/OC0A/AIN0)PD6") (type BiDi))
|
||||||
|
(pin (num 13) (name "(PCINT23/AIN1)PD7") (type BiDi))
|
||||||
|
(pin (num 14) (name "(PCINT0/CLKO/ICP1)PB0") (type BiDi))
|
||||||
|
(pin (num 15) (name "(PCINT1/OC1A)PB1") (type BiDi))
|
||||||
|
(pin (num 16) (name "(PCINT2/OC1B/~SS~)PB2") (type BiDi))
|
||||||
|
(pin (num 17) (name "(PCINT3/OC2A/MOSI)PB3") (type BiDi))
|
||||||
|
(pin (num 18) (name "(PCINT4/MISO)PB4") (type BiDi))
|
||||||
|
(pin (num 19) (name "(PCINT5/SCK)PB5") (type BiDi))
|
||||||
|
(pin (num 20) (name AVCC) (type power_in))
|
||||||
|
(pin (num 21) (name AREF) (type BiDi))
|
||||||
|
(pin (num 22) (name GND) (type power_in))
|
||||||
|
(pin (num 23) (name "(PCINT8/ADC0)PC0") (type BiDi))
|
||||||
|
(pin (num 24) (name "(PCINT9/ADC1)PC1") (type BiDi))
|
||||||
|
(pin (num 25) (name "(PCINT10/ADC2)PC2") (type BiDi))
|
||||||
|
(pin (num 26) (name "(PCINT11/ADC3)PC3") (type BiDi))
|
||||||
|
(pin (num 27) (name "(PCINT12/SDA/ADC4)PC4") (type BiDi))
|
||||||
|
(pin (num 28) (name "(PCINT13/SCL/ADC5)PC5") (type BiDi))))
|
||||||
|
(libpart (lib device) (part C)
|
||||||
|
(description "Unpolarized capacitor")
|
||||||
|
(footprints
|
||||||
|
(fp C_*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) C)
|
||||||
|
(field (name Value) C))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name ~) (type passive))
|
||||||
|
(pin (num 2) (name ~) (type passive))))
|
||||||
|
(libpart (lib device) (part CP)
|
||||||
|
(description "Polarised capacitor")
|
||||||
|
(footprints
|
||||||
|
(fp CP_*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) C)
|
||||||
|
(field (name Value) CP))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name ~) (type passive))
|
||||||
|
(pin (num 2) (name ~) (type passive))))
|
||||||
|
(libpart (lib conn) (part Conn_01x01)
|
||||||
|
(description "Generic connector, single row, 01x01")
|
||||||
|
(docs ~)
|
||||||
|
(footprints
|
||||||
|
(fp Connector*:*_??x*mm*)
|
||||||
|
(fp Connector*:*1x??x*mm*)
|
||||||
|
(fp Pin?Header?Straight?1X*)
|
||||||
|
(fp Pin?Header?Angled?1X*)
|
||||||
|
(fp Socket?Strip?Straight?1X*)
|
||||||
|
(fp Socket?Strip?Angled?1X*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) J)
|
||||||
|
(field (name Value) Conn_01x01))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name Pin_1) (type passive))))
|
||||||
|
(libpart (lib conn) (part Conn_01x02)
|
||||||
|
(description "Generic connector, single row, 01x02")
|
||||||
|
(docs ~)
|
||||||
|
(footprints
|
||||||
|
(fp Connector*:*_??x*mm*)
|
||||||
|
(fp Connector*:*1x??x*mm*)
|
||||||
|
(fp Pin?Header?Straight?1X*)
|
||||||
|
(fp Pin?Header?Angled?1X*)
|
||||||
|
(fp Socket?Strip?Straight?1X*)
|
||||||
|
(fp Socket?Strip?Angled?1X*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) J)
|
||||||
|
(field (name Value) Conn_01x02))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name Pin_1) (type passive))
|
||||||
|
(pin (num 2) (name Pin_2) (type passive))))
|
||||||
|
(libpart (lib device) (part Crystal)
|
||||||
|
(description "Two pin crystal")
|
||||||
|
(footprints
|
||||||
|
(fp Crystal*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) Y)
|
||||||
|
(field (name Value) Crystal))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name 1) (type passive))
|
||||||
|
(pin (num 2) (name 2) (type passive))))
|
||||||
|
(libpart (lib conn) (part DS1307)
|
||||||
|
(fields
|
||||||
|
(field (name Reference) U)
|
||||||
|
(field (name Value) DS1307))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name DS) (type input))
|
||||||
|
(pin (num 2) (name SCL) (type input))
|
||||||
|
(pin (num 3) (name SDA) (type input))
|
||||||
|
(pin (num 4) (name VCC) (type input))
|
||||||
|
(pin (num 5) (name GND) (type input))))
|
||||||
|
(libpart (lib conn) (part DS18B20)
|
||||||
|
(fields
|
||||||
|
(field (name Reference) U)
|
||||||
|
(field (name Value) DS18B20))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name GND) (type input))
|
||||||
|
(pin (num 2) (name DS) (type input))
|
||||||
|
(pin (num 3) (name Vcc) (type input))))
|
||||||
|
(libpart (lib device) (part Jumper_NO_Small)
|
||||||
|
(description "Jumper, normally open")
|
||||||
|
(fields
|
||||||
|
(field (name Reference) JP)
|
||||||
|
(field (name Value) Jumper_NO_Small))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name 1) (type passive))
|
||||||
|
(pin (num 2) (name 2) (type passive))))
|
||||||
|
(libpart (lib regul) (part L7805)
|
||||||
|
(aliases
|
||||||
|
(alias L7806)
|
||||||
|
(alias L7808)
|
||||||
|
(alias L7885)
|
||||||
|
(alias L7809)
|
||||||
|
(alias L7812)
|
||||||
|
(alias L7815)
|
||||||
|
(alias L7818)
|
||||||
|
(alias L7824))
|
||||||
|
(description "Positive 1.5A 35V Linear Regulator, Fixed Output 5V, TO-220/TO-263/TO-252")
|
||||||
|
(docs http://www.st.com/content/ccc/resource/technical/document/datasheet/41/4f/b3/b0/12/d4/47/88/CD00000444.pdf/files/CD00000444.pdf/jcr:content/translations/en.CD00000444.pdf)
|
||||||
|
(footprints
|
||||||
|
(fp TO?252*)
|
||||||
|
(fp TO?263*)
|
||||||
|
(fp TO?220*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) U)
|
||||||
|
(field (name Value) L7805))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name IN) (type power_in))
|
||||||
|
(pin (num 2) (name GND) (type power_in))
|
||||||
|
(pin (num 3) (name OUT) (type power_out))))
|
||||||
|
(libpart (lib microchip) (part MCP23017)
|
||||||
|
(description "16-Bit I/O Expander with I²C Interface (PDIP/SOIC/SSOP)")
|
||||||
|
(docs http://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf)
|
||||||
|
(footprints
|
||||||
|
(fp DIP-28_W7.62mm*)
|
||||||
|
(fp SOIC-28)
|
||||||
|
(fp SSOP-28))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) U)
|
||||||
|
(field (name Value) MCP23017))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name GPB0) (type BiDi))
|
||||||
|
(pin (num 2) (name GPB1) (type BiDi))
|
||||||
|
(pin (num 3) (name GPB2) (type BiDi))
|
||||||
|
(pin (num 4) (name GPB3) (type BiDi))
|
||||||
|
(pin (num 5) (name GPB4) (type BiDi))
|
||||||
|
(pin (num 6) (name GPB5) (type BiDi))
|
||||||
|
(pin (num 7) (name GPB6) (type BiDi))
|
||||||
|
(pin (num 8) (name GPB7) (type BiDi))
|
||||||
|
(pin (num 9) (name VCC) (type power_in))
|
||||||
|
(pin (num 10) (name GND) (type power_in))
|
||||||
|
(pin (num 12) (name SCL) (type input))
|
||||||
|
(pin (num 13) (name SDA) (type BiDi))
|
||||||
|
(pin (num 15) (name A0) (type input))
|
||||||
|
(pin (num 16) (name A1) (type input))
|
||||||
|
(pin (num 17) (name A2) (type input))
|
||||||
|
(pin (num 18) (name ~RESET) (type input))
|
||||||
|
(pin (num 19) (name INTB) (type output))
|
||||||
|
(pin (num 20) (name INTA) (type output))
|
||||||
|
(pin (num 21) (name GPA0) (type BiDi))
|
||||||
|
(pin (num 22) (name GPA1) (type BiDi))
|
||||||
|
(pin (num 23) (name GPA2) (type BiDi))
|
||||||
|
(pin (num 24) (name GPA3) (type BiDi))
|
||||||
|
(pin (num 25) (name GPA4) (type BiDi))
|
||||||
|
(pin (num 26) (name GPA5) (type BiDi))
|
||||||
|
(pin (num 27) (name GPA6) (type BiDi))
|
||||||
|
(pin (num 28) (name GPA7) (type BiDi))))
|
||||||
|
(libpart (lib device) (part POT)
|
||||||
|
(description Potentiometer)
|
||||||
|
(footprints
|
||||||
|
(fp Potentiometer*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) RV)
|
||||||
|
(field (name Value) POT))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name 1) (type passive))
|
||||||
|
(pin (num 2) (name 2) (type passive))
|
||||||
|
(pin (num 3) (name 3) (type passive))))
|
||||||
|
(libpart (lib conn) (part Power_in)
|
||||||
|
(fields
|
||||||
|
(field (name Reference) J)
|
||||||
|
(field (name Value) Power_in))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name Vcc) (type power_out))
|
||||||
|
(pin (num 2) (name GND) (type power_out))))
|
||||||
|
(libpart (lib device) (part R)
|
||||||
|
(description Resistor)
|
||||||
|
(footprints
|
||||||
|
(fp R_*)
|
||||||
|
(fp R_*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) R)
|
||||||
|
(field (name Value) R))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name ~) (type passive))
|
||||||
|
(pin (num 2) (name ~) (type passive))))
|
||||||
|
(libpart (lib switches) (part SW_DIP_x01)
|
||||||
|
(description "1x DIP Switch, Single Pole Single Throw (SPST) switch, small symbol")
|
||||||
|
(footprints
|
||||||
|
(fp SW?DIP?x1*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) SW)
|
||||||
|
(field (name Value) SW_DIP_x01))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name ~) (type passive))
|
||||||
|
(pin (num 2) (name ~) (type passive))))
|
||||||
|
(libpart (lib conn) (part ULN2003_breakout)
|
||||||
|
(fields
|
||||||
|
(field (name Reference) U)
|
||||||
|
(field (name Value) ULN2003_breakout))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name IN1) (type input))
|
||||||
|
(pin (num 2) (name IN2) (type input))
|
||||||
|
(pin (num 3) (name IN3) (type input))
|
||||||
|
(pin (num 4) (name IN4) (type input))
|
||||||
|
(pin (num 5) (name Vmot) (type input))
|
||||||
|
(pin (num 6) (name GND) (type input))))
|
||||||
|
(libpart (lib display) (part WC1602A)
|
||||||
|
(description "LCD 16x2 Alphanumeric , 8 bit parallel bus, 5V VDD")
|
||||||
|
(docs http://www.wincomlcd.com/pdf/WC1602A-SFYLYHTC06.pdf)
|
||||||
|
(footprints
|
||||||
|
(fp *WC*1602A*))
|
||||||
|
(fields
|
||||||
|
(field (name Reference) DS)
|
||||||
|
(field (name Value) WC1602A)
|
||||||
|
(field (name Footprint) Displays:WC1602A))
|
||||||
|
(pins
|
||||||
|
(pin (num 1) (name VSS) (type power_in))
|
||||||
|
(pin (num 2) (name VDD) (type power_in))
|
||||||
|
(pin (num 3) (name VO) (type input))
|
||||||
|
(pin (num 4) (name RS) (type input))
|
||||||
|
(pin (num 5) (name R/W) (type input))
|
||||||
|
(pin (num 6) (name E) (type input))
|
||||||
|
(pin (num 7) (name D0) (type input))
|
||||||
|
(pin (num 8) (name D1) (type input))
|
||||||
|
(pin (num 9) (name D2) (type input))
|
||||||
|
(pin (num 10) (name D3) (type input))
|
||||||
|
(pin (num 11) (name D4) (type input))
|
||||||
|
(pin (num 12) (name D5) (type input))
|
||||||
|
(pin (num 13) (name D6) (type input))
|
||||||
|
(pin (num 14) (name D7) (type input))
|
||||||
|
(pin (num 15) (name "LED(+)") (type power_in))
|
||||||
|
(pin (num 16) (name "LED(-)") (type power_in)))))
|
||||||
|
(libraries
|
||||||
|
(library (logical regul)
|
||||||
|
(uri "D:\\Program Files\\KiCad\\share\\kicad\\library\\regul.lib"))
|
||||||
|
(library (logical microchip)
|
||||||
|
(uri "D:\\Program Files\\KiCad\\share\\kicad\\library\\microchip.lib"))
|
||||||
|
(library (logical conn)
|
||||||
|
(uri "D:\\Program Files\\KiCad\\share\\kicad\\library\\conn.lib"))
|
||||||
|
(library (logical switches)
|
||||||
|
(uri "D:\\Program Files\\KiCad\\share\\kicad\\library\\switches.lib"))
|
||||||
|
(library (logical atmel)
|
||||||
|
(uri "D:\\Program Files\\KiCad\\share\\kicad\\library\\atmel.lib"))
|
||||||
|
(library (logical device)
|
||||||
|
(uri "D:\\Program Files\\KiCad\\share\\kicad\\library\\device.lib"))
|
||||||
|
(library (logical display)
|
||||||
|
(uri "D:\\Program Files\\KiCad\\share\\kicad\\library\\display.lib")))
|
||||||
|
(nets
|
||||||
|
(net (code 1) (name "Net-(U5-Pad1)")
|
||||||
|
(node (ref U7) (pin 1))
|
||||||
|
(node (ref U5) (pin 1)))
|
||||||
|
(net (code 2) (name "Net-(U5-Pad6)")
|
||||||
|
(node (ref U8) (pin 2))
|
||||||
|
(node (ref U5) (pin 6)))
|
||||||
|
(net (code 3) (name "Net-(U5-Pad5)")
|
||||||
|
(node (ref U5) (pin 5))
|
||||||
|
(node (ref U8) (pin 1)))
|
||||||
|
(net (code 4) (name "Net-(U5-Pad4)")
|
||||||
|
(node (ref U7) (pin 4))
|
||||||
|
(node (ref U5) (pin 4)))
|
||||||
|
(net (code 5) (name "Net-(U5-Pad3)")
|
||||||
|
(node (ref U5) (pin 3))
|
||||||
|
(node (ref U7) (pin 3)))
|
||||||
|
(net (code 6) (name "Net-(U5-Pad2)")
|
||||||
|
(node (ref U7) (pin 2))
|
||||||
|
(node (ref U5) (pin 2)))
|
||||||
|
(net (code 7) (name "Net-(U2-Pad18)")
|
||||||
|
(node (ref U6) (pin 3))
|
||||||
|
(node (ref U2) (pin 18)))
|
||||||
|
(net (code 8) (name "Net-(U2-Pad17)")
|
||||||
|
(node (ref U2) (pin 17))
|
||||||
|
(node (ref U6) (pin 2)))
|
||||||
|
(net (code 9) (name "Net-(U2-Pad16)")
|
||||||
|
(node (ref U2) (pin 16))
|
||||||
|
(node (ref U6) (pin 1)))
|
||||||
|
(net (code 10) (name "Net-(J2-Pad2)")
|
||||||
|
(node (ref U2) (pin 3))
|
||||||
|
(node (ref J2) (pin 2)))
|
||||||
|
(net (code 11) (name "Net-(J2-Pad1)")
|
||||||
|
(node (ref J2) (pin 1))
|
||||||
|
(node (ref U2) (pin 2)))
|
||||||
|
(net (code 12) (name "Net-(DS1-Pad6)")
|
||||||
|
(node (ref U2) (pin 4))
|
||||||
|
(node (ref DS1) (pin 6)))
|
||||||
|
(net (code 13) (name "Net-(DS1-Pad15)")
|
||||||
|
(node (ref DS1) (pin 15))
|
||||||
|
(node (ref U2) (pin 15)))
|
||||||
|
(net (code 14) (name "Net-(DS1-Pad14)")
|
||||||
|
(node (ref DS1) (pin 14))
|
||||||
|
(node (ref U2) (pin 13)))
|
||||||
|
(net (code 15) (name "Net-(DS1-Pad13)")
|
||||||
|
(node (ref U2) (pin 12))
|
||||||
|
(node (ref DS1) (pin 13)))
|
||||||
|
(net (code 16) (name "Net-(U2-Pad19)")
|
||||||
|
(node (ref U2) (pin 19))
|
||||||
|
(node (ref U6) (pin 4)))
|
||||||
|
(net (code 17) (name "Net-(J5-Pad1)")
|
||||||
|
(node (ref U2) (pin 25))
|
||||||
|
(node (ref J5) (pin 1)))
|
||||||
|
(net (code 18) (name "Net-(J4-Pad1)")
|
||||||
|
(node (ref J4) (pin 1))
|
||||||
|
(node (ref U2) (pin 24)))
|
||||||
|
(net (code 19) (name "Net-(J3-Pad1)")
|
||||||
|
(node (ref J3) (pin 1))
|
||||||
|
(node (ref U2) (pin 23)))
|
||||||
|
(net (code 20) (name "Net-(U10-Pad4)")
|
||||||
|
(node (ref U10) (pin 4))
|
||||||
|
(node (ref U5) (pin 28)))
|
||||||
|
(net (code 21) (name "Net-(U10-Pad3)")
|
||||||
|
(node (ref U5) (pin 27))
|
||||||
|
(node (ref U10) (pin 3)))
|
||||||
|
(net (code 22) (name "Net-(U10-Pad2)")
|
||||||
|
(node (ref U10) (pin 2))
|
||||||
|
(node (ref U5) (pin 26)))
|
||||||
|
(net (code 23) (name "Net-(U2-Pad14)")
|
||||||
|
(node (ref U2) (pin 14))
|
||||||
|
(node (ref U4) (pin 2)))
|
||||||
|
(net (code 24) (name "Net-(R5-Pad2)")
|
||||||
|
(node (ref SW3) (pin 1))
|
||||||
|
(node (ref R5) (pin 2)))
|
||||||
|
(net (code 25) (name "Net-(R2-Pad2)")
|
||||||
|
(node (ref U2) (pin 26))
|
||||||
|
(node (ref R2) (pin 2))
|
||||||
|
(node (ref SW3) (pin 2))
|
||||||
|
(node (ref SW2) (pin 2))
|
||||||
|
(node (ref SW1) (pin 2)))
|
||||||
|
(net (code 26) (name "Net-(U5-Pad8)")
|
||||||
|
(node (ref U5) (pin 8))
|
||||||
|
(node (ref U8) (pin 4)))
|
||||||
|
(net (code 27) (name "Net-(U5-Pad21)")
|
||||||
|
(node (ref U9) (pin 1))
|
||||||
|
(node (ref U5) (pin 21)))
|
||||||
|
(net (code 28) (name "Net-(U5-Pad7)")
|
||||||
|
(node (ref U8) (pin 3))
|
||||||
|
(node (ref U5) (pin 7)))
|
||||||
|
(net (code 29) (name "Net-(U10-Pad1)")
|
||||||
|
(node (ref U10) (pin 1))
|
||||||
|
(node (ref U5) (pin 25)))
|
||||||
|
(net (code 30) (name "Net-(U5-Pad24)")
|
||||||
|
(node (ref U9) (pin 4))
|
||||||
|
(node (ref U5) (pin 24)))
|
||||||
|
(net (code 31) (name "Net-(U5-Pad23)")
|
||||||
|
(node (ref U9) (pin 3))
|
||||||
|
(node (ref U5) (pin 23)))
|
||||||
|
(net (code 32) (name "Net-(U5-Pad22)")
|
||||||
|
(node (ref U9) (pin 2))
|
||||||
|
(node (ref U5) (pin 22)))
|
||||||
|
(net (code 33) (name "Net-(DS1-Pad10)")
|
||||||
|
(node (ref DS1) (pin 10)))
|
||||||
|
(net (code 34) (name "Net-(DS1-Pad9)")
|
||||||
|
(node (ref DS1) (pin 9)))
|
||||||
|
(net (code 35) (name "Net-(DS1-Pad8)")
|
||||||
|
(node (ref DS1) (pin 8)))
|
||||||
|
(net (code 36) (name "Net-(DS1-Pad7)")
|
||||||
|
(node (ref DS1) (pin 7)))
|
||||||
|
(net (code 37) (name "Net-(DS1-Pad12)")
|
||||||
|
(node (ref DS1) (pin 12))
|
||||||
|
(node (ref U2) (pin 11)))
|
||||||
|
(net (code 38) (name "Net-(U5-Pad20)")
|
||||||
|
(node (ref U5) (pin 20)))
|
||||||
|
(net (code 39) (name "Net-(U5-Pad19)")
|
||||||
|
(node (ref U5) (pin 19)))
|
||||||
|
(net (code 40) (name "Net-(C1-Pad1)")
|
||||||
|
(node (ref C1) (pin 1))
|
||||||
|
(node (ref U1) (pin 1))
|
||||||
|
(node (ref J1) (pin 1)))
|
||||||
|
(net (code 41) (name "Net-(U2-Pad28)")
|
||||||
|
(node (ref U3) (pin 2))
|
||||||
|
(node (ref U2) (pin 28))
|
||||||
|
(node (ref U5) (pin 12)))
|
||||||
|
(net (code 42) (name "Net-(DS1-Pad11)")
|
||||||
|
(node (ref DS1) (pin 11))
|
||||||
|
(node (ref U2) (pin 6)))
|
||||||
|
(net (code 43) (name "Net-(DS1-Pad4)")
|
||||||
|
(node (ref DS1) (pin 4))
|
||||||
|
(node (ref U2) (pin 5)))
|
||||||
|
(net (code 44) (name "Net-(DS1-Pad3)")
|
||||||
|
(node (ref RV1) (pin 2))
|
||||||
|
(node (ref DS1) (pin 3)))
|
||||||
|
(net (code 45) (name "Net-(U3-Pad1)")
|
||||||
|
(node (ref U3) (pin 1)))
|
||||||
|
(net (code 46) (name "Net-(C2-Pad1)")
|
||||||
|
(node (ref U1) (pin 3))
|
||||||
|
(node (ref U2) (pin 7))
|
||||||
|
(node (ref U2) (pin 20))
|
||||||
|
(node (ref U5) (pin 9))
|
||||||
|
(node (ref U2) (pin 21))
|
||||||
|
(node (ref R3) (pin 1))
|
||||||
|
(node (ref DS1) (pin 2))
|
||||||
|
(node (ref U3) (pin 4))
|
||||||
|
(node (ref R1) (pin 1))
|
||||||
|
(node (ref C2) (pin 1))
|
||||||
|
(node (ref U8) (pin 5))
|
||||||
|
(node (ref U9) (pin 5))
|
||||||
|
(node (ref U10) (pin 5))
|
||||||
|
(node (ref U7) (pin 5))
|
||||||
|
(node (ref U5) (pin 18))
|
||||||
|
(node (ref RV1) (pin 1))
|
||||||
|
(node (ref U4) (pin 3))
|
||||||
|
(node (ref U6) (pin 5)))
|
||||||
|
(net (code 47) (name "Net-(U2-Pad27)")
|
||||||
|
(node (ref U2) (pin 27))
|
||||||
|
(node (ref U3) (pin 3))
|
||||||
|
(node (ref U5) (pin 13)))
|
||||||
|
(net (code 48) (name "Net-(JP1-Pad1)")
|
||||||
|
(node (ref U2) (pin 1))
|
||||||
|
(node (ref JP1) (pin 1))
|
||||||
|
(node (ref R1) (pin 2)))
|
||||||
|
(net (code 49) (name "Net-(C3-Pad2)")
|
||||||
|
(node (ref U2) (pin 9))
|
||||||
|
(node (ref C3) (pin 2))
|
||||||
|
(node (ref Y1) (pin 2)))
|
||||||
|
(net (code 50) (name "Net-(C4-Pad1)")
|
||||||
|
(node (ref U2) (pin 10))
|
||||||
|
(node (ref C4) (pin 1))
|
||||||
|
(node (ref Y1) (pin 1)))
|
||||||
|
(net (code 51) (name "Net-(R4-Pad2)")
|
||||||
|
(node (ref SW2) (pin 1))
|
||||||
|
(node (ref R4) (pin 2))
|
||||||
|
(node (ref R5) (pin 1)))
|
||||||
|
(net (code 52) (name "Net-(R3-Pad2)")
|
||||||
|
(node (ref R3) (pin 2))
|
||||||
|
(node (ref SW1) (pin 1))
|
||||||
|
(node (ref R4) (pin 1)))
|
||||||
|
(net (code 53) (name "Net-(C1-Pad2)")
|
||||||
|
(node (ref U5) (pin 10))
|
||||||
|
(node (ref U6) (pin 6))
|
||||||
|
(node (ref U5) (pin 15))
|
||||||
|
(node (ref U4) (pin 1))
|
||||||
|
(node (ref U5) (pin 16))
|
||||||
|
(node (ref RV1) (pin 3))
|
||||||
|
(node (ref DS1) (pin 16))
|
||||||
|
(node (ref R2) (pin 1))
|
||||||
|
(node (ref J1) (pin 2))
|
||||||
|
(node (ref U3) (pin 5))
|
||||||
|
(node (ref JP1) (pin 2))
|
||||||
|
(node (ref C4) (pin 2))
|
||||||
|
(node (ref C3) (pin 1))
|
||||||
|
(node (ref C2) (pin 2))
|
||||||
|
(node (ref C1) (pin 2))
|
||||||
|
(node (ref DS1) (pin 1))
|
||||||
|
(node (ref U5) (pin 17))
|
||||||
|
(node (ref U10) (pin 6))
|
||||||
|
(node (ref U9) (pin 6))
|
||||||
|
(node (ref U8) (pin 6))
|
||||||
|
(node (ref U7) (pin 6))
|
||||||
|
(node (ref U1) (pin 2))
|
||||||
|
(node (ref U2) (pin 22))
|
||||||
|
(node (ref U2) (pin 8))
|
||||||
|
(node (ref DS1) (pin 5)))))
|
65
circuit/circuit.pro
Normal file
65
circuit/circuit.pro
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
update=2018-06-02 18:18:10
|
||||||
|
version=1
|
||||||
|
last_client=kicad
|
||||||
|
[pcbnew]
|
||||||
|
version=1
|
||||||
|
LastNetListRead=
|
||||||
|
UseCmpFile=1
|
||||||
|
PadDrill=0.600000000000
|
||||||
|
PadDrillOvalY=0.600000000000
|
||||||
|
PadSizeH=1.500000000000
|
||||||
|
PadSizeV=1.500000000000
|
||||||
|
PcbTextSizeV=1.500000000000
|
||||||
|
PcbTextSizeH=1.500000000000
|
||||||
|
PcbTextThickness=0.300000000000
|
||||||
|
ModuleTextSizeV=1.000000000000
|
||||||
|
ModuleTextSizeH=1.000000000000
|
||||||
|
ModuleTextSizeThickness=0.150000000000
|
||||||
|
SolderMaskClearance=0.000000000000
|
||||||
|
SolderMaskMinWidth=0.000000000000
|
||||||
|
DrawSegmentWidth=0.200000000000
|
||||||
|
BoardOutlineThickness=0.100000000000
|
||||||
|
ModuleOutlineThickness=0.150000000000
|
||||||
|
[cvpcb]
|
||||||
|
version=1
|
||||||
|
NetIExt=net
|
||||||
|
[general]
|
||||||
|
version=1
|
||||||
|
[eeschema]
|
||||||
|
version=1
|
||||||
|
LibDir=
|
||||||
|
[eeschema/libraries]
|
||||||
|
LibName1=circuit-rescue
|
||||||
|
LibName2=power
|
||||||
|
LibName3=device
|
||||||
|
LibName4=switches
|
||||||
|
LibName5=relays
|
||||||
|
LibName6=motors
|
||||||
|
LibName7=transistors
|
||||||
|
LibName8=conn
|
||||||
|
LibName9=linear
|
||||||
|
LibName10=regul
|
||||||
|
LibName11=74xx
|
||||||
|
LibName12=cmos4000
|
||||||
|
LibName13=adc-dac
|
||||||
|
LibName14=memory
|
||||||
|
LibName15=xilinx
|
||||||
|
LibName16=microcontrollers
|
||||||
|
LibName17=dsp
|
||||||
|
LibName18=microchip
|
||||||
|
LibName19=analog_switches
|
||||||
|
LibName20=motorola
|
||||||
|
LibName21=texas
|
||||||
|
LibName22=intel
|
||||||
|
LibName23=audio
|
||||||
|
LibName24=interface
|
||||||
|
LibName25=digital-audio
|
||||||
|
LibName26=philips
|
||||||
|
LibName27=display
|
||||||
|
LibName28=cypress
|
||||||
|
LibName29=siliconi
|
||||||
|
LibName30=opto
|
||||||
|
LibName31=contrib
|
||||||
|
LibName32=valves
|
||||||
|
LibName33=D:/Program Files/KiCad/share/kicad/library/atmel
|
||||||
|
LibName34=ATMEGA328-PU
|
981
circuit/circuit.sch
Normal file
981
circuit/circuit.sch
Normal file
@ -0,0 +1,981 @@
|
|||||||
|
EESchema Schematic File Version 2
|
||||||
|
LIBS:circuit-rescue
|
||||||
|
LIBS:power
|
||||||
|
LIBS:device
|
||||||
|
LIBS:switches
|
||||||
|
LIBS:relays
|
||||||
|
LIBS:motors
|
||||||
|
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:contrib
|
||||||
|
LIBS:valves
|
||||||
|
LIBS:atmel
|
||||||
|
LIBS:ATMEGA328-PU
|
||||||
|
LIBS:circuit-cache
|
||||||
|
EELAYER 25 0
|
||||||
|
EELAYER END
|
||||||
|
$Descr A4 11693 8268
|
||||||
|
encoding utf-8
|
||||||
|
Sheet 1 1
|
||||||
|
Title "Prolife F1 main PCB"
|
||||||
|
Date "2018-06-02"
|
||||||
|
Rev "2"
|
||||||
|
Comp "Systemtest"
|
||||||
|
Comment1 "http://systemtest.tk"
|
||||||
|
Comment2 "gergo@systemtest.tk"
|
||||||
|
Comment3 "Fándly Gergő Zoltán"
|
||||||
|
Comment4 "Created by:"
|
||||||
|
$EndDescr
|
||||||
|
$Comp
|
||||||
|
L ATMEGA328-PU U2
|
||||||
|
U 1 1 5B128B5D
|
||||||
|
P 4050 3050
|
||||||
|
F 0 "U2" H 3300 4300 50 0000 L BNN
|
||||||
|
F 1 "ATMEGA328-PU" H 4450 1650 50 0000 L BNN
|
||||||
|
F 2 "Housings_DIP:DIP-28_W7.62mm_Socket" H 4050 3050 50 0001 C CIN
|
||||||
|
F 3 "" H 4050 3050 50 0001 C CNN
|
||||||
|
1 4050 3050
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L L7805 U1
|
||||||
|
U 1 1 5B128D1C
|
||||||
|
P 950 1350
|
||||||
|
F 0 "U1" H 800 1475 50 0000 C CNN
|
||||||
|
F 1 "L7805" H 950 1475 50 0000 L CNN
|
||||||
|
F 2 "TO_SOT_Packages_THT:TO-220-3_Vertical" H 975 1200 50 0001 L CIN
|
||||||
|
F 3 "" H 950 1300 50 0001 C CNN
|
||||||
|
1 950 1350
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L CP C1
|
||||||
|
U 1 1 5B128F71
|
||||||
|
P 1200 900
|
||||||
|
F 0 "C1" H 1225 1000 50 0000 L CNN
|
||||||
|
F 1 "100 uF" H 1225 800 50 0000 L CNN
|
||||||
|
F 2 "Capacitors_THT:CP_Radial_D6.3mm_P2.50mm" H 1238 750 50 0001 C CNN
|
||||||
|
F 3 "" H 1200 900 50 0001 C CNN
|
||||||
|
1 1200 900
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L CP C2
|
||||||
|
U 1 1 5B12902A
|
||||||
|
P 1450 1500
|
||||||
|
F 0 "C2" H 1475 1600 50 0000 L CNN
|
||||||
|
F 1 "100 uF" H 1475 1400 50 0000 L CNN
|
||||||
|
F 2 "Capacitors_THT:CP_Radial_D6.3mm_P2.50mm" H 1488 1350 50 0001 C CNN
|
||||||
|
F 3 "" H 1450 1500 50 0001 C CNN
|
||||||
|
1 1450 1500
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Crystal Y1
|
||||||
|
U 1 1 5B1299EB
|
||||||
|
P 5500 2600
|
||||||
|
F 0 "Y1" H 5500 2750 50 0000 C CNN
|
||||||
|
F 1 "16 MHz" H 5500 2450 50 0000 C CNN
|
||||||
|
F 2 "Crystals:Crystal_HC50_Vertical" H 5500 2600 50 0001 C CNN
|
||||||
|
F 3 "" H 5500 2600 50 0001 C CNN
|
||||||
|
1 5500 2600
|
||||||
|
0 -1 -1 0
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L C C3
|
||||||
|
U 1 1 5B129B4C
|
||||||
|
P 5400 2250
|
||||||
|
F 0 "C3" H 5425 2350 50 0000 L CNN
|
||||||
|
F 1 "22 pF" H 5425 2150 50 0000 L CNN
|
||||||
|
F 2 "Capacitors_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm" H 5438 2100 50 0001 C CNN
|
||||||
|
F 3 "" H 5400 2250 50 0001 C CNN
|
||||||
|
1 5400 2250
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L C C4
|
||||||
|
U 1 1 5B129BD5
|
||||||
|
P 5400 2950
|
||||||
|
F 0 "C4" H 5425 3050 50 0000 L CNN
|
||||||
|
F 1 "22 pF" H 5425 2850 50 0000 L CNN
|
||||||
|
F 2 "Capacitors_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm" H 5438 2800 50 0001 C CNN
|
||||||
|
F 3 "" H 5400 2950 50 0001 C CNN
|
||||||
|
1 5400 2950
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Jumper_NO_Small JP1
|
||||||
|
U 1 1 5B12A50F
|
||||||
|
P 5600 3650
|
||||||
|
F 0 "JP1" H 5600 3730 50 0000 C CNN
|
||||||
|
F 1 "Reset switch" H 5610 3590 50 0000 C CNN
|
||||||
|
F 2 "Connectors:PINHEAD1-2" H 5600 3650 50 0001 C CNN
|
||||||
|
F 3 "" H 5600 3650 50 0001 C CNN
|
||||||
|
1 5600 3650
|
||||||
|
0 1 1 0
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R1
|
||||||
|
U 1 1 5B12A92B
|
||||||
|
P 5900 3150
|
||||||
|
F 0 "R1" V 5980 3150 50 0000 C CNN
|
||||||
|
F 1 "10 kOhm" V 5800 3150 50 0000 C CNN
|
||||||
|
F 2 "Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal" V 5830 3150 50 0001 C CNN
|
||||||
|
F 3 "" H 5900 3150 50 0001 C CNN
|
||||||
|
1 5900 3150
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L DS1307 U3
|
||||||
|
U 1 1 5B12C8A2
|
||||||
|
P 7850 1650
|
||||||
|
F 0 "U3" H 7850 1950 60 0000 C CNN
|
||||||
|
F 1 "DS1307" H 7850 1350 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x05_Pitch2.54mm" H 7850 2000 60 0001 C CNN
|
||||||
|
F 3 "" H 7850 2000 60 0001 C CNN
|
||||||
|
1 7850 1650
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
NoConn ~ 7550 1450
|
||||||
|
$Comp
|
||||||
|
L WC1602A DS1
|
||||||
|
U 1 1 5B12E203
|
||||||
|
P 7650 3850
|
||||||
|
F 0 "DS1" H 7420 4600 50 0000 C CNN
|
||||||
|
F 1 "WC1602A" H 7860 4600 50 0000 C CNN
|
||||||
|
F 2 "Displays:WC1602A" H 7650 2950 50 0001 C CIN
|
||||||
|
F 3 "" H 8350 3850 50 0001 C CNN
|
||||||
|
1 7650 3850
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L POT RV1
|
||||||
|
U 1 1 5B12E750
|
||||||
|
P 8000 2550
|
||||||
|
F 0 "RV1" V 7825 2550 50 0000 C CNN
|
||||||
|
F 1 "100 kOhm" V 7900 2550 50 0000 C CNN
|
||||||
|
F 2 "Potentiometers:Potentiometer_Trimmer_ACP_CA6v_Horizontal" H 8000 2550 50 0001 C CNN
|
||||||
|
F 3 "" H 8000 2550 50 0001 C CNN
|
||||||
|
1 8000 2550
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
NoConn ~ 7250 3750
|
||||||
|
NoConn ~ 7250 3850
|
||||||
|
NoConn ~ 7250 3950
|
||||||
|
NoConn ~ 7250 4050
|
||||||
|
$Comp
|
||||||
|
L Conn_01x02 J2
|
||||||
|
U 1 1 5B130764
|
||||||
|
P 5300 3550
|
||||||
|
F 0 "J2" H 5300 3650 50 0000 C CNN
|
||||||
|
F 1 "Serial" H 5300 3350 50 0000 C CNN
|
||||||
|
F 2 "Connectors:PINHEAD1-2" H 5300 3550 50 0001 C CNN
|
||||||
|
F 3 "" H 5300 3550 50 0001 C CNN
|
||||||
|
1 5300 3550
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L DS18B20 U4
|
||||||
|
U 1 1 5B131BC6
|
||||||
|
P 6700 2300
|
||||||
|
F 0 "U4" H 6700 2500 60 0000 C CNN
|
||||||
|
F 1 "DS18B20" H 6700 2100 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x03_Pitch2.54mm" H 6650 2250 60 0001 C CNN
|
||||||
|
F 3 "" H 6650 2250 60 0001 C CNN
|
||||||
|
1 6700 2300
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L ULN2003_breakout U6
|
||||||
|
U 1 1 5B1346BA
|
||||||
|
P 10250 1150
|
||||||
|
F 0 "U6" H 10200 1500 60 0000 C CNN
|
||||||
|
F 1 "ULN2003_breakout" H 10250 800 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm" H 10250 1250 60 0001 C CNN
|
||||||
|
F 3 "" H 10250 1250 60 0001 C CNN
|
||||||
|
1 10250 1150
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L ULN2003_breakout U7
|
||||||
|
U 1 1 5B1347B5
|
||||||
|
P 10250 2000
|
||||||
|
F 0 "U7" H 10200 2350 60 0000 C CNN
|
||||||
|
F 1 "ULN2003_breakout" H 10250 1650 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm" H 10250 2100 60 0001 C CNN
|
||||||
|
F 3 "" H 10250 2100 60 0001 C CNN
|
||||||
|
1 10250 2000
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L ULN2003_breakout U8
|
||||||
|
U 1 1 5B1347F6
|
||||||
|
P 10250 2850
|
||||||
|
F 0 "U8" H 10200 3200 60 0000 C CNN
|
||||||
|
F 1 "ULN2003_breakout" H 10250 2500 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm" H 10250 2950 60 0001 C CNN
|
||||||
|
F 3 "" H 10250 2950 60 0001 C CNN
|
||||||
|
1 10250 2850
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L ULN2003_breakout U9
|
||||||
|
U 1 1 5B134831
|
||||||
|
P 10250 3700
|
||||||
|
F 0 "U9" H 10200 4050 60 0000 C CNN
|
||||||
|
F 1 "ULN2003_breakout" H 10250 3350 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm" H 10250 3800 60 0001 C CNN
|
||||||
|
F 3 "" H 10250 3800 60 0001 C CNN
|
||||||
|
1 10250 3700
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L ULN2003_breakout U10
|
||||||
|
U 1 1 5B134894
|
||||||
|
P 10250 4550
|
||||||
|
F 0 "U10" H 10200 4900 60 0000 C CNN
|
||||||
|
F 1 "ULN2003_breakout" H 10250 4200 60 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm" H 10250 4650 60 0001 C CNN
|
||||||
|
F 3 "" H 10250 4650 60 0001 C CNN
|
||||||
|
1 10250 4550
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
NoConn ~ 4700 5450
|
||||||
|
NoConn ~ 4700 5550
|
||||||
|
$Comp
|
||||||
|
L MCP23017 U5
|
||||||
|
U 1 1 5B12D0B7
|
||||||
|
P 4200 5850
|
||||||
|
F 0 "U5" H 4100 6875 50 0000 R CNN
|
||||||
|
F 1 "MCP23017" H 4100 6800 50 0000 R CNN
|
||||||
|
F 2 "Housings_DIP:DIP-28_W7.62mm_Socket" H 4250 4900 50 0001 L CNN
|
||||||
|
F 3 "" H 4450 6850 50 0001 C CNN
|
||||||
|
1 4200 5850
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Conn_01x01 J3
|
||||||
|
U 1 1 5B140BDF
|
||||||
|
P 6200 2650
|
||||||
|
F 0 "J3" H 6200 2750 50 0000 C CNN
|
||||||
|
F 1 "TIMED_1" H 6200 2550 50 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm" H 6200 2650 50 0001 C CNN
|
||||||
|
F 3 "" H 6200 2650 50 0001 C CNN
|
||||||
|
1 6200 2650
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Conn_01x01 J4
|
||||||
|
U 1 1 5B140F78
|
||||||
|
P 6200 2950
|
||||||
|
F 0 "J4" H 6200 3050 50 0000 C CNN
|
||||||
|
F 1 "TIMED_2" H 6200 2850 50 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm" H 6200 2950 50 0001 C CNN
|
||||||
|
F 3 "" H 6200 2950 50 0001 C CNN
|
||||||
|
1 6200 2950
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Conn_01x01 J5
|
||||||
|
U 1 1 5B140FE3
|
||||||
|
P 6200 3250
|
||||||
|
F 0 "J5" H 6200 3350 50 0000 C CNN
|
||||||
|
F 1 "TIMED_3" H 6200 3150 50 0000 C CNN
|
||||||
|
F 2 "Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm" H 6200 3250 50 0001 C CNN
|
||||||
|
F 3 "" H 6200 3250 50 0001 C CNN
|
||||||
|
1 6200 3250
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L SW_DIP_x01 SW1
|
||||||
|
U 1 1 5B142312
|
||||||
|
P 1500 5350
|
||||||
|
F 0 "SW1" H 1500 5500 50 0000 C CNN
|
||||||
|
F 1 "SW_DIP_x01" H 1500 5200 50 0000 C CNN
|
||||||
|
F 2 "Buttons_Switches_THT:SW_PUSH_6mm_h13mm" H 1500 5350 50 0001 C CNN
|
||||||
|
F 3 "" H 1500 5350 50 0001 C CNN
|
||||||
|
1 1500 5350
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L SW_DIP_x01 SW2
|
||||||
|
U 1 1 5B1423A1
|
||||||
|
P 1500 6000
|
||||||
|
F 0 "SW2" H 1500 6150 50 0000 C CNN
|
||||||
|
F 1 "SW_DIP_x01" H 1500 5850 50 0000 C CNN
|
||||||
|
F 2 "Buttons_Switches_THT:SW_PUSH_6mm_h13mm" H 1500 6000 50 0001 C CNN
|
||||||
|
F 3 "" H 1500 6000 50 0001 C CNN
|
||||||
|
1 1500 6000
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L SW_DIP_x01 SW3
|
||||||
|
U 1 1 5B1423EA
|
||||||
|
P 1500 6650
|
||||||
|
F 0 "SW3" H 1500 6800 50 0000 C CNN
|
||||||
|
F 1 "SW_DIP_x01" H 1500 6500 50 0000 C CNN
|
||||||
|
F 2 "Buttons_Switches_THT:SW_PUSH_6mm_h13mm" H 1500 6650 50 0001 C CNN
|
||||||
|
F 3 "" H 1500 6650 50 0001 C CNN
|
||||||
|
1 1500 6650
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R4
|
||||||
|
U 1 1 5B143F7B
|
||||||
|
P 1200 5700
|
||||||
|
F 0 "R4" V 1280 5700 50 0000 C CNN
|
||||||
|
F 1 "10 kOhm" V 1100 5700 50 0000 C CNN
|
||||||
|
F 2 "Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal" V 1130 5700 50 0001 C CNN
|
||||||
|
F 3 "" H 1200 5700 50 0001 C CNN
|
||||||
|
1 1200 5700
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R5
|
||||||
|
U 1 1 5B143FF4
|
||||||
|
P 1200 6350
|
||||||
|
F 0 "R5" V 1280 6350 50 0000 C CNN
|
||||||
|
F 1 "10 kOhm" V 1100 6350 50 0000 C CNN
|
||||||
|
F 2 "Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal" V 1130 6350 50 0001 C CNN
|
||||||
|
F 3 "" H 1200 6350 50 0001 C CNN
|
||||||
|
1 1200 6350
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R3
|
||||||
|
U 1 1 5B1455DE
|
||||||
|
P 1200 5050
|
||||||
|
F 0 "R3" V 1280 5050 50 0000 C CNN
|
||||||
|
F 1 "10 kOhm" V 1100 5050 50 0000 C CNN
|
||||||
|
F 2 "Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal" V 1130 5050 50 0001 C CNN
|
||||||
|
F 3 "" H 1200 5050 50 0001 C CNN
|
||||||
|
1 1200 5050
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L R R2
|
||||||
|
U 1 1 5B145AC8
|
||||||
|
P 2100 4800
|
||||||
|
F 0 "R2" V 2180 4800 50 0000 C CNN
|
||||||
|
F 1 "100 kOhm" V 2000 4800 50 0000 C CNN
|
||||||
|
F 2 "Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal" V 2030 4800 50 0001 C CNN
|
||||||
|
F 3 "" H 2100 4800 50 0001 C CNN
|
||||||
|
1 2100 4800
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
$Comp
|
||||||
|
L Power_in J1
|
||||||
|
U 1 1 5B14E95E
|
||||||
|
P 2050 750
|
||||||
|
F 0 "J1" H 2050 900 60 0000 C CNN
|
||||||
|
F 1 "Power_in" H 2100 600 60 0000 C CNN
|
||||||
|
F 2 "Connectors:PINHEAD1-2" H 2050 550 60 0001 C CNN
|
||||||
|
F 3 "" H 2050 550 60 0001 C CNN
|
||||||
|
1 2050 750
|
||||||
|
1 0 0 -1
|
||||||
|
$EndComp
|
||||||
|
Wire Wire Line
|
||||||
|
1700 1650 950 1650
|
||||||
|
Wire Wire Line
|
||||||
|
1700 800 1700 1650
|
||||||
|
Wire Wire Line
|
||||||
|
650 700 1750 700
|
||||||
|
Wire Wire Line
|
||||||
|
650 1350 650 700
|
||||||
|
Wire Wire Line
|
||||||
|
1200 700 1200 750
|
||||||
|
Connection ~ 1200 700
|
||||||
|
Wire Wire Line
|
||||||
|
1200 1050 1700 1050
|
||||||
|
Connection ~ 1700 1050
|
||||||
|
Wire Wire Line
|
||||||
|
1450 1650 1450 1650
|
||||||
|
Connection ~ 1450 1650
|
||||||
|
Wire Wire Line
|
||||||
|
1250 1350 3150 1350
|
||||||
|
Connection ~ 1450 1350
|
||||||
|
Wire Wire Line
|
||||||
|
3150 1350 3150 2550
|
||||||
|
Connection ~ 3150 1950
|
||||||
|
Connection ~ 3150 2250
|
||||||
|
Wire Wire Line
|
||||||
|
950 4150 3150 4150
|
||||||
|
Wire Wire Line
|
||||||
|
950 1650 950 4150
|
||||||
|
Wire Wire Line
|
||||||
|
5050 2550 5250 2550
|
||||||
|
Wire Wire Line
|
||||||
|
5250 2550 5250 2450
|
||||||
|
Wire Wire Line
|
||||||
|
5250 2450 5500 2450
|
||||||
|
Wire Wire Line
|
||||||
|
5050 2650 5250 2650
|
||||||
|
Wire Wire Line
|
||||||
|
5250 2650 5250 2750
|
||||||
|
Wire Wire Line
|
||||||
|
5250 2750 5500 2750
|
||||||
|
Wire Wire Line
|
||||||
|
5400 2800 5400 2750
|
||||||
|
Connection ~ 5400 2750
|
||||||
|
Wire Wire Line
|
||||||
|
5400 2450 5400 2400
|
||||||
|
Connection ~ 5400 2450
|
||||||
|
Wire Wire Line
|
||||||
|
5400 4750 5400 3100
|
||||||
|
Wire Wire Line
|
||||||
|
3150 4750 5400 4750
|
||||||
|
Wire Wire Line
|
||||||
|
5400 2100 5700 2100
|
||||||
|
Connection ~ 3150 1600
|
||||||
|
Wire Wire Line
|
||||||
|
5700 2100 5700 3200
|
||||||
|
Wire Wire Line
|
||||||
|
5700 3200 5400 3200
|
||||||
|
Connection ~ 5400 3200
|
||||||
|
Wire Wire Line
|
||||||
|
5050 3400 5900 3400
|
||||||
|
Wire Wire Line
|
||||||
|
5900 3400 5900 3300
|
||||||
|
Wire Wire Line
|
||||||
|
5900 3000 5900 1600
|
||||||
|
Wire Wire Line
|
||||||
|
5900 1600 3150 1600
|
||||||
|
Wire Wire Line
|
||||||
|
5600 3550 5600 3400
|
||||||
|
Connection ~ 5600 3400
|
||||||
|
Wire Wire Line
|
||||||
|
5600 3750 5600 4100
|
||||||
|
Wire Wire Line
|
||||||
|
5600 4100 5400 4100
|
||||||
|
Connection ~ 5400 4100
|
||||||
|
Wire Wire Line
|
||||||
|
3150 4150 3150 4750
|
||||||
|
Connection ~ 3150 4250
|
||||||
|
Wire Wire Line
|
||||||
|
7550 1550 5200 1550
|
||||||
|
Wire Wire Line
|
||||||
|
5200 1550 5200 3300
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3300 5050 3300
|
||||||
|
Wire Wire Line
|
||||||
|
7550 1650 5150 1650
|
||||||
|
Wire Wire Line
|
||||||
|
5150 1650 5150 3200
|
||||||
|
Wire Wire Line
|
||||||
|
5150 3200 5050 3200
|
||||||
|
Wire Wire Line
|
||||||
|
3150 1750 7550 1750
|
||||||
|
Connection ~ 3150 1750
|
||||||
|
Wire Wire Line
|
||||||
|
7550 1850 7100 1850
|
||||||
|
Wire Wire Line
|
||||||
|
7100 1850 7100 4650
|
||||||
|
Wire Wire Line
|
||||||
|
5400 4650 8050 4650
|
||||||
|
Connection ~ 5400 4650
|
||||||
|
Connection ~ 7100 4650
|
||||||
|
Wire Wire Line
|
||||||
|
7650 2050 7650 3050
|
||||||
|
Wire Wire Line
|
||||||
|
7650 2050 7300 2050
|
||||||
|
Wire Wire Line
|
||||||
|
7300 2050 7300 1750
|
||||||
|
Connection ~ 7300 1750
|
||||||
|
Wire Wire Line
|
||||||
|
8000 2400 8000 2300
|
||||||
|
Wire Wire Line
|
||||||
|
8000 2300 7650 2300
|
||||||
|
Connection ~ 7650 2300
|
||||||
|
Wire Wire Line
|
||||||
|
8000 2700 8000 2800
|
||||||
|
Wire Wire Line
|
||||||
|
8000 2800 7100 2800
|
||||||
|
Connection ~ 7100 2800
|
||||||
|
Wire Wire Line
|
||||||
|
8150 2550 8150 3250
|
||||||
|
Wire Wire Line
|
||||||
|
8150 3250 8050 3250
|
||||||
|
Wire Wire Line
|
||||||
|
7250 3450 5200 3450
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3450 5200 3850
|
||||||
|
Wire Wire Line
|
||||||
|
5200 3850 5050 3850
|
||||||
|
Wire Wire Line
|
||||||
|
7250 3350 7100 3350
|
||||||
|
Connection ~ 7100 3350
|
||||||
|
Wire Wire Line
|
||||||
|
7250 4150 6850 4150
|
||||||
|
Wire Wire Line
|
||||||
|
6850 4150 6850 3950
|
||||||
|
Wire Wire Line
|
||||||
|
6850 3950 5050 3950
|
||||||
|
Wire Wire Line
|
||||||
|
7250 4250 6800 4250
|
||||||
|
Wire Wire Line
|
||||||
|
6800 4250 6800 4050
|
||||||
|
Wire Wire Line
|
||||||
|
6800 4050 5050 4050
|
||||||
|
Wire Wire Line
|
||||||
|
7250 4350 6750 4350
|
||||||
|
Wire Wire Line
|
||||||
|
6750 4350 6750 4150
|
||||||
|
Wire Wire Line
|
||||||
|
6750 4150 5050 4150
|
||||||
|
Wire Wire Line
|
||||||
|
7250 4450 6700 4450
|
||||||
|
Wire Wire Line
|
||||||
|
6700 4450 6700 4250
|
||||||
|
Wire Wire Line
|
||||||
|
6700 4250 5050 4250
|
||||||
|
Wire Wire Line
|
||||||
|
8050 4650 8050 3650
|
||||||
|
Connection ~ 7650 4650
|
||||||
|
Wire Wire Line
|
||||||
|
8050 3550 8200 3550
|
||||||
|
Wire Wire Line
|
||||||
|
8200 3550 8200 2000
|
||||||
|
Wire Wire Line
|
||||||
|
8200 2000 5250 2000
|
||||||
|
Wire Wire Line
|
||||||
|
5250 2000 5250 2050
|
||||||
|
Wire Wire Line
|
||||||
|
5250 2050 5050 2050
|
||||||
|
Wire Wire Line
|
||||||
|
7250 3250 6950 3250
|
||||||
|
Wire Wire Line
|
||||||
|
6950 3250 6950 3750
|
||||||
|
Wire Wire Line
|
||||||
|
6950 3750 5050 3750
|
||||||
|
Wire Wire Line
|
||||||
|
5100 3550 5050 3550
|
||||||
|
Wire Wire Line
|
||||||
|
5050 3650 5100 3650
|
||||||
|
Wire Wire Line
|
||||||
|
9900 900 5100 900
|
||||||
|
Wire Wire Line
|
||||||
|
5100 900 5100 2150
|
||||||
|
Wire Wire Line
|
||||||
|
5100 2150 5050 2150
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1000 5300 1000
|
||||||
|
Wire Wire Line
|
||||||
|
5300 1000 5300 2250
|
||||||
|
Wire Wire Line
|
||||||
|
5300 2250 5050 2250
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1100 5800 1100
|
||||||
|
Wire Wire Line
|
||||||
|
5800 1100 5800 2350
|
||||||
|
Wire Wire Line
|
||||||
|
5800 2350 5050 2350
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1200 5950 1200
|
||||||
|
Wire Wire Line
|
||||||
|
5950 1200 5950 2400
|
||||||
|
Wire Wire Line
|
||||||
|
5950 2400 5100 2400
|
||||||
|
Wire Wire Line
|
||||||
|
5100 2400 5100 2450
|
||||||
|
Wire Wire Line
|
||||||
|
5100 2450 5050 2450
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1300 9450 1300
|
||||||
|
Wire Wire Line
|
||||||
|
9450 1300 9450 4700
|
||||||
|
Wire Wire Line
|
||||||
|
9450 4700 9900 4700
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3850 9450 3850
|
||||||
|
Connection ~ 9450 3850
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3000 9450 3000
|
||||||
|
Connection ~ 9450 3000
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2150 9450 2150
|
||||||
|
Connection ~ 9450 2150
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1400 9500 1400
|
||||||
|
Wire Wire Line
|
||||||
|
9500 1400 9500 4800
|
||||||
|
Wire Wire Line
|
||||||
|
6800 4800 9900 4800
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3950 9500 3950
|
||||||
|
Connection ~ 9500 3950
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3100 9500 3100
|
||||||
|
Connection ~ 9500 3100
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2250 9500 2250
|
||||||
|
Connection ~ 9500 2250
|
||||||
|
Wire Wire Line
|
||||||
|
6800 4800 6800 4650
|
||||||
|
Connection ~ 6800 4650
|
||||||
|
Connection ~ 9500 4800
|
||||||
|
Wire Wire Line
|
||||||
|
9450 1500 8150 1500
|
||||||
|
Wire Wire Line
|
||||||
|
8150 1500 8150 750
|
||||||
|
Wire Wire Line
|
||||||
|
8150 750 2800 750
|
||||||
|
Wire Wire Line
|
||||||
|
2800 750 2800 1350
|
||||||
|
Connection ~ 2800 1350
|
||||||
|
Connection ~ 9450 1500
|
||||||
|
Wire Wire Line
|
||||||
|
5100 3200 5100 6250
|
||||||
|
Wire Wire Line
|
||||||
|
5100 6250 4700 6250
|
||||||
|
Connection ~ 5100 3200
|
||||||
|
Wire Wire Line
|
||||||
|
5150 3300 5150 6150
|
||||||
|
Wire Wire Line
|
||||||
|
5150 6150 4700 6150
|
||||||
|
Connection ~ 5150 3300
|
||||||
|
Wire Wire Line
|
||||||
|
4700 6450 5050 6450
|
||||||
|
Wire Wire Line
|
||||||
|
4750 6450 4750 6850
|
||||||
|
Wire Wire Line
|
||||||
|
4750 6650 4700 6650
|
||||||
|
Wire Wire Line
|
||||||
|
4700 6550 4750 6550
|
||||||
|
Connection ~ 4750 6550
|
||||||
|
Wire Wire Line
|
||||||
|
4750 6850 4200 6850
|
||||||
|
Connection ~ 4750 6650
|
||||||
|
Wire Wire Line
|
||||||
|
5050 6450 5050 4750
|
||||||
|
Connection ~ 5050 4750
|
||||||
|
Connection ~ 4750 6450
|
||||||
|
Connection ~ 2600 1350
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1750 9750 1750
|
||||||
|
Wire Wire Line
|
||||||
|
9750 1750 9750 5050
|
||||||
|
Wire Wire Line
|
||||||
|
9750 5050 5350 5050
|
||||||
|
Wire Wire Line
|
||||||
|
5350 5050 5350 6900
|
||||||
|
Wire Wire Line
|
||||||
|
5350 6900 3500 6900
|
||||||
|
Wire Wire Line
|
||||||
|
3500 6900 3500 5050
|
||||||
|
Wire Wire Line
|
||||||
|
3500 5050 3700 5050
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1850 9700 1850
|
||||||
|
Wire Wire Line
|
||||||
|
9700 1850 9700 5100
|
||||||
|
Wire Wire Line
|
||||||
|
9700 5100 5400 5100
|
||||||
|
Wire Wire Line
|
||||||
|
5400 5100 5400 6950
|
||||||
|
Wire Wire Line
|
||||||
|
5400 6950 3450 6950
|
||||||
|
Wire Wire Line
|
||||||
|
3450 6950 3450 5150
|
||||||
|
Wire Wire Line
|
||||||
|
3450 5150 3700 5150
|
||||||
|
Wire Wire Line
|
||||||
|
9900 1950 9650 1950
|
||||||
|
Wire Wire Line
|
||||||
|
9650 1950 9650 5150
|
||||||
|
Wire Wire Line
|
||||||
|
9650 5150 5450 5150
|
||||||
|
Wire Wire Line
|
||||||
|
5450 5150 5450 7000
|
||||||
|
Wire Wire Line
|
||||||
|
5450 7000 3400 7000
|
||||||
|
Wire Wire Line
|
||||||
|
3400 7000 3400 5250
|
||||||
|
Wire Wire Line
|
||||||
|
3400 5250 3700 5250
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2050 9600 2050
|
||||||
|
Wire Wire Line
|
||||||
|
9600 2050 9600 5200
|
||||||
|
Wire Wire Line
|
||||||
|
9600 5200 5500 5200
|
||||||
|
Wire Wire Line
|
||||||
|
5500 5200 5500 7050
|
||||||
|
Wire Wire Line
|
||||||
|
5500 7050 3350 7050
|
||||||
|
Wire Wire Line
|
||||||
|
3350 7050 3350 5350
|
||||||
|
Wire Wire Line
|
||||||
|
3350 5350 3700 5350
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2600 9400 2600
|
||||||
|
Wire Wire Line
|
||||||
|
9400 2600 9400 5250
|
||||||
|
Wire Wire Line
|
||||||
|
9400 5250 5550 5250
|
||||||
|
Wire Wire Line
|
||||||
|
5550 5250 5550 7100
|
||||||
|
Wire Wire Line
|
||||||
|
5550 7100 3300 7100
|
||||||
|
Wire Wire Line
|
||||||
|
3300 7100 3300 5450
|
||||||
|
Wire Wire Line
|
||||||
|
3300 5450 3700 5450
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2700 9350 2700
|
||||||
|
Wire Wire Line
|
||||||
|
9350 2700 9350 5300
|
||||||
|
Wire Wire Line
|
||||||
|
9350 5300 5600 5300
|
||||||
|
Wire Wire Line
|
||||||
|
5600 5300 5600 7150
|
||||||
|
Wire Wire Line
|
||||||
|
5600 7150 3250 7150
|
||||||
|
Wire Wire Line
|
||||||
|
3250 7150 3250 5550
|
||||||
|
Wire Wire Line
|
||||||
|
3250 5550 3700 5550
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2800 9300 2800
|
||||||
|
Wire Wire Line
|
||||||
|
9300 2800 9300 5350
|
||||||
|
Wire Wire Line
|
||||||
|
9300 5350 5650 5350
|
||||||
|
Wire Wire Line
|
||||||
|
5650 5350 5650 7200
|
||||||
|
Wire Wire Line
|
||||||
|
5650 7200 3200 7200
|
||||||
|
Wire Wire Line
|
||||||
|
3200 7200 3200 5650
|
||||||
|
Wire Wire Line
|
||||||
|
3200 5650 3700 5650
|
||||||
|
Wire Wire Line
|
||||||
|
9900 2900 9250 2900
|
||||||
|
Wire Wire Line
|
||||||
|
9250 2900 9250 5400
|
||||||
|
Wire Wire Line
|
||||||
|
9250 5400 5700 5400
|
||||||
|
Wire Wire Line
|
||||||
|
5700 5400 5700 7250
|
||||||
|
Wire Wire Line
|
||||||
|
5700 7250 3150 7250
|
||||||
|
Wire Wire Line
|
||||||
|
3150 7250 3150 5750
|
||||||
|
Wire Wire Line
|
||||||
|
3150 5750 3700 5750
|
||||||
|
Wire Wire Line
|
||||||
|
4200 4850 4700 4850
|
||||||
|
Wire Wire Line
|
||||||
|
4700 4850 4700 5050
|
||||||
|
Wire Wire Line
|
||||||
|
4200 4850 4200 4550
|
||||||
|
Wire Wire Line
|
||||||
|
4200 4550 2600 4550
|
||||||
|
Wire Wire Line
|
||||||
|
2600 4550 2600 1350
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3450 9200 3450
|
||||||
|
Wire Wire Line
|
||||||
|
9200 3450 9200 5450
|
||||||
|
Wire Wire Line
|
||||||
|
9200 5450 5750 5450
|
||||||
|
Wire Wire Line
|
||||||
|
5750 5450 5750 7300
|
||||||
|
Wire Wire Line
|
||||||
|
5750 7300 3100 7300
|
||||||
|
Wire Wire Line
|
||||||
|
3100 7300 3100 5950
|
||||||
|
Wire Wire Line
|
||||||
|
3100 5950 3700 5950
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3550 9150 3550
|
||||||
|
Wire Wire Line
|
||||||
|
9150 3550 9150 5500
|
||||||
|
Wire Wire Line
|
||||||
|
9150 5500 5800 5500
|
||||||
|
Wire Wire Line
|
||||||
|
5800 5500 5800 7350
|
||||||
|
Wire Wire Line
|
||||||
|
5800 7350 3050 7350
|
||||||
|
Wire Wire Line
|
||||||
|
3050 7350 3050 6050
|
||||||
|
Wire Wire Line
|
||||||
|
3050 6050 3700 6050
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3650 9100 3650
|
||||||
|
Wire Wire Line
|
||||||
|
9100 3650 9100 5550
|
||||||
|
Wire Wire Line
|
||||||
|
9100 5550 5850 5550
|
||||||
|
Wire Wire Line
|
||||||
|
5850 5550 5850 7400
|
||||||
|
Wire Wire Line
|
||||||
|
5850 7400 3000 7400
|
||||||
|
Wire Wire Line
|
||||||
|
3000 7400 3000 6150
|
||||||
|
Wire Wire Line
|
||||||
|
3000 6150 3700 6150
|
||||||
|
Wire Wire Line
|
||||||
|
9900 3750 9050 3750
|
||||||
|
Wire Wire Line
|
||||||
|
9050 3750 9050 5600
|
||||||
|
Wire Wire Line
|
||||||
|
9050 5600 5900 5600
|
||||||
|
Wire Wire Line
|
||||||
|
5900 5600 5900 7450
|
||||||
|
Wire Wire Line
|
||||||
|
5900 7450 2950 7450
|
||||||
|
Wire Wire Line
|
||||||
|
2950 7450 2950 6250
|
||||||
|
Wire Wire Line
|
||||||
|
2950 6250 3700 6250
|
||||||
|
Wire Wire Line
|
||||||
|
9900 4300 9000 4300
|
||||||
|
Wire Wire Line
|
||||||
|
9000 4300 9000 5650
|
||||||
|
Wire Wire Line
|
||||||
|
9000 5650 5950 5650
|
||||||
|
Wire Wire Line
|
||||||
|
5950 5650 5950 7500
|
||||||
|
Wire Wire Line
|
||||||
|
5950 7500 2900 7500
|
||||||
|
Wire Wire Line
|
||||||
|
2900 7500 2900 6350
|
||||||
|
Wire Wire Line
|
||||||
|
2900 6350 3700 6350
|
||||||
|
Wire Wire Line
|
||||||
|
9900 4400 8950 4400
|
||||||
|
Wire Wire Line
|
||||||
|
8950 4400 8950 5700
|
||||||
|
Wire Wire Line
|
||||||
|
8950 5700 6000 5700
|
||||||
|
Wire Wire Line
|
||||||
|
6000 5700 6000 7550
|
||||||
|
Wire Wire Line
|
||||||
|
6000 7550 2850 7550
|
||||||
|
Wire Wire Line
|
||||||
|
2850 7550 2850 6450
|
||||||
|
Wire Wire Line
|
||||||
|
2850 6450 3700 6450
|
||||||
|
Wire Wire Line
|
||||||
|
9900 4500 8900 4500
|
||||||
|
Wire Wire Line
|
||||||
|
8900 4500 8900 5750
|
||||||
|
Wire Wire Line
|
||||||
|
8900 5750 6050 5750
|
||||||
|
Wire Wire Line
|
||||||
|
6050 5750 6050 7600
|
||||||
|
Wire Wire Line
|
||||||
|
6050 7600 2800 7600
|
||||||
|
Wire Wire Line
|
||||||
|
2800 7600 2800 6550
|
||||||
|
Wire Wire Line
|
||||||
|
2800 6550 3700 6550
|
||||||
|
Wire Wire Line
|
||||||
|
9900 4600 8850 4600
|
||||||
|
Wire Wire Line
|
||||||
|
8850 4600 8850 5800
|
||||||
|
Wire Wire Line
|
||||||
|
8850 5800 6100 5800
|
||||||
|
Wire Wire Line
|
||||||
|
6100 5800 6100 7650
|
||||||
|
Wire Wire Line
|
||||||
|
6100 7650 2750 7650
|
||||||
|
Wire Wire Line
|
||||||
|
2750 7650 2750 6650
|
||||||
|
Wire Wire Line
|
||||||
|
2750 6650 3700 6650
|
||||||
|
Wire Wire Line
|
||||||
|
6000 2650 6000 2800
|
||||||
|
Wire Wire Line
|
||||||
|
6000 2800 5050 2800
|
||||||
|
Wire Wire Line
|
||||||
|
6000 2950 5950 2950
|
||||||
|
Wire Wire Line
|
||||||
|
5950 2950 5950 2900
|
||||||
|
Wire Wire Line
|
||||||
|
5950 2900 5050 2900
|
||||||
|
Wire Wire Line
|
||||||
|
6000 3250 6000 3350
|
||||||
|
Wire Wire Line
|
||||||
|
6000 3350 5250 3350
|
||||||
|
Wire Wire Line
|
||||||
|
5250 3350 5250 3000
|
||||||
|
Wire Wire Line
|
||||||
|
5250 3000 5050 3000
|
||||||
|
Wire Wire Line
|
||||||
|
5050 3100 5050 4700
|
||||||
|
Wire Wire Line
|
||||||
|
5050 4700 2450 4700
|
||||||
|
Wire Wire Line
|
||||||
|
2450 4700 2450 4950
|
||||||
|
Wire Wire Line
|
||||||
|
2450 4950 2100 4950
|
||||||
|
Wire Wire Line
|
||||||
|
2100 4650 2100 4150
|
||||||
|
Connection ~ 2100 4150
|
||||||
|
Wire Wire Line
|
||||||
|
2100 4950 2100 6650
|
||||||
|
Wire Wire Line
|
||||||
|
2100 5350 1800 5350
|
||||||
|
Wire Wire Line
|
||||||
|
2100 6000 1800 6000
|
||||||
|
Connection ~ 2100 5350
|
||||||
|
Wire Wire Line
|
||||||
|
2100 6650 1800 6650
|
||||||
|
Connection ~ 2100 6000
|
||||||
|
Wire Wire Line
|
||||||
|
1950 1350 1950 4550
|
||||||
|
Wire Wire Line
|
||||||
|
1950 4550 1200 4550
|
||||||
|
Wire Wire Line
|
||||||
|
1200 4550 1200 4900
|
||||||
|
Connection ~ 1950 1350
|
||||||
|
Wire Wire Line
|
||||||
|
1200 5200 1200 5550
|
||||||
|
Connection ~ 1200 5350
|
||||||
|
Wire Wire Line
|
||||||
|
1200 5850 1200 6200
|
||||||
|
Connection ~ 1200 6000
|
||||||
|
Wire Wire Line
|
||||||
|
1200 6500 1200 6650
|
||||||
|
Wire Wire Line
|
||||||
|
1700 800 1750 800
|
||||||
|
Wire Wire Line
|
||||||
|
6400 2300 6050 2300
|
||||||
|
Wire Wire Line
|
||||||
|
6050 2300 6050 1950
|
||||||
|
Wire Wire Line
|
||||||
|
6050 1950 5050 1950
|
||||||
|
Wire Wire Line
|
||||||
|
6400 2200 6400 2050
|
||||||
|
Wire Wire Line
|
||||||
|
6400 2050 7100 2050
|
||||||
|
Connection ~ 7100 2050
|
||||||
|
Wire Wire Line
|
||||||
|
6400 2400 6250 2400
|
||||||
|
Wire Wire Line
|
||||||
|
6250 2400 6250 1750
|
||||||
|
Connection ~ 6250 1750
|
||||||
|
$EndSCHEMATC
|
857
circuit/circuit.xml
Normal file
857
circuit/circuit.xml
Normal file
@ -0,0 +1,857 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<export version="D">
|
||||||
|
<design>
|
||||||
|
<source>H:/Munkák/Prolife_F1/circuit/circuit.sch</source>
|
||||||
|
<date>2018-07-09 17:45:48</date>
|
||||||
|
<tool>Eeschema 4.0.7</tool>
|
||||||
|
<sheet number="1" name="/" tstamps="/">
|
||||||
|
<title_block>
|
||||||
|
<title>Prolife F1 main PCB</title>
|
||||||
|
<company>Systemtest</company>
|
||||||
|
<rev>2</rev>
|
||||||
|
<date>2018-06-02</date>
|
||||||
|
<source>circuit.sch</source>
|
||||||
|
<comment number="1" value="http://systemtest.tk"/>
|
||||||
|
<comment number="2" value="gergo@systemtest.tk"/>
|
||||||
|
<comment number="3" value="Fándly Gergő Zoltán"/>
|
||||||
|
<comment number="4" value="Created by:"/>
|
||||||
|
</title_block>
|
||||||
|
</sheet>
|
||||||
|
</design>
|
||||||
|
<components>
|
||||||
|
<comp ref="U2">
|
||||||
|
<value>ATMEGA328-PU</value>
|
||||||
|
<footprint>Housings_DIP:DIP-28_W7.62mm_Socket</footprint>
|
||||||
|
<libsource lib="atmel" part="ATMEGA328-PU"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B128B5D</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="U1">
|
||||||
|
<value>L7805</value>
|
||||||
|
<footprint>TO_SOT_Packages_THT:TO-220-3_Vertical</footprint>
|
||||||
|
<libsource lib="regul" part="L7805"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B128D1C</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="C1">
|
||||||
|
<value>100 uF</value>
|
||||||
|
<footprint>Capacitors_THT:CP_Radial_D6.3mm_P2.50mm</footprint>
|
||||||
|
<libsource lib="device" part="CP"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B128F71</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="C2">
|
||||||
|
<value>100 uF</value>
|
||||||
|
<footprint>Capacitors_THT:CP_Radial_D6.3mm_P2.50mm</footprint>
|
||||||
|
<libsource lib="device" part="CP"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B12902A</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="Y1">
|
||||||
|
<value>16 MHz</value>
|
||||||
|
<footprint>Crystals:Crystal_HC50_Vertical</footprint>
|
||||||
|
<libsource lib="device" part="Crystal"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B1299EB</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="C3">
|
||||||
|
<value>22 pF</value>
|
||||||
|
<footprint>Capacitors_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm</footprint>
|
||||||
|
<libsource lib="device" part="C"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B129B4C</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="C4">
|
||||||
|
<value>22 pF</value>
|
||||||
|
<footprint>Capacitors_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm</footprint>
|
||||||
|
<libsource lib="device" part="C"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B129BD5</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="JP1">
|
||||||
|
<value>Reset switch</value>
|
||||||
|
<footprint>Connectors:PINHEAD1-2</footprint>
|
||||||
|
<libsource lib="device" part="Jumper_NO_Small"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B12A50F</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="R1">
|
||||||
|
<value>10 kOhm</value>
|
||||||
|
<footprint>Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal</footprint>
|
||||||
|
<libsource lib="device" part="R"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B12A92B</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="U3">
|
||||||
|
<value>DS1307</value>
|
||||||
|
<footprint>Pin_Headers:Pin_Header_Straight_1x05_Pitch2.54mm</footprint>
|
||||||
|
<libsource lib="conn" part="DS1307"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B12C8A2</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="DS1">
|
||||||
|
<value>WC1602A</value>
|
||||||
|
<footprint>Displays:WC1602A</footprint>
|
||||||
|
<libsource lib="display" part="WC1602A"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B12E203</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="RV1">
|
||||||
|
<value>100 kOhm</value>
|
||||||
|
<footprint>Potentiometers:Potentiometer_Trimmer_ACP_CA6v_Horizontal</footprint>
|
||||||
|
<libsource lib="device" part="POT"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B12E750</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="J2">
|
||||||
|
<value>Serial</value>
|
||||||
|
<footprint>Connectors:PINHEAD1-2</footprint>
|
||||||
|
<libsource lib="conn" part="Conn_01x02"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B130764</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="U4">
|
||||||
|
<value>DS18B20</value>
|
||||||
|
<footprint>Pin_Headers:Pin_Header_Straight_1x03_Pitch2.54mm</footprint>
|
||||||
|
<libsource lib="conn" part="DS18B20"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B131BC6</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="U6">
|
||||||
|
<value>ULN2003_breakout</value>
|
||||||
|
<footprint>Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm</footprint>
|
||||||
|
<libsource lib="conn" part="ULN2003_breakout"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B1346BA</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="U7">
|
||||||
|
<value>ULN2003_breakout</value>
|
||||||
|
<footprint>Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm</footprint>
|
||||||
|
<libsource lib="conn" part="ULN2003_breakout"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B1347B5</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="U8">
|
||||||
|
<value>ULN2003_breakout</value>
|
||||||
|
<footprint>Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm</footprint>
|
||||||
|
<libsource lib="conn" part="ULN2003_breakout"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B1347F6</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="U9">
|
||||||
|
<value>ULN2003_breakout</value>
|
||||||
|
<footprint>Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm</footprint>
|
||||||
|
<libsource lib="conn" part="ULN2003_breakout"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B134831</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="U10">
|
||||||
|
<value>ULN2003_breakout</value>
|
||||||
|
<footprint>Pin_Headers:Pin_Header_Straight_1x06_Pitch2.54mm</footprint>
|
||||||
|
<libsource lib="conn" part="ULN2003_breakout"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B134894</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="U5">
|
||||||
|
<value>MCP23017</value>
|
||||||
|
<footprint>Housings_DIP:DIP-28_W7.62mm_Socket</footprint>
|
||||||
|
<libsource lib="microchip" part="MCP23017"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B12D0B7</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="J3">
|
||||||
|
<value>TIMED_1</value>
|
||||||
|
<footprint>Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm</footprint>
|
||||||
|
<libsource lib="conn" part="Conn_01x01"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B140BDF</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="J4">
|
||||||
|
<value>TIMED_2</value>
|
||||||
|
<footprint>Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm</footprint>
|
||||||
|
<libsource lib="conn" part="Conn_01x01"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B140F78</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="J5">
|
||||||
|
<value>TIMED_3</value>
|
||||||
|
<footprint>Pin_Headers:Pin_Header_Straight_1x01_Pitch2.54mm</footprint>
|
||||||
|
<libsource lib="conn" part="Conn_01x01"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B140FE3</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="SW1">
|
||||||
|
<value>SW_DIP_x01</value>
|
||||||
|
<footprint>Buttons_Switches_THT:SW_PUSH_6mm_h13mm</footprint>
|
||||||
|
<libsource lib="switches" part="SW_DIP_x01"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B142312</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="SW2">
|
||||||
|
<value>SW_DIP_x01</value>
|
||||||
|
<footprint>Buttons_Switches_THT:SW_PUSH_6mm_h13mm</footprint>
|
||||||
|
<libsource lib="switches" part="SW_DIP_x01"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B1423A1</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="SW3">
|
||||||
|
<value>SW_DIP_x01</value>
|
||||||
|
<footprint>Buttons_Switches_THT:SW_PUSH_6mm_h13mm</footprint>
|
||||||
|
<libsource lib="switches" part="SW_DIP_x01"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B1423EA</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="R4">
|
||||||
|
<value>10 kOhm</value>
|
||||||
|
<footprint>Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal</footprint>
|
||||||
|
<libsource lib="device" part="R"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B143F7B</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="R5">
|
||||||
|
<value>10 kOhm</value>
|
||||||
|
<footprint>Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal</footprint>
|
||||||
|
<libsource lib="device" part="R"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B143FF4</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="R3">
|
||||||
|
<value>10 kOhm</value>
|
||||||
|
<footprint>Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal</footprint>
|
||||||
|
<libsource lib="device" part="R"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B1455DE</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="R2">
|
||||||
|
<value>100 kOhm</value>
|
||||||
|
<footprint>Resistors_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P12.70mm_Horizontal</footprint>
|
||||||
|
<libsource lib="device" part="R"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B145AC8</tstamp>
|
||||||
|
</comp>
|
||||||
|
<comp ref="J1">
|
||||||
|
<value>Power_in</value>
|
||||||
|
<footprint>Connectors:PINHEAD1-2</footprint>
|
||||||
|
<libsource lib="conn" part="Power_in"/>
|
||||||
|
<sheetpath names="/" tstamps="/"/>
|
||||||
|
<tstamp>5B14E95E</tstamp>
|
||||||
|
</comp>
|
||||||
|
</components>
|
||||||
|
<libparts>
|
||||||
|
<libpart lib="atmel" part="ATMEGA168A-PU">
|
||||||
|
<aliases>
|
||||||
|
<alias>ATMEGA48A-PU</alias>
|
||||||
|
<alias>ATMEGA48PA-PU</alias>
|
||||||
|
<alias>ATMEGA88A-PU</alias>
|
||||||
|
<alias>ATMEGA88PA-PU</alias>
|
||||||
|
<alias>ATMEGA168PA-PU</alias>
|
||||||
|
<alias>ATMEGA328-PU</alias>
|
||||||
|
<alias>ATMEGA328P-PU</alias>
|
||||||
|
</aliases>
|
||||||
|
<description>PDIP28 Narrow, 16k Flash, 1kB SRAM, 512B EEPROM</description>
|
||||||
|
<docs>http://www.atmel.com/images/atmel-8271-8-bit-avr-microcontroller-atmega48a-48pa-88a-88pa-168a-168pa-328-328p_datasheet.pdf</docs>
|
||||||
|
<footprints>
|
||||||
|
<fp>28DIP-ELL600</fp>
|
||||||
|
<fp>28dip600</fp>
|
||||||
|
</footprints>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">U</field>
|
||||||
|
<field name="Value">ATMEGA168A-PU</field>
|
||||||
|
<field name="Footprint">DIL28</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="(PCINT14/~RESET~)PC6" type="BiDi"/>
|
||||||
|
<pin num="2" name="(PCINT16/RXD)PD0" type="BiDi"/>
|
||||||
|
<pin num="3" name="(PCINT17/TXD)PD1" type="BiDi"/>
|
||||||
|
<pin num="4" name="(PCINT18/INT0)PD2" type="BiDi"/>
|
||||||
|
<pin num="5" name="(PCINT19/OC2B/INT1)PD3" type="BiDi"/>
|
||||||
|
<pin num="6" name="(PCINT20/XCK/T0)PD4" type="BiDi"/>
|
||||||
|
<pin num="7" name="VCC" type="power_in"/>
|
||||||
|
<pin num="8" name="GND" type="power_in"/>
|
||||||
|
<pin num="9" name="(PCINT6/XTAL1/TOSC1)PB6" type="BiDi"/>
|
||||||
|
<pin num="10" name="(PCINT7/XTAL2/TOSC2)PB7" type="BiDi"/>
|
||||||
|
<pin num="11" name="(PCINT21/OC0B/T1)PD5" type="BiDi"/>
|
||||||
|
<pin num="12" name="(PCINT22/OC0A/AIN0)PD6" type="BiDi"/>
|
||||||
|
<pin num="13" name="(PCINT23/AIN1)PD7" type="BiDi"/>
|
||||||
|
<pin num="14" name="(PCINT0/CLKO/ICP1)PB0" type="BiDi"/>
|
||||||
|
<pin num="15" name="(PCINT1/OC1A)PB1" type="BiDi"/>
|
||||||
|
<pin num="16" name="(PCINT2/OC1B/~SS~)PB2" type="BiDi"/>
|
||||||
|
<pin num="17" name="(PCINT3/OC2A/MOSI)PB3" type="BiDi"/>
|
||||||
|
<pin num="18" name="(PCINT4/MISO)PB4" type="BiDi"/>
|
||||||
|
<pin num="19" name="(PCINT5/SCK)PB5" type="BiDi"/>
|
||||||
|
<pin num="20" name="AVCC" type="power_in"/>
|
||||||
|
<pin num="21" name="AREF" type="BiDi"/>
|
||||||
|
<pin num="22" name="GND" type="power_in"/>
|
||||||
|
<pin num="23" name="(PCINT8/ADC0)PC0" type="BiDi"/>
|
||||||
|
<pin num="24" name="(PCINT9/ADC1)PC1" type="BiDi"/>
|
||||||
|
<pin num="25" name="(PCINT10/ADC2)PC2" type="BiDi"/>
|
||||||
|
<pin num="26" name="(PCINT11/ADC3)PC3" type="BiDi"/>
|
||||||
|
<pin num="27" name="(PCINT12/SDA/ADC4)PC4" type="BiDi"/>
|
||||||
|
<pin num="28" name="(PCINT13/SCL/ADC5)PC5" type="BiDi"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="device" part="C">
|
||||||
|
<description>Unpolarized capacitor</description>
|
||||||
|
<footprints>
|
||||||
|
<fp>C_*</fp>
|
||||||
|
</footprints>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">C</field>
|
||||||
|
<field name="Value">C</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="~" type="passive"/>
|
||||||
|
<pin num="2" name="~" type="passive"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="device" part="CP">
|
||||||
|
<description>Polarised capacitor</description>
|
||||||
|
<footprints>
|
||||||
|
<fp>CP_*</fp>
|
||||||
|
</footprints>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">C</field>
|
||||||
|
<field name="Value">CP</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="~" type="passive"/>
|
||||||
|
<pin num="2" name="~" type="passive"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="conn" part="Conn_01x01">
|
||||||
|
<description>Generic connector, single row, 01x01</description>
|
||||||
|
<docs>~</docs>
|
||||||
|
<footprints>
|
||||||
|
<fp>Connector*:*_??x*mm*</fp>
|
||||||
|
<fp>Connector*:*1x??x*mm*</fp>
|
||||||
|
<fp>Pin?Header?Straight?1X*</fp>
|
||||||
|
<fp>Pin?Header?Angled?1X*</fp>
|
||||||
|
<fp>Socket?Strip?Straight?1X*</fp>
|
||||||
|
<fp>Socket?Strip?Angled?1X*</fp>
|
||||||
|
</footprints>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">J</field>
|
||||||
|
<field name="Value">Conn_01x01</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="Pin_1" type="passive"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="conn" part="Conn_01x02">
|
||||||
|
<description>Generic connector, single row, 01x02</description>
|
||||||
|
<docs>~</docs>
|
||||||
|
<footprints>
|
||||||
|
<fp>Connector*:*_??x*mm*</fp>
|
||||||
|
<fp>Connector*:*1x??x*mm*</fp>
|
||||||
|
<fp>Pin?Header?Straight?1X*</fp>
|
||||||
|
<fp>Pin?Header?Angled?1X*</fp>
|
||||||
|
<fp>Socket?Strip?Straight?1X*</fp>
|
||||||
|
<fp>Socket?Strip?Angled?1X*</fp>
|
||||||
|
</footprints>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">J</field>
|
||||||
|
<field name="Value">Conn_01x02</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="Pin_1" type="passive"/>
|
||||||
|
<pin num="2" name="Pin_2" type="passive"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="device" part="Crystal">
|
||||||
|
<description>Two pin crystal</description>
|
||||||
|
<footprints>
|
||||||
|
<fp>Crystal*</fp>
|
||||||
|
</footprints>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">Y</field>
|
||||||
|
<field name="Value">Crystal</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="1" type="passive"/>
|
||||||
|
<pin num="2" name="2" type="passive"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="conn" part="DS1307">
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">U</field>
|
||||||
|
<field name="Value">DS1307</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="DS" type="input"/>
|
||||||
|
<pin num="2" name="SCL" type="input"/>
|
||||||
|
<pin num="3" name="SDA" type="input"/>
|
||||||
|
<pin num="4" name="VCC" type="input"/>
|
||||||
|
<pin num="5" name="GND" type="input"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="conn" part="DS18B20">
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">U</field>
|
||||||
|
<field name="Value">DS18B20</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="GND" type="input"/>
|
||||||
|
<pin num="2" name="DS" type="input"/>
|
||||||
|
<pin num="3" name="Vcc" type="input"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="device" part="Jumper_NO_Small">
|
||||||
|
<description>Jumper, normally open</description>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">JP</field>
|
||||||
|
<field name="Value">Jumper_NO_Small</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="1" type="passive"/>
|
||||||
|
<pin num="2" name="2" type="passive"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="regul" part="L7805">
|
||||||
|
<aliases>
|
||||||
|
<alias>L7806</alias>
|
||||||
|
<alias>L7808</alias>
|
||||||
|
<alias>L7885</alias>
|
||||||
|
<alias>L7809</alias>
|
||||||
|
<alias>L7812</alias>
|
||||||
|
<alias>L7815</alias>
|
||||||
|
<alias>L7818</alias>
|
||||||
|
<alias>L7824</alias>
|
||||||
|
</aliases>
|
||||||
|
<description>Positive 1.5A 35V Linear Regulator, Fixed Output 5V, TO-220/TO-263/TO-252</description>
|
||||||
|
<docs>http://www.st.com/content/ccc/resource/technical/document/datasheet/41/4f/b3/b0/12/d4/47/88/CD00000444.pdf/files/CD00000444.pdf/jcr:content/translations/en.CD00000444.pdf</docs>
|
||||||
|
<footprints>
|
||||||
|
<fp>TO?252*</fp>
|
||||||
|
<fp>TO?263*</fp>
|
||||||
|
<fp>TO?220*</fp>
|
||||||
|
</footprints>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">U</field>
|
||||||
|
<field name="Value">L7805</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="IN" type="power_in"/>
|
||||||
|
<pin num="2" name="GND" type="power_in"/>
|
||||||
|
<pin num="3" name="OUT" type="power_out"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="microchip" part="MCP23017">
|
||||||
|
<description>16-Bit I/O Expander with I²C Interface (PDIP/SOIC/SSOP)</description>
|
||||||
|
<docs>http://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf</docs>
|
||||||
|
<footprints>
|
||||||
|
<fp>DIP-28_W7.62mm*</fp>
|
||||||
|
<fp>SOIC-28</fp>
|
||||||
|
<fp>SSOP-28</fp>
|
||||||
|
</footprints>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">U</field>
|
||||||
|
<field name="Value">MCP23017</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="GPB0" type="BiDi"/>
|
||||||
|
<pin num="2" name="GPB1" type="BiDi"/>
|
||||||
|
<pin num="3" name="GPB2" type="BiDi"/>
|
||||||
|
<pin num="4" name="GPB3" type="BiDi"/>
|
||||||
|
<pin num="5" name="GPB4" type="BiDi"/>
|
||||||
|
<pin num="6" name="GPB5" type="BiDi"/>
|
||||||
|
<pin num="7" name="GPB6" type="BiDi"/>
|
||||||
|
<pin num="8" name="GPB7" type="BiDi"/>
|
||||||
|
<pin num="9" name="VCC" type="power_in"/>
|
||||||
|
<pin num="10" name="GND" type="power_in"/>
|
||||||
|
<pin num="12" name="SCL" type="input"/>
|
||||||
|
<pin num="13" name="SDA" type="BiDi"/>
|
||||||
|
<pin num="15" name="A0" type="input"/>
|
||||||
|
<pin num="16" name="A1" type="input"/>
|
||||||
|
<pin num="17" name="A2" type="input"/>
|
||||||
|
<pin num="18" name="~RESET" type="input"/>
|
||||||
|
<pin num="19" name="INTB" type="output"/>
|
||||||
|
<pin num="20" name="INTA" type="output"/>
|
||||||
|
<pin num="21" name="GPA0" type="BiDi"/>
|
||||||
|
<pin num="22" name="GPA1" type="BiDi"/>
|
||||||
|
<pin num="23" name="GPA2" type="BiDi"/>
|
||||||
|
<pin num="24" name="GPA3" type="BiDi"/>
|
||||||
|
<pin num="25" name="GPA4" type="BiDi"/>
|
||||||
|
<pin num="26" name="GPA5" type="BiDi"/>
|
||||||
|
<pin num="27" name="GPA6" type="BiDi"/>
|
||||||
|
<pin num="28" name="GPA7" type="BiDi"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="device" part="POT">
|
||||||
|
<description>Potentiometer</description>
|
||||||
|
<footprints>
|
||||||
|
<fp>Potentiometer*</fp>
|
||||||
|
</footprints>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">RV</field>
|
||||||
|
<field name="Value">POT</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="1" type="passive"/>
|
||||||
|
<pin num="2" name="2" type="passive"/>
|
||||||
|
<pin num="3" name="3" type="passive"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="conn" part="Power_in">
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">J</field>
|
||||||
|
<field name="Value">Power_in</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="Vcc" type="power_out"/>
|
||||||
|
<pin num="2" name="GND" type="power_out"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="device" part="R">
|
||||||
|
<description>Resistor</description>
|
||||||
|
<footprints>
|
||||||
|
<fp>R_*</fp>
|
||||||
|
<fp>R_*</fp>
|
||||||
|
</footprints>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">R</field>
|
||||||
|
<field name="Value">R</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="~" type="passive"/>
|
||||||
|
<pin num="2" name="~" type="passive"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="switches" part="SW_DIP_x01">
|
||||||
|
<description>1x DIP Switch, Single Pole Single Throw (SPST) switch, small symbol</description>
|
||||||
|
<footprints>
|
||||||
|
<fp>SW?DIP?x1*</fp>
|
||||||
|
</footprints>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">SW</field>
|
||||||
|
<field name="Value">SW_DIP_x01</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="~" type="passive"/>
|
||||||
|
<pin num="2" name="~" type="passive"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="conn" part="ULN2003_breakout">
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">U</field>
|
||||||
|
<field name="Value">ULN2003_breakout</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="IN1" type="input"/>
|
||||||
|
<pin num="2" name="IN2" type="input"/>
|
||||||
|
<pin num="3" name="IN3" type="input"/>
|
||||||
|
<pin num="4" name="IN4" type="input"/>
|
||||||
|
<pin num="5" name="Vmot" type="input"/>
|
||||||
|
<pin num="6" name="GND" type="input"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
<libpart lib="display" part="WC1602A">
|
||||||
|
<description>LCD 16x2 Alphanumeric , 8 bit parallel bus, 5V VDD</description>
|
||||||
|
<docs>http://www.wincomlcd.com/pdf/WC1602A-SFYLYHTC06.pdf</docs>
|
||||||
|
<footprints>
|
||||||
|
<fp>*WC*1602A*</fp>
|
||||||
|
</footprints>
|
||||||
|
<fields>
|
||||||
|
<field name="Reference">DS</field>
|
||||||
|
<field name="Value">WC1602A</field>
|
||||||
|
<field name="Footprint">Displays:WC1602A</field>
|
||||||
|
</fields>
|
||||||
|
<pins>
|
||||||
|
<pin num="1" name="VSS" type="power_in"/>
|
||||||
|
<pin num="2" name="VDD" type="power_in"/>
|
||||||
|
<pin num="3" name="VO" type="input"/>
|
||||||
|
<pin num="4" name="RS" type="input"/>
|
||||||
|
<pin num="5" name="R/W" type="input"/>
|
||||||
|
<pin num="6" name="E" type="input"/>
|
||||||
|
<pin num="7" name="D0" type="input"/>
|
||||||
|
<pin num="8" name="D1" type="input"/>
|
||||||
|
<pin num="9" name="D2" type="input"/>
|
||||||
|
<pin num="10" name="D3" type="input"/>
|
||||||
|
<pin num="11" name="D4" type="input"/>
|
||||||
|
<pin num="12" name="D5" type="input"/>
|
||||||
|
<pin num="13" name="D6" type="input"/>
|
||||||
|
<pin num="14" name="D7" type="input"/>
|
||||||
|
<pin num="15" name="LED(+)" type="power_in"/>
|
||||||
|
<pin num="16" name="LED(-)" type="power_in"/>
|
||||||
|
</pins>
|
||||||
|
</libpart>
|
||||||
|
</libparts>
|
||||||
|
<libraries>
|
||||||
|
<library logical="regul">
|
||||||
|
<uri>D:\Program Files\KiCad\share\kicad\library\regul.lib</uri>
|
||||||
|
</library>
|
||||||
|
<library logical="conn">
|
||||||
|
<uri>D:\Program Files\KiCad\share\kicad\library\conn.lib</uri>
|
||||||
|
</library>
|
||||||
|
<library logical="microchip">
|
||||||
|
<uri>D:\Program Files\KiCad\share\kicad\library\microchip.lib</uri>
|
||||||
|
</library>
|
||||||
|
<library logical="display">
|
||||||
|
<uri>D:\Program Files\KiCad\share\kicad\library\display.lib</uri>
|
||||||
|
</library>
|
||||||
|
<library logical="atmel">
|
||||||
|
<uri>D:\Program Files\KiCad\share\kicad\library\atmel.lib</uri>
|
||||||
|
</library>
|
||||||
|
<library logical="switches">
|
||||||
|
<uri>D:\Program Files\KiCad\share\kicad\library\switches.lib</uri>
|
||||||
|
</library>
|
||||||
|
<library logical="device">
|
||||||
|
<uri>D:\Program Files\KiCad\share\kicad\library\device.lib</uri>
|
||||||
|
</library>
|
||||||
|
</libraries>
|
||||||
|
<nets>
|
||||||
|
<net code="1" name="Net-(U5-Pad1)">
|
||||||
|
<node ref="U7" pin="1"/>
|
||||||
|
<node ref="U5" pin="1"/>
|
||||||
|
</net>
|
||||||
|
<net code="2" name="Net-(U5-Pad6)">
|
||||||
|
<node ref="U8" pin="2"/>
|
||||||
|
<node ref="U5" pin="6"/>
|
||||||
|
</net>
|
||||||
|
<net code="3" name="Net-(U5-Pad5)">
|
||||||
|
<node ref="U5" pin="5"/>
|
||||||
|
<node ref="U8" pin="1"/>
|
||||||
|
</net>
|
||||||
|
<net code="4" name="Net-(U5-Pad4)">
|
||||||
|
<node ref="U7" pin="4"/>
|
||||||
|
<node ref="U5" pin="4"/>
|
||||||
|
</net>
|
||||||
|
<net code="5" name="Net-(U5-Pad3)">
|
||||||
|
<node ref="U5" pin="3"/>
|
||||||
|
<node ref="U7" pin="3"/>
|
||||||
|
</net>
|
||||||
|
<net code="6" name="Net-(U5-Pad2)">
|
||||||
|
<node ref="U7" pin="2"/>
|
||||||
|
<node ref="U5" pin="2"/>
|
||||||
|
</net>
|
||||||
|
<net code="7" name="Net-(U2-Pad18)">
|
||||||
|
<node ref="U6" pin="3"/>
|
||||||
|
<node ref="U2" pin="18"/>
|
||||||
|
</net>
|
||||||
|
<net code="8" name="Net-(U2-Pad17)">
|
||||||
|
<node ref="U2" pin="17"/>
|
||||||
|
<node ref="U6" pin="2"/>
|
||||||
|
</net>
|
||||||
|
<net code="9" name="Net-(U2-Pad16)">
|
||||||
|
<node ref="U2" pin="16"/>
|
||||||
|
<node ref="U6" pin="1"/>
|
||||||
|
</net>
|
||||||
|
<net code="10" name="Net-(J2-Pad2)">
|
||||||
|
<node ref="U2" pin="3"/>
|
||||||
|
<node ref="J2" pin="2"/>
|
||||||
|
</net>
|
||||||
|
<net code="11" name="Net-(J2-Pad1)">
|
||||||
|
<node ref="J2" pin="1"/>
|
||||||
|
<node ref="U2" pin="2"/>
|
||||||
|
</net>
|
||||||
|
<net code="12" name="Net-(DS1-Pad6)">
|
||||||
|
<node ref="U2" pin="4"/>
|
||||||
|
<node ref="DS1" pin="6"/>
|
||||||
|
</net>
|
||||||
|
<net code="13" name="Net-(DS1-Pad15)">
|
||||||
|
<node ref="DS1" pin="15"/>
|
||||||
|
<node ref="U2" pin="15"/>
|
||||||
|
</net>
|
||||||
|
<net code="14" name="Net-(DS1-Pad14)">
|
||||||
|
<node ref="DS1" pin="14"/>
|
||||||
|
<node ref="U2" pin="13"/>
|
||||||
|
</net>
|
||||||
|
<net code="15" name="Net-(DS1-Pad13)">
|
||||||
|
<node ref="U2" pin="12"/>
|
||||||
|
<node ref="DS1" pin="13"/>
|
||||||
|
</net>
|
||||||
|
<net code="16" name="Net-(U2-Pad19)">
|
||||||
|
<node ref="U2" pin="19"/>
|
||||||
|
<node ref="U6" pin="4"/>
|
||||||
|
</net>
|
||||||
|
<net code="17" name="Net-(J5-Pad1)">
|
||||||
|
<node ref="U2" pin="25"/>
|
||||||
|
<node ref="J5" pin="1"/>
|
||||||
|
</net>
|
||||||
|
<net code="18" name="Net-(J4-Pad1)">
|
||||||
|
<node ref="J4" pin="1"/>
|
||||||
|
<node ref="U2" pin="24"/>
|
||||||
|
</net>
|
||||||
|
<net code="19" name="Net-(J3-Pad1)">
|
||||||
|
<node ref="J3" pin="1"/>
|
||||||
|
<node ref="U2" pin="23"/>
|
||||||
|
</net>
|
||||||
|
<net code="20" name="Net-(U10-Pad4)">
|
||||||
|
<node ref="U10" pin="4"/>
|
||||||
|
<node ref="U5" pin="28"/>
|
||||||
|
</net>
|
||||||
|
<net code="21" name="Net-(U10-Pad3)">
|
||||||
|
<node ref="U5" pin="27"/>
|
||||||
|
<node ref="U10" pin="3"/>
|
||||||
|
</net>
|
||||||
|
<net code="22" name="Net-(U10-Pad2)">
|
||||||
|
<node ref="U10" pin="2"/>
|
||||||
|
<node ref="U5" pin="26"/>
|
||||||
|
</net>
|
||||||
|
<net code="23" name="Net-(U2-Pad14)">
|
||||||
|
<node ref="U2" pin="14"/>
|
||||||
|
<node ref="U4" pin="2"/>
|
||||||
|
</net>
|
||||||
|
<net code="24" name="Net-(R5-Pad2)">
|
||||||
|
<node ref="SW3" pin="1"/>
|
||||||
|
<node ref="R5" pin="2"/>
|
||||||
|
</net>
|
||||||
|
<net code="25" name="Net-(R2-Pad2)">
|
||||||
|
<node ref="U2" pin="26"/>
|
||||||
|
<node ref="R2" pin="2"/>
|
||||||
|
<node ref="SW3" pin="2"/>
|
||||||
|
<node ref="SW2" pin="2"/>
|
||||||
|
<node ref="SW1" pin="2"/>
|
||||||
|
</net>
|
||||||
|
<net code="26" name="Net-(U5-Pad8)">
|
||||||
|
<node ref="U5" pin="8"/>
|
||||||
|
<node ref="U8" pin="4"/>
|
||||||
|
</net>
|
||||||
|
<net code="27" name="Net-(U5-Pad21)">
|
||||||
|
<node ref="U9" pin="1"/>
|
||||||
|
<node ref="U5" pin="21"/>
|
||||||
|
</net>
|
||||||
|
<net code="28" name="Net-(U5-Pad7)">
|
||||||
|
<node ref="U8" pin="3"/>
|
||||||
|
<node ref="U5" pin="7"/>
|
||||||
|
</net>
|
||||||
|
<net code="29" name="Net-(U10-Pad1)">
|
||||||
|
<node ref="U10" pin="1"/>
|
||||||
|
<node ref="U5" pin="25"/>
|
||||||
|
</net>
|
||||||
|
<net code="30" name="Net-(U5-Pad24)">
|
||||||
|
<node ref="U9" pin="4"/>
|
||||||
|
<node ref="U5" pin="24"/>
|
||||||
|
</net>
|
||||||
|
<net code="31" name="Net-(U5-Pad23)">
|
||||||
|
<node ref="U9" pin="3"/>
|
||||||
|
<node ref="U5" pin="23"/>
|
||||||
|
</net>
|
||||||
|
<net code="32" name="Net-(U5-Pad22)">
|
||||||
|
<node ref="U9" pin="2"/>
|
||||||
|
<node ref="U5" pin="22"/>
|
||||||
|
</net>
|
||||||
|
<net code="33" name="Net-(DS1-Pad10)">
|
||||||
|
<node ref="DS1" pin="10"/>
|
||||||
|
</net>
|
||||||
|
<net code="34" name="Net-(DS1-Pad9)">
|
||||||
|
<node ref="DS1" pin="9"/>
|
||||||
|
</net>
|
||||||
|
<net code="35" name="Net-(DS1-Pad8)">
|
||||||
|
<node ref="DS1" pin="8"/>
|
||||||
|
</net>
|
||||||
|
<net code="36" name="Net-(DS1-Pad7)">
|
||||||
|
<node ref="DS1" pin="7"/>
|
||||||
|
</net>
|
||||||
|
<net code="37" name="Net-(DS1-Pad12)">
|
||||||
|
<node ref="DS1" pin="12"/>
|
||||||
|
<node ref="U2" pin="11"/>
|
||||||
|
</net>
|
||||||
|
<net code="38" name="Net-(U5-Pad20)">
|
||||||
|
<node ref="U5" pin="20"/>
|
||||||
|
</net>
|
||||||
|
<net code="39" name="Net-(U5-Pad19)">
|
||||||
|
<node ref="U5" pin="19"/>
|
||||||
|
</net>
|
||||||
|
<net code="40" name="Net-(C1-Pad1)">
|
||||||
|
<node ref="C1" pin="1"/>
|
||||||
|
<node ref="U1" pin="1"/>
|
||||||
|
<node ref="J1" pin="1"/>
|
||||||
|
</net>
|
||||||
|
<net code="41" name="Net-(U2-Pad28)">
|
||||||
|
<node ref="U3" pin="2"/>
|
||||||
|
<node ref="U2" pin="28"/>
|
||||||
|
<node ref="U5" pin="12"/>
|
||||||
|
</net>
|
||||||
|
<net code="42" name="Net-(DS1-Pad11)">
|
||||||
|
<node ref="DS1" pin="11"/>
|
||||||
|
<node ref="U2" pin="6"/>
|
||||||
|
</net>
|
||||||
|
<net code="43" name="Net-(DS1-Pad4)">
|
||||||
|
<node ref="DS1" pin="4"/>
|
||||||
|
<node ref="U2" pin="5"/>
|
||||||
|
</net>
|
||||||
|
<net code="44" name="Net-(DS1-Pad3)">
|
||||||
|
<node ref="RV1" pin="2"/>
|
||||||
|
<node ref="DS1" pin="3"/>
|
||||||
|
</net>
|
||||||
|
<net code="45" name="Net-(U3-Pad1)">
|
||||||
|
<node ref="U3" pin="1"/>
|
||||||
|
</net>
|
||||||
|
<net code="46" name="Net-(C2-Pad1)">
|
||||||
|
<node ref="U1" pin="3"/>
|
||||||
|
<node ref="U2" pin="7"/>
|
||||||
|
<node ref="U2" pin="20"/>
|
||||||
|
<node ref="U5" pin="9"/>
|
||||||
|
<node ref="U2" pin="21"/>
|
||||||
|
<node ref="R3" pin="1"/>
|
||||||
|
<node ref="DS1" pin="2"/>
|
||||||
|
<node ref="U3" pin="4"/>
|
||||||
|
<node ref="R1" pin="1"/>
|
||||||
|
<node ref="C2" pin="1"/>
|
||||||
|
<node ref="U8" pin="5"/>
|
||||||
|
<node ref="U9" pin="5"/>
|
||||||
|
<node ref="U10" pin="5"/>
|
||||||
|
<node ref="U7" pin="5"/>
|
||||||
|
<node ref="U5" pin="18"/>
|
||||||
|
<node ref="RV1" pin="1"/>
|
||||||
|
<node ref="U4" pin="3"/>
|
||||||
|
<node ref="U6" pin="5"/>
|
||||||
|
</net>
|
||||||
|
<net code="47" name="Net-(U2-Pad27)">
|
||||||
|
<node ref="U2" pin="27"/>
|
||||||
|
<node ref="U3" pin="3"/>
|
||||||
|
<node ref="U5" pin="13"/>
|
||||||
|
</net>
|
||||||
|
<net code="48" name="Net-(JP1-Pad1)">
|
||||||
|
<node ref="U2" pin="1"/>
|
||||||
|
<node ref="JP1" pin="1"/>
|
||||||
|
<node ref="R1" pin="2"/>
|
||||||
|
</net>
|
||||||
|
<net code="49" name="Net-(C3-Pad2)">
|
||||||
|
<node ref="U2" pin="9"/>
|
||||||
|
<node ref="C3" pin="2"/>
|
||||||
|
<node ref="Y1" pin="2"/>
|
||||||
|
</net>
|
||||||
|
<net code="50" name="Net-(C4-Pad1)">
|
||||||
|
<node ref="U2" pin="10"/>
|
||||||
|
<node ref="C4" pin="1"/>
|
||||||
|
<node ref="Y1" pin="1"/>
|
||||||
|
</net>
|
||||||
|
<net code="51" name="Net-(R4-Pad2)">
|
||||||
|
<node ref="SW2" pin="1"/>
|
||||||
|
<node ref="R4" pin="2"/>
|
||||||
|
<node ref="R5" pin="1"/>
|
||||||
|
</net>
|
||||||
|
<net code="52" name="Net-(R3-Pad2)">
|
||||||
|
<node ref="R3" pin="2"/>
|
||||||
|
<node ref="SW1" pin="1"/>
|
||||||
|
<node ref="R4" pin="1"/>
|
||||||
|
</net>
|
||||||
|
<net code="53" name="Net-(C1-Pad2)">
|
||||||
|
<node ref="U5" pin="10"/>
|
||||||
|
<node ref="U6" pin="6"/>
|
||||||
|
<node ref="U5" pin="15"/>
|
||||||
|
<node ref="U4" pin="1"/>
|
||||||
|
<node ref="U5" pin="16"/>
|
||||||
|
<node ref="RV1" pin="3"/>
|
||||||
|
<node ref="DS1" pin="16"/>
|
||||||
|
<node ref="R2" pin="1"/>
|
||||||
|
<node ref="J1" pin="2"/>
|
||||||
|
<node ref="U3" pin="5"/>
|
||||||
|
<node ref="JP1" pin="2"/>
|
||||||
|
<node ref="C4" pin="2"/>
|
||||||
|
<node ref="C3" pin="1"/>
|
||||||
|
<node ref="C2" pin="2"/>
|
||||||
|
<node ref="C1" pin="2"/>
|
||||||
|
<node ref="DS1" pin="1"/>
|
||||||
|
<node ref="U5" pin="17"/>
|
||||||
|
<node ref="U10" pin="6"/>
|
||||||
|
<node ref="U9" pin="6"/>
|
||||||
|
<node ref="U8" pin="6"/>
|
||||||
|
<node ref="U7" pin="6"/>
|
||||||
|
<node ref="U1" pin="2"/>
|
||||||
|
<node ref="U2" pin="22"/>
|
||||||
|
<node ref="U2" pin="8"/>
|
||||||
|
<node ref="DS1" pin="5"/>
|
||||||
|
</net>
|
||||||
|
</nets>
|
||||||
|
</export>
|
740
circuit/plots/circuit-B.Cu.gbr
Normal file
740
circuit/plots/circuit-B.Cu.gbr
Normal file
@ -0,0 +1,740 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,4.0.7*%
|
||||||
|
%TF.CreationDate,2018-06-04T18:26:45+03:00*%
|
||||||
|
%TF.ProjectId,circuit,636972637569742E6B696361645F7063,6*%
|
||||||
|
%TF.FileFunction,Copper,L2,Bot,Signal*%
|
||||||
|
%FSLAX46Y46*%
|
||||||
|
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||||
|
G04 Created by KiCad (PCBNEW 4.0.7) date 06/04/18 18:26:45*
|
||||||
|
%MOMM*%
|
||||||
|
%LPD*%
|
||||||
|
G01*
|
||||||
|
G04 APERTURE LIST*
|
||||||
|
%ADD10C,0.100000*%
|
||||||
|
%ADD11R,1.600000X1.600000*%
|
||||||
|
%ADD12O,1.600000X1.600000*%
|
||||||
|
%ADD13R,1.700000X1.700000*%
|
||||||
|
%ADD14O,1.700000X1.700000*%
|
||||||
|
%ADD15C,1.600000*%
|
||||||
|
%ADD16R,1.800000X2.600000*%
|
||||||
|
%ADD17O,1.800000X2.600000*%
|
||||||
|
%ADD18C,3.000000*%
|
||||||
|
%ADD19O,1.510000X3.010000*%
|
||||||
|
%ADD20C,2.000000*%
|
||||||
|
%ADD21R,1.800000X1.800000*%
|
||||||
|
%ADD22O,1.800000X1.800000*%
|
||||||
|
%ADD23C,2.300000*%
|
||||||
|
%ADD24C,1.620000*%
|
||||||
|
%ADD25C,5.000000*%
|
||||||
|
%ADD26C,0.250000*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
X16256000Y-97028000D02*
|
||||||
|
X110744000Y-97028000D01*
|
||||||
|
X110744000Y-14224000D02*
|
||||||
|
X16256000Y-14224000D01*
|
||||||
|
X110744000Y-97028000D02*
|
||||||
|
X110744000Y-14224000D01*
|
||||||
|
X16256000Y-97028000D02*
|
||||||
|
X16256000Y-14224000D01*
|
||||||
|
D11*
|
||||||
|
X60960000Y-21590000D03*
|
||||||
|
D12*
|
||||||
|
X68580000Y-54610000D03*
|
||||||
|
X60960000Y-24130000D03*
|
||||||
|
X68580000Y-52070000D03*
|
||||||
|
X60960000Y-26670000D03*
|
||||||
|
X68580000Y-49530000D03*
|
||||||
|
X60960000Y-29210000D03*
|
||||||
|
X68580000Y-46990000D03*
|
||||||
|
X60960000Y-31750000D03*
|
||||||
|
X68580000Y-44450000D03*
|
||||||
|
X60960000Y-34290000D03*
|
||||||
|
X68580000Y-41910000D03*
|
||||||
|
X60960000Y-36830000D03*
|
||||||
|
X68580000Y-39370000D03*
|
||||||
|
X60960000Y-39370000D03*
|
||||||
|
X68580000Y-36830000D03*
|
||||||
|
X60960000Y-41910000D03*
|
||||||
|
X68580000Y-34290000D03*
|
||||||
|
X60960000Y-44450000D03*
|
||||||
|
X68580000Y-31750000D03*
|
||||||
|
X60960000Y-46990000D03*
|
||||||
|
X68580000Y-29210000D03*
|
||||||
|
X60960000Y-49530000D03*
|
||||||
|
X68580000Y-26670000D03*
|
||||||
|
X60960000Y-52070000D03*
|
||||||
|
X68580000Y-24130000D03*
|
||||||
|
X60960000Y-54610000D03*
|
||||||
|
X68580000Y-21590000D03*
|
||||||
|
D13*
|
||||||
|
X73152000Y-52324000D03*
|
||||||
|
D14*
|
||||||
|
X73152000Y-49784000D03*
|
||||||
|
X73152000Y-47244000D03*
|
||||||
|
X73152000Y-44704000D03*
|
||||||
|
X73152000Y-42164000D03*
|
||||||
|
X73152000Y-39624000D03*
|
||||||
|
D11*
|
||||||
|
X83820000Y-21590000D03*
|
||||||
|
D12*
|
||||||
|
X91440000Y-54610000D03*
|
||||||
|
X83820000Y-24130000D03*
|
||||||
|
X91440000Y-52070000D03*
|
||||||
|
X83820000Y-26670000D03*
|
||||||
|
X91440000Y-49530000D03*
|
||||||
|
X83820000Y-29210000D03*
|
||||||
|
X91440000Y-46990000D03*
|
||||||
|
X83820000Y-31750000D03*
|
||||||
|
X91440000Y-44450000D03*
|
||||||
|
X83820000Y-34290000D03*
|
||||||
|
X91440000Y-41910000D03*
|
||||||
|
X83820000Y-36830000D03*
|
||||||
|
X91440000Y-39370000D03*
|
||||||
|
X83820000Y-39370000D03*
|
||||||
|
X91440000Y-36830000D03*
|
||||||
|
X83820000Y-41910000D03*
|
||||||
|
X91440000Y-34290000D03*
|
||||||
|
X83820000Y-44450000D03*
|
||||||
|
X91440000Y-31750000D03*
|
||||||
|
X83820000Y-46990000D03*
|
||||||
|
X91440000Y-29210000D03*
|
||||||
|
X83820000Y-49530000D03*
|
||||||
|
X91440000Y-26670000D03*
|
||||||
|
X83820000Y-52070000D03*
|
||||||
|
X91440000Y-24130000D03*
|
||||||
|
X83820000Y-54610000D03*
|
||||||
|
X91440000Y-21590000D03*
|
||||||
|
D11*
|
||||||
|
X25400000Y-38100000D03*
|
||||||
|
D15*
|
||||||
|
X27900000Y-38100000D03*
|
||||||
|
D11*
|
||||||
|
X33020000Y-38100000D03*
|
||||||
|
D15*
|
||||||
|
X35520000Y-38100000D03*
|
||||||
|
X46990000Y-39370000D03*
|
||||||
|
X49490000Y-39370000D03*
|
||||||
|
X49530000Y-46990000D03*
|
||||||
|
X47030000Y-46990000D03*
|
||||||
|
D16*
|
||||||
|
X30480000Y-87630000D03*
|
||||||
|
D17*
|
||||||
|
X33020000Y-87630000D03*
|
||||||
|
X35560000Y-87630000D03*
|
||||||
|
X38100000Y-87630000D03*
|
||||||
|
X40640000Y-87630000D03*
|
||||||
|
X43180000Y-87630000D03*
|
||||||
|
X45720000Y-87630000D03*
|
||||||
|
X48260000Y-87630000D03*
|
||||||
|
X50800000Y-87630000D03*
|
||||||
|
X53340000Y-87630000D03*
|
||||||
|
X55880000Y-87630000D03*
|
||||||
|
X58420000Y-87630000D03*
|
||||||
|
X60960000Y-87630000D03*
|
||||||
|
X63500000Y-87630000D03*
|
||||||
|
X66040000Y-87630000D03*
|
||||||
|
X68580000Y-87630000D03*
|
||||||
|
D18*
|
||||||
|
X24980900Y-87630000D03*
|
||||||
|
X24980900Y-118630700D03*
|
||||||
|
X99979480Y-118630700D03*
|
||||||
|
X99980000Y-87630000D03*
|
||||||
|
D19*
|
||||||
|
X27940000Y-22860000D03*
|
||||||
|
X30480000Y-22860000D03*
|
||||||
|
X48260000Y-22860000D03*
|
||||||
|
X50800000Y-22860000D03*
|
||||||
|
X50800000Y-55880000D03*
|
||||||
|
X53340000Y-55880000D03*
|
||||||
|
D15*
|
||||||
|
X44450000Y-63500000D03*
|
||||||
|
D12*
|
||||||
|
X44450000Y-50800000D03*
|
||||||
|
D15*
|
||||||
|
X39370000Y-50800000D03*
|
||||||
|
D12*
|
||||||
|
X39370000Y-63500000D03*
|
||||||
|
D15*
|
||||||
|
X27940000Y-68580000D03*
|
||||||
|
D12*
|
||||||
|
X40640000Y-68580000D03*
|
||||||
|
D15*
|
||||||
|
X43180000Y-68580000D03*
|
||||||
|
D12*
|
||||||
|
X55880000Y-68580000D03*
|
||||||
|
D15*
|
||||||
|
X58420000Y-68580000D03*
|
||||||
|
D12*
|
||||||
|
X71120000Y-68580000D03*
|
||||||
|
D20*
|
||||||
|
X31750000Y-80700000D03*
|
||||||
|
X31750000Y-76200000D03*
|
||||||
|
X38250000Y-80700000D03*
|
||||||
|
X38250000Y-76200000D03*
|
||||||
|
X46990000Y-80700000D03*
|
||||||
|
X46990000Y-76200000D03*
|
||||||
|
X53490000Y-80700000D03*
|
||||||
|
X53490000Y-76200000D03*
|
||||||
|
X62230000Y-80700000D03*
|
||||||
|
X62230000Y-76200000D03*
|
||||||
|
X68730000Y-80700000D03*
|
||||||
|
X68730000Y-76200000D03*
|
||||||
|
D21*
|
||||||
|
X27940000Y-30480000D03*
|
||||||
|
D22*
|
||||||
|
X30480000Y-30480000D03*
|
||||||
|
X33020000Y-30480000D03*
|
||||||
|
D23*
|
||||||
|
X54610000Y-45720000D03*
|
||||||
|
X54610000Y-40820000D03*
|
||||||
|
D24*
|
||||||
|
X30480000Y-50880000D03*
|
||||||
|
X35480000Y-53380000D03*
|
||||||
|
X30480000Y-55880000D03*
|
||||||
|
D25*
|
||||||
|
X19304000Y-17272000D03*
|
||||||
|
X107696000Y-17272000D03*
|
||||||
|
X19304000Y-93980000D03*
|
||||||
|
X107696000Y-93980000D03*
|
||||||
|
D13*
|
||||||
|
X75692000Y-21844000D03*
|
||||||
|
D14*
|
||||||
|
X75692000Y-24384000D03*
|
||||||
|
X75692000Y-26924000D03*
|
||||||
|
X75692000Y-29464000D03*
|
||||||
|
X75692000Y-32004000D03*
|
||||||
|
D13*
|
||||||
|
X25400000Y-53340000D03*
|
||||||
|
D14*
|
||||||
|
X25400000Y-55880000D03*
|
||||||
|
X25400000Y-58420000D03*
|
||||||
|
D13*
|
||||||
|
X78740000Y-21844000D03*
|
||||||
|
D14*
|
||||||
|
X78740000Y-24384000D03*
|
||||||
|
X78740000Y-26924000D03*
|
||||||
|
X78740000Y-29464000D03*
|
||||||
|
X78740000Y-32004000D03*
|
||||||
|
X78740000Y-34544000D03*
|
||||||
|
D13*
|
||||||
|
X78740000Y-39624000D03*
|
||||||
|
D14*
|
||||||
|
X78740000Y-42164000D03*
|
||||||
|
X78740000Y-44704000D03*
|
||||||
|
X78740000Y-47244000D03*
|
||||||
|
X78740000Y-49784000D03*
|
||||||
|
X78740000Y-52324000D03*
|
||||||
|
D13*
|
||||||
|
X97028000Y-51816000D03*
|
||||||
|
D14*
|
||||||
|
X97028000Y-49276000D03*
|
||||||
|
X97028000Y-46736000D03*
|
||||||
|
X97028000Y-44196000D03*
|
||||||
|
X97028000Y-41656000D03*
|
||||||
|
X97028000Y-39116000D03*
|
||||||
|
D13*
|
||||||
|
X97028000Y-34544000D03*
|
||||||
|
D14*
|
||||||
|
X97028000Y-32004000D03*
|
||||||
|
X97028000Y-29464000D03*
|
||||||
|
X97028000Y-26924000D03*
|
||||||
|
X97028000Y-24384000D03*
|
||||||
|
X97028000Y-21844000D03*
|
||||||
|
D13*
|
||||||
|
X72136000Y-35052000D03*
|
||||||
|
X72136000Y-31496000D03*
|
||||||
|
X72136000Y-27940000D03*
|
||||||
|
D26*
|
||||||
|
X25400000Y-38100000D02*
|
||||||
|
X25400000Y-33020000D01*
|
||||||
|
X25400000Y-33020000D02*
|
||||||
|
X27940000Y-30480000D01*
|
||||||
|
X27940000Y-22860000D02*
|
||||||
|
X27940000Y-30480000D01*
|
||||||
|
X101092000Y-40640000D02*
|
||||||
|
X101092000Y-23368000D01*
|
||||||
|
X99568000Y-21844000D02*
|
||||||
|
X97028000Y-21844000D01*
|
||||||
|
X101092000Y-23368000D02*
|
||||||
|
X99568000Y-21844000D01*
|
||||||
|
X91440000Y-49530000D02*
|
||||||
|
X93218000Y-49530000D01*
|
||||||
|
X99568000Y-39116000D02*
|
||||||
|
X97028000Y-39116000D01*
|
||||||
|
X101092000Y-40640000D02*
|
||||||
|
X99568000Y-39116000D01*
|
||||||
|
X101092000Y-54864000D02*
|
||||||
|
X101092000Y-40640000D01*
|
||||||
|
X100076000Y-55880000D02*
|
||||||
|
X101092000Y-54864000D01*
|
||||||
|
X94996000Y-55880000D02*
|
||||||
|
X100076000Y-55880000D01*
|
||||||
|
X93980000Y-54864000D02*
|
||||||
|
X94996000Y-55880000D01*
|
||||||
|
X93980000Y-50292000D02*
|
||||||
|
X93980000Y-54864000D01*
|
||||||
|
X93218000Y-49530000D02*
|
||||||
|
X93980000Y-50292000D01*
|
||||||
|
X75692000Y-32004000D02*
|
||||||
|
X75692000Y-33020000D01*
|
||||||
|
X77216000Y-34544000D02*
|
||||||
|
X78740000Y-34544000D01*
|
||||||
|
X75692000Y-33020000D02*
|
||||||
|
X77216000Y-34544000D01*
|
||||||
|
X78740000Y-52324000D02*
|
||||||
|
X80264000Y-52324000D01*
|
||||||
|
X81280000Y-51308000D02*
|
||||||
|
X81280000Y-43688000D01*
|
||||||
|
X80264000Y-52324000D02*
|
||||||
|
X81280000Y-51308000D01*
|
||||||
|
X78740000Y-34544000D02*
|
||||||
|
X80264000Y-34544000D01*
|
||||||
|
X80264000Y-34544000D02*
|
||||||
|
X81280000Y-35560000D01*
|
||||||
|
X81280000Y-35560000D02*
|
||||||
|
X81280000Y-43688000D01*
|
||||||
|
X82042000Y-44450000D02*
|
||||||
|
X83820000Y-44450000D01*
|
||||||
|
X81280000Y-43688000D02*
|
||||||
|
X82042000Y-44450000D01*
|
||||||
|
X73152000Y-39624000D02*
|
||||||
|
X73660000Y-39624000D01*
|
||||||
|
X73660000Y-39624000D02*
|
||||||
|
X75692000Y-37592000D01*
|
||||||
|
X75692000Y-37592000D02*
|
||||||
|
X75692000Y-32004000D01*
|
||||||
|
X68580000Y-36830000D02*
|
||||||
|
X70358000Y-36830000D01*
|
||||||
|
X70358000Y-36830000D02*
|
||||||
|
X73152000Y-39624000D01*
|
||||||
|
X68580000Y-87630000D02*
|
||||||
|
X68580000Y-88900000D01*
|
||||||
|
X68580000Y-88900000D02*
|
||||||
|
X67056000Y-90424000D01*
|
||||||
|
X42164000Y-90424000D02*
|
||||||
|
X40640000Y-88900000D01*
|
||||||
|
X67056000Y-90424000D02*
|
||||||
|
X42164000Y-90424000D01*
|
||||||
|
X40640000Y-88900000D02*
|
||||||
|
X40640000Y-87630000D01*
|
||||||
|
X39370000Y-50800000D02*
|
||||||
|
X39370000Y-50800000D01*
|
||||||
|
X38180000Y-50880000D02*
|
||||||
|
X30480000Y-50880000D01*
|
||||||
|
X39370000Y-50800000D02*
|
||||||
|
X38180000Y-50880000D01*
|
||||||
|
X47030000Y-46990000D02*
|
||||||
|
X45720000Y-46990000D01*
|
||||||
|
X41910000Y-50800000D02*
|
||||||
|
X39370000Y-50800000D01*
|
||||||
|
X45720000Y-46990000D02*
|
||||||
|
X41910000Y-50800000D01*
|
||||||
|
X47030000Y-46990000D02*
|
||||||
|
X47030000Y-48300000D01*
|
||||||
|
X53340000Y-50800000D02*
|
||||||
|
X53340000Y-55880000D01*
|
||||||
|
X52070000Y-49530000D02*
|
||||||
|
X53340000Y-50800000D01*
|
||||||
|
X48260000Y-49530000D02*
|
||||||
|
X52070000Y-49530000D01*
|
||||||
|
X47030000Y-48300000D02*
|
||||||
|
X48260000Y-49530000D01*
|
||||||
|
X46990000Y-39370000D02*
|
||||||
|
X46990000Y-46950000D01*
|
||||||
|
X46990000Y-46950000D02*
|
||||||
|
X47030000Y-46990000D01*
|
||||||
|
X30480000Y-30480000D02*
|
||||||
|
X36830000Y-24130000D01*
|
||||||
|
X64770000Y-33020000D02*
|
||||||
|
X68580000Y-36830000D01*
|
||||||
|
X64770000Y-20320000D02*
|
||||||
|
X64770000Y-33020000D01*
|
||||||
|
X63500000Y-19050000D02*
|
||||||
|
X64770000Y-20320000D01*
|
||||||
|
X41910000Y-19050000D02*
|
||||||
|
X63500000Y-19050000D01*
|
||||||
|
X36830000Y-24130000D02*
|
||||||
|
X41910000Y-19050000D01*
|
||||||
|
X30480000Y-34290000D02*
|
||||||
|
X33020000Y-34290000D01*
|
||||||
|
X34250000Y-35520000D02*
|
||||||
|
X35520000Y-38100000D01*
|
||||||
|
X33020000Y-34290000D02*
|
||||||
|
X34250000Y-35520000D01*
|
||||||
|
X27900000Y-38100000D02*
|
||||||
|
X27900000Y-36870000D01*
|
||||||
|
X30480000Y-34290000D02*
|
||||||
|
X30480000Y-30480000D01*
|
||||||
|
X27900000Y-36870000D02*
|
||||||
|
X30480000Y-34290000D01*
|
||||||
|
X30480000Y-22860000D02*
|
||||||
|
X30480000Y-30480000D01*
|
||||||
|
X73152000Y-42164000D02*
|
||||||
|
X75184000Y-42164000D01*
|
||||||
|
X75184000Y-42164000D02*
|
||||||
|
X76200000Y-43180000D01*
|
||||||
|
X76200000Y-43180000D02*
|
||||||
|
X76200000Y-49276000D01*
|
||||||
|
X76200000Y-49276000D02*
|
||||||
|
X76708000Y-49784000D01*
|
||||||
|
X76708000Y-49784000D02*
|
||||||
|
X78740000Y-49784000D01*
|
||||||
|
X83820000Y-41910000D02*
|
||||||
|
X83566000Y-41910000D01*
|
||||||
|
X83566000Y-41910000D02*
|
||||||
|
X81788000Y-40132000D01*
|
||||||
|
X80264000Y-32004000D02*
|
||||||
|
X78740000Y-32004000D01*
|
||||||
|
X81788000Y-33528000D02*
|
||||||
|
X80264000Y-32004000D01*
|
||||||
|
X81788000Y-40132000D02*
|
||||||
|
X81788000Y-33528000D01*
|
||||||
|
X75692000Y-29464000D02*
|
||||||
|
X76200000Y-29464000D01*
|
||||||
|
X76200000Y-29464000D02*
|
||||||
|
X78740000Y-32004000D01*
|
||||||
|
X68580000Y-41910000D02*
|
||||||
|
X72898000Y-41910000D01*
|
||||||
|
X72898000Y-41910000D02*
|
||||||
|
X73152000Y-42164000D01*
|
||||||
|
X27940000Y-65024000D02*
|
||||||
|
X27940000Y-58420000D01*
|
||||||
|
X25400000Y-58420000D02*
|
||||||
|
X27940000Y-58420000D01*
|
||||||
|
X27940000Y-58420000D02*
|
||||||
|
X30480000Y-55880000D01*
|
||||||
|
X38608000Y-30480000D02*
|
||||||
|
X40132000Y-32004000D01*
|
||||||
|
X23876000Y-58420000D02*
|
||||||
|
X25400000Y-58420000D01*
|
||||||
|
X22860000Y-57404000D02*
|
||||||
|
X23876000Y-58420000D01*
|
||||||
|
X22860000Y-49784000D02*
|
||||||
|
X22860000Y-57404000D01*
|
||||||
|
X24892000Y-47752000D02*
|
||||||
|
X22860000Y-49784000D01*
|
||||||
|
X37084000Y-47752000D02*
|
||||||
|
X24892000Y-47752000D01*
|
||||||
|
X40132000Y-44704000D02*
|
||||||
|
X37084000Y-47752000D01*
|
||||||
|
X40132000Y-32004000D02*
|
||||||
|
X40132000Y-44704000D01*
|
||||||
|
X44450000Y-63500000D02*
|
||||||
|
X43180000Y-64770000D01*
|
||||||
|
X29210000Y-66040000D02*
|
||||||
|
X27940000Y-64770000D01*
|
||||||
|
X41910000Y-66040000D02*
|
||||||
|
X29210000Y-66040000D01*
|
||||||
|
X43180000Y-64770000D02*
|
||||||
|
X41910000Y-66040000D01*
|
||||||
|
X27940000Y-68580000D02*
|
||||||
|
X27940000Y-82550000D01*
|
||||||
|
X31750000Y-85090000D02*
|
||||||
|
X33020000Y-86360000D01*
|
||||||
|
X30480000Y-85090000D02*
|
||||||
|
X31750000Y-85090000D01*
|
||||||
|
X27940000Y-82550000D02*
|
||||||
|
X30480000Y-85090000D01*
|
||||||
|
X33020000Y-86360000D02*
|
||||||
|
X33020000Y-87630000D01*
|
||||||
|
X27940000Y-66040000D02*
|
||||||
|
X27940000Y-68580000D01*
|
||||||
|
X29940000Y-55340000D02*
|
||||||
|
X30480000Y-55880000D01*
|
||||||
|
X68580000Y-39370000D02*
|
||||||
|
X68580000Y-41910000D01*
|
||||||
|
X60960000Y-36830000D02*
|
||||||
|
X66040000Y-36830000D01*
|
||||||
|
X66040000Y-36830000D02*
|
||||||
|
X68580000Y-39370000D01*
|
||||||
|
X33020000Y-30480000D02*
|
||||||
|
X38608000Y-30480000D01*
|
||||||
|
X38608000Y-30480000D02*
|
||||||
|
X39370000Y-30480000D01*
|
||||||
|
X39370000Y-30480000D02*
|
||||||
|
X48260000Y-30480000D01*
|
||||||
|
X57150000Y-36830000D02*
|
||||||
|
X60960000Y-36830000D01*
|
||||||
|
X50800000Y-30480000D02*
|
||||||
|
X57150000Y-36830000D01*
|
||||||
|
X48260000Y-30480000D02*
|
||||||
|
X50800000Y-30480000D01*
|
||||||
|
X33020000Y-30480000D02*
|
||||||
|
X35560000Y-30480000D01*
|
||||||
|
X34290000Y-39370000D02*
|
||||||
|
X33020000Y-38100000D01*
|
||||||
|
X35560000Y-40640000D02*
|
||||||
|
X34290000Y-39370000D01*
|
||||||
|
X38100000Y-40640000D02*
|
||||||
|
X35560000Y-40640000D01*
|
||||||
|
X38100000Y-34290000D02*
|
||||||
|
X38100000Y-40640000D01*
|
||||||
|
X35560000Y-30480000D02*
|
||||||
|
X38100000Y-34290000D01*
|
||||||
|
X27940000Y-64770000D02*
|
||||||
|
X27940000Y-65024000D01*
|
||||||
|
X27940000Y-65024000D02*
|
||||||
|
X27940000Y-66040000D01*
|
||||||
|
X54610000Y-40820000D02*
|
||||||
|
X58240000Y-40820000D01*
|
||||||
|
X59330000Y-41910000D02*
|
||||||
|
X60960000Y-41910000D01*
|
||||||
|
X58240000Y-40820000D02*
|
||||||
|
X59330000Y-41910000D01*
|
||||||
|
X49490000Y-39370000D02*
|
||||||
|
X53160000Y-39370000D01*
|
||||||
|
X53160000Y-39370000D02*
|
||||||
|
X54610000Y-40820000D01*
|
||||||
|
X54610000Y-45720000D02*
|
||||||
|
X57150000Y-45720000D01*
|
||||||
|
X58420000Y-44450000D02*
|
||||||
|
X60960000Y-44450000D01*
|
||||||
|
X57150000Y-45720000D02*
|
||||||
|
X58420000Y-44450000D01*
|
||||||
|
X49530000Y-46990000D02*
|
||||||
|
X53340000Y-46990000D01*
|
||||||
|
X53340000Y-46990000D02*
|
||||||
|
X54610000Y-45720000D01*
|
||||||
|
X48260000Y-21590000D02*
|
||||||
|
X48260000Y-22860000D01*
|
||||||
|
X49530000Y-20320000D02*
|
||||||
|
X48260000Y-21590000D01*
|
||||||
|
X52070000Y-20320000D02*
|
||||||
|
X49530000Y-20320000D01*
|
||||||
|
X53340000Y-21590000D02*
|
||||||
|
X52070000Y-20320000D01*
|
||||||
|
X53340000Y-22860000D02*
|
||||||
|
X53340000Y-21590000D01*
|
||||||
|
X54610000Y-24130000D02*
|
||||||
|
X53340000Y-22860000D01*
|
||||||
|
X60960000Y-24130000D02*
|
||||||
|
X54610000Y-24130000D01*
|
||||||
|
X50800000Y-22860000D02*
|
||||||
|
X50800000Y-25400000D01*
|
||||||
|
X52070000Y-26670000D02*
|
||||||
|
X60960000Y-26670000D01*
|
||||||
|
X50800000Y-25400000D02*
|
||||||
|
X52070000Y-26670000D01*
|
||||||
|
X68580000Y-34290000D02*
|
||||||
|
X71374000Y-34290000D01*
|
||||||
|
X71374000Y-34290000D02*
|
||||||
|
X72136000Y-35052000D01*
|
||||||
|
X68580000Y-31750000D02*
|
||||||
|
X71882000Y-31750000D01*
|
||||||
|
X71882000Y-31750000D02*
|
||||||
|
X72136000Y-31496000D01*
|
||||||
|
X68580000Y-29210000D02*
|
||||||
|
X70866000Y-29210000D01*
|
||||||
|
X70866000Y-29210000D02*
|
||||||
|
X72136000Y-27940000D01*
|
||||||
|
X44450000Y-50800000D02*
|
||||||
|
X45720000Y-50800000D01*
|
||||||
|
X48260000Y-55880000D02*
|
||||||
|
X50800000Y-55880000D01*
|
||||||
|
X48260000Y-53340000D02*
|
||||||
|
X48260000Y-55880000D01*
|
||||||
|
X45720000Y-50800000D02*
|
||||||
|
X48260000Y-53340000D01*
|
||||||
|
X68730000Y-80700000D02*
|
||||||
|
X84146000Y-80700000D01*
|
||||||
|
X67310000Y-26670000D02*
|
||||||
|
X68580000Y-26670000D01*
|
||||||
|
X66040000Y-25400000D02*
|
||||||
|
X67310000Y-26670000D01*
|
||||||
|
X66040000Y-20320000D02*
|
||||||
|
X66040000Y-25400000D01*
|
||||||
|
X68580000Y-17780000D02*
|
||||||
|
X66040000Y-20320000D01*
|
||||||
|
X102870000Y-17780000D02*
|
||||||
|
X68580000Y-17780000D01*
|
||||||
|
X104140000Y-19050000D02*
|
||||||
|
X102870000Y-17780000D01*
|
||||||
|
X104140000Y-60706000D02*
|
||||||
|
X104140000Y-19050000D01*
|
||||||
|
X84146000Y-80700000D02*
|
||||||
|
X104140000Y-60706000D01*
|
||||||
|
X62230000Y-80700000D02*
|
||||||
|
X68730000Y-80700000D01*
|
||||||
|
X46990000Y-80700000D02*
|
||||||
|
X53490000Y-80700000D01*
|
||||||
|
X31750000Y-80700000D02*
|
||||||
|
X38250000Y-80700000D01*
|
||||||
|
X53490000Y-80700000D02*
|
||||||
|
X62230000Y-80700000D01*
|
||||||
|
X38250000Y-80700000D02*
|
||||||
|
X46990000Y-80700000D01*
|
||||||
|
X31750000Y-76200000D02*
|
||||||
|
X38250000Y-76200000D01*
|
||||||
|
X40640000Y-68580000D02*
|
||||||
|
X43180000Y-68580000D01*
|
||||||
|
X40640000Y-68580000D02*
|
||||||
|
X40640000Y-71120000D01*
|
||||||
|
X38250000Y-73510000D02*
|
||||||
|
X38250000Y-76200000D01*
|
||||||
|
X40640000Y-71120000D02*
|
||||||
|
X38250000Y-73510000D01*
|
||||||
|
X46990000Y-76200000D02*
|
||||||
|
X53490000Y-76200000D01*
|
||||||
|
X55880000Y-68580000D02*
|
||||||
|
X55880000Y-71120000D01*
|
||||||
|
X53340000Y-73660000D02*
|
||||||
|
X53340000Y-76050000D01*
|
||||||
|
X55880000Y-71120000D02*
|
||||||
|
X53340000Y-73660000D01*
|
||||||
|
X53340000Y-76050000D02*
|
||||||
|
X53490000Y-76200000D01*
|
||||||
|
X55880000Y-68580000D02*
|
||||||
|
X58420000Y-68580000D01*
|
||||||
|
X68730000Y-76200000D02*
|
||||||
|
X62230000Y-76200000D01*
|
||||||
|
X71120000Y-68580000D02*
|
||||||
|
X71120000Y-71120000D01*
|
||||||
|
X68580000Y-73660000D02*
|
||||||
|
X68580000Y-76050000D01*
|
||||||
|
X71120000Y-71120000D02*
|
||||||
|
X68580000Y-73660000D01*
|
||||||
|
X68580000Y-76050000D02*
|
||||||
|
X68730000Y-76200000D01*
|
||||||
|
X68580000Y-52070000D02*
|
||||||
|
X72898000Y-52070000D01*
|
||||||
|
X72898000Y-52070000D02*
|
||||||
|
X73152000Y-52324000D01*
|
||||||
|
X68580000Y-49530000D02*
|
||||||
|
X72898000Y-49530000D01*
|
||||||
|
X72898000Y-49530000D02*
|
||||||
|
X73152000Y-49784000D01*
|
||||||
|
X68850000Y-49800000D02*
|
||||||
|
X68580000Y-49530000D01*
|
||||||
|
X68580000Y-46990000D02*
|
||||||
|
X72898000Y-46990000D01*
|
||||||
|
X72898000Y-46990000D02*
|
||||||
|
X73152000Y-47244000D01*
|
||||||
|
X68580000Y-44450000D02*
|
||||||
|
X72898000Y-44450000D01*
|
||||||
|
X72898000Y-44450000D02*
|
||||||
|
X73152000Y-44704000D01*
|
||||||
|
X68580000Y-24130000D02*
|
||||||
|
X71374000Y-24130000D01*
|
||||||
|
X74168000Y-26924000D02*
|
||||||
|
X75692000Y-26924000D01*
|
||||||
|
X71374000Y-24130000D02*
|
||||||
|
X74168000Y-26924000D01*
|
||||||
|
X68580000Y-24130000D02*
|
||||||
|
X68326000Y-24130000D01*
|
||||||
|
X68326000Y-24130000D02*
|
||||||
|
X67056000Y-22860000D01*
|
||||||
|
X85598000Y-52070000D02*
|
||||||
|
X83820000Y-52070000D01*
|
||||||
|
X87884000Y-49784000D02*
|
||||||
|
X85598000Y-52070000D01*
|
||||||
|
X87884000Y-19304000D02*
|
||||||
|
X87884000Y-49784000D01*
|
||||||
|
X86868000Y-18288000D02*
|
||||||
|
X87884000Y-19304000D01*
|
||||||
|
X69596000Y-18288000D02*
|
||||||
|
X86868000Y-18288000D01*
|
||||||
|
X67056000Y-20828000D02*
|
||||||
|
X69596000Y-18288000D01*
|
||||||
|
X67056000Y-22860000D02*
|
||||||
|
X67056000Y-20828000D01*
|
||||||
|
X25400000Y-55880000D02*
|
||||||
|
X26924000Y-55880000D01*
|
||||||
|
X59690000Y-54610000D02*
|
||||||
|
X60960000Y-54610000D01*
|
||||||
|
X58420000Y-55880000D02*
|
||||||
|
X59690000Y-54610000D01*
|
||||||
|
X58420000Y-57912000D02*
|
||||||
|
X58420000Y-55880000D01*
|
||||||
|
X55880000Y-60452000D02*
|
||||||
|
X58420000Y-57912000D01*
|
||||||
|
X39624000Y-60452000D02*
|
||||||
|
X55880000Y-60452000D01*
|
||||||
|
X33020000Y-53848000D02*
|
||||||
|
X39624000Y-60452000D01*
|
||||||
|
X28956000Y-53848000D02*
|
||||||
|
X33020000Y-53848000D01*
|
||||||
|
X26924000Y-55880000D02*
|
||||||
|
X28956000Y-53848000D01*
|
||||||
|
X24860000Y-55880000D02*
|
||||||
|
X25400000Y-55340000D01*
|
||||||
|
X68580000Y-21590000D02*
|
||||||
|
X70866000Y-21590000D01*
|
||||||
|
X73660000Y-24384000D02*
|
||||||
|
X75692000Y-24384000D01*
|
||||||
|
X70866000Y-21590000D02*
|
||||||
|
X73660000Y-24384000D01*
|
||||||
|
X68580000Y-21590000D02*
|
||||||
|
X68580000Y-20828000D01*
|
||||||
|
X68580000Y-20828000D02*
|
||||||
|
X70612000Y-18796000D01*
|
||||||
|
X86106000Y-49530000D02*
|
||||||
|
X83820000Y-49530000D01*
|
||||||
|
X87376000Y-48260000D02*
|
||||||
|
X86106000Y-49530000D01*
|
||||||
|
X87376000Y-19812000D02*
|
||||||
|
X87376000Y-48260000D01*
|
||||||
|
X86360000Y-18796000D02*
|
||||||
|
X87376000Y-19812000D01*
|
||||||
|
X85852000Y-18796000D02*
|
||||||
|
X86360000Y-18796000D01*
|
||||||
|
X70612000Y-18796000D02*
|
||||||
|
X85852000Y-18796000D01*
|
||||||
|
X83820000Y-26670000D02*
|
||||||
|
X83820000Y-26416000D01*
|
||||||
|
X83820000Y-29210000D02*
|
||||||
|
X83820000Y-28448000D01*
|
||||||
|
X83820000Y-36830000D02*
|
||||||
|
X83566000Y-36830000D01*
|
||||||
|
X91440000Y-39370000D02*
|
||||||
|
X92710000Y-39370000D01*
|
||||||
|
X93472000Y-48260000D02*
|
||||||
|
X97028000Y-51816000D01*
|
||||||
|
X93472000Y-40132000D02*
|
||||||
|
X93472000Y-48260000D01*
|
||||||
|
X92710000Y-39370000D02*
|
||||||
|
X93472000Y-40132000D01*
|
||||||
|
X83820000Y-39370000D02*
|
||||||
|
X83820000Y-38608000D01*
|
||||||
|
X91440000Y-36830000D02*
|
||||||
|
X93218000Y-36830000D01*
|
||||||
|
X93980000Y-46228000D02*
|
||||||
|
X97028000Y-49276000D01*
|
||||||
|
X93980000Y-37592000D02*
|
||||||
|
X93980000Y-46228000D01*
|
||||||
|
X93218000Y-36830000D02*
|
||||||
|
X93980000Y-37592000D01*
|
||||||
|
X91440000Y-34290000D02*
|
||||||
|
X93218000Y-34290000D01*
|
||||||
|
X94488000Y-44196000D02*
|
||||||
|
X97028000Y-46736000D01*
|
||||||
|
X94488000Y-35560000D02*
|
||||||
|
X94488000Y-44196000D01*
|
||||||
|
X93218000Y-34290000D02*
|
||||||
|
X94488000Y-35560000D01*
|
||||||
|
X91440000Y-31750000D02*
|
||||||
|
X91694000Y-31750000D01*
|
||||||
|
X91694000Y-31750000D02*
|
||||||
|
X94996000Y-35052000D01*
|
||||||
|
X94996000Y-35052000D02*
|
||||||
|
X94996000Y-42164000D01*
|
||||||
|
X94996000Y-42164000D02*
|
||||||
|
X97028000Y-44196000D01*
|
||||||
|
X91440000Y-29210000D02*
|
||||||
|
X91694000Y-29210000D01*
|
||||||
|
X91694000Y-29210000D02*
|
||||||
|
X97028000Y-34544000D01*
|
||||||
|
X91440000Y-26670000D02*
|
||||||
|
X91694000Y-26670000D01*
|
||||||
|
X91694000Y-26670000D02*
|
||||||
|
X97028000Y-32004000D01*
|
||||||
|
X91710000Y-26940000D02*
|
||||||
|
X91440000Y-26670000D01*
|
||||||
|
X91440000Y-24130000D02*
|
||||||
|
X91694000Y-24130000D01*
|
||||||
|
X91694000Y-24130000D02*
|
||||||
|
X97028000Y-29464000D01*
|
||||||
|
X91440000Y-21590000D02*
|
||||||
|
X91694000Y-21590000D01*
|
||||||
|
X91694000Y-21590000D02*
|
||||||
|
X97028000Y-26924000D01*
|
||||||
|
M02*
|
246
circuit/plots/circuit-B.Mask.gbr
Normal file
246
circuit/plots/circuit-B.Mask.gbr
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,4.0.7*%
|
||||||
|
%TF.CreationDate,2018-06-04T18:26:45+03:00*%
|
||||||
|
%TF.ProjectId,circuit,636972637569742E6B696361645F7063,6*%
|
||||||
|
%TF.FileFunction,Soldermask,Bot*%
|
||||||
|
%FSLAX46Y46*%
|
||||||
|
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||||
|
G04 Created by KiCad (PCBNEW 4.0.7) date 06/04/18 18:26:45*
|
||||||
|
%MOMM*%
|
||||||
|
%LPD*%
|
||||||
|
G01*
|
||||||
|
G04 APERTURE LIST*
|
||||||
|
%ADD10C,0.100000*%
|
||||||
|
%ADD11R,1.600000X1.600000*%
|
||||||
|
%ADD12O,1.600000X1.600000*%
|
||||||
|
%ADD13R,1.700000X1.700000*%
|
||||||
|
%ADD14O,1.700000X1.700000*%
|
||||||
|
%ADD15C,1.600000*%
|
||||||
|
%ADD16R,1.800000X2.600000*%
|
||||||
|
%ADD17O,1.800000X2.600000*%
|
||||||
|
%ADD18C,3.000000*%
|
||||||
|
%ADD19O,1.510000X3.010000*%
|
||||||
|
%ADD20C,2.000000*%
|
||||||
|
%ADD21R,1.800000X1.800000*%
|
||||||
|
%ADD22O,1.800000X1.800000*%
|
||||||
|
%ADD23C,2.300000*%
|
||||||
|
%ADD24C,1.620000*%
|
||||||
|
%ADD25C,5.000000*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
X16256000Y-97028000D02*
|
||||||
|
X110744000Y-97028000D01*
|
||||||
|
X110744000Y-14224000D02*
|
||||||
|
X16256000Y-14224000D01*
|
||||||
|
X110744000Y-97028000D02*
|
||||||
|
X110744000Y-14224000D01*
|
||||||
|
X16256000Y-97028000D02*
|
||||||
|
X16256000Y-14224000D01*
|
||||||
|
D11*
|
||||||
|
X60960000Y-21590000D03*
|
||||||
|
D12*
|
||||||
|
X68580000Y-54610000D03*
|
||||||
|
X60960000Y-24130000D03*
|
||||||
|
X68580000Y-52070000D03*
|
||||||
|
X60960000Y-26670000D03*
|
||||||
|
X68580000Y-49530000D03*
|
||||||
|
X60960000Y-29210000D03*
|
||||||
|
X68580000Y-46990000D03*
|
||||||
|
X60960000Y-31750000D03*
|
||||||
|
X68580000Y-44450000D03*
|
||||||
|
X60960000Y-34290000D03*
|
||||||
|
X68580000Y-41910000D03*
|
||||||
|
X60960000Y-36830000D03*
|
||||||
|
X68580000Y-39370000D03*
|
||||||
|
X60960000Y-39370000D03*
|
||||||
|
X68580000Y-36830000D03*
|
||||||
|
X60960000Y-41910000D03*
|
||||||
|
X68580000Y-34290000D03*
|
||||||
|
X60960000Y-44450000D03*
|
||||||
|
X68580000Y-31750000D03*
|
||||||
|
X60960000Y-46990000D03*
|
||||||
|
X68580000Y-29210000D03*
|
||||||
|
X60960000Y-49530000D03*
|
||||||
|
X68580000Y-26670000D03*
|
||||||
|
X60960000Y-52070000D03*
|
||||||
|
X68580000Y-24130000D03*
|
||||||
|
X60960000Y-54610000D03*
|
||||||
|
X68580000Y-21590000D03*
|
||||||
|
D13*
|
||||||
|
X73152000Y-52324000D03*
|
||||||
|
D14*
|
||||||
|
X73152000Y-49784000D03*
|
||||||
|
X73152000Y-47244000D03*
|
||||||
|
X73152000Y-44704000D03*
|
||||||
|
X73152000Y-42164000D03*
|
||||||
|
X73152000Y-39624000D03*
|
||||||
|
D11*
|
||||||
|
X83820000Y-21590000D03*
|
||||||
|
D12*
|
||||||
|
X91440000Y-54610000D03*
|
||||||
|
X83820000Y-24130000D03*
|
||||||
|
X91440000Y-52070000D03*
|
||||||
|
X83820000Y-26670000D03*
|
||||||
|
X91440000Y-49530000D03*
|
||||||
|
X83820000Y-29210000D03*
|
||||||
|
X91440000Y-46990000D03*
|
||||||
|
X83820000Y-31750000D03*
|
||||||
|
X91440000Y-44450000D03*
|
||||||
|
X83820000Y-34290000D03*
|
||||||
|
X91440000Y-41910000D03*
|
||||||
|
X83820000Y-36830000D03*
|
||||||
|
X91440000Y-39370000D03*
|
||||||
|
X83820000Y-39370000D03*
|
||||||
|
X91440000Y-36830000D03*
|
||||||
|
X83820000Y-41910000D03*
|
||||||
|
X91440000Y-34290000D03*
|
||||||
|
X83820000Y-44450000D03*
|
||||||
|
X91440000Y-31750000D03*
|
||||||
|
X83820000Y-46990000D03*
|
||||||
|
X91440000Y-29210000D03*
|
||||||
|
X83820000Y-49530000D03*
|
||||||
|
X91440000Y-26670000D03*
|
||||||
|
X83820000Y-52070000D03*
|
||||||
|
X91440000Y-24130000D03*
|
||||||
|
X83820000Y-54610000D03*
|
||||||
|
X91440000Y-21590000D03*
|
||||||
|
D11*
|
||||||
|
X25400000Y-38100000D03*
|
||||||
|
D15*
|
||||||
|
X27900000Y-38100000D03*
|
||||||
|
D11*
|
||||||
|
X33020000Y-38100000D03*
|
||||||
|
D15*
|
||||||
|
X35520000Y-38100000D03*
|
||||||
|
X46990000Y-39370000D03*
|
||||||
|
X49490000Y-39370000D03*
|
||||||
|
X49530000Y-46990000D03*
|
||||||
|
X47030000Y-46990000D03*
|
||||||
|
D16*
|
||||||
|
X30480000Y-87630000D03*
|
||||||
|
D17*
|
||||||
|
X33020000Y-87630000D03*
|
||||||
|
X35560000Y-87630000D03*
|
||||||
|
X38100000Y-87630000D03*
|
||||||
|
X40640000Y-87630000D03*
|
||||||
|
X43180000Y-87630000D03*
|
||||||
|
X45720000Y-87630000D03*
|
||||||
|
X48260000Y-87630000D03*
|
||||||
|
X50800000Y-87630000D03*
|
||||||
|
X53340000Y-87630000D03*
|
||||||
|
X55880000Y-87630000D03*
|
||||||
|
X58420000Y-87630000D03*
|
||||||
|
X60960000Y-87630000D03*
|
||||||
|
X63500000Y-87630000D03*
|
||||||
|
X66040000Y-87630000D03*
|
||||||
|
X68580000Y-87630000D03*
|
||||||
|
D18*
|
||||||
|
X24980900Y-87630000D03*
|
||||||
|
X24980900Y-118630700D03*
|
||||||
|
X99979480Y-118630700D03*
|
||||||
|
X99980000Y-87630000D03*
|
||||||
|
D19*
|
||||||
|
X27940000Y-22860000D03*
|
||||||
|
X30480000Y-22860000D03*
|
||||||
|
X48260000Y-22860000D03*
|
||||||
|
X50800000Y-22860000D03*
|
||||||
|
X50800000Y-55880000D03*
|
||||||
|
X53340000Y-55880000D03*
|
||||||
|
D15*
|
||||||
|
X44450000Y-63500000D03*
|
||||||
|
D12*
|
||||||
|
X44450000Y-50800000D03*
|
||||||
|
D15*
|
||||||
|
X39370000Y-50800000D03*
|
||||||
|
D12*
|
||||||
|
X39370000Y-63500000D03*
|
||||||
|
D15*
|
||||||
|
X27940000Y-68580000D03*
|
||||||
|
D12*
|
||||||
|
X40640000Y-68580000D03*
|
||||||
|
D15*
|
||||||
|
X43180000Y-68580000D03*
|
||||||
|
D12*
|
||||||
|
X55880000Y-68580000D03*
|
||||||
|
D15*
|
||||||
|
X58420000Y-68580000D03*
|
||||||
|
D12*
|
||||||
|
X71120000Y-68580000D03*
|
||||||
|
D20*
|
||||||
|
X31750000Y-80700000D03*
|
||||||
|
X31750000Y-76200000D03*
|
||||||
|
X38250000Y-80700000D03*
|
||||||
|
X38250000Y-76200000D03*
|
||||||
|
X46990000Y-80700000D03*
|
||||||
|
X46990000Y-76200000D03*
|
||||||
|
X53490000Y-80700000D03*
|
||||||
|
X53490000Y-76200000D03*
|
||||||
|
X62230000Y-80700000D03*
|
||||||
|
X62230000Y-76200000D03*
|
||||||
|
X68730000Y-80700000D03*
|
||||||
|
X68730000Y-76200000D03*
|
||||||
|
D21*
|
||||||
|
X27940000Y-30480000D03*
|
||||||
|
D22*
|
||||||
|
X30480000Y-30480000D03*
|
||||||
|
X33020000Y-30480000D03*
|
||||||
|
D23*
|
||||||
|
X54610000Y-45720000D03*
|
||||||
|
X54610000Y-40820000D03*
|
||||||
|
D24*
|
||||||
|
X30480000Y-50880000D03*
|
||||||
|
X35480000Y-53380000D03*
|
||||||
|
X30480000Y-55880000D03*
|
||||||
|
D25*
|
||||||
|
X19304000Y-17272000D03*
|
||||||
|
X107696000Y-17272000D03*
|
||||||
|
X19304000Y-93980000D03*
|
||||||
|
X107696000Y-93980000D03*
|
||||||
|
D13*
|
||||||
|
X75692000Y-21844000D03*
|
||||||
|
D14*
|
||||||
|
X75692000Y-24384000D03*
|
||||||
|
X75692000Y-26924000D03*
|
||||||
|
X75692000Y-29464000D03*
|
||||||
|
X75692000Y-32004000D03*
|
||||||
|
D13*
|
||||||
|
X25400000Y-53340000D03*
|
||||||
|
D14*
|
||||||
|
X25400000Y-55880000D03*
|
||||||
|
X25400000Y-58420000D03*
|
||||||
|
D13*
|
||||||
|
X78740000Y-21844000D03*
|
||||||
|
D14*
|
||||||
|
X78740000Y-24384000D03*
|
||||||
|
X78740000Y-26924000D03*
|
||||||
|
X78740000Y-29464000D03*
|
||||||
|
X78740000Y-32004000D03*
|
||||||
|
X78740000Y-34544000D03*
|
||||||
|
D13*
|
||||||
|
X78740000Y-39624000D03*
|
||||||
|
D14*
|
||||||
|
X78740000Y-42164000D03*
|
||||||
|
X78740000Y-44704000D03*
|
||||||
|
X78740000Y-47244000D03*
|
||||||
|
X78740000Y-49784000D03*
|
||||||
|
X78740000Y-52324000D03*
|
||||||
|
D13*
|
||||||
|
X97028000Y-51816000D03*
|
||||||
|
D14*
|
||||||
|
X97028000Y-49276000D03*
|
||||||
|
X97028000Y-46736000D03*
|
||||||
|
X97028000Y-44196000D03*
|
||||||
|
X97028000Y-41656000D03*
|
||||||
|
X97028000Y-39116000D03*
|
||||||
|
D13*
|
||||||
|
X97028000Y-34544000D03*
|
||||||
|
D14*
|
||||||
|
X97028000Y-32004000D03*
|
||||||
|
X97028000Y-29464000D03*
|
||||||
|
X97028000Y-26924000D03*
|
||||||
|
X97028000Y-24384000D03*
|
||||||
|
X97028000Y-21844000D03*
|
||||||
|
D13*
|
||||||
|
X72136000Y-35052000D03*
|
||||||
|
X72136000Y-31496000D03*
|
||||||
|
X72136000Y-27940000D03*
|
||||||
|
M02*
|
23
circuit/plots/circuit-B.SilkS.gbr
Normal file
23
circuit/plots/circuit-B.SilkS.gbr
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,4.0.7*%
|
||||||
|
%TF.CreationDate,2018-06-04T18:26:45+03:00*%
|
||||||
|
%TF.ProjectId,circuit,636972637569742E6B696361645F7063,6*%
|
||||||
|
%TF.FileFunction,Legend,Bot*%
|
||||||
|
%FSLAX46Y46*%
|
||||||
|
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||||
|
G04 Created by KiCad (PCBNEW 4.0.7) date 06/04/18 18:26:45*
|
||||||
|
%MOMM*%
|
||||||
|
%LPD*%
|
||||||
|
G01*
|
||||||
|
G04 APERTURE LIST*
|
||||||
|
%ADD10C,0.100000*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
X16256000Y-97028000D02*
|
||||||
|
X110744000Y-97028000D01*
|
||||||
|
X110744000Y-14224000D02*
|
||||||
|
X16256000Y-14224000D01*
|
||||||
|
X110744000Y-97028000D02*
|
||||||
|
X110744000Y-14224000D01*
|
||||||
|
X16256000Y-97028000D02*
|
||||||
|
X16256000Y-14224000D01*
|
||||||
|
M02*
|
23
circuit/plots/circuit-Edge.Cuts.gbr
Normal file
23
circuit/plots/circuit-Edge.Cuts.gbr
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,4.0.7*%
|
||||||
|
%TF.CreationDate,2018-06-04T18:26:45+03:00*%
|
||||||
|
%TF.ProjectId,circuit,636972637569742E6B696361645F7063,6*%
|
||||||
|
%TF.FileFunction,Profile,NP*%
|
||||||
|
%FSLAX46Y46*%
|
||||||
|
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||||
|
G04 Created by KiCad (PCBNEW 4.0.7) date 06/04/18 18:26:45*
|
||||||
|
%MOMM*%
|
||||||
|
%LPD*%
|
||||||
|
G01*
|
||||||
|
G04 APERTURE LIST*
|
||||||
|
%ADD10C,0.100000*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
X16256000Y-97028000D02*
|
||||||
|
X110744000Y-97028000D01*
|
||||||
|
X110744000Y-14224000D02*
|
||||||
|
X16256000Y-14224000D01*
|
||||||
|
X110744000Y-97028000D02*
|
||||||
|
X110744000Y-14224000D01*
|
||||||
|
X16256000Y-97028000D02*
|
||||||
|
X16256000Y-14224000D01*
|
||||||
|
M02*
|
560
circuit/plots/circuit-F.Cu.gbr
Normal file
560
circuit/plots/circuit-F.Cu.gbr
Normal file
@ -0,0 +1,560 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,4.0.7*%
|
||||||
|
%TF.CreationDate,2018-06-04T18:26:45+03:00*%
|
||||||
|
%TF.ProjectId,circuit,636972637569742E6B696361645F7063,6*%
|
||||||
|
%TF.FileFunction,Copper,L1,Top,Signal*%
|
||||||
|
%FSLAX46Y46*%
|
||||||
|
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||||
|
G04 Created by KiCad (PCBNEW 4.0.7) date 06/04/18 18:26:45*
|
||||||
|
%MOMM*%
|
||||||
|
%LPD*%
|
||||||
|
G01*
|
||||||
|
G04 APERTURE LIST*
|
||||||
|
%ADD10C,0.100000*%
|
||||||
|
%ADD11R,1.600000X1.600000*%
|
||||||
|
%ADD12O,1.600000X1.600000*%
|
||||||
|
%ADD13R,1.700000X1.700000*%
|
||||||
|
%ADD14O,1.700000X1.700000*%
|
||||||
|
%ADD15C,1.600000*%
|
||||||
|
%ADD16R,1.800000X2.600000*%
|
||||||
|
%ADD17O,1.800000X2.600000*%
|
||||||
|
%ADD18C,3.000000*%
|
||||||
|
%ADD19O,1.510000X3.010000*%
|
||||||
|
%ADD20C,2.000000*%
|
||||||
|
%ADD21R,1.800000X1.800000*%
|
||||||
|
%ADD22O,1.800000X1.800000*%
|
||||||
|
%ADD23C,2.300000*%
|
||||||
|
%ADD24C,1.620000*%
|
||||||
|
%ADD25C,5.000000*%
|
||||||
|
%ADD26C,0.250000*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
X16256000Y-97028000D02*
|
||||||
|
X110744000Y-97028000D01*
|
||||||
|
X110744000Y-14224000D02*
|
||||||
|
X16256000Y-14224000D01*
|
||||||
|
X110744000Y-97028000D02*
|
||||||
|
X110744000Y-14224000D01*
|
||||||
|
X16256000Y-97028000D02*
|
||||||
|
X16256000Y-14224000D01*
|
||||||
|
D11*
|
||||||
|
X60960000Y-21590000D03*
|
||||||
|
D12*
|
||||||
|
X68580000Y-54610000D03*
|
||||||
|
X60960000Y-24130000D03*
|
||||||
|
X68580000Y-52070000D03*
|
||||||
|
X60960000Y-26670000D03*
|
||||||
|
X68580000Y-49530000D03*
|
||||||
|
X60960000Y-29210000D03*
|
||||||
|
X68580000Y-46990000D03*
|
||||||
|
X60960000Y-31750000D03*
|
||||||
|
X68580000Y-44450000D03*
|
||||||
|
X60960000Y-34290000D03*
|
||||||
|
X68580000Y-41910000D03*
|
||||||
|
X60960000Y-36830000D03*
|
||||||
|
X68580000Y-39370000D03*
|
||||||
|
X60960000Y-39370000D03*
|
||||||
|
X68580000Y-36830000D03*
|
||||||
|
X60960000Y-41910000D03*
|
||||||
|
X68580000Y-34290000D03*
|
||||||
|
X60960000Y-44450000D03*
|
||||||
|
X68580000Y-31750000D03*
|
||||||
|
X60960000Y-46990000D03*
|
||||||
|
X68580000Y-29210000D03*
|
||||||
|
X60960000Y-49530000D03*
|
||||||
|
X68580000Y-26670000D03*
|
||||||
|
X60960000Y-52070000D03*
|
||||||
|
X68580000Y-24130000D03*
|
||||||
|
X60960000Y-54610000D03*
|
||||||
|
X68580000Y-21590000D03*
|
||||||
|
D13*
|
||||||
|
X73152000Y-52324000D03*
|
||||||
|
D14*
|
||||||
|
X73152000Y-49784000D03*
|
||||||
|
X73152000Y-47244000D03*
|
||||||
|
X73152000Y-44704000D03*
|
||||||
|
X73152000Y-42164000D03*
|
||||||
|
X73152000Y-39624000D03*
|
||||||
|
D11*
|
||||||
|
X83820000Y-21590000D03*
|
||||||
|
D12*
|
||||||
|
X91440000Y-54610000D03*
|
||||||
|
X83820000Y-24130000D03*
|
||||||
|
X91440000Y-52070000D03*
|
||||||
|
X83820000Y-26670000D03*
|
||||||
|
X91440000Y-49530000D03*
|
||||||
|
X83820000Y-29210000D03*
|
||||||
|
X91440000Y-46990000D03*
|
||||||
|
X83820000Y-31750000D03*
|
||||||
|
X91440000Y-44450000D03*
|
||||||
|
X83820000Y-34290000D03*
|
||||||
|
X91440000Y-41910000D03*
|
||||||
|
X83820000Y-36830000D03*
|
||||||
|
X91440000Y-39370000D03*
|
||||||
|
X83820000Y-39370000D03*
|
||||||
|
X91440000Y-36830000D03*
|
||||||
|
X83820000Y-41910000D03*
|
||||||
|
X91440000Y-34290000D03*
|
||||||
|
X83820000Y-44450000D03*
|
||||||
|
X91440000Y-31750000D03*
|
||||||
|
X83820000Y-46990000D03*
|
||||||
|
X91440000Y-29210000D03*
|
||||||
|
X83820000Y-49530000D03*
|
||||||
|
X91440000Y-26670000D03*
|
||||||
|
X83820000Y-52070000D03*
|
||||||
|
X91440000Y-24130000D03*
|
||||||
|
X83820000Y-54610000D03*
|
||||||
|
X91440000Y-21590000D03*
|
||||||
|
D11*
|
||||||
|
X25400000Y-38100000D03*
|
||||||
|
D15*
|
||||||
|
X27900000Y-38100000D03*
|
||||||
|
D11*
|
||||||
|
X33020000Y-38100000D03*
|
||||||
|
D15*
|
||||||
|
X35520000Y-38100000D03*
|
||||||
|
X46990000Y-39370000D03*
|
||||||
|
X49490000Y-39370000D03*
|
||||||
|
X49530000Y-46990000D03*
|
||||||
|
X47030000Y-46990000D03*
|
||||||
|
D16*
|
||||||
|
X30480000Y-87630000D03*
|
||||||
|
D17*
|
||||||
|
X33020000Y-87630000D03*
|
||||||
|
X35560000Y-87630000D03*
|
||||||
|
X38100000Y-87630000D03*
|
||||||
|
X40640000Y-87630000D03*
|
||||||
|
X43180000Y-87630000D03*
|
||||||
|
X45720000Y-87630000D03*
|
||||||
|
X48260000Y-87630000D03*
|
||||||
|
X50800000Y-87630000D03*
|
||||||
|
X53340000Y-87630000D03*
|
||||||
|
X55880000Y-87630000D03*
|
||||||
|
X58420000Y-87630000D03*
|
||||||
|
X60960000Y-87630000D03*
|
||||||
|
X63500000Y-87630000D03*
|
||||||
|
X66040000Y-87630000D03*
|
||||||
|
X68580000Y-87630000D03*
|
||||||
|
D18*
|
||||||
|
X24980900Y-87630000D03*
|
||||||
|
X24980900Y-118630700D03*
|
||||||
|
X99979480Y-118630700D03*
|
||||||
|
X99980000Y-87630000D03*
|
||||||
|
D19*
|
||||||
|
X27940000Y-22860000D03*
|
||||||
|
X30480000Y-22860000D03*
|
||||||
|
X48260000Y-22860000D03*
|
||||||
|
X50800000Y-22860000D03*
|
||||||
|
X50800000Y-55880000D03*
|
||||||
|
X53340000Y-55880000D03*
|
||||||
|
D15*
|
||||||
|
X44450000Y-63500000D03*
|
||||||
|
D12*
|
||||||
|
X44450000Y-50800000D03*
|
||||||
|
D15*
|
||||||
|
X39370000Y-50800000D03*
|
||||||
|
D12*
|
||||||
|
X39370000Y-63500000D03*
|
||||||
|
D15*
|
||||||
|
X27940000Y-68580000D03*
|
||||||
|
D12*
|
||||||
|
X40640000Y-68580000D03*
|
||||||
|
D15*
|
||||||
|
X43180000Y-68580000D03*
|
||||||
|
D12*
|
||||||
|
X55880000Y-68580000D03*
|
||||||
|
D15*
|
||||||
|
X58420000Y-68580000D03*
|
||||||
|
D12*
|
||||||
|
X71120000Y-68580000D03*
|
||||||
|
D20*
|
||||||
|
X31750000Y-80700000D03*
|
||||||
|
X31750000Y-76200000D03*
|
||||||
|
X38250000Y-80700000D03*
|
||||||
|
X38250000Y-76200000D03*
|
||||||
|
X46990000Y-80700000D03*
|
||||||
|
X46990000Y-76200000D03*
|
||||||
|
X53490000Y-80700000D03*
|
||||||
|
X53490000Y-76200000D03*
|
||||||
|
X62230000Y-80700000D03*
|
||||||
|
X62230000Y-76200000D03*
|
||||||
|
X68730000Y-80700000D03*
|
||||||
|
X68730000Y-76200000D03*
|
||||||
|
D21*
|
||||||
|
X27940000Y-30480000D03*
|
||||||
|
D22*
|
||||||
|
X30480000Y-30480000D03*
|
||||||
|
X33020000Y-30480000D03*
|
||||||
|
D23*
|
||||||
|
X54610000Y-45720000D03*
|
||||||
|
X54610000Y-40820000D03*
|
||||||
|
D24*
|
||||||
|
X30480000Y-50880000D03*
|
||||||
|
X35480000Y-53380000D03*
|
||||||
|
X30480000Y-55880000D03*
|
||||||
|
D25*
|
||||||
|
X19304000Y-17272000D03*
|
||||||
|
X107696000Y-17272000D03*
|
||||||
|
X19304000Y-93980000D03*
|
||||||
|
X107696000Y-93980000D03*
|
||||||
|
D13*
|
||||||
|
X75692000Y-21844000D03*
|
||||||
|
D14*
|
||||||
|
X75692000Y-24384000D03*
|
||||||
|
X75692000Y-26924000D03*
|
||||||
|
X75692000Y-29464000D03*
|
||||||
|
X75692000Y-32004000D03*
|
||||||
|
D13*
|
||||||
|
X25400000Y-53340000D03*
|
||||||
|
D14*
|
||||||
|
X25400000Y-55880000D03*
|
||||||
|
X25400000Y-58420000D03*
|
||||||
|
D13*
|
||||||
|
X78740000Y-21844000D03*
|
||||||
|
D14*
|
||||||
|
X78740000Y-24384000D03*
|
||||||
|
X78740000Y-26924000D03*
|
||||||
|
X78740000Y-29464000D03*
|
||||||
|
X78740000Y-32004000D03*
|
||||||
|
X78740000Y-34544000D03*
|
||||||
|
D13*
|
||||||
|
X78740000Y-39624000D03*
|
||||||
|
D14*
|
||||||
|
X78740000Y-42164000D03*
|
||||||
|
X78740000Y-44704000D03*
|
||||||
|
X78740000Y-47244000D03*
|
||||||
|
X78740000Y-49784000D03*
|
||||||
|
X78740000Y-52324000D03*
|
||||||
|
D13*
|
||||||
|
X97028000Y-51816000D03*
|
||||||
|
D14*
|
||||||
|
X97028000Y-49276000D03*
|
||||||
|
X97028000Y-46736000D03*
|
||||||
|
X97028000Y-44196000D03*
|
||||||
|
X97028000Y-41656000D03*
|
||||||
|
X97028000Y-39116000D03*
|
||||||
|
D13*
|
||||||
|
X97028000Y-34544000D03*
|
||||||
|
D14*
|
||||||
|
X97028000Y-32004000D03*
|
||||||
|
X97028000Y-29464000D03*
|
||||||
|
X97028000Y-26924000D03*
|
||||||
|
X97028000Y-24384000D03*
|
||||||
|
X97028000Y-21844000D03*
|
||||||
|
D13*
|
||||||
|
X72136000Y-35052000D03*
|
||||||
|
X72136000Y-31496000D03*
|
||||||
|
X72136000Y-27940000D03*
|
||||||
|
D26*
|
||||||
|
X68580000Y-36830000D02*
|
||||||
|
X68580000Y-37084000D01*
|
||||||
|
X60960000Y-39370000D02*
|
||||||
|
X66040000Y-39370000D01*
|
||||||
|
X66040000Y-39370000D02*
|
||||||
|
X68580000Y-36830000D01*
|
||||||
|
X91440000Y-52070000D02*
|
||||||
|
X91440000Y-54610000D01*
|
||||||
|
X91440000Y-49530000D02*
|
||||||
|
X91440000Y-52070000D01*
|
||||||
|
X83820000Y-44450000D02*
|
||||||
|
X85090000Y-44450000D01*
|
||||||
|
X89916000Y-49276000D02*
|
||||||
|
X91186000Y-49276000D01*
|
||||||
|
X85090000Y-44450000D02*
|
||||||
|
X89916000Y-49276000D01*
|
||||||
|
X91186000Y-49276000D02*
|
||||||
|
X91440000Y-49530000D01*
|
||||||
|
X30480000Y-87630000D02*
|
||||||
|
X30480000Y-88900000D01*
|
||||||
|
X30480000Y-88900000D02*
|
||||||
|
X31750000Y-90170000D01*
|
||||||
|
X39370000Y-90170000D02*
|
||||||
|
X40640000Y-88900000D01*
|
||||||
|
X31750000Y-90170000D02*
|
||||||
|
X39370000Y-90170000D01*
|
||||||
|
X40640000Y-88900000D02*
|
||||||
|
X40640000Y-87630000D01*
|
||||||
|
X25400000Y-53340000D02*
|
||||||
|
X24130000Y-53340000D01*
|
||||||
|
X22860000Y-80010000D02*
|
||||||
|
X30480000Y-87630000D01*
|
||||||
|
X22860000Y-54610000D02*
|
||||||
|
X22860000Y-80010000D01*
|
||||||
|
X24130000Y-53340000D02*
|
||||||
|
X22860000Y-54610000D01*
|
||||||
|
X47030000Y-39410000D02*
|
||||||
|
X46990000Y-39370000D01*
|
||||||
|
X39370000Y-50800000D02*
|
||||||
|
X39410000Y-50800000D01*
|
||||||
|
X30480000Y-50880000D02*
|
||||||
|
X27860000Y-50880000D01*
|
||||||
|
X27860000Y-50880000D02*
|
||||||
|
X25400000Y-53340000D01*
|
||||||
|
X30480000Y-30480000D02*
|
||||||
|
X30480000Y-50880000D01*
|
||||||
|
X100076000Y-43180000D02*
|
||||||
|
X100076000Y-25400000D01*
|
||||||
|
X99060000Y-24384000D02*
|
||||||
|
X97028000Y-24384000D01*
|
||||||
|
X100076000Y-25400000D02*
|
||||||
|
X99060000Y-24384000D01*
|
||||||
|
X91440000Y-46990000D02*
|
||||||
|
X92710000Y-46990000D01*
|
||||||
|
X98552000Y-41656000D02*
|
||||||
|
X97028000Y-41656000D01*
|
||||||
|
X100076000Y-43180000D02*
|
||||||
|
X98552000Y-41656000D01*
|
||||||
|
X100076000Y-53848000D02*
|
||||||
|
X100076000Y-43180000D01*
|
||||||
|
X99060000Y-54864000D02*
|
||||||
|
X100076000Y-53848000D01*
|
||||||
|
X95504000Y-54864000D02*
|
||||||
|
X99060000Y-54864000D01*
|
||||||
|
X94996000Y-54356000D02*
|
||||||
|
X95504000Y-54864000D01*
|
||||||
|
X94996000Y-49276000D02*
|
||||||
|
X94996000Y-54356000D01*
|
||||||
|
X92710000Y-46990000D02*
|
||||||
|
X94996000Y-49276000D01*
|
||||||
|
X75692000Y-29464000D02*
|
||||||
|
X75184000Y-29464000D01*
|
||||||
|
X75184000Y-29464000D02*
|
||||||
|
X74168000Y-30480000D01*
|
||||||
|
X75692000Y-39624000D02*
|
||||||
|
X73152000Y-42164000D01*
|
||||||
|
X75692000Y-38608000D02*
|
||||||
|
X75692000Y-39624000D01*
|
||||||
|
X74168000Y-37084000D02*
|
||||||
|
X75692000Y-38608000D01*
|
||||||
|
X74168000Y-30480000D02*
|
||||||
|
X74168000Y-37084000D01*
|
||||||
|
X83820000Y-41910000D02*
|
||||||
|
X85090000Y-41910000D01*
|
||||||
|
X90170000Y-46990000D02*
|
||||||
|
X91440000Y-46990000D01*
|
||||||
|
X85090000Y-41910000D02*
|
||||||
|
X90170000Y-46990000D01*
|
||||||
|
X35480000Y-53380000D02*
|
||||||
|
X35480000Y-87550000D01*
|
||||||
|
X35480000Y-87550000D02*
|
||||||
|
X35560000Y-87630000D01*
|
||||||
|
X38100000Y-87630000D02*
|
||||||
|
X38100000Y-83820000D01*
|
||||||
|
X59690000Y-31750000D02*
|
||||||
|
X60960000Y-31750000D01*
|
||||||
|
X58420000Y-33020000D02*
|
||||||
|
X59690000Y-31750000D01*
|
||||||
|
X58420000Y-45720000D02*
|
||||||
|
X58420000Y-33020000D01*
|
||||||
|
X55880000Y-48260000D02*
|
||||||
|
X58420000Y-45720000D01*
|
||||||
|
X55880000Y-59690000D02*
|
||||||
|
X55880000Y-48260000D01*
|
||||||
|
X43180000Y-72390000D02*
|
||||||
|
X55880000Y-59690000D01*
|
||||||
|
X43180000Y-78740000D02*
|
||||||
|
X43180000Y-72390000D01*
|
||||||
|
X38100000Y-83820000D02*
|
||||||
|
X43180000Y-78740000D01*
|
||||||
|
X41910000Y-91440000D02*
|
||||||
|
X43180000Y-90170000D01*
|
||||||
|
X60960000Y-29210000D02*
|
||||||
|
X62230000Y-29210000D01*
|
||||||
|
X22860000Y-91440000D02*
|
||||||
|
X41910000Y-91440000D01*
|
||||||
|
X21590000Y-90170000D02*
|
||||||
|
X22860000Y-91440000D01*
|
||||||
|
X21590000Y-20320000D02*
|
||||||
|
X21590000Y-90170000D01*
|
||||||
|
X24130000Y-17780000D02*
|
||||||
|
X21590000Y-20320000D01*
|
||||||
|
X62230000Y-17780000D02*
|
||||||
|
X24130000Y-17780000D01*
|
||||||
|
X63500000Y-19050000D02*
|
||||||
|
X62230000Y-17780000D01*
|
||||||
|
X63500000Y-27940000D02*
|
||||||
|
X63500000Y-19050000D01*
|
||||||
|
X62230000Y-29210000D02*
|
||||||
|
X63500000Y-27940000D01*
|
||||||
|
X43180000Y-90170000D02*
|
||||||
|
X43180000Y-87630000D01*
|
||||||
|
X60960000Y-34290000D02*
|
||||||
|
X59690000Y-35560000D01*
|
||||||
|
X54610000Y-85090000D02*
|
||||||
|
X55880000Y-86360000D01*
|
||||||
|
X53340000Y-85090000D02*
|
||||||
|
X54610000Y-85090000D01*
|
||||||
|
X50800000Y-82550000D02*
|
||||||
|
X53340000Y-85090000D01*
|
||||||
|
X50800000Y-67310000D02*
|
||||||
|
X50800000Y-82550000D01*
|
||||||
|
X57150000Y-60960000D02*
|
||||||
|
X50800000Y-67310000D01*
|
||||||
|
X57150000Y-48260000D02*
|
||||||
|
X57150000Y-60960000D01*
|
||||||
|
X59690000Y-45720000D02*
|
||||||
|
X57150000Y-48260000D01*
|
||||||
|
X59690000Y-35560000D02*
|
||||||
|
X59690000Y-45720000D01*
|
||||||
|
X55880000Y-86360000D02*
|
||||||
|
X55880000Y-87630000D01*
|
||||||
|
X60960000Y-46990000D02*
|
||||||
|
X59690000Y-46990000D01*
|
||||||
|
X57150000Y-85090000D02*
|
||||||
|
X58420000Y-86360000D01*
|
||||||
|
X57150000Y-76200000D02*
|
||||||
|
X57150000Y-85090000D01*
|
||||||
|
X53340000Y-72390000D02*
|
||||||
|
X57150000Y-76200000D01*
|
||||||
|
X53340000Y-67310000D02*
|
||||||
|
X53340000Y-72390000D01*
|
||||||
|
X58420000Y-62230000D02*
|
||||||
|
X53340000Y-67310000D01*
|
||||||
|
X58420000Y-48260000D02*
|
||||||
|
X58420000Y-62230000D01*
|
||||||
|
X59690000Y-46990000D02*
|
||||||
|
X58420000Y-48260000D01*
|
||||||
|
X58420000Y-86360000D02*
|
||||||
|
X58420000Y-87630000D01*
|
||||||
|
X60960000Y-49530000D02*
|
||||||
|
X59690000Y-50800000D01*
|
||||||
|
X59690000Y-85090000D02*
|
||||||
|
X60960000Y-86360000D01*
|
||||||
|
X59690000Y-72390000D02*
|
||||||
|
X59690000Y-85090000D01*
|
||||||
|
X60960000Y-71120000D02*
|
||||||
|
X59690000Y-72390000D01*
|
||||||
|
X60960000Y-67310000D02*
|
||||||
|
X60960000Y-71120000D01*
|
||||||
|
X59690000Y-66040000D02*
|
||||||
|
X60960000Y-67310000D01*
|
||||||
|
X59690000Y-50800000D02*
|
||||||
|
X59690000Y-66040000D01*
|
||||||
|
X60960000Y-86360000D02*
|
||||||
|
X60960000Y-87630000D01*
|
||||||
|
X63500000Y-87630000D02*
|
||||||
|
X63500000Y-85090000D01*
|
||||||
|
X62230000Y-52070000D02*
|
||||||
|
X60960000Y-52070000D01*
|
||||||
|
X63500000Y-53340000D02*
|
||||||
|
X62230000Y-52070000D01*
|
||||||
|
X63500000Y-63500000D02*
|
||||||
|
X63500000Y-53340000D01*
|
||||||
|
X64770000Y-64770000D02*
|
||||||
|
X63500000Y-63500000D01*
|
||||||
|
X64770000Y-83820000D02*
|
||||||
|
X64770000Y-64770000D01*
|
||||||
|
X63500000Y-85090000D02*
|
||||||
|
X64770000Y-83820000D01*
|
||||||
|
X68580000Y-54610000D02*
|
||||||
|
X68580000Y-57150000D01*
|
||||||
|
X67310000Y-85090000D02*
|
||||||
|
X66040000Y-86360000D01*
|
||||||
|
X73660000Y-78740000D02*
|
||||||
|
X67310000Y-85090000D01*
|
||||||
|
X73660000Y-62230000D02*
|
||||||
|
X73660000Y-78740000D01*
|
||||||
|
X68580000Y-57150000D02*
|
||||||
|
X73660000Y-62230000D01*
|
||||||
|
X66040000Y-86360000D02*
|
||||||
|
X66040000Y-87630000D01*
|
||||||
|
X50800000Y-55880000D02*
|
||||||
|
X50800000Y-52070000D01*
|
||||||
|
X58420000Y-21590000D02*
|
||||||
|
X60960000Y-21590000D01*
|
||||||
|
X57150000Y-22860000D02*
|
||||||
|
X58420000Y-21590000D01*
|
||||||
|
X57150000Y-33020000D02*
|
||||||
|
X57150000Y-22860000D01*
|
||||||
|
X53340000Y-36830000D02*
|
||||||
|
X57150000Y-33020000D01*
|
||||||
|
X45720000Y-36830000D02*
|
||||||
|
X53340000Y-36830000D01*
|
||||||
|
X44450000Y-38100000D02*
|
||||||
|
X45720000Y-36830000D01*
|
||||||
|
X44450000Y-48260000D02*
|
||||||
|
X44450000Y-38100000D01*
|
||||||
|
X45720000Y-49530000D02*
|
||||||
|
X44450000Y-48260000D01*
|
||||||
|
X46990000Y-50800000D02*
|
||||||
|
X45720000Y-49530000D01*
|
||||||
|
X49530000Y-50800000D02*
|
||||||
|
X46990000Y-50800000D01*
|
||||||
|
X50800000Y-52070000D02*
|
||||||
|
X49530000Y-50800000D01*
|
||||||
|
X50800000Y-57150000D02*
|
||||||
|
X50800000Y-55880000D01*
|
||||||
|
X39370000Y-63500000D02*
|
||||||
|
X38100000Y-63500000D01*
|
||||||
|
X36830000Y-79280000D02*
|
||||||
|
X38250000Y-80700000D01*
|
||||||
|
X36830000Y-64770000D02*
|
||||||
|
X36830000Y-79280000D01*
|
||||||
|
X38100000Y-63500000D02*
|
||||||
|
X36830000Y-64770000D01*
|
||||||
|
X78740000Y-21844000D02*
|
||||||
|
X83566000Y-21844000D01*
|
||||||
|
X83566000Y-21844000D02*
|
||||||
|
X83820000Y-21590000D01*
|
||||||
|
X78740000Y-24384000D02*
|
||||||
|
X83566000Y-24384000D01*
|
||||||
|
X83566000Y-24384000D02*
|
||||||
|
X83820000Y-24130000D01*
|
||||||
|
X78740000Y-26924000D02*
|
||||||
|
X83566000Y-26924000D01*
|
||||||
|
X83566000Y-26924000D02*
|
||||||
|
X83820000Y-26670000D01*
|
||||||
|
X78740000Y-29464000D02*
|
||||||
|
X83566000Y-29464000D01*
|
||||||
|
X83566000Y-29464000D02*
|
||||||
|
X83820000Y-29210000D01*
|
||||||
|
X83820000Y-31750000D02*
|
||||||
|
X81534000Y-31750000D01*
|
||||||
|
X80772000Y-37592000D02*
|
||||||
|
X78740000Y-39624000D01*
|
||||||
|
X80772000Y-32512000D02*
|
||||||
|
X80772000Y-37592000D01*
|
||||||
|
X81534000Y-31750000D02*
|
||||||
|
X80772000Y-32512000D01*
|
||||||
|
X83820000Y-34290000D02*
|
||||||
|
X82042000Y-34290000D01*
|
||||||
|
X79756000Y-42164000D02*
|
||||||
|
X78740000Y-42164000D01*
|
||||||
|
X80772000Y-41148000D02*
|
||||||
|
X79756000Y-42164000D01*
|
||||||
|
X80772000Y-39624000D02*
|
||||||
|
X80772000Y-41148000D01*
|
||||||
|
X81280000Y-39116000D02*
|
||||||
|
X80772000Y-39624000D01*
|
||||||
|
X81280000Y-35052000D02*
|
||||||
|
X81280000Y-39116000D01*
|
||||||
|
X82042000Y-34290000D02*
|
||||||
|
X81280000Y-35052000D01*
|
||||||
|
X83820000Y-36830000D02*
|
||||||
|
X82550000Y-36830000D01*
|
||||||
|
X79756000Y-44704000D02*
|
||||||
|
X78740000Y-44704000D01*
|
||||||
|
X80264000Y-44196000D02*
|
||||||
|
X79756000Y-44704000D01*
|
||||||
|
X80264000Y-42672000D02*
|
||||||
|
X80264000Y-44196000D01*
|
||||||
|
X81280000Y-41656000D02*
|
||||||
|
X80264000Y-42672000D01*
|
||||||
|
X81280000Y-40132000D02*
|
||||||
|
X81280000Y-41656000D01*
|
||||||
|
X81788000Y-39624000D02*
|
||||||
|
X81280000Y-40132000D01*
|
||||||
|
X81788000Y-37592000D02*
|
||||||
|
X81788000Y-39624000D01*
|
||||||
|
X82550000Y-36830000D02*
|
||||||
|
X81788000Y-37592000D01*
|
||||||
|
X78740000Y-47244000D02*
|
||||||
|
X79756000Y-47244000D01*
|
||||||
|
X81788000Y-41148000D02*
|
||||||
|
X83566000Y-39370000D01*
|
||||||
|
X81788000Y-45212000D02*
|
||||||
|
X81788000Y-41148000D01*
|
||||||
|
X79756000Y-47244000D02*
|
||||||
|
X81788000Y-45212000D01*
|
||||||
|
X83566000Y-39370000D02*
|
||||||
|
X83820000Y-39370000D01*
|
||||||
|
M02*
|
246
circuit/plots/circuit-F.Mask.gbr
Normal file
246
circuit/plots/circuit-F.Mask.gbr
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
%TF.GenerationSoftware,KiCad,Pcbnew,4.0.7*%
|
||||||
|
%TF.CreationDate,2018-06-04T18:26:45+03:00*%
|
||||||
|
%TF.ProjectId,circuit,636972637569742E6B696361645F7063,6*%
|
||||||
|
%TF.FileFunction,Soldermask,Top*%
|
||||||
|
%FSLAX46Y46*%
|
||||||
|
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||||
|
G04 Created by KiCad (PCBNEW 4.0.7) date 06/04/18 18:26:45*
|
||||||
|
%MOMM*%
|
||||||
|
%LPD*%
|
||||||
|
G01*
|
||||||
|
G04 APERTURE LIST*
|
||||||
|
%ADD10C,0.100000*%
|
||||||
|
%ADD11R,1.600000X1.600000*%
|
||||||
|
%ADD12O,1.600000X1.600000*%
|
||||||
|
%ADD13R,1.700000X1.700000*%
|
||||||
|
%ADD14O,1.700000X1.700000*%
|
||||||
|
%ADD15C,1.600000*%
|
||||||
|
%ADD16R,1.800000X2.600000*%
|
||||||
|
%ADD17O,1.800000X2.600000*%
|
||||||
|
%ADD18C,3.000000*%
|
||||||
|
%ADD19O,1.510000X3.010000*%
|
||||||
|
%ADD20C,2.000000*%
|
||||||
|
%ADD21R,1.800000X1.800000*%
|
||||||
|
%ADD22O,1.800000X1.800000*%
|
||||||
|
%ADD23C,2.300000*%
|
||||||
|
%ADD24C,1.620000*%
|
||||||
|
%ADD25C,5.000000*%
|
||||||
|
G04 APERTURE END LIST*
|
||||||
|
D10*
|
||||||
|
X16256000Y-97028000D02*
|
||||||
|
X110744000Y-97028000D01*
|
||||||
|
X110744000Y-14224000D02*
|
||||||
|
X16256000Y-14224000D01*
|
||||||
|
X110744000Y-97028000D02*
|
||||||
|
X110744000Y-14224000D01*
|
||||||
|
X16256000Y-97028000D02*
|
||||||
|
X16256000Y-14224000D01*
|
||||||
|
D11*
|
||||||
|
X60960000Y-21590000D03*
|
||||||
|
D12*
|
||||||
|
X68580000Y-54610000D03*
|
||||||
|
X60960000Y-24130000D03*
|
||||||
|
X68580000Y-52070000D03*
|
||||||
|
X60960000Y-26670000D03*
|
||||||
|
X68580000Y-49530000D03*
|
||||||
|
X60960000Y-29210000D03*
|
||||||
|
X68580000Y-46990000D03*
|
||||||
|
X60960000Y-31750000D03*
|
||||||
|
X68580000Y-44450000D03*
|
||||||
|
X60960000Y-34290000D03*
|
||||||
|
X68580000Y-41910000D03*
|
||||||
|
X60960000Y-36830000D03*
|
||||||
|
X68580000Y-39370000D03*
|
||||||
|
X60960000Y-39370000D03*
|
||||||
|
X68580000Y-36830000D03*
|
||||||
|
X60960000Y-41910000D03*
|
||||||
|
X68580000Y-34290000D03*
|
||||||
|
X60960000Y-44450000D03*
|
||||||
|
X68580000Y-31750000D03*
|
||||||
|
X60960000Y-46990000D03*
|
||||||
|
X68580000Y-29210000D03*
|
||||||
|
X60960000Y-49530000D03*
|
||||||
|
X68580000Y-26670000D03*
|
||||||
|
X60960000Y-52070000D03*
|
||||||
|
X68580000Y-24130000D03*
|
||||||
|
X60960000Y-54610000D03*
|
||||||
|
X68580000Y-21590000D03*
|
||||||
|
D13*
|
||||||
|
X73152000Y-52324000D03*
|
||||||
|
D14*
|
||||||
|
X73152000Y-49784000D03*
|
||||||
|
X73152000Y-47244000D03*
|
||||||
|
X73152000Y-44704000D03*
|
||||||
|
X73152000Y-42164000D03*
|
||||||
|
X73152000Y-39624000D03*
|
||||||
|
D11*
|
||||||
|
X83820000Y-21590000D03*
|
||||||
|
D12*
|
||||||
|
X91440000Y-54610000D03*
|
||||||
|
X83820000Y-24130000D03*
|
||||||
|
X91440000Y-52070000D03*
|
||||||
|
X83820000Y-26670000D03*
|
||||||
|
X91440000Y-49530000D03*
|
||||||
|
X83820000Y-29210000D03*
|
||||||
|
X91440000Y-46990000D03*
|
||||||
|
X83820000Y-31750000D03*
|
||||||
|
X91440000Y-44450000D03*
|
||||||
|
X83820000Y-34290000D03*
|
||||||
|
X91440000Y-41910000D03*
|
||||||
|
X83820000Y-36830000D03*
|
||||||
|
X91440000Y-39370000D03*
|
||||||
|
X83820000Y-39370000D03*
|
||||||
|
X91440000Y-36830000D03*
|
||||||
|
X83820000Y-41910000D03*
|
||||||
|
X91440000Y-34290000D03*
|
||||||
|
X83820000Y-44450000D03*
|
||||||
|
X91440000Y-31750000D03*
|
||||||
|
X83820000Y-46990000D03*
|
||||||
|
X91440000Y-29210000D03*
|
||||||
|
X83820000Y-49530000D03*
|
||||||
|
X91440000Y-26670000D03*
|
||||||
|
X83820000Y-52070000D03*
|
||||||
|
X91440000Y-24130000D03*
|
||||||
|
X83820000Y-54610000D03*
|
||||||
|
X91440000Y-21590000D03*
|
||||||
|
D11*
|
||||||
|
X25400000Y-38100000D03*
|
||||||
|
D15*
|
||||||
|
X27900000Y-38100000D03*
|
||||||
|
D11*
|
||||||
|
X33020000Y-38100000D03*
|
||||||
|
D15*
|
||||||
|
X35520000Y-38100000D03*
|
||||||
|
X46990000Y-39370000D03*
|
||||||
|
X49490000Y-39370000D03*
|
||||||
|
X49530000Y-46990000D03*
|
||||||
|
X47030000Y-46990000D03*
|
||||||
|
D16*
|
||||||
|
X30480000Y-87630000D03*
|
||||||
|
D17*
|
||||||
|
X33020000Y-87630000D03*
|
||||||
|
X35560000Y-87630000D03*
|
||||||
|
X38100000Y-87630000D03*
|
||||||
|
X40640000Y-87630000D03*
|
||||||
|
X43180000Y-87630000D03*
|
||||||
|
X45720000Y-87630000D03*
|
||||||
|
X48260000Y-87630000D03*
|
||||||
|
X50800000Y-87630000D03*
|
||||||
|
X53340000Y-87630000D03*
|
||||||
|
X55880000Y-87630000D03*
|
||||||
|
X58420000Y-87630000D03*
|
||||||
|
X60960000Y-87630000D03*
|
||||||
|
X63500000Y-87630000D03*
|
||||||
|
X66040000Y-87630000D03*
|
||||||
|
X68580000Y-87630000D03*
|
||||||
|
D18*
|
||||||
|
X24980900Y-87630000D03*
|
||||||
|
X24980900Y-118630700D03*
|
||||||
|
X99979480Y-118630700D03*
|
||||||
|
X99980000Y-87630000D03*
|
||||||
|
D19*
|
||||||
|
X27940000Y-22860000D03*
|
||||||
|
X30480000Y-22860000D03*
|
||||||
|
X48260000Y-22860000D03*
|
||||||
|
X50800000Y-22860000D03*
|
||||||
|
X50800000Y-55880000D03*
|
||||||
|
X53340000Y-55880000D03*
|
||||||
|
D15*
|
||||||
|
X44450000Y-63500000D03*
|
||||||
|
D12*
|
||||||
|
X44450000Y-50800000D03*
|
||||||
|
D15*
|
||||||
|
X39370000Y-50800000D03*
|
||||||
|
D12*
|
||||||
|
X39370000Y-63500000D03*
|
||||||
|
D15*
|
||||||
|
X27940000Y-68580000D03*
|
||||||
|
D12*
|
||||||
|
X40640000Y-68580000D03*
|
||||||
|
D15*
|
||||||
|
X43180000Y-68580000D03*
|
||||||
|
D12*
|
||||||
|
X55880000Y-68580000D03*
|
||||||
|
D15*
|
||||||
|
X58420000Y-68580000D03*
|
||||||
|
D12*
|
||||||
|
X71120000Y-68580000D03*
|
||||||
|
D20*
|
||||||
|
X31750000Y-80700000D03*
|
||||||
|
X31750000Y-76200000D03*
|
||||||
|
X38250000Y-80700000D03*
|
||||||
|
X38250000Y-76200000D03*
|
||||||
|
X46990000Y-80700000D03*
|
||||||
|
X46990000Y-76200000D03*
|
||||||
|
X53490000Y-80700000D03*
|
||||||
|
X53490000Y-76200000D03*
|
||||||
|
X62230000Y-80700000D03*
|
||||||
|
X62230000Y-76200000D03*
|
||||||
|
X68730000Y-80700000D03*
|
||||||
|
X68730000Y-76200000D03*
|
||||||
|
D21*
|
||||||
|
X27940000Y-30480000D03*
|
||||||
|
D22*
|
||||||
|
X30480000Y-30480000D03*
|
||||||
|
X33020000Y-30480000D03*
|
||||||
|
D23*
|
||||||
|
X54610000Y-45720000D03*
|
||||||
|
X54610000Y-40820000D03*
|
||||||
|
D24*
|
||||||
|
X30480000Y-50880000D03*
|
||||||
|
X35480000Y-53380000D03*
|
||||||
|
X30480000Y-55880000D03*
|
||||||
|
D25*
|
||||||
|
X19304000Y-17272000D03*
|
||||||
|
X107696000Y-17272000D03*
|
||||||
|
X19304000Y-93980000D03*
|
||||||
|
X107696000Y-93980000D03*
|
||||||
|
D13*
|
||||||
|
X75692000Y-21844000D03*
|
||||||
|
D14*
|
||||||
|
X75692000Y-24384000D03*
|
||||||
|
X75692000Y-26924000D03*
|
||||||
|
X75692000Y-29464000D03*
|
||||||
|
X75692000Y-32004000D03*
|
||||||
|
D13*
|
||||||
|
X25400000Y-53340000D03*
|
||||||
|
D14*
|
||||||
|
X25400000Y-55880000D03*
|
||||||
|
X25400000Y-58420000D03*
|
||||||
|
D13*
|
||||||
|
X78740000Y-21844000D03*
|
||||||
|
D14*
|
||||||
|
X78740000Y-24384000D03*
|
||||||
|
X78740000Y-26924000D03*
|
||||||
|
X78740000Y-29464000D03*
|
||||||
|
X78740000Y-32004000D03*
|
||||||
|
X78740000Y-34544000D03*
|
||||||
|
D13*
|
||||||
|
X78740000Y-39624000D03*
|
||||||
|
D14*
|
||||||
|
X78740000Y-42164000D03*
|
||||||
|
X78740000Y-44704000D03*
|
||||||
|
X78740000Y-47244000D03*
|
||||||
|
X78740000Y-49784000D03*
|
||||||
|
X78740000Y-52324000D03*
|
||||||
|
D13*
|
||||||
|
X97028000Y-51816000D03*
|
||||||
|
D14*
|
||||||
|
X97028000Y-49276000D03*
|
||||||
|
X97028000Y-46736000D03*
|
||||||
|
X97028000Y-44196000D03*
|
||||||
|
X97028000Y-41656000D03*
|
||||||
|
X97028000Y-39116000D03*
|
||||||
|
D13*
|
||||||
|
X97028000Y-34544000D03*
|
||||||
|
D14*
|
||||||
|
X97028000Y-32004000D03*
|
||||||
|
X97028000Y-29464000D03*
|
||||||
|
X97028000Y-26924000D03*
|
||||||
|
X97028000Y-24384000D03*
|
||||||
|
X97028000Y-21844000D03*
|
||||||
|
D13*
|
||||||
|
X72136000Y-35052000D03*
|
||||||
|
X72136000Y-31496000D03*
|
||||||
|
X72136000Y-27940000D03*
|
||||||
|
M02*
|
41997
circuit/plots/circuit-F.SilkS.gbr
Normal file
41997
circuit/plots/circuit-F.SilkS.gbr
Normal file
File diff suppressed because it is too large
Load Diff
190
circuit/plots/circuit.drl
Normal file
190
circuit/plots/circuit.drl
Normal file
@ -0,0 +1,190 @@
|
|||||||
|
M48
|
||||||
|
;DRILL file {KiCad 4.0.7} date 06/04/18 18:26:47
|
||||||
|
;FORMAT={-:-/ absolute / inch / decimal}
|
||||||
|
FMAT,2
|
||||||
|
INCH,TZ
|
||||||
|
T1C0.031
|
||||||
|
T2C0.035
|
||||||
|
T3C0.039
|
||||||
|
T4C0.043
|
||||||
|
T5C0.047
|
||||||
|
T6C0.059
|
||||||
|
T7C0.098
|
||||||
|
%
|
||||||
|
G90
|
||||||
|
G05
|
||||||
|
M72
|
||||||
|
T1
|
||||||
|
X1.Y-1.5
|
||||||
|
X1.0984Y-1.5
|
||||||
|
X1.1Y-2.7
|
||||||
|
X1.3Y-1.5
|
||||||
|
X1.3984Y-1.5
|
||||||
|
X1.55Y-2.
|
||||||
|
X1.55Y-2.5
|
||||||
|
X1.6Y-2.7
|
||||||
|
X1.7Y-2.7
|
||||||
|
X1.75Y-2.
|
||||||
|
X1.75Y-2.5
|
||||||
|
X1.85Y-1.55
|
||||||
|
X1.8516Y-1.85
|
||||||
|
X1.9484Y-1.55
|
||||||
|
X1.95Y-1.85
|
||||||
|
X2.2Y-2.7
|
||||||
|
X2.3Y-2.7
|
||||||
|
X2.4Y-0.85
|
||||||
|
X2.4Y-0.95
|
||||||
|
X2.4Y-1.05
|
||||||
|
X2.4Y-1.15
|
||||||
|
X2.4Y-1.25
|
||||||
|
X2.4Y-1.35
|
||||||
|
X2.4Y-1.45
|
||||||
|
X2.4Y-1.55
|
||||||
|
X2.4Y-1.65
|
||||||
|
X2.4Y-1.75
|
||||||
|
X2.4Y-1.85
|
||||||
|
X2.4Y-1.95
|
||||||
|
X2.4Y-2.05
|
||||||
|
X2.4Y-2.15
|
||||||
|
X2.7Y-0.85
|
||||||
|
X2.7Y-0.95
|
||||||
|
X2.7Y-1.05
|
||||||
|
X2.7Y-1.15
|
||||||
|
X2.7Y-1.25
|
||||||
|
X2.7Y-1.35
|
||||||
|
X2.7Y-1.45
|
||||||
|
X2.7Y-1.55
|
||||||
|
X2.7Y-1.65
|
||||||
|
X2.7Y-1.75
|
||||||
|
X2.7Y-1.85
|
||||||
|
X2.7Y-1.95
|
||||||
|
X2.7Y-2.05
|
||||||
|
X2.7Y-2.15
|
||||||
|
X2.8Y-2.7
|
||||||
|
X3.3Y-0.85
|
||||||
|
X3.3Y-0.95
|
||||||
|
X3.3Y-1.05
|
||||||
|
X3.3Y-1.15
|
||||||
|
X3.3Y-1.25
|
||||||
|
X3.3Y-1.35
|
||||||
|
X3.3Y-1.45
|
||||||
|
X3.3Y-1.55
|
||||||
|
X3.3Y-1.65
|
||||||
|
X3.3Y-1.75
|
||||||
|
X3.3Y-1.85
|
||||||
|
X3.3Y-1.95
|
||||||
|
X3.3Y-2.05
|
||||||
|
X3.3Y-2.15
|
||||||
|
X3.6Y-0.85
|
||||||
|
X3.6Y-0.95
|
||||||
|
X3.6Y-1.05
|
||||||
|
X3.6Y-1.15
|
||||||
|
X3.6Y-1.25
|
||||||
|
X3.6Y-1.35
|
||||||
|
X3.6Y-1.45
|
||||||
|
X3.6Y-1.55
|
||||||
|
X3.6Y-1.65
|
||||||
|
X3.6Y-1.75
|
||||||
|
X3.6Y-1.85
|
||||||
|
X3.6Y-1.95
|
||||||
|
X3.6Y-2.05
|
||||||
|
X3.6Y-2.15
|
||||||
|
T2
|
||||||
|
X1.2Y-2.0031
|
||||||
|
X1.2Y-2.2
|
||||||
|
X1.3969Y-2.1016
|
||||||
|
T3
|
||||||
|
X1.Y-2.1
|
||||||
|
X1.Y-2.2
|
||||||
|
X1.Y-2.3
|
||||||
|
X1.1Y-0.9
|
||||||
|
X1.1Y-1.2
|
||||||
|
X1.2Y-0.9
|
||||||
|
X1.2Y-1.2
|
||||||
|
X1.3Y-1.2
|
||||||
|
X1.9Y-0.9
|
||||||
|
X2.Y-0.9
|
||||||
|
X2.Y-2.2
|
||||||
|
X2.1Y-2.2
|
||||||
|
X2.84Y-1.1
|
||||||
|
X2.84Y-1.24
|
||||||
|
X2.84Y-1.38
|
||||||
|
X2.88Y-1.56
|
||||||
|
X2.88Y-1.66
|
||||||
|
X2.88Y-1.76
|
||||||
|
X2.88Y-1.86
|
||||||
|
X2.88Y-1.96
|
||||||
|
X2.88Y-2.06
|
||||||
|
X2.98Y-0.86
|
||||||
|
X2.98Y-0.96
|
||||||
|
X2.98Y-1.06
|
||||||
|
X2.98Y-1.16
|
||||||
|
X2.98Y-1.26
|
||||||
|
X3.1Y-0.86
|
||||||
|
X3.1Y-0.96
|
||||||
|
X3.1Y-1.06
|
||||||
|
X3.1Y-1.16
|
||||||
|
X3.1Y-1.26
|
||||||
|
X3.1Y-1.36
|
||||||
|
X3.1Y-1.56
|
||||||
|
X3.1Y-1.66
|
||||||
|
X3.1Y-1.76
|
||||||
|
X3.1Y-1.86
|
||||||
|
X3.1Y-1.96
|
||||||
|
X3.1Y-2.06
|
||||||
|
X3.82Y-0.86
|
||||||
|
X3.82Y-0.96
|
||||||
|
X3.82Y-1.06
|
||||||
|
X3.82Y-1.16
|
||||||
|
X3.82Y-1.26
|
||||||
|
X3.82Y-1.36
|
||||||
|
X3.82Y-1.54
|
||||||
|
X3.82Y-1.64
|
||||||
|
X3.82Y-1.74
|
||||||
|
X3.82Y-1.84
|
||||||
|
X3.82Y-1.94
|
||||||
|
X3.82Y-2.04
|
||||||
|
T4
|
||||||
|
X1.25Y-3.
|
||||||
|
X1.25Y-3.1772
|
||||||
|
X1.5059Y-3.
|
||||||
|
X1.5059Y-3.1772
|
||||||
|
X1.85Y-3.
|
||||||
|
X1.85Y-3.1772
|
||||||
|
X2.1059Y-3.
|
||||||
|
X2.1059Y-3.1772
|
||||||
|
X2.45Y-3.
|
||||||
|
X2.45Y-3.1772
|
||||||
|
X2.7059Y-3.
|
||||||
|
X2.7059Y-3.1772
|
||||||
|
T5
|
||||||
|
X1.2Y-3.45
|
||||||
|
X1.3Y-3.45
|
||||||
|
X1.4Y-3.45
|
||||||
|
X1.5Y-3.45
|
||||||
|
X1.6Y-3.45
|
||||||
|
X1.7Y-3.45
|
||||||
|
X1.8Y-3.45
|
||||||
|
X1.9Y-3.45
|
||||||
|
X2.Y-3.45
|
||||||
|
X2.1Y-3.45
|
||||||
|
X2.2Y-3.45
|
||||||
|
X2.3Y-3.45
|
||||||
|
X2.4Y-3.45
|
||||||
|
X2.5Y-3.45
|
||||||
|
X2.6Y-3.45
|
||||||
|
X2.7Y-3.45
|
||||||
|
T6
|
||||||
|
X2.15Y-1.6071
|
||||||
|
X2.15Y-1.8
|
||||||
|
T7
|
||||||
|
X0.76Y-0.68
|
||||||
|
X0.76Y-3.7
|
||||||
|
X0.9835Y-3.45
|
||||||
|
X0.9835Y-4.6705
|
||||||
|
X3.9362Y-4.6705
|
||||||
|
X3.9362Y-3.45
|
||||||
|
X4.24Y-0.68
|
||||||
|
X4.24Y-3.7
|
||||||
|
T0
|
||||||
|
M30
|
BIN
circuit/plots/plots.zip
Normal file
BIN
circuit/plots/plots.zip
Normal file
Binary file not shown.
2464
circuit/prolife_logo.kicad_mod
Normal file
2464
circuit/prolife_logo.kicad_mod
Normal file
File diff suppressed because it is too large
Load Diff
991
circuit/systemtest_logo.kicad_mod
Normal file
991
circuit/systemtest_logo.kicad_mod
Normal file
@ -0,0 +1,991 @@
|
|||||||
|
(module LOGO (layer F.Cu)
|
||||||
|
(at 0 0)
|
||||||
|
(fp_text reference "G***" (at 0 0) (layer F.SilkS) hide
|
||||||
|
(effects (font (thickness 0.3)))
|
||||||
|
)
|
||||||
|
(fp_text value "LOGO" (at 0.75 0) (layer F.SilkS) hide
|
||||||
|
(effects (font (thickness 0.3)))
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -4.796047 4.049449) (xy -4.786873 4.070673) (xy -4.787358 4.121868) (xy -4.814530 4.169965) (xy -4.854511 4.191000) (xy -4.875017 4.170750) (xy -4.876800 4.157754) (xy -4.862687 4.112306)
|
||||||
|
(xy -4.840515 4.075204) (xy -4.812037 4.041848) (xy -4.796047 4.049449) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -4.542053 3.831008) (xy -4.503344 3.886734) (xy -4.500201 3.941951) (xy -4.527427 3.991538) (xy -4.579327 4.010950) (xy -4.638495 3.998473) (xy -4.682637 3.959923) (xy -4.705469 3.895005)
|
||||||
|
(xy -4.686689 3.840818) (xy -4.633025 3.811705) (xy -4.612317 3.810000) (xy -4.542053 3.831008) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -4.368800 4.000500) (xy -4.381500 4.013200) (xy -4.394200 4.000500) (xy -4.381500 3.987800) (xy -4.368800 4.000500) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.996266 3.795607) (xy -3.968028 3.811014) (xy -3.979233 3.828703) (xy -4.013200 3.849036) (xy -4.080635 3.880056) (xy -4.119479 3.885137) (xy -4.123712 3.865512) (xy -4.097160 3.831870)
|
||||||
|
(xy -4.036386 3.792982) (xy -3.996266 3.795607) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -4.263191 3.650336) (xy -4.226338 3.696350) (xy -4.199399 3.744829) (xy -4.203672 3.778163) (xy -4.229689 3.810650) (xy -4.267689 3.848061) (xy -4.300185 3.855207) (xy -4.350635 3.835471)
|
||||||
|
(xy -4.362450 3.829799) (xy -4.407954 3.785379) (xy -4.417720 3.726428) (xy -4.390801 3.673178) (xy -4.370470 3.658493) (xy -4.307899 3.634838) (xy -4.263191 3.650336) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.703316 3.639930) (xy -3.669357 3.658383) (xy -3.644159 3.681791) (xy -3.644579 3.698956) (xy -3.677968 3.718813) (xy -3.741455 3.746028) (xy -3.801532 3.769572) (xy -3.828268 3.769999)
|
||||||
|
(xy -3.835169 3.743843) (xy -3.835400 3.721924) (xy -3.814487 3.668603) (xy -3.764220 3.638885) (xy -3.703316 3.639930) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -4.516243 3.542133) (xy -4.508500 3.596216) (xy -4.518159 3.652857) (xy -4.554142 3.676337) (xy -4.565650 3.678416) (xy -4.609881 3.675126) (xy -4.622800 3.660561) (xy -4.611472 3.609747)
|
||||||
|
(xy -4.584893 3.556328) (xy -4.554175 3.519163) (xy -4.535874 3.513008) (xy -4.516243 3.542133) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.979493 3.471515) (xy -3.950163 3.495665) (xy -3.918227 3.555899) (xy -3.928572 3.616259) (xy -3.977751 3.658912) (xy -3.982048 3.660587) (xy -4.039579 3.665736) (xy -4.089998 3.631602)
|
||||||
|
(xy -4.132275 3.578463) (xy -4.132519 3.535478) (xy -4.100286 3.494314) (xy -4.039707 3.457649) (xy -3.979493 3.471515) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.397256 3.463174) (xy -3.352240 3.506250) (xy -3.351932 3.506823) (xy -3.340417 3.567500) (xy -3.372480 3.611762) (xy -3.441628 3.631772) (xy -3.455799 3.632200) (xy -3.518351 3.616970)
|
||||||
|
(xy -3.543687 3.580181) (xy -3.542905 3.519307) (xy -3.507979 3.475590) (xy -3.454299 3.454916) (xy -3.397256 3.463174) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -4.265104 3.321690) (xy -4.229957 3.351853) (xy -4.201633 3.410293) (xy -4.212753 3.463890) (xy -4.252362 3.501438) (xy -4.309503 3.511732) (xy -4.364874 3.489851) (xy -4.411314 3.434238)
|
||||||
|
(xy -4.413919 3.371804) (xy -4.389121 3.332480) (xy -4.330069 3.303745) (xy -4.265104 3.321690) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.690957 3.316265) (xy -3.645782 3.363149) (xy -3.637266 3.426825) (xy -3.657851 3.480048) (xy -3.710575 3.500134) (xy -3.772058 3.492397) (xy -3.807774 3.469782) (xy -3.832968 3.410264)
|
||||||
|
(xy -3.823273 3.351290) (xy -3.783785 3.311954) (xy -3.764152 3.306400) (xy -3.690957 3.316265) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.152631 3.288059) (xy -3.112151 3.311937) (xy -3.061186 3.365195) (xy -3.051568 3.422696) (xy -3.084499 3.471058) (xy -3.097131 3.478906) (xy -3.139509 3.499919) (xy -3.168017 3.499207)
|
||||||
|
(xy -3.208252 3.474012) (xy -3.220149 3.465659) (xy -3.268441 3.415663) (xy -3.266938 3.364418) (xy -3.226451 3.315288) (xy -3.187015 3.285771) (xy -3.152631 3.288059) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.862351 3.456931) (xy -2.810002 3.459609) (xy -2.805098 3.465724) (xy -2.844295 3.479638) (xy -2.844800 3.479800) (xy -2.923111 3.499943) (xy -2.960378 3.497608) (xy -2.959100 3.479800)
|
||||||
|
(xy -2.925131 3.462826) (xy -2.864714 3.456868) (xy -2.862351 3.456931) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.528053 3.301375) (xy -2.491226 3.350393) (xy -2.500646 3.391714) (xy -2.551806 3.419748) (xy -2.630978 3.429000) (xy -2.679612 3.416327) (xy -2.692400 3.377655) (xy -2.670816 3.326020)
|
||||||
|
(xy -2.619963 3.292351) (xy -2.560692 3.286324) (xy -2.528053 3.301375) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.943325 3.166780) (xy -3.920650 3.220560) (xy -3.935606 3.282653) (xy -3.951348 3.303820) (xy -3.992880 3.342946) (xy -4.026252 3.345717) (xy -4.068957 3.310755) (xy -4.085691 3.293248)
|
||||||
|
(xy -4.123645 3.229653) (xy -4.117194 3.174578) (xy -4.067658 3.138085) (xy -4.065232 3.137290) (xy -3.994547 3.134596) (xy -3.943325 3.166780) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.396710 3.151555) (xy -3.361047 3.191097) (xy -3.338670 3.236560) (xy -3.351837 3.270943) (xy -3.366177 3.286347) (xy -3.427373 3.323946) (xy -3.487401 3.310971) (xy -3.516086 3.287485)
|
||||||
|
(xy -3.552859 3.227292) (xy -3.539519 3.171828) (xy -3.519121 3.150612) (xy -3.458393 3.127918) (xy -3.396710 3.151555) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.836649 3.113318) (xy -2.833721 3.114392) (xy -2.793636 3.153189) (xy -2.775652 3.215236) (xy -2.785351 3.275745) (xy -2.794274 3.289629) (xy -2.841539 3.323294) (xy -2.900090 3.314089)
|
||||||
|
(xy -2.927350 3.299965) (xy -2.965977 3.254937) (xy -2.968644 3.198743) (xy -2.942928 3.146399) (xy -2.896405 3.112919) (xy -2.836649 3.113318) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.289031 3.110259) (xy -2.248551 3.134137) (xy -2.194766 3.186305) (xy -2.191377 3.240826) (xy -2.224315 3.287485) (xy -2.282225 3.323907) (xy -2.337934 3.310617) (xy -2.370964 3.280949)
|
||||||
|
(xy -2.407890 3.225731) (xy -2.400369 3.178980) (xy -2.362851 3.137488) (xy -2.323415 3.107971) (xy -2.289031 3.110259) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.975292 3.297748) (xy -1.966629 3.317636) (xy -1.998711 3.325414) (xy -2.033270 3.325680) (xy -2.088769 3.323223) (xy -2.098430 3.315684) (xy -2.067212 3.298102) (xy -2.062922 3.296029)
|
||||||
|
(xy -2.008032 3.281086) (xy -1.975292 3.297748) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.682750 3.114191) (xy -1.648399 3.153148) (xy -1.630615 3.205423) (xy -1.631988 3.252589) (xy -1.655107 3.276217) (xy -1.659936 3.276600) (xy -1.718915 3.285660) (xy -1.733754 3.290455)
|
||||||
|
(xy -1.777992 3.284938) (xy -1.801428 3.266276) (xy -1.824134 3.209208) (xy -1.810912 3.153579) (xy -1.772361 3.112973) (xy -1.719080 3.100971) (xy -1.682750 3.114191) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.109105 3.114201) (xy -1.067055 3.149965) (xy -1.043777 3.190431) (xy -1.048895 3.216361) (xy -1.087804 3.233124) (xy -1.149490 3.242383) (xy -1.211555 3.242750) (xy -1.251602 3.232842)
|
||||||
|
(xy -1.255246 3.229124) (xy -1.259522 3.181351) (xy -1.229830 3.133195) (xy -1.179680 3.102343) (xy -1.155700 3.098800) (xy -1.109105 3.114201) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.539750 3.088952) (xy -0.498769 3.131418) (xy -0.487088 3.158672) (xy -0.491997 3.185779) (xy -0.528124 3.198086) (xy -0.584200 3.200400) (xy -0.651822 3.196341) (xy -0.679881 3.181069)
|
||||||
|
(xy -0.681313 3.158672) (xy -0.650017 3.103479) (xy -0.595533 3.077427) (xy -0.539750 3.088952) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -4.234673 2.998269) (xy -4.226266 3.009480) (xy -4.193884 3.073848) (xy -4.205588 3.125663) (xy -4.221480 3.144520) (xy -4.269497 3.170089) (xy -4.322933 3.172316) (xy -4.353285 3.154155)
|
||||||
|
(xy -4.349485 3.121217) (xy -4.324111 3.065013) (xy -4.313850 3.047281) (xy -4.279035 2.993991) (xy -4.256816 2.979455) (xy -4.234673 2.998269) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.653579 2.996366) (xy -3.632206 3.055375) (xy -3.632200 3.056513) (xy -3.649982 3.130854) (xy -3.697465 3.167003) (xy -3.765860 3.159917) (xy -3.790950 3.147565) (xy -3.829197 3.101080)
|
||||||
|
(xy -3.833080 3.041250) (xy -3.804182 2.989735) (xy -3.778250 2.973982) (xy -3.706915 2.966605) (xy -3.653579 2.996366) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.104198 2.970091) (xy -3.062313 3.024119) (xy -3.057014 3.040944) (xy -3.056199 3.103437) (xy -3.087210 3.140852) (xy -3.138434 3.170323) (xy -3.179117 3.164035) (xy -3.225800 3.124200)
|
||||||
|
(xy -3.267946 3.072877) (xy -3.268688 3.032954) (xy -3.228262 2.986727) (xy -3.227621 2.986147) (xy -3.164305 2.955826) (xy -3.104198 2.970091) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.529627 2.977295) (xy -2.503678 3.038782) (xy -2.501900 3.063468) (xy -2.510664 3.118327) (xy -2.546116 3.141025) (xy -2.567575 3.144534) (xy -2.629120 3.136730) (xy -2.664922 3.114004)
|
||||||
|
(xy -2.665869 3.111500) (xy -2.616200 3.111500) (xy -2.603500 3.124200) (xy -2.590800 3.111500) (xy -2.603500 3.098800) (xy -2.616200 3.111500) (xy -2.665869 3.111500) (xy -2.688366 3.052068)
|
||||||
|
(xy -2.667231 2.990770) (xy -2.635250 2.961952) (xy -2.577398 2.948706) (xy -2.529627 2.977295) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.943650 2.978747) (xy -1.911554 3.022994) (xy -1.912650 3.077185) (xy -1.920424 3.092450) (xy -1.973640 3.136412) (xy -2.040376 3.140535) (xy -2.092335 3.111037) (xy -2.127967 3.065670)
|
||||||
|
(xy -2.124696 3.024942) (xy -2.100427 2.986942) (xy -2.051954 2.952593) (xy -1.995072 2.952570) (xy -1.943650 2.978747) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.397227 2.954827) (xy -1.349285 2.991715) (xy -1.347094 2.995530) (xy -1.324578 3.044555) (xy -1.330467 3.076131) (xy -1.360715 3.109685) (xy -1.415899 3.145116) (xy -1.476803 3.136631)
|
||||||
|
(xy -1.504950 3.122165) (xy -1.543512 3.074942) (xy -1.542778 3.014505) (xy -1.518920 2.976880) (xy -1.461735 2.949018) (xy -1.397227 2.954827) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.045221 3.085318) (xy 0.073263 3.102177) (xy 0.053759 3.122825) (xy 0.050088 3.125177) (xy -0.001425 3.144969) (xy -0.054331 3.148397) (xy -0.090336 3.136386) (xy -0.095262 3.117850)
|
||||||
|
(xy -0.060878 3.085017) (xy -0.000518 3.075571) (xy 0.045221 3.085318) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.802543 2.954173) (xy -0.767683 3.008385) (xy -0.765938 3.049423) (xy -0.794060 3.098631) (xy -0.848343 3.122661) (xy -0.909470 3.118976) (xy -0.958124 3.085037) (xy -0.964095 3.075465)
|
||||||
|
(xy -0.977035 3.028888) (xy -0.952694 2.985289) (xy -0.940383 2.972382) (xy -0.890307 2.930435) (xy -0.849808 2.926396) (xy -0.802543 2.954173) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.269832 2.930644) (xy -0.209059 2.962974) (xy -0.194539 3.015024) (xy -0.219257 3.070484) (xy -0.274653 3.116230) (xy -0.337156 3.118299) (xy -0.375920 3.093720) (xy -0.405648 3.036787)
|
||||||
|
(xy -0.395256 2.980811) (xy -0.353759 2.939651) (xy -0.290173 2.927164) (xy -0.269832 2.930644) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.315854 2.930286) (xy 0.369475 2.981637) (xy 0.375059 3.030744) (xy 0.332023 3.072423) (xy 0.331869 3.072506) (xy 0.254063 3.097572) (xy 0.193874 3.084995) (xy 0.164152 3.045014)
|
||||||
|
(xy 0.167219 2.982889) (xy 0.198895 2.939415) (xy 0.238788 2.905344) (xy 0.272286 2.904918) (xy 0.315854 2.930286) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.970357 2.808265) (xy -3.925182 2.855149) (xy -3.916666 2.918825) (xy -3.937251 2.972048) (xy -3.989975 2.992134) (xy -4.051458 2.984397) (xy -4.087174 2.961782) (xy -4.112368 2.902264)
|
||||||
|
(xy -4.102673 2.843290) (xy -4.063185 2.803954) (xy -4.043552 2.798400) (xy -3.970357 2.808265) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.413696 2.794120) (xy -3.376316 2.821284) (xy -3.334773 2.874111) (xy -3.335688 2.917366) (xy -3.367315 2.957285) (xy -3.425659 2.993651) (xy -3.479568 2.979847) (xy -3.520108 2.933896)
|
||||||
|
(xy -3.548685 2.863713) (xy -3.531215 2.812946) (xy -3.480065 2.786709) (xy -3.413696 2.794120) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.811517 2.796032) (xy -2.779639 2.843537) (xy -2.771719 2.900280) (xy -2.795885 2.952409) (xy -2.809143 2.964026) (xy -2.857388 2.992665) (xy -2.893068 2.985830) (xy -2.931990 2.948289)
|
||||||
|
(xy -2.965683 2.882355) (xy -2.952041 2.819877) (xy -2.914650 2.784152) (xy -2.859230 2.771620) (xy -2.811517 2.796032) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.215209 2.814447) (xy -2.193386 2.872506) (xy -2.214713 2.936581) (xy -2.224148 2.948220) (xy -2.280791 2.991252) (xy -2.331628 2.984490) (xy -2.373460 2.940748) (xy -2.403194 2.888246)
|
||||||
|
(xy -2.413000 2.854958) (xy -2.391064 2.807973) (xy -2.337955 2.779197) (xy -2.275323 2.778522) (xy -2.215209 2.814447) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.689044 2.779044) (xy -1.640860 2.810821) (xy -1.625109 2.862334) (xy -1.638542 2.917162) (xy -1.677907 2.958884) (xy -1.727200 2.971800) (xy -1.780534 2.954854) (xy -1.798320 2.941320)
|
||||||
|
(xy -1.824116 2.890682) (xy -1.825496 2.831073) (xy -1.803557 2.785846) (xy -1.790644 2.777763) (xy -1.737403 2.772313) (xy -1.689044 2.779044) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.085197 2.787733) (xy -1.052106 2.837681) (xy -1.061719 2.907261) (xy -1.062522 2.909052) (xy -1.107591 2.960590) (xy -1.172641 2.966472) (xy -1.225550 2.944365) (xy -1.265196 2.899364)
|
||||||
|
(xy -1.266081 2.845430) (xy -1.234297 2.797476) (xy -1.175941 2.770415) (xy -1.153731 2.768600) (xy -1.085197 2.787733) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.555569 2.750729) (xy -0.539750 2.758752) (xy -0.494011 2.810002) (xy -0.489003 2.868285) (xy -0.519781 2.918399) (xy -0.581398 2.945145) (xy -0.600808 2.946400) (xy -0.653408 2.932867)
|
||||||
|
(xy -0.676046 2.909783) (xy -0.683098 2.841508) (xy -0.658068 2.784150) (xy -0.611909 2.749846) (xy -0.555569 2.750729) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.004737 2.748265) (xy 0.063686 2.773050) (xy 0.093075 2.819424) (xy 0.078339 2.876715) (xy 0.064845 2.894113) (xy 0.001997 2.938993) (xy -0.056901 2.937602) (xy -0.102555 2.890512)
|
||||||
|
(xy -0.105879 2.883652) (xy -0.116780 2.814321) (xy -0.085913 2.765150) (xy -0.021476 2.747108) (xy -0.004737 2.748265) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.630479 2.756323) (xy 0.644976 2.774950) (xy 0.657249 2.833128) (xy 0.627679 2.883846) (xy 0.564913 2.914028) (xy 0.551596 2.916172) (xy 0.488750 2.906081) (xy 0.456883 2.869609)
|
||||||
|
(xy 0.445886 2.809636) (xy 0.471609 2.761345) (xy 0.520189 2.731712) (xy 0.577767 2.727713) (xy 0.630479 2.756323) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.680115 2.635957) (xy -3.653941 2.665211) (xy -3.622414 2.712986) (xy -3.624835 2.750878) (xy -3.640910 2.778598) (xy -3.693825 2.830704) (xy -3.749216 2.832341) (xy -3.792513 2.799290)
|
||||||
|
(xy -3.831156 2.732791) (xy -3.821111 2.675903) (xy -3.768917 2.635618) (xy -3.717152 2.619223) (xy -3.680115 2.635957) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.112662 2.627873) (xy -3.065596 2.667845) (xy -3.054474 2.735883) (xy -3.057891 2.753750) (xy -3.083109 2.803597) (xy -3.134875 2.819187) (xy -3.145851 2.819400) (xy -3.203844 2.813924)
|
||||||
|
(xy -3.234267 2.802466) (xy -3.246708 2.766911) (xy -3.251200 2.714050) (xy -3.239531 2.656845) (xy -3.195582 2.628840) (xy -3.185551 2.626090) (xy -3.112662 2.627873) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.532877 2.637791) (xy -2.494203 2.688843) (xy -2.483762 2.748769) (xy -2.491302 2.772526) (xy -2.536191 2.809862) (xy -2.599711 2.817391) (xy -2.657774 2.792799) (xy -2.661921 2.788920)
|
||||||
|
(xy -2.690399 2.731457) (xy -2.679433 2.672121) (xy -2.636567 2.628342) (xy -2.587161 2.616200) (xy -2.532877 2.637791) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.013804 2.621027) (xy -1.946265 2.646433) (xy -1.910451 2.694599) (xy -1.915013 2.752447) (xy -1.920392 2.762250) (xy -1.969972 2.804167) (xy -2.033073 2.814646) (xy -2.088957 2.792812)
|
||||||
|
(xy -2.107386 2.770122) (xy -2.121694 2.702606) (xy -2.096680 2.648055) (xy -2.041467 2.620999) (xy -2.013804 2.621027) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.424207 2.606528) (xy -1.365626 2.638606) (xy -1.338405 2.676078) (xy -1.342004 2.727208) (xy -1.375772 2.780395) (xy -1.424338 2.815187) (xy -1.446131 2.819400) (xy -1.501045 2.801010)
|
||||||
|
(xy -1.523727 2.781629) (xy -1.542620 2.726284) (xy -1.532192 2.662117) (xy -1.498022 2.613917) (xy -1.484280 2.606392) (xy -1.424207 2.606528) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.790834 2.625392) (xy -0.768114 2.683297) (xy -0.772348 2.730170) (xy -0.796608 2.777874) (xy -0.847187 2.793592) (xy -0.863191 2.794000) (xy -0.933186 2.777134) (xy -0.963099 2.747126)
|
||||||
|
(xy -0.972414 2.691784) (xy -0.949852 2.645526) (xy -0.895599 2.599880) (xy -0.837961 2.595377) (xy -0.790834 2.625392) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.274449 2.595200) (xy -0.225911 2.621409) (xy -0.206590 2.670902) (xy -0.214128 2.727167) (xy -0.246169 2.773693) (xy -0.300354 2.793968) (xy -0.302831 2.794000) (xy -0.358100 2.776952)
|
||||||
|
(xy -0.375920 2.763520) (xy -0.405554 2.706405) (xy -0.394614 2.649823) (xy -0.351519 2.607739) (xy -0.284687 2.594117) (xy -0.274449 2.595200) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.299468 2.576407) (xy 0.353809 2.612798) (xy 0.371241 2.665061) (xy 0.355237 2.718247) (xy 0.309270 2.757408) (xy 0.254817 2.768600) (xy 0.192307 2.754890) (xy 0.164152 2.714814)
|
||||||
|
(xy 0.167441 2.654181) (xy 0.204807 2.602001) (xy 0.260768 2.574110) (xy 0.299468 2.576407) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.905376 2.594256) (xy 0.915024 2.604252) (xy 0.934312 2.648744) (xy 0.918678 2.705852) (xy 0.873421 2.757026) (xy 0.812560 2.764766) (xy 0.751114 2.728685) (xy 0.718226 2.690791)
|
||||||
|
(xy 0.716481 2.658382) (xy 0.737493 2.614530) (xy 0.783294 2.575250) (xy 0.846820 2.568054) (xy 0.905376 2.594256) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.938726 2.513325) (xy -3.912845 2.551211) (xy -3.911600 2.563037) (xy -3.931564 2.627436) (xy -3.983499 2.659145) (xy -4.055473 2.651029) (xy -4.057448 2.650245) (xy -4.074570 2.633279)
|
||||||
|
(xy -4.066357 2.598959) (xy -4.029800 2.537267) (xy -4.018370 2.520089) (xy -3.981336 2.499960) (xy -3.938726 2.513325) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.425997 2.451977) (xy -3.377633 2.484551) (xy -3.339373 2.524471) (xy -3.339520 2.563218) (xy -3.350313 2.586151) (xy -3.398553 2.632950) (xy -3.459558 2.640414) (xy -3.514860 2.609275)
|
||||||
|
(xy -3.534879 2.578852) (xy -3.550474 2.520657) (xy -3.531225 2.477252) (xy -3.482751 2.442375) (xy -3.425997 2.451977) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.889250 2.474999) (xy -2.826081 2.482962) (xy -2.786754 2.487417) (xy -2.785963 2.487485) (xy -2.773461 2.510490) (xy -2.773263 2.559050) (xy -2.792271 2.614302) (xy -2.840546 2.635774)
|
||||||
|
(xy -2.844979 2.636341) (xy -2.906059 2.630416) (xy -2.940229 2.612211) (xy -2.965787 2.562516) (xy -2.971800 2.522433) (xy -2.965207 2.483254) (xy -2.935442 2.471308) (xy -2.889250 2.474999) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.260910 2.454501) (xy -2.214559 2.491581) (xy -2.191809 2.542551) (xy -2.204954 2.596890) (xy -2.210812 2.604718) (xy -2.266471 2.638547) (xy -2.330386 2.627352) (xy -2.370964 2.595149)
|
||||||
|
(xy -2.408514 2.537477) (xy -2.400564 2.490636) (xy -2.383044 2.472266) (xy -2.328334 2.472266) (xy -2.324847 2.487366) (xy -2.311400 2.489200) (xy -2.290493 2.479906) (xy -2.294467 2.472266)
|
||||||
|
(xy -2.324611 2.469226) (xy -2.328334 2.472266) (xy -2.383044 2.472266) (xy -2.375230 2.464073) (xy -2.318565 2.441825) (xy -2.260910 2.454501) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.676400 2.438400) (xy -1.634662 2.484048) (xy -1.627417 2.544325) (xy -1.650189 2.601329) (xy -1.698503 2.637156) (xy -1.727200 2.641600) (xy -1.780534 2.624654) (xy -1.798320 2.611120)
|
||||||
|
(xy -1.829277 2.552987) (xy -1.822245 2.493739) (xy -1.786690 2.446785) (xy -1.732077 2.425533) (xy -1.676400 2.438400) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.104364 2.431650) (xy -1.063898 2.468997) (xy -1.050099 2.523517) (xy -1.074034 2.584141) (xy -1.081148 2.592620) (xy -1.138973 2.635902) (xy -1.194136 2.629848) (xy -1.230086 2.601685)
|
||||||
|
(xy -1.266366 2.544461) (xy -1.253588 2.489156) (xy -1.221021 2.452747) (xy -1.160427 2.422544) (xy -1.104364 2.431650) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.494495 2.447783) (xy -0.482600 2.496022) (xy -0.501437 2.567712) (xy -0.550677 2.610057) (xy -0.584200 2.616200) (xy -0.637534 2.599254) (xy -0.655320 2.585720) (xy -0.685842 2.528046)
|
||||||
|
(xy -0.678411 2.469280) (xy -0.636891 2.428445) (xy -0.622357 2.423444) (xy -0.541805 2.417720) (xy -0.494495 2.447783) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.018454 2.399330) (xy 0.062911 2.437749) (xy 0.092428 2.477185) (xy 0.090140 2.511569) (xy 0.066262 2.552049) (xy 0.031115 2.596527) (xy 0.005764 2.613253) (xy -0.032658 2.604812)
|
||||||
|
(xy -0.055957 2.598920) (xy -0.102855 2.564858) (xy -0.117292 2.507879) (xy -0.095620 2.446906) (xy -0.087253 2.436579) (xy -0.032405 2.393841) (xy 0.018454 2.399330) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.634702 2.421566) (xy 0.651962 2.475178) (xy 0.639278 2.528052) (xy 0.594415 2.577935) (xy 0.534312 2.590909) (xy 0.477742 2.565964) (xy 0.456069 2.537887) (xy 0.442032 2.487707)
|
||||||
|
(xy 0.467639 2.440985) (xy 0.471812 2.436287) (xy 0.531954 2.395176) (xy 0.590475 2.392584) (xy 0.634702 2.421566) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.173693 2.401675) (xy 1.212782 2.441817) (xy 1.213080 2.499301) (xy 1.179285 2.550885) (xy 1.119085 2.587658) (xy 1.063639 2.574360) (xy 1.042560 2.554098) (xy 1.015903 2.491391)
|
||||||
|
(xy 1.030654 2.433319) (xy 1.080733 2.396426) (xy 1.102143 2.391916) (xy 1.173693 2.401675) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.654128 2.327092) (xy -3.636110 2.391489) (xy -3.637266 2.408085) (xy -3.663751 2.467607) (xy -3.713989 2.495701) (xy -3.770761 2.485993) (xy -3.794906 2.466445) (xy -3.831735 2.401031)
|
||||||
|
(xy -3.820628 2.344278) (xy -3.772653 2.307121) (xy -3.703316 2.296229) (xy -3.654128 2.327092) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.089206 2.315048) (xy -3.069122 2.348747) (xy -3.053527 2.406942) (xy -3.072776 2.450347) (xy -3.120780 2.479909) (xy -3.182832 2.489206) (xy -3.231765 2.474551) (xy -3.234267 2.472266)
|
||||||
|
(xy -3.251039 2.428050) (xy -3.248072 2.367837) (xy -3.228807 2.316920) (xy -3.211023 2.301417) (xy -3.138222 2.287446) (xy -3.089206 2.315048) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.524697 2.307840) (xy -2.494826 2.361446) (xy -2.492027 2.428943) (xy -2.498364 2.451043) (xy -2.533102 2.480845) (xy -2.590352 2.487710) (xy -2.646764 2.470542) (xy -2.661921 2.458720)
|
||||||
|
(xy -2.691818 2.400937) (xy -2.680383 2.343301) (xy -2.635021 2.300280) (xy -2.573504 2.286000) (xy -2.524697 2.307840) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.011337 2.291065) (xy -1.943580 2.316946) (xy -1.911415 2.364052) (xy -1.914539 2.417656) (xy -1.952651 2.463033) (xy -2.015298 2.484516) (xy -2.072945 2.477891) (xy -2.109636 2.432587)
|
||||||
|
(xy -2.111720 2.428118) (xy -2.123352 2.357677) (xy -2.093013 2.308048) (xy -2.028505 2.289884) (xy -2.011337 2.291065) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.399989 2.284400) (xy -1.345467 2.334183) (xy -1.336145 2.394527) (xy -1.362225 2.442073) (xy -1.424826 2.483736) (xy -1.488571 2.479968) (xy -1.518920 2.458720) (xy -1.549210 2.401336)
|
||||||
|
(xy -1.542401 2.342094) (xy -1.507760 2.294576) (xy -1.454553 2.272365) (xy -1.399989 2.284400) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.851883 2.270565) (xy -0.826577 2.280887) (xy -0.775245 2.324135) (xy -0.763834 2.377963) (xy -0.788077 2.427890) (xy -0.843705 2.459437) (xy -0.880487 2.463800) (xy -0.938473 2.442320)
|
||||||
|
(xy -0.966857 2.409905) (xy -0.981235 2.363088) (xy -0.959699 2.321026) (xy -0.943427 2.303737) (xy -0.897486 2.268676) (xy -0.851883 2.270565) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.274449 2.265000) (xy -0.227489 2.287362) (xy -0.207751 2.344746) (xy -0.207517 2.346743) (xy -0.218916 2.414895) (xy -0.261126 2.456774) (xy -0.319201 2.464699) (xy -0.375920 2.433320)
|
||||||
|
(xy -0.405554 2.376205) (xy -0.394614 2.319623) (xy -0.351519 2.277539) (xy -0.284687 2.263917) (xy -0.274449 2.265000) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.301408 2.247870) (xy 0.339575 2.282326) (xy 0.367548 2.343280) (xy 0.348457 2.402380) (xy 0.303481 2.439105) (xy 0.261983 2.459237) (xy 0.233398 2.456563) (xy 0.196850 2.436365)
|
||||||
|
(xy 0.157962 2.389793) (xy 0.161221 2.329722) (xy 0.198850 2.277236) (xy 0.254535 2.240159) (xy 0.301408 2.247870) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.870737 2.246938) (xy 0.919681 2.281156) (xy 0.939962 2.334121) (xy 0.922588 2.392177) (xy 0.909320 2.407920) (xy 0.851371 2.435316) (xy 0.783359 2.430579) (xy 0.737611 2.401518)
|
||||||
|
(xy 0.718532 2.345184) (xy 0.738653 2.288047) (xy 0.790263 2.248799) (xy 0.802122 2.245122) (xy 0.870737 2.246938) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.395581 2.251026) (xy 1.375461 2.297184) (xy 1.351012 2.331594) (xy 1.314342 2.368100) (xy 1.289827 2.373561) (xy 1.282210 2.335731) (xy 1.303945 2.287587) (xy 1.342896 2.248128)
|
||||||
|
(xy 1.377950 2.235588) (xy 1.395581 2.251026) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.432179 2.113265) (xy -3.378069 2.141202) (xy -3.346955 2.196250) (xy -3.347949 2.257422) (xy -3.359944 2.279650) (xy -3.410812 2.310383) (xy -3.472397 2.305035) (xy -3.523821 2.267306)
|
||||||
|
(xy -3.534879 2.248652) (xy -3.545910 2.179327) (xy -3.515046 2.130322) (xy -3.450224 2.112101) (xy -3.432179 2.113265) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.804826 2.121506) (xy -2.772434 2.170810) (xy -2.769793 2.230670) (xy -2.799080 2.280920) (xy -2.854505 2.309667) (xy -2.913388 2.287903) (xy -2.931886 2.271485) (xy -2.967628 2.209500)
|
||||||
|
(xy -2.961158 2.148552) (xy -2.921000 2.108200) (xy -2.857503 2.096166) (xy -2.804826 2.121506) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.289031 2.094259) (xy -2.248551 2.118137) (xy -2.202628 2.159062) (xy -2.184400 2.195871) (xy -2.204532 2.246758) (xy -2.250479 2.292556) (xy -2.298700 2.311400) (xy -2.343325 2.294745)
|
||||||
|
(xy -2.373086 2.271485) (xy -2.409297 2.214587) (xy -2.396782 2.159493) (xy -2.362851 2.121488) (xy -2.323415 2.091971) (xy -2.289031 2.094259) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.698015 2.090449) (xy -1.682750 2.098223) (xy -1.640260 2.148730) (xy -1.630509 2.212848) (xy -1.655496 2.268912) (xy -1.666143 2.278226) (xy -1.708765 2.304777) (xy -1.727200 2.311400)
|
||||||
|
(xy -1.758009 2.298055) (xy -1.788258 2.278226) (xy -1.822607 2.229753) (xy -1.822630 2.172871) (xy -1.796453 2.121449) (xy -1.752206 2.089353) (xy -1.698015 2.090449) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.132323 2.092722) (xy -1.075933 2.126844) (xy -1.049663 2.182172) (xy -1.061226 2.240012) (xy -1.067812 2.249118) (xy -1.122579 2.280717) (xy -1.190828 2.281059) (xy -1.239520 2.255520)
|
||||||
|
(xy -1.269415 2.198531) (xy -1.259063 2.142698) (xy -1.217457 2.101677) (xy -1.153588 2.089123) (xy -1.132323 2.092722) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.512765 2.098428) (xy -0.483638 2.153502) (xy -0.482600 2.167513) (xy -0.501031 2.238408) (xy -0.546657 2.277974) (xy -0.604979 2.281193) (xy -0.661497 2.243046) (xy -0.669744 2.232284)
|
||||||
|
(xy -0.694886 2.165343) (xy -0.670491 2.109069) (xy -0.632012 2.081200) (xy -0.568343 2.070792) (xy -0.512765 2.098428) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.032649 2.080543) (xy 0.055875 2.101987) (xy 0.091319 2.143148) (xy 0.092366 2.176957) (xy 0.066913 2.220854) (xy 0.014610 2.275244) (xy -0.039725 2.279302) (xy -0.087086 2.246085)
|
||||||
|
(xy -0.123705 2.182806) (xy -0.114301 2.122115) (xy -0.062424 2.077687) (xy -0.009485 2.062143) (xy 0.032649 2.080543) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.614067 2.074776) (xy 0.652224 2.118645) (xy 0.650422 2.176617) (xy 0.620485 2.220685) (xy 0.559671 2.256467) (xy 0.501230 2.251251) (xy 0.460669 2.206696) (xy 0.459382 2.203450)
|
||||||
|
(xy 0.452005 2.132114) (xy 0.481766 2.078778) (xy 0.540775 2.057405) (xy 0.541913 2.057400) (xy 0.614067 2.074776) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.187228 2.073500) (xy 1.214949 2.119545) (xy 1.200578 2.192149) (xy 1.197683 2.198719) (xy 1.151671 2.249726) (xy 1.088788 2.257591) (xy 1.051558 2.241161) (xy 1.009882 2.190224)
|
||||||
|
(xy 1.008405 2.132597) (xy 1.041509 2.083525) (xy 1.103573 2.058256) (xy 1.119290 2.057400) (xy 1.187228 2.073500) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.650367 2.002299) (xy -3.628373 2.048887) (xy -3.623479 2.095896) (xy -3.625146 2.102141) (xy -3.660868 2.145330) (xy -3.715168 2.167048) (xy -3.757370 2.160131) (xy -3.775107 2.137067)
|
||||||
|
(xy -3.764297 2.097028) (xy -3.744175 2.060303) (xy -3.708645 2.008186) (xy -3.681468 1.981946) (xy -3.678418 1.981200) (xy -3.650367 2.002299) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.088944 1.986382) (xy -3.054920 2.033498) (xy -3.056664 2.087123) (xy -3.094254 2.132583) (xy -3.157626 2.154251) (xy -3.210563 2.149770) (xy -3.236716 2.110255) (xy -3.240354 2.097158)
|
||||||
|
(xy -3.247423 2.015577) (xy -3.219520 1.969600) (xy -3.158657 1.960448) (xy -3.088944 1.986382) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.519869 1.974645) (xy -2.480144 2.022843) (xy -2.480406 2.087888) (xy -2.489200 2.108200) (xy -2.535657 2.148728) (xy -2.599558 2.156669) (xy -2.658033 2.130345) (xy -2.666727 2.121229)
|
||||||
|
(xy -2.685700 2.066332) (xy -2.682053 2.019629) (xy -2.657793 1.971925) (xy -2.607214 1.956207) (xy -2.591210 1.955800) (xy -2.519869 1.974645) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.949632 1.975716) (xy -1.915559 2.025223) (xy -1.910385 2.083496) (xy -1.935480 2.128520) (xy -1.994532 2.157254) (xy -2.059497 2.139309) (xy -2.094644 2.109146) (xy -2.125630 2.048090)
|
||||||
|
(xy -2.106912 1.992578) (xy -2.062762 1.958669) (xy -2.002176 1.948892) (xy -1.949632 1.975716) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.385053 1.955175) (xy -1.351584 2.009751) (xy -1.351793 2.074120) (xy -1.384364 2.125587) (xy -1.395331 2.132706) (xy -1.438549 2.153935) (xy -1.467141 2.152299) (xy -1.504950 2.131565)
|
||||||
|
(xy -1.543938 2.084549) (xy -1.546444 2.024088) (xy -1.514471 1.969894) (xy -1.486653 1.951521) (xy -1.428458 1.935926) (xy -1.385053 1.955175) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.830453 1.942122) (xy -0.781924 1.976717) (xy -0.762000 2.029971) (xy -0.779694 2.088027) (xy -0.792480 2.103120) (xy -0.849607 2.130962) (xy -0.914078 2.125235) (xy -0.961990 2.088510)
|
||||||
|
(xy -0.964216 2.084640) (xy -0.978729 2.016072) (xy -0.947393 1.962997) (xy -0.898569 1.940044) (xy -0.830453 1.942122) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.235996 1.948776) (xy -0.213548 1.994229) (xy -0.214967 2.063600) (xy -0.248612 2.113176) (xy -0.301133 2.134002) (xy -0.359176 2.117124) (xy -0.375920 2.103120) (xy -0.405818 2.045337)
|
||||||
|
(xy -0.394383 1.987701) (xy -0.349021 1.944680) (xy -0.287504 1.930400) (xy -0.235996 1.948776) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.310161 1.933269) (xy 0.365016 1.980957) (xy 0.371087 2.035308) (xy 0.331621 2.086756) (xy 0.264921 2.127493) (xy 0.212450 2.125158) (xy 0.182880 2.103120) (xy 0.156172 2.048134)
|
||||||
|
(xy 0.167015 1.990372) (xy 0.204978 1.943750) (xy 0.259632 1.922187) (xy 0.310161 1.933269) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.870737 1.916738) (xy 0.919681 1.950956) (xy 0.939962 2.003921) (xy 0.922588 2.061977) (xy 0.909320 2.077720) (xy 0.851371 2.105116) (xy 0.783359 2.100379) (xy 0.737611 2.071318)
|
||||||
|
(xy 0.718532 2.014984) (xy 0.738653 1.957847) (xy 0.790263 1.918599) (xy 0.802122 1.914922) (xy 0.870737 1.916738) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.430147 1.916722) (xy 1.478676 1.951317) (xy 1.498600 2.004571) (xy 1.480906 2.062627) (xy 1.468120 2.077720) (xy 1.410993 2.105562) (xy 1.346522 2.099835) (xy 1.298610 2.063110)
|
||||||
|
(xy 1.296384 2.059240) (xy 1.281871 1.990672) (xy 1.313207 1.937597) (xy 1.362031 1.914644) (xy 1.430147 1.916722) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.382290 1.789456) (xy -3.341200 1.850928) (xy -3.339722 1.855391) (xy -3.339032 1.918014) (xy -3.372219 1.961133) (xy -3.424652 1.980339) (xy -3.481702 1.971225) (xy -3.528741 1.929381)
|
||||||
|
(xy -3.536582 1.914716) (xy -3.553031 1.862499) (xy -3.535788 1.825306) (xy -3.508278 1.800784) (xy -3.441632 1.771559) (xy -3.382290 1.789456) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.810668 1.781374) (xy -2.778459 1.830841) (xy -2.771484 1.891046) (xy -2.795161 1.944498) (xy -2.847777 1.978594) (xy -2.906368 1.962484) (xy -2.933238 1.939934) (xy -2.964742 1.877930)
|
||||||
|
(xy -2.954511 1.811906) (xy -2.914650 1.768023) (xy -2.859077 1.755987) (xy -2.810668 1.781374) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.247147 1.772304) (xy -2.205385 1.816656) (xy -2.184554 1.863514) (xy -2.184400 1.866900) (xy -2.200961 1.909573) (xy -2.237948 1.954827) (xy -2.276322 1.980402) (xy -2.282163 1.981200)
|
||||||
|
(xy -2.314293 1.968033) (xy -2.356549 1.941659) (xy -2.399080 1.895185) (xy -2.413000 1.853653) (xy -2.391326 1.804686) (xy -2.340170 1.765503) (xy -2.289485 1.752600) (xy -2.247147 1.772304) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.666027 1.783495) (xy -1.640078 1.844982) (xy -1.638300 1.869668) (xy -1.647064 1.924527) (xy -1.682516 1.947225) (xy -1.703975 1.950734) (xy -1.765520 1.942930) (xy -1.801322 1.920204)
|
||||||
|
(xy -1.824766 1.858268) (xy -1.803631 1.796970) (xy -1.771650 1.768152) (xy -1.713798 1.754906) (xy -1.666027 1.783495) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.093665 1.773325) (xy -1.057015 1.822769) (xy -1.049875 1.881834) (xy -1.066176 1.916947) (xy -1.122268 1.950130) (xy -1.191242 1.950878) (xy -1.239520 1.925320) (xy -1.269518 1.867521)
|
||||||
|
(xy -1.258065 1.810008) (xy -1.212547 1.767044) (xy -1.150076 1.752600) (xy -1.093665 1.773325) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.535385 1.751537) (xy -0.490891 1.798892) (xy -0.488552 1.860994) (xy -0.522515 1.915885) (xy -0.581483 1.952383) (xy -0.635985 1.938369) (xy -0.670452 1.901073) (xy -0.693081 1.835511)
|
||||||
|
(xy -0.675943 1.778673) (xy -0.629963 1.742648) (xy -0.566062 1.739531) (xy -0.535385 1.751537) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.029144 1.744352) (xy 0.077566 1.783705) (xy 0.101403 1.827096) (xy 0.101600 1.830614) (xy 0.083762 1.866646) (xy 0.043054 1.911931) (xy -0.001315 1.947261) (xy -0.023586 1.955800)
|
||||||
|
(xy -0.058741 1.939590) (xy -0.087086 1.915885) (xy -0.121943 1.854117) (xy -0.117973 1.791549) (xy -0.080630 1.744023) (xy -0.022135 1.727200) (xy 0.029144 1.744352) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.616603 1.746333) (xy 0.649694 1.796281) (xy 0.640081 1.865861) (xy 0.639278 1.867652) (xy 0.593002 1.917192) (xy 0.528528 1.930615) (xy 0.466725 1.904119) (xy 0.462280 1.899920)
|
||||||
|
(xy 0.432641 1.842181) (xy 0.444020 1.784229) (xy 0.488967 1.741062) (xy 0.548069 1.727200) (xy 0.616603 1.746333) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.131552 1.731370) (xy 1.189768 1.749327) (xy 1.213810 1.793258) (xy 1.215262 1.801976) (xy 1.203887 1.866599) (xy 1.160457 1.911986) (xy 1.100943 1.927458) (xy 1.052247 1.910961)
|
||||||
|
(xy 1.009761 1.859215) (xy 1.007906 1.802429) (xy 1.040353 1.754936) (xy 1.100773 1.731069) (xy 1.131552 1.731370) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.121766 1.637204) (xy -3.073717 1.671023) (xy -3.050803 1.720327) (xy -3.063424 1.771650) (xy -3.116640 1.815612) (xy -3.183376 1.819735) (xy -3.235335 1.790237) (xy -3.273178 1.729507)
|
||||||
|
(xy -3.260835 1.674125) (xy -3.239899 1.652160) (xy -3.181607 1.627905) (xy -3.121766 1.637204) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.525426 1.638906) (xy -2.493034 1.688210) (xy -2.490393 1.748070) (xy -2.519680 1.798320) (xy -2.568034 1.825931) (xy -2.627057 1.812584) (xy -2.647950 1.801365) (xy -2.684982 1.754875)
|
||||||
|
(xy -2.688814 1.693280) (xy -2.660264 1.639203) (xy -2.641600 1.625600) (xy -2.578103 1.613566) (xy -2.525426 1.638906) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.961198 1.623891) (xy -1.919313 1.677919) (xy -1.914014 1.694744) (xy -1.913199 1.757237) (xy -1.944210 1.794652) (xy -1.988817 1.822753) (xy -2.023719 1.822184) (xy -2.073292 1.791956)
|
||||||
|
(xy -2.077149 1.789259) (xy -2.125529 1.739033) (xy -2.123884 1.687606) (xy -2.084621 1.639947) (xy -2.021305 1.609626) (xy -1.961198 1.623891) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.599096 1.773341) (xy 1.600200 1.790700) (xy 1.586907 1.824507) (xy 1.575597 1.828800) (xy 1.561621 1.810181) (xy 1.565614 1.790700) (xy 1.583643 1.757279) (xy 1.590217 1.752600)
|
||||||
|
(xy 1.599096 1.773341) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.393945 1.621483) (xy -1.361549 1.654926) (xy -1.338112 1.720185) (xy -1.359185 1.772432) (xy -1.418528 1.800981) (xy -1.448210 1.803400) (xy -1.506761 1.792918) (xy -1.535170 1.753135)
|
||||||
|
(xy -1.539053 1.739570) (xy -1.538382 1.667733) (xy -1.504709 1.619688) (xy -1.451931 1.602063) (xy -1.393945 1.621483) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.870804 1.605027) (xy -0.803265 1.630433) (xy -0.767451 1.678599) (xy -0.772013 1.736447) (xy -0.777392 1.746250) (xy -0.826972 1.788167) (xy -0.890073 1.798646) (xy -0.945957 1.776812)
|
||||||
|
(xy -0.964386 1.754122) (xy -0.978694 1.686606) (xy -0.953680 1.632055) (xy -0.898467 1.604999) (xy -0.870804 1.605027) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.242600 1.618966) (xy -0.214605 1.643510) (xy -0.207601 1.671448) (xy -0.215355 1.736755) (xy -0.249454 1.786942) (xy -0.290356 1.803400) (xy -0.333920 1.789467) (xy -0.365858 1.770226)
|
||||||
|
(xy -0.400718 1.716014) (xy -0.402463 1.674976) (xy -0.388123 1.632386) (xy -0.350849 1.615268) (xy -0.304800 1.612900) (xy -0.242600 1.618966) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.336666 1.620268) (xy 0.356045 1.651832) (xy 0.366824 1.697965) (xy 0.338712 1.743838) (xy 0.330782 1.752017) (xy 0.280758 1.793942) (xy 0.240165 1.797900) (xy 0.191609 1.769252)
|
||||||
|
(xy 0.160560 1.719917) (xy 0.163596 1.658421) (xy 0.196433 1.605897) (xy 0.228431 1.587553) (xy 0.289880 1.583109) (xy 0.336666 1.620268) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.897830 1.604750) (xy 0.934211 1.652610) (xy 0.930118 1.710358) (xy 0.924408 1.720850) (xy 0.874641 1.760937) (xy 0.808337 1.772140) (xy 0.749110 1.751990) (xy 0.737041 1.740431)
|
||||||
|
(xy 0.716525 1.683245) (xy 0.734025 1.626337) (xy 0.779658 1.586911) (xy 0.829502 1.579483) (xy 0.897830 1.604750) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.468120 1.605280) (xy 1.496867 1.660704) (xy 1.475103 1.719587) (xy 1.458685 1.738085) (xy 1.396700 1.773827) (xy 1.335752 1.767357) (xy 1.295400 1.727200) (xy 1.283366 1.663702)
|
||||||
|
(xy 1.308706 1.611025) (xy 1.358010 1.578633) (xy 1.417870 1.575992) (xy 1.468120 1.605280) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.337833 1.568166) (xy -3.352800 1.600200) (xy -3.385514 1.640474) (xy -3.408431 1.651000) (xy -3.414858 1.635632) (xy -3.390900 1.600200) (xy -3.353834 1.562726) (xy -3.335270 1.549400)
|
||||||
|
(xy -3.337833 1.568166) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.841015 1.430049) (xy -2.825750 1.437823) (xy -2.783488 1.489930) (xy -2.773131 1.558483) (xy -2.795161 1.614298) (xy -2.844961 1.648112) (xy -2.904411 1.635096) (xy -2.931258 1.617826)
|
||||||
|
(xy -2.965607 1.569353) (xy -2.965630 1.512471) (xy -2.939453 1.461049) (xy -2.895206 1.428953) (xy -2.841015 1.430049) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.263958 1.434494) (xy -2.224315 1.462314) (xy -2.190325 1.506381) (xy -2.193318 1.546941) (xy -2.228850 1.597246) (xy -2.267680 1.633242) (xy -2.307882 1.631628) (xy -2.336576 1.618471)
|
||||||
|
(xy -2.393944 1.569323) (xy -2.408950 1.508901) (xy -2.386588 1.459279) (xy -2.330244 1.425743) (xy -2.263958 1.434494) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.092040 1.443666) (xy -1.057784 1.495227) (xy -1.059351 1.558722) (xy -1.065201 1.571811) (xy -1.113946 1.625844) (xy -1.174715 1.630680) (xy -1.216285 1.609543) (xy -1.261834 1.554740)
|
||||||
|
(xy -1.265179 1.495711) (xy -1.231337 1.446955) (xy -1.165328 1.422970) (xy -1.151514 1.422400) (xy -1.092040 1.443666) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.690262 1.434073) (xy -1.643196 1.474045) (xy -1.632074 1.542083) (xy -1.635491 1.559950) (xy -1.660709 1.609797) (xy -1.712475 1.625387) (xy -1.723451 1.625600) (xy -1.781444 1.620124)
|
||||||
|
(xy -1.811867 1.608666) (xy -1.824308 1.573111) (xy -1.828800 1.520250) (xy -1.817131 1.463045) (xy -1.773182 1.435040) (xy -1.763151 1.432290) (xy -1.690262 1.434073) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.544568 1.417359) (xy -0.500802 1.455577) (xy -0.480278 1.510099) (xy -0.493379 1.569633) (xy -0.513080 1.595120) (xy -0.573112 1.623694) (xy -0.640258 1.609176) (xy -0.671286 1.585685)
|
||||||
|
(xy -0.686332 1.562100) (xy -0.660400 1.562100) (xy -0.647700 1.574800) (xy -0.635000 1.562100) (xy -0.647700 1.549400) (xy -0.660400 1.562100) (xy -0.686332 1.562100) (xy -0.707451 1.528999)
|
||||||
|
(xy -0.695112 1.474047) (xy -0.660297 1.435006) (xy -0.601194 1.406738) (xy -0.544568 1.417359) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.027500 1.416743) (xy 0.062911 1.447149) (xy 0.092428 1.486585) (xy 0.090140 1.520969) (xy 0.066262 1.561449) (xy 0.018341 1.613763) (xy -0.034593 1.619739) (xy -0.082550 1.598165)
|
||||||
|
(xy -0.118429 1.551824) (xy -0.124582 1.487567) (xy -0.098990 1.430058) (xy -0.096520 1.427480) (xy -0.037485 1.398744) (xy 0.027500 1.416743) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.616603 1.416133) (xy 0.649694 1.466081) (xy 0.640081 1.535661) (xy 0.639278 1.537452) (xy 0.593002 1.586992) (xy 0.528528 1.600415) (xy 0.466725 1.573919) (xy 0.462280 1.569720)
|
||||||
|
(xy 0.432641 1.511981) (xy 0.444020 1.454029) (xy 0.488967 1.410862) (xy 0.548069 1.397000) (xy 0.616603 1.416133) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.186414 1.417260) (xy 1.212172 1.454560) (xy 1.214799 1.468248) (xy 1.205334 1.535036) (xy 1.165512 1.581543) (xy 1.110055 1.601756) (xy 1.053687 1.589667) (xy 1.016000 1.549400)
|
||||||
|
(xy 1.001158 1.481039) (xy 1.028670 1.428240) (xy 1.090286 1.402103) (xy 1.125637 1.401866) (xy 1.186414 1.417260) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.642692 1.419331) (xy 1.650788 1.474242) (xy 1.651000 1.485900) (xy 1.639906 1.547977) (xy 1.613590 1.576471) (xy 1.582499 1.565438) (xy 1.564908 1.534859) (xy 1.563591 1.484882)
|
||||||
|
(xy 1.584026 1.431981) (xy 1.615845 1.399364) (xy 1.626493 1.397000) (xy 1.642692 1.419331) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -3.060763 1.346098) (xy -3.065185 1.369172) (xy -3.078251 1.371988) (xy -3.096151 1.378180) (xy -3.075034 1.395453) (xy -3.051813 1.420940) (xy -3.069477 1.455743) (xy -3.071794 1.458564)
|
||||||
|
(xy -3.131044 1.494843) (xy -3.201685 1.486986) (xy -3.220780 1.476840) (xy -3.230960 1.454482) (xy -3.202578 1.418815) (xy -3.165192 1.388227) (xy -3.105533 1.350437) (xy -3.067098 1.341517)
|
||||||
|
(xy -3.060763 1.346098) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.537115 1.289757) (xy -2.510941 1.319011) (xy -2.479413 1.366842) (xy -2.481860 1.404842) (xy -2.497786 1.432398) (xy -2.551488 1.481212) (xy -2.613568 1.492658) (xy -2.660947 1.469093)
|
||||||
|
(xy -2.692144 1.407627) (xy -2.681592 1.342553) (xy -2.633009 1.292928) (xy -2.625917 1.289418) (xy -2.574152 1.273023) (xy -2.537115 1.289757) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.971860 1.284925) (xy -1.927732 1.324581) (xy -1.910935 1.384963) (xy -1.924964 1.443377) (xy -1.944210 1.464452) (xy -1.991265 1.492988) (xy -2.028912 1.490610) (xy -2.079726 1.455389)
|
||||||
|
(xy -2.083213 1.452573) (xy -2.121374 1.398027) (xy -2.119312 1.341870) (xy -2.085522 1.296893) (xy -2.028499 1.275882) (xy -1.971860 1.284925) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.394923 1.289475) (xy -1.360813 1.318687) (xy -1.333421 1.377318) (xy -1.348802 1.431052) (xy -1.399662 1.466411) (xy -1.444461 1.473200) (xy -1.502301 1.467693) (xy -1.532467 1.456266)
|
||||||
|
(xy -1.548507 1.411085) (xy -1.543258 1.349695) (xy -1.519213 1.300774) (xy -1.518920 1.300480) (xy -1.459807 1.271749) (xy -1.394923 1.289475) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.861243 1.274400) (xy -0.798512 1.302223) (xy -0.766595 1.353073) (xy -0.774681 1.411424) (xy -0.777392 1.416050) (xy -0.826523 1.455502) (xy -0.892801 1.468201) (xy -0.951413 1.450354)
|
||||||
|
(xy -0.959029 1.443811) (xy -0.989078 1.386129) (xy -0.978657 1.328857) (xy -0.936116 1.286460) (xy -0.869802 1.273399) (xy -0.861243 1.274400) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.233365 1.285628) (xy -0.204238 1.340702) (xy -0.203200 1.354713) (xy -0.221631 1.425608) (xy -0.267257 1.465174) (xy -0.325579 1.468393) (xy -0.382097 1.430246) (xy -0.390344 1.419484)
|
||||||
|
(xy -0.415486 1.352543) (xy -0.391091 1.296269) (xy -0.352612 1.268400) (xy -0.288943 1.257992) (xy -0.233365 1.285628) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.317640 1.271866) (xy 0.330096 1.282606) (xy 0.374400 1.339734) (xy 0.369259 1.390342) (xy 0.324548 1.433659) (xy 0.275563 1.464718) (xy 0.241935 1.468175) (xy 0.198043 1.446460)
|
||||||
|
(xy 0.196850 1.445765) (xy 0.157771 1.398735) (xy 0.155352 1.338330) (xy 0.187539 1.284070) (xy 0.215796 1.265425) (xy 0.271539 1.250255) (xy 0.317640 1.271866) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.840557 1.249000) (xy 0.903288 1.276823) (xy 0.935205 1.327673) (xy 0.927119 1.386024) (xy 0.924408 1.390650) (xy 0.875277 1.430102) (xy 0.808999 1.442801) (xy 0.750387 1.424954)
|
||||||
|
(xy 0.742771 1.418411) (xy 0.712722 1.360729) (xy 0.723143 1.303457) (xy 0.765684 1.261060) (xy 0.831998 1.247999) (xy 0.840557 1.249000) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.387900 1.249244) (xy 1.456439 1.274474) (xy 1.492973 1.322252) (xy 1.489006 1.379973) (xy 1.483208 1.390650) (xy 1.435750 1.430678) (xy 1.374108 1.443278) (xy 1.319457 1.426806)
|
||||||
|
(xy 1.300109 1.404872) (xy 1.289416 1.339426) (xy 1.298213 1.300044) (xy 1.329502 1.255947) (xy 1.385506 1.248969) (xy 1.387900 1.249244) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.770810 1.192234) (xy -2.768600 1.214664) (xy -2.786789 1.270658) (xy -2.830360 1.309225) (xy -2.882825 1.322586) (xy -2.927693 1.302963) (xy -2.935068 1.293186) (xy -2.940043 1.263255)
|
||||||
|
(xy -2.909950 1.234104) (xy -2.838450 1.199168) (xy -2.789268 1.182200) (xy -2.770810 1.192234) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.251779 1.111720) (xy -2.203492 1.157224) (xy -2.184400 1.206500) (xy -2.204117 1.255651) (xy -2.248861 1.301089) (xy -2.296578 1.320800) (xy -2.337402 1.303480) (xy -2.370964 1.274349)
|
||||||
|
(xy -2.406318 1.208724) (xy -2.401410 1.147344) (xy -2.361066 1.104198) (xy -2.308135 1.092200) (xy -2.251779 1.111720) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.671920 1.113229) (xy -1.633029 1.168410) (xy -1.630001 1.221387) (xy -1.659358 1.275281) (xy -1.714191 1.301594) (xy -1.773512 1.291323) (xy -1.781247 1.286258) (xy -1.826815 1.230785)
|
||||||
|
(xy -1.835868 1.169995) (xy -1.811459 1.119039) (xy -1.756643 1.093064) (xy -1.742117 1.092200) (xy -1.671920 1.113229) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.090348 1.115663) (xy -1.060819 1.158683) (xy -1.044389 1.210739) (xy -1.061449 1.247876) (xy -1.089578 1.272983) (xy -1.144059 1.311497) (xy -1.181284 1.314670) (xy -1.220303 1.282692)
|
||||||
|
(xy -1.227964 1.274349) (xy -1.265073 1.206269) (xy -1.257530 1.145297) (xy -1.210525 1.103573) (xy -1.150076 1.092200) (xy -1.090348 1.115663) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.544568 1.087159) (xy -0.500802 1.125377) (xy -0.480278 1.179899) (xy -0.493379 1.239433) (xy -0.513080 1.264920) (xy -0.573112 1.293494) (xy -0.640258 1.278976) (xy -0.671286 1.255485)
|
||||||
|
(xy -0.707451 1.198799) (xy -0.695112 1.143847) (xy -0.660297 1.104806) (xy -0.601194 1.076538) (xy -0.544568 1.087159) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.032649 1.089943) (xy 0.055875 1.111387) (xy 0.091319 1.152548) (xy 0.092366 1.186357) (xy 0.066913 1.230254) (xy 0.011353 1.283351) (xy -0.050183 1.291969) (xy -0.096520 1.264920)
|
||||||
|
(xy -0.126771 1.204205) (xy -0.116244 1.139285) (xy -0.068787 1.090228) (xy -0.062424 1.087087) (xy -0.009485 1.071543) (xy 0.032649 1.089943) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.561157 1.071200) (xy 0.623888 1.099023) (xy 0.655805 1.149873) (xy 0.647719 1.208224) (xy 0.645008 1.212850) (xy 0.595877 1.252302) (xy 0.529599 1.265001) (xy 0.470987 1.247154)
|
||||||
|
(xy 0.463371 1.240611) (xy 0.433322 1.182929) (xy 0.443743 1.125657) (xy 0.486284 1.083260) (xy 0.552598 1.070199) (xy 0.561157 1.071200) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.180550 1.099147) (xy 1.212646 1.143394) (xy 1.211550 1.197585) (xy 1.203776 1.212850) (xy 1.150560 1.256812) (xy 1.083824 1.260935) (xy 1.031865 1.231437) (xy 0.996233 1.186070)
|
||||||
|
(xy 0.999504 1.145342) (xy 1.023773 1.107342) (xy 1.072246 1.072993) (xy 1.129128 1.072970) (xy 1.180550 1.099147) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.665306 1.084743) (xy 1.675881 1.143146) (xy 1.676400 1.168400) (xy 1.665809 1.240503) (xy 1.638756 1.271456) (xy 1.602319 1.257717) (xy 1.574800 1.219200) (xy 1.563455 1.159483)
|
||||||
|
(xy 1.582214 1.102866) (xy 1.622618 1.069368) (xy 1.639193 1.066800) (xy 1.665306 1.084743) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -2.498399 1.105303) (xy -2.525805 1.128414) (xy -2.579975 1.163557) (xy -2.614522 1.160110) (xy -2.628900 1.143000) (xy -2.630554 1.119209) (xy -2.624050 1.117253) (xy -2.585549 1.111882)
|
||||||
|
(xy -2.540000 1.102667) (xy -2.496406 1.094593) (xy -2.498399 1.105303) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.949038 1.013917) (xy -1.909737 1.038436) (xy -1.914491 1.081815) (xy -1.930669 1.105223) (xy -1.986092 1.137554) (xy -2.054725 1.138042) (xy -2.103120 1.112520) (xy -2.132360 1.065540)
|
||||||
|
(xy -2.112873 1.032278) (xy -2.044959 1.013143) (xy -2.029129 1.011372) (xy -1.949038 1.013917) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.382228 0.977948) (xy -1.343331 1.015979) (xy -1.346040 1.079505) (xy -1.348307 1.085850) (xy -1.382011 1.129922) (xy -1.445914 1.142994) (xy -1.447779 1.143000) (xy -1.508797 1.131921)
|
||||||
|
(xy -1.539646 1.106383) (xy -1.548254 1.034531) (xy -1.513420 0.986899) (xy -1.458129 0.970252) (xy -1.382228 0.977948) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.790956 0.975264) (xy -0.762853 1.019773) (xy -0.765684 1.070380) (xy -0.807111 1.114468) (xy -0.811131 1.116706) (xy -0.890173 1.141529) (xy -0.950448 1.120193) (xy -0.964188 1.106120)
|
||||||
|
(xy -0.987477 1.046577) (xy -0.965536 0.991148) (xy -0.909321 0.955005) (xy -0.842333 0.949470) (xy -0.790956 0.975264) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.234058 0.954128) (xy -0.204424 1.008953) (xy -0.203200 1.024513) (xy -0.222848 1.095348) (xy -0.272410 1.136285) (xy -0.337819 1.139075) (xy -0.372112 1.123561) (xy -0.404113 1.074985)
|
||||||
|
(xy -0.409410 0.997843) (xy -0.386806 0.962439) (xy -0.355600 0.939800) (xy -0.290262 0.927846) (xy -0.234058 0.954128) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.316747 0.939175) (xy 0.350216 0.993751) (xy 0.350007 1.058120) (xy 0.317436 1.109587) (xy 0.306469 1.116706) (xy 0.263251 1.137935) (xy 0.234659 1.136299) (xy 0.196850 1.115565)
|
||||||
|
(xy 0.157862 1.068549) (xy 0.155356 1.008088) (xy 0.187329 0.953894) (xy 0.215147 0.935521) (xy 0.273342 0.919926) (xy 0.316747 0.939175) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.829502 0.919083) (xy 0.897829 0.944346) (xy 0.934205 0.992196) (xy 0.930106 1.049930) (xy 0.924376 1.060450) (xy 0.870640 1.104796) (xy 0.800819 1.107642) (xy 0.750120 1.083241)
|
||||||
|
(xy 0.717330 1.050353) (xy 0.718486 1.010820) (xy 0.731469 0.979016) (xy 0.766715 0.929065) (xy 0.818486 0.918035) (xy 0.829502 0.919083) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.446807 0.931789) (xy 1.487936 0.974288) (xy 1.497812 1.027388) (xy 1.470747 1.076585) (xy 1.449469 1.091306) (xy 1.372263 1.116051) (xy 1.316440 1.095336) (xy 1.295400 1.066800)
|
||||||
|
(xy 1.283446 1.001461) (xy 1.309728 0.945257) (xy 1.364553 0.915623) (xy 1.380113 0.914400) (xy 1.446807 0.931789) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.520806 0.918581) (xy -0.522147 0.931720) (xy -0.533400 0.939800) (xy -0.587051 0.962319) (xy -0.625765 0.958108) (xy -0.635000 0.939800) (xy -0.613093 0.921491) (xy -0.565150 0.914788)
|
||||||
|
(xy -0.520806 0.918581) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.084937 0.813579) (xy 0.082592 0.859124) (xy 0.079308 0.868634) (xy 0.036856 0.925020) (xy -0.025416 0.947865) (xy -0.088578 0.930440) (xy -0.090547 0.929036) (xy -0.122051 0.885765)
|
||||||
|
(xy -0.108027 0.843516) (xy -0.053131 0.811182) (xy -0.024975 0.803824) (xy 0.050544 0.796054) (xy 0.084937 0.813579) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.578858 0.735899) (xy 0.595721 0.746320) (xy 0.646811 0.801878) (xy 0.653956 0.864674) (xy 0.633987 0.902920) (xy 0.579221 0.934517) (xy 0.510972 0.934859) (xy 0.462280 0.909320)
|
||||||
|
(xy 0.433436 0.850689) (xy 0.450186 0.788824) (xy 0.487771 0.751076) (xy 0.536571 0.725893) (xy 0.578858 0.735899) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.183051 0.749970) (xy 1.214744 0.799679) (xy 1.217456 0.859428) (xy 1.188720 0.909320) (xy 1.129244 0.937807) (xy 1.064269 0.927161) (xy 1.022521 0.890004) (xy 1.004045 0.821554)
|
||||||
|
(xy 1.033473 0.761465) (xy 1.069788 0.735000) (xy 1.131643 0.723883) (xy 1.183051 0.749970) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.634125 0.749117) (xy 1.651263 0.805158) (xy 1.655353 0.838200) (xy 1.657582 0.910359) (xy 1.643708 0.936452) (xy 1.610415 0.919573) (xy 1.589314 0.899885) (xy 1.556426 0.861991)
|
||||||
|
(xy 1.554681 0.829582) (xy 1.575693 0.785730) (xy 1.608702 0.742488) (xy 1.634125 0.749117) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.366052 0.688708) (xy 0.364937 0.718904) (xy 0.331126 0.761073) (xy 0.280964 0.803198) (xy 0.240537 0.807501) (xy 0.192829 0.779544) (xy 0.169314 0.757260) (xy 0.177740 0.738979)
|
||||||
|
(xy 0.224992 0.715973) (xy 0.251285 0.705462) (xy 0.327014 0.683425) (xy 0.366052 0.688708) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.896003 0.603333) (xy 0.929094 0.653281) (xy 0.919481 0.722861) (xy 0.918678 0.724652) (xy 0.872402 0.774192) (xy 0.807928 0.787615) (xy 0.746125 0.761119) (xy 0.741680 0.756920)
|
||||||
|
(xy 0.712041 0.699181) (xy 0.723420 0.641229) (xy 0.768367 0.598062) (xy 0.827469 0.584200) (xy 0.896003 0.603333) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.387900 0.588844) (xy 1.456439 0.614074) (xy 1.492973 0.661852) (xy 1.489006 0.719573) (xy 1.483208 0.730250) (xy 1.435750 0.770278) (xy 1.374108 0.782878) (xy 1.319457 0.766406)
|
||||||
|
(xy 1.300109 0.744472) (xy 1.289416 0.679026) (xy 1.298213 0.639644) (xy 1.329502 0.595547) (xy 1.385506 0.588569) (xy 1.387900 0.588844) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.643150 0.534099) (xy 0.622300 0.558800) (xy 0.568326 0.597519) (xy 0.523113 0.609505) (xy 0.495721 0.605369) (xy 0.506634 0.589148) (xy 0.553063 0.558705) (xy 0.622732 0.519504)
|
||||||
|
(xy 0.652609 0.511302) (xy 0.643150 0.534099) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.158509 0.399909) (xy 1.202015 0.436784) (xy 1.218856 0.491029) (xy 1.199761 0.547952) (xy 1.145846 0.587547) (xy 1.077696 0.585307) (xy 1.044315 0.568143) (xy 0.997928 0.518922)
|
||||||
|
(xy 1.001089 0.467451) (xy 1.041503 0.419006) (xy 1.100839 0.390588) (xy 1.158509 0.399909) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.617483 0.429830) (xy 1.625412 0.481577) (xy 1.625600 0.493800) (xy 1.623543 0.558791) (xy 1.614752 0.581594) (xy 1.595292 0.570744) (xy 1.591733 0.567266) (xy 1.576525 0.525858)
|
||||||
|
(xy 1.577795 0.468781) (xy 1.593899 0.424781) (xy 1.600200 0.419100) (xy 1.617483 0.429830) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.939799 0.362225) (xy 0.939800 0.362326) (xy 0.917320 0.417293) (xy 0.859139 0.450844) (xy 0.814070 0.456392) (xy 0.769155 0.453663) (xy 0.771182 0.439857) (xy 0.800100 0.416431)
|
||||||
|
(xy 0.878712 0.361579) (xy 0.924751 0.343715) (xy 0.939799 0.362225) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.427215 0.265212) (xy 1.475292 0.296673) (xy 1.497952 0.344726) (xy 1.487992 0.395790) (xy 1.449469 0.430906) (xy 1.390186 0.454574) (xy 1.342761 0.444913) (xy 1.309841 0.423514)
|
||||||
|
(xy 1.278576 0.375826) (xy 1.286704 0.321300) (xy 1.295453 0.312080) (xy 1.375694 0.312080) (xy 1.381874 0.326275) (xy 1.407449 0.353543) (xy 1.422152 0.347949) (xy 1.422400 0.344399)
|
||||||
|
(xy 1.404358 0.322915) (xy 1.393075 0.315074) (xy 1.375694 0.312080) (xy 1.295453 0.312080) (xy 1.328774 0.276967) (xy 1.360922 0.263922) (xy 1.427215 0.265212) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.215532 0.168160) (xy 1.219200 0.188170) (xy 1.199022 0.230137) (xy 1.170069 0.253106) (xy 1.109107 0.276693) (xy 1.072426 0.272872) (xy 1.066800 0.259476) (xy 1.086505 0.234501)
|
||||||
|
(xy 1.134767 0.199519) (xy 1.143000 0.194540) (xy 1.194175 0.167414) (xy 1.215532 0.168160) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.600200 0.215900) (xy 1.587500 0.228600) (xy 1.574800 0.215900) (xy 1.587500 0.203200) (xy 1.600200 0.215900) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.493409 -0.006824) (xy 1.482456 0.035327) (xy 1.460794 0.080685) (xy 1.438026 0.107561) (xy 1.384034 0.125077) (xy 1.329359 0.120239) (xy 1.312468 0.110201) (xy 1.321946 0.089221)
|
||||||
|
(xy 1.359510 0.053386) (xy 1.410010 0.014517) (xy 1.458297 -0.015566) (xy 1.486264 -0.025400) (xy 1.493409 -0.006824) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.418615 -0.398751) (xy -1.403350 -0.390977) (xy -1.361088 -0.338870) (xy -1.350731 -0.270317) (xy -1.372761 -0.214502) (xy -1.422561 -0.180688) (xy -1.482011 -0.193704) (xy -1.508858 -0.210974)
|
||||||
|
(xy -1.543207 -0.259447) (xy -1.543230 -0.316329) (xy -1.517053 -0.367751) (xy -1.472806 -0.399847) (xy -1.418615 -0.398751) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.110662 -0.557180) (xy -1.076521 -0.519522) (xy -1.060184 -0.459469) (xy -1.081369 -0.405449) (xy -1.127043 -0.368132) (xy -1.184173 -0.358187) (xy -1.239520 -0.386080) (xy -1.266917 -0.444028)
|
||||||
|
(xy -1.262180 -0.512040) (xy -1.233121 -0.557788) (xy -1.172310 -0.580442) (xy -1.110662 -0.557180) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.404010 -0.723544) (xy -1.363625 -0.682138) (xy -1.347087 -0.624752) (xy -1.360040 -0.568006) (xy -1.395331 -0.534294) (xy -1.443419 -0.512350) (xy -1.476873 -0.517303) (xy -1.519051 -0.553871)
|
||||||
|
(xy -1.525862 -0.560662) (xy -1.560669 -0.602996) (xy -1.559474 -0.638511) (xy -1.541878 -0.668612) (xy -1.498258 -0.714177) (xy -1.462596 -0.732348) (xy -1.404010 -0.723544) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.831829 -0.717887) (xy -0.782243 -0.673941) (xy -0.762000 -0.624423) (xy -0.777534 -0.588954) (xy -0.812463 -0.546266) (xy -0.849284 -0.515532) (xy -0.865601 -0.510947) (xy -0.896338 -0.519150)
|
||||||
|
(xy -0.919557 -0.525280) (xy -0.964181 -0.558156) (xy -0.980314 -0.613491) (xy -0.970450 -0.673488) (xy -0.937085 -0.720353) (xy -0.889921 -0.736600) (xy -0.831829 -0.717887) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.123950 -0.898977) (xy -1.081185 -0.849128) (xy -1.071455 -0.786630) (xy -1.091241 -0.728360) (xy -1.137026 -0.691195) (xy -1.168400 -0.685800) (xy -1.222149 -0.704120) (xy -1.243440 -0.722502)
|
||||||
|
(xy -1.267695 -0.780794) (xy -1.258396 -0.840635) (xy -1.224577 -0.888684) (xy -1.175273 -0.911598) (xy -1.123950 -0.898977) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.576522 -0.921766) (xy -0.548802 -0.905691) (xy -0.498015 -0.850331) (xy -0.488680 -0.790205) (xy -0.517011 -0.739543) (xy -0.579222 -0.712575) (xy -0.600555 -0.711200) (xy -0.661188 -0.733547)
|
||||||
|
(xy -0.672107 -0.749300) (xy -0.584200 -0.749300) (xy -0.571500 -0.736600) (xy -0.558800 -0.749300) (xy -0.571500 -0.762000) (xy -0.584200 -0.749300) (xy -0.672107 -0.749300) (xy -0.691782 -0.777684)
|
||||||
|
(xy -0.708177 -0.829449) (xy -0.691443 -0.866486) (xy -0.662189 -0.892660) (xy -0.614414 -0.924187) (xy -0.576522 -0.921766) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.383080 -1.040388) (xy -1.349986 -0.984497) (xy -1.355844 -0.919441) (xy -1.390650 -0.873558) (xy -1.452501 -0.842038) (xy -1.502517 -0.857283) (xy -1.534924 -0.894172) (xy -1.560107 -0.942972)
|
||||||
|
(xy -1.550101 -0.985259) (xy -1.539680 -1.002122) (xy -1.484122 -1.053212) (xy -1.421326 -1.060357) (xy -1.383080 -1.040388) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.854032 -1.057156) (xy -0.792762 -1.022595) (xy -0.774739 -0.965533) (xy -0.800110 -0.898122) (xy -0.851669 -0.846997) (xy -0.906979 -0.846444) (xy -0.950686 -0.878115) (xy -0.986572 -0.940570)
|
||||||
|
(xy -0.981785 -1.001196) (xy -0.943841 -1.046066) (xy -0.880259 -1.061254) (xy -0.854032 -1.057156) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.273200 -1.055034) (xy -0.223624 -1.021389) (xy -0.202798 -0.968868) (xy -0.219676 -0.910825) (xy -0.233680 -0.894080) (xy -0.282361 -0.869878) (xy -0.343767 -0.864450) (xy -0.389219 -0.880289)
|
||||||
|
(xy -0.389467 -0.880534) (xy -0.401908 -0.916089) (xy -0.406400 -0.968950) (xy -0.394574 -1.026401) (xy -0.350660 -1.054259) (xy -0.342571 -1.056453) (xy -0.273200 -1.055034) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.076200 -0.901700) (xy -0.088900 -0.889000) (xy -0.101600 -0.901700) (xy -0.088900 -0.914400) (xy -0.076200 -0.901700) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.025400 -0.927100) (xy -0.038100 -0.914400) (xy -0.050800 -0.927100) (xy -0.038100 -0.939800) (xy -0.025400 -0.927100) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.326608 -1.058532) (xy 0.337436 -1.038415) (xy 0.304423 -1.013484) (xy 0.253645 -0.996301) (xy 0.191180 -0.984223) (xy 0.155565 -0.984659) (xy 0.152400 -0.988221) (xy 0.174216 -1.028194)
|
||||||
|
(xy 0.225712 -1.058626) (xy 0.270280 -1.066800) (xy 0.326608 -1.058532) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.110662 -1.217580) (xy -1.076521 -1.179922) (xy -1.060184 -1.119869) (xy -1.081369 -1.065849) (xy -1.127043 -1.028532) (xy -1.184173 -1.018587) (xy -1.239520 -1.046480) (xy -1.266917 -1.104428)
|
||||||
|
(xy -1.262180 -1.172440) (xy -1.233121 -1.218188) (xy -1.172310 -1.240842) (xy -1.110662 -1.217580) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.564142 -1.245301) (xy -0.547279 -1.234880) (xy -0.496189 -1.179322) (xy -0.489044 -1.116526) (xy -0.509013 -1.078280) (xy -0.563779 -1.046683) (xy -0.632028 -1.046341) (xy -0.680720 -1.071880)
|
||||||
|
(xy -0.684468 -1.079500) (xy -0.558800 -1.079500) (xy -0.546100 -1.066800) (xy -0.533400 -1.079500) (xy -0.546100 -1.092200) (xy -0.558800 -1.079500) (xy -0.684468 -1.079500) (xy -0.709564 -1.130511)
|
||||||
|
(xy -0.692814 -1.192376) (xy -0.655229 -1.230124) (xy -0.606429 -1.255307) (xy -0.564142 -1.245301) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.044959 -1.231930) (xy 0.071096 -1.170314) (xy 0.071333 -1.134963) (xy 0.058406 -1.077187) (xy 0.024013 -1.052590) (xy -0.013613 -1.046547) (xy -0.073842 -1.046589) (xy -0.108863 -1.057130)
|
||||||
|
(xy -0.128211 -1.106985) (xy -0.122173 -1.172610) (xy -0.095169 -1.228639) (xy -0.076200 -1.244600) (xy -0.007840 -1.259442) (xy 0.044959 -1.231930) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.565413 -1.254403) (xy 0.621384 -1.222723) (xy 0.656536 -1.176983) (xy 0.660011 -1.158114) (xy 0.638072 -1.104332) (xy 0.586385 -1.066652) (xy 0.523650 -1.052332) (xy 0.468566 -1.068630)
|
||||||
|
(xy 0.457269 -1.079416) (xy 0.437610 -1.137505) (xy 0.451877 -1.202286) (xy 0.493140 -1.250256) (xy 0.509879 -1.257897) (xy 0.565413 -1.254403) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.625600 -1.104900) (xy -1.638300 -1.092200) (xy -1.651000 -1.104900) (xy -1.638300 -1.117600) (xy -1.625600 -1.104900) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.156573 -1.250472) (xy 1.197701 -1.206676) (xy 1.218945 -1.160799) (xy 1.219200 -1.156554) (xy 1.197126 -1.136457) (xy 1.144178 -1.118869) (xy 1.080264 -1.107627) (xy 1.025290 -1.106567)
|
||||||
|
(xy 1.001980 -1.114687) (xy 0.997934 -1.149440) (xy 1.022103 -1.197932) (xy 1.062139 -1.243314) (xy 1.105698 -1.268737) (xy 1.115785 -1.270000) (xy 1.156573 -1.250472) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.747201 -1.231095) (xy 1.776864 -1.192045) (xy 1.778000 -1.182875) (xy 1.755937 -1.162448) (xy 1.703045 -1.144348) (xy 1.639265 -1.132601) (xy 1.584538 -1.131235) (xy 1.561674 -1.139193)
|
||||||
|
(xy 1.562235 -1.168860) (xy 1.588049 -1.211442) (xy 1.625628 -1.246990) (xy 1.639434 -1.254221) (xy 1.693931 -1.255662) (xy 1.747201 -1.231095) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.634067 -1.185334) (xy -1.631027 -1.155190) (xy -1.634067 -1.151467) (xy -1.649167 -1.154954) (xy -1.651000 -1.168400) (xy -1.641707 -1.189308) (xy -1.634067 -1.185334) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.412006 -1.384704) (xy -1.361709 -1.343943) (xy -1.346200 -1.284670) (xy -1.365685 -1.215352) (xy -1.415800 -1.174063) (xy -1.447800 -1.168400) (xy -1.501134 -1.185346) (xy -1.518920 -1.198880)
|
||||||
|
(xy -1.541771 -1.245748) (xy -1.549400 -1.299997) (xy -1.537198 -1.357170) (xy -1.492163 -1.384891) (xy -1.485571 -1.386653) (xy -1.412006 -1.384704) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.815510 -1.374922) (xy -0.773452 -1.321799) (xy -0.762000 -1.273485) (xy -0.781705 -1.231147) (xy -0.826057 -1.189385) (xy -0.872915 -1.168554) (xy -0.876300 -1.168400) (xy -0.920925 -1.185055)
|
||||||
|
(xy -0.950686 -1.208315) (xy -0.987396 -1.272561) (xy -0.980968 -1.335050) (xy -0.937444 -1.381280) (xy -0.872114 -1.397000) (xy -0.815510 -1.374922) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.268407 -1.384625) (xy -0.218491 -1.342528) (xy -0.203200 -1.280484) (xy -0.223195 -1.219952) (xy -0.271510 -1.182003) (xy -0.330645 -1.174907) (xy -0.375920 -1.198880) (xy -0.398771 -1.245748)
|
||||||
|
(xy -0.400395 -1.257300) (xy -0.304800 -1.257300) (xy -0.292100 -1.244600) (xy -0.279400 -1.257300) (xy -0.292100 -1.270000) (xy -0.304800 -1.257300) (xy -0.400395 -1.257300) (xy -0.406400 -1.299997)
|
||||||
|
(xy -0.394198 -1.357170) (xy -0.349163 -1.384891) (xy -0.342571 -1.386653) (xy -0.268407 -1.384625) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.284351 -1.392600) (xy 0.328657 -1.373190) (xy 0.348406 -1.322321) (xy 0.350733 -1.303438) (xy 0.339984 -1.228981) (xy 0.295309 -1.189610) (xy 0.224248 -1.191062) (xy 0.209550 -1.195983)
|
||||||
|
(xy 0.161599 -1.233854) (xy 0.149748 -1.286770) (xy 0.168581 -1.340499) (xy 0.212683 -1.380808) (xy 0.276639 -1.393464) (xy 0.284351 -1.392600) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.297221 -1.245685) (xy 2.299007 -1.219215) (xy 2.259849 -1.196353) (xy 2.223645 -1.189114) (xy 2.164682 -1.186454) (xy 2.134593 -1.193360) (xy 2.133600 -1.195791) (xy 2.154736 -1.230994)
|
||||||
|
(xy 2.202113 -1.259042) (xy 2.250924 -1.265748) (xy 2.297221 -1.245685) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.885250 -1.385606) (xy 0.920288 -1.340225) (xy 0.923179 -1.278571) (xy 0.907878 -1.243596) (xy 0.856278 -1.202200) (xy 0.790615 -1.197662) (xy 0.741680 -1.224280) (xy 0.712850 -1.282974)
|
||||||
|
(xy 0.729397 -1.344837) (xy 0.765926 -1.381652) (xy 0.829864 -1.403240) (xy 0.885250 -1.385606) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.418913 -1.398046) (xy 1.449588 -1.375260) (xy 1.489726 -1.334774) (xy 1.492762 -1.295005) (xy 1.479181 -1.260284) (xy 1.433069 -1.208575) (xy 1.370199 -1.193211) (xy 1.309662 -1.217282)
|
||||||
|
(xy 1.296412 -1.230680) (xy 1.273730 -1.291435) (xy 1.297252 -1.353107) (xy 1.336201 -1.388291) (xy 1.379982 -1.409296) (xy 1.418913 -1.398046) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.025428 -1.380900) (xy 2.053149 -1.334855) (xy 2.038778 -1.262251) (xy 2.035883 -1.255681) (xy 1.991509 -1.206877) (xy 1.931604 -1.193749) (xy 1.875441 -1.217473) (xy 1.854200 -1.244600)
|
||||||
|
(xy 1.840601 -1.312236) (xy 1.869570 -1.366469) (xy 1.932890 -1.395178) (xy 1.957490 -1.397000) (xy 2.025428 -1.380900) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.557071 -1.401026) (xy 2.565400 -1.397000) (xy 2.608174 -1.353801) (xy 2.611618 -1.303399) (xy 2.576554 -1.263899) (xy 2.559050 -1.256997) (xy 2.494513 -1.238648) (xy 2.460457 -1.229128)
|
||||||
|
(xy 2.417604 -1.238288) (xy 2.404105 -1.256544) (xy 2.401011 -1.322793) (xy 2.434771 -1.377052) (xy 2.491440 -1.407178) (xy 2.557071 -1.401026) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.118979 -1.553965) (xy -1.076490 -1.509079) (xy -1.059982 -1.446729) (xy -1.068398 -1.403350) (xy -1.108894 -1.358736) (xy -1.169993 -1.346007) (xy -1.230278 -1.368503) (xy -1.239520 -1.376680)
|
||||||
|
(xy -1.266917 -1.434628) (xy -1.262180 -1.502640) (xy -1.233121 -1.548388) (xy -1.175255 -1.570647) (xy -1.118979 -1.553965) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.538567 -1.564022) (xy -0.513080 -1.544321) (xy -0.484506 -1.484289) (xy -0.499024 -1.417143) (xy -0.522515 -1.386115) (xy -0.579201 -1.349950) (xy -0.634153 -1.362289) (xy -0.673194 -1.397104)
|
||||||
|
(xy -0.701462 -1.456207) (xy -0.690841 -1.512833) (xy -0.652623 -1.556599) (xy -0.598101 -1.577123) (xy -0.538567 -1.564022) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.012370 -1.564453) (xy 0.060660 -1.531816) (xy 0.078559 -1.477221) (xy 0.068916 -1.417126) (xy 0.034578 -1.367991) (xy -0.021605 -1.346273) (xy -0.025400 -1.346200) (xy -0.078734 -1.363146)
|
||||||
|
(xy -0.096520 -1.376680) (xy -0.124035 -1.435077) (xy -0.118729 -1.503468) (xy -0.089230 -1.549127) (xy -0.034333 -1.568100) (xy 0.012370 -1.564453) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.609760 -1.553534) (xy 0.644016 -1.501973) (xy 0.642449 -1.438478) (xy 0.636599 -1.425389) (xy 0.587854 -1.371356) (xy 0.527085 -1.366520) (xy 0.485515 -1.387657) (xy 0.439966 -1.442460)
|
||||||
|
(xy 0.436621 -1.501489) (xy 0.470463 -1.550245) (xy 0.536472 -1.574230) (xy 0.550286 -1.574800) (xy 0.609760 -1.553534) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.171672 -1.556354) (xy 1.209207 -1.510502) (xy 1.210064 -1.451474) (xy 1.170456 -1.393498) (xy 1.152998 -1.380310) (xy 1.109217 -1.359305) (xy 1.070286 -1.370555) (xy 1.039611 -1.393341)
|
||||||
|
(xy 0.999473 -1.433827) (xy 0.996437 -1.473596) (xy 1.010018 -1.508317) (xy 1.055580 -1.563362) (xy 1.101245 -1.574800) (xy 1.171672 -1.556354) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.729615 -1.558819) (xy 1.769433 -1.514496) (xy 1.778000 -1.472057) (xy 1.761471 -1.428524) (xy 1.723897 -1.380548) (xy 1.683290 -1.349292) (xy 1.670863 -1.346200) (xy 1.643002 -1.360548)
|
||||||
|
(xy 1.597577 -1.394017) (xy 1.557901 -1.434349) (xy 1.555503 -1.474550) (xy 1.568818 -1.508317) (xy 1.612919 -1.558570) (xy 1.671981 -1.574457) (xy 1.729615 -1.558819) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.303132 -1.556585) (xy 2.322458 -1.520334) (xy 2.324100 -1.488999) (xy 2.302452 -1.412748) (xy 2.268811 -1.379187) (xy 2.224827 -1.357132) (xy 2.189735 -1.368747) (xy 2.160861 -1.395139)
|
||||||
|
(xy 2.118247 -1.445564) (xy 2.113201 -1.485767) (xy 2.141202 -1.534025) (xy 2.197134 -1.569104) (xy 2.249152 -1.570630) (xy 2.303132 -1.556585) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.800132 -1.570076) (xy 2.861594 -1.555187) (xy 2.887978 -1.519522) (xy 2.891199 -1.503552) (xy 2.885449 -1.441465) (xy 2.869039 -1.408302) (xy 2.816877 -1.377029) (xy 2.753931 -1.376192)
|
||||||
|
(xy 2.703875 -1.404729) (xy 2.696295 -1.416050) (xy 2.686284 -1.478566) (xy 2.695184 -1.519276) (xy 2.721570 -1.560340) (xy 2.768940 -1.571872) (xy 2.800132 -1.570076) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.633649 -1.452563) (xy -1.630621 -1.412866) (xy -1.635655 -1.403880) (xy -1.647199 -1.411455) (xy -1.648995 -1.437217) (xy -1.642792 -1.464320) (xy -1.633649 -1.452563) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.383971 -1.701527) (xy -1.351229 -1.647311) (xy -1.351985 -1.583018) (xy -1.384755 -1.531728) (xy -1.395331 -1.524894) (xy -1.444586 -1.502621) (xy -1.478470 -1.508617) (xy -1.521934 -1.547334)
|
||||||
|
(xy -1.522116 -1.547516) (xy -1.556715 -1.609032) (xy -1.548665 -1.668820) (xy -1.501622 -1.711166) (xy -1.482536 -1.717615) (xy -1.420450 -1.717647) (xy -1.383971 -1.701527) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.331319 -1.694778) (xy 0.353772 -1.640261) (xy 0.348590 -1.578829) (xy 0.314824 -1.531603) (xy 0.269744 -1.503931) (xy 0.233216 -1.506760) (xy 0.196850 -1.526035) (xy 0.160875 -1.572354)
|
||||||
|
(xy 0.155259 -1.636051) (xy 0.181072 -1.692999) (xy 0.189101 -1.700640) (xy 0.242524 -1.721763) (xy 0.284351 -1.722800) (xy 0.331319 -1.694778) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.834851 -1.720031) (xy -0.788347 -1.674791) (xy -0.783122 -1.664453) (xy -0.771675 -1.595366) (xy -0.804017 -1.546504) (xy -0.874966 -1.524571) (xy -0.891627 -1.524000) (xy -0.949447 -1.535351)
|
||||||
|
(xy -0.977488 -1.577823) (xy -0.980253 -1.587830) (xy -0.978554 -1.656754) (xy -0.944234 -1.705462) (xy -0.891574 -1.728404) (xy -0.834851 -1.720031) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.249723 -1.706819) (xy -0.212707 -1.652882) (xy -0.213548 -1.587830) (xy -0.237808 -1.540126) (xy -0.288387 -1.524408) (xy -0.304391 -1.524000) (xy -0.376880 -1.542591) (xy -0.406400 -1.574800)
|
||||||
|
(xy -0.418489 -1.640708) (xy -0.391516 -1.696814) (xy -0.335183 -1.726063) (xy -0.319717 -1.727200) (xy -0.249723 -1.706819) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.858575 -1.729865) (xy 0.886540 -1.704260) (xy 0.922673 -1.650991) (xy 0.917440 -1.594525) (xy 0.917412 -1.594448) (xy 0.877410 -1.546684) (xy 0.816742 -1.528157) (xy 0.757309 -1.543137)
|
||||||
|
(xy 0.738678 -1.559596) (xy 0.715043 -1.621106) (xy 0.738488 -1.683056) (xy 0.779188 -1.719678) (xy 0.823374 -1.741741) (xy 0.858575 -1.729865) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.417058 -1.727901) (xy 1.433921 -1.717480) (xy 1.485011 -1.661922) (xy 1.492156 -1.599126) (xy 1.472187 -1.560880) (xy 1.417421 -1.529283) (xy 1.349172 -1.528941) (xy 1.300480 -1.554480)
|
||||||
|
(xy 1.271636 -1.613111) (xy 1.288386 -1.674976) (xy 1.325971 -1.712724) (xy 1.374771 -1.737907) (xy 1.417058 -1.727901) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.014760 -1.716719) (xy 2.043169 -1.676936) (xy 2.047052 -1.663371) (xy 2.045003 -1.589006) (xy 2.002415 -1.539242) (xy 1.939171 -1.524000) (xy 1.879440 -1.545426) (xy 1.856382 -1.581150)
|
||||||
|
(xy 1.848489 -1.655508) (xy 1.883082 -1.707219) (xy 1.953943 -1.727187) (xy 1.956209 -1.727200) (xy 2.014760 -1.716719) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.565400 -1.727200) (xy 2.605703 -1.680714) (xy 2.614313 -1.616178) (xy 2.588437 -1.557321) (xy 2.585720 -1.554480) (xy 2.528593 -1.526638) (xy 2.464122 -1.532365) (xy 2.416210 -1.569090)
|
||||||
|
(xy 2.413984 -1.572960) (xy 2.400876 -1.640097) (xy 2.425815 -1.698051) (xy 2.476655 -1.734450) (xy 2.541253 -1.736924) (xy 2.565400 -1.727200) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.124200 -1.727200) (xy 3.168468 -1.681667) (xy 3.167121 -1.615719) (xy 3.148706 -1.573131) (xy 3.103089 -1.533288) (xy 3.041754 -1.526716) (xy 2.987309 -1.553436) (xy 2.972784 -1.572960)
|
||||||
|
(xy 2.959676 -1.640097) (xy 2.984615 -1.698051) (xy 3.035455 -1.734450) (xy 3.100053 -1.736924) (xy 3.124200 -1.727200) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.110662 -1.877980) (xy -1.076521 -1.840322) (xy -1.060184 -1.780269) (xy -1.081369 -1.726249) (xy -1.127043 -1.688932) (xy -1.184173 -1.678987) (xy -1.239520 -1.706880) (xy -1.266917 -1.764828)
|
||||||
|
(xy -1.262180 -1.832840) (xy -1.233121 -1.878588) (xy -1.172310 -1.901242) (xy -1.110662 -1.877980) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.531584 -1.889651) (xy -0.494086 -1.842132) (xy -0.485010 -1.781364) (xy -0.502039 -1.736974) (xy -0.554922 -1.696314) (xy -0.620590 -1.694143) (xy -0.671065 -1.724952) (xy -0.705257 -1.791177)
|
||||||
|
(xy -0.689700 -1.854288) (xy -0.646522 -1.895280) (xy -0.586173 -1.911505) (xy -0.531584 -1.889651) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.051919 -1.872578) (xy 0.074372 -1.818061) (xy 0.069190 -1.756629) (xy 0.035424 -1.709403) (xy -0.009656 -1.681731) (xy -0.046184 -1.684560) (xy -0.082550 -1.703835) (xy -0.118525 -1.750154)
|
||||||
|
(xy -0.124141 -1.813851) (xy -0.098328 -1.870799) (xy -0.090299 -1.878440) (xy -0.036876 -1.899563) (xy 0.004951 -1.900600) (xy 0.051919 -1.872578) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.173893 -1.886266) (xy 1.209299 -1.839933) (xy 1.209440 -1.780812) (xy 1.170668 -1.723710) (xy 1.154521 -1.711521) (xy 1.108226 -1.690528) (xy 1.064649 -1.704316) (xy 1.046571 -1.716277)
|
||||||
|
(xy 0.999868 -1.771960) (xy 0.995537 -1.831800) (xy 1.028835 -1.880952) (xy 1.095021 -1.904575) (xy 1.106869 -1.905000) (xy 1.173893 -1.886266) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.729615 -1.889019) (xy 1.769433 -1.844696) (xy 1.778000 -1.802257) (xy 1.761471 -1.758724) (xy 1.723897 -1.710748) (xy 1.683290 -1.679492) (xy 1.670863 -1.676400) (xy 1.643002 -1.690748)
|
||||||
|
(xy 1.597577 -1.724217) (xy 1.557901 -1.764549) (xy 1.555503 -1.804750) (xy 1.568818 -1.838517) (xy 1.612919 -1.888770) (xy 1.671981 -1.904657) (xy 1.729615 -1.889019) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.555769 -1.918941) (xy 0.596249 -1.895063) (xy 0.647909 -1.851011) (xy 0.656352 -1.804568) (xy 0.634106 -1.750931) (xy 0.588296 -1.711890) (xy 0.524185 -1.703739) (xy 0.465665 -1.729071)
|
||||||
|
(xy 0.462280 -1.732280) (xy 0.433544 -1.791316) (xy 0.451543 -1.856301) (xy 0.481949 -1.891712) (xy 0.521385 -1.921229) (xy 0.555769 -1.918941) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.306676 -1.889291) (xy 2.335772 -1.834207) (xy 2.336800 -1.820287) (xy 2.317456 -1.749416) (xy 2.269185 -1.709140) (xy 2.206623 -1.705805) (xy 2.150375 -1.739454) (xy 2.125192 -1.795449)
|
||||||
|
(xy 2.138786 -1.857783) (xy 2.186654 -1.906202) (xy 2.187572 -1.906699) (xy 2.251137 -1.917010) (xy 2.306676 -1.889291) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.866815 -1.883262) (xy 2.893353 -1.828789) (xy 2.888688 -1.767911) (xy 2.865120 -1.732280) (xy 2.809815 -1.705001) (xy 2.746614 -1.708422) (xy 2.699692 -1.740544) (xy 2.696295 -1.746250)
|
||||||
|
(xy 2.686490 -1.810740) (xy 2.710187 -1.875279) (xy 2.755614 -1.914076) (xy 2.817944 -1.916601) (xy 2.866815 -1.883262) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.421834 -1.889893) (xy 3.447420 -1.847623) (xy 3.429153 -1.782767) (xy 3.418507 -1.765104) (xy 3.365157 -1.714415) (xy 3.307507 -1.705780) (xy 3.258835 -1.740192) (xy 3.251200 -1.752600)
|
||||||
|
(xy 3.237601 -1.820236) (xy 3.266570 -1.874469) (xy 3.329890 -1.903178) (xy 3.354490 -1.905000) (xy 3.421834 -1.889893) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.403817 -2.042527) (xy -1.357069 -1.994800) (xy -1.346200 -1.945070) (xy -1.364901 -1.875171) (xy -1.411071 -1.836561) (xy -1.469811 -1.834220) (xy -1.526222 -1.873127) (xy -1.533356 -1.882534)
|
||||||
|
(xy -1.556430 -1.948733) (xy -1.541212 -2.009781) (xy -1.493537 -2.048521) (xy -1.475388 -2.053000) (xy -1.403817 -2.042527) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.815510 -2.035322) (xy -0.773452 -1.982199) (xy -0.762000 -1.933885) (xy -0.781705 -1.891547) (xy -0.826057 -1.849785) (xy -0.872915 -1.828954) (xy -0.876300 -1.828800) (xy -0.920925 -1.845455)
|
||||||
|
(xy -0.950686 -1.868715) (xy -0.987396 -1.932961) (xy -0.980968 -1.995450) (xy -0.937444 -2.041680) (xy -0.872114 -2.057400) (xy -0.815510 -2.035322) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.250129 -2.037959) (xy -0.210273 -1.989304) (xy -0.208160 -1.925937) (xy -0.243115 -1.868715) (xy -0.301698 -1.832308) (xy -0.355740 -1.846214) (xy -0.394920 -1.890597) (xy -0.417716 -1.958908)
|
||||||
|
(xy -0.401278 -2.018024) (xy -0.352056 -2.053252) (xy -0.321687 -2.057400) (xy -0.250129 -2.037959) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.331319 -2.024978) (xy 0.353772 -1.970461) (xy 0.348590 -1.909029) (xy 0.314824 -1.861803) (xy 0.269744 -1.834131) (xy 0.233216 -1.836960) (xy 0.196850 -1.856235) (xy 0.160875 -1.902554)
|
||||||
|
(xy 0.155259 -1.966251) (xy 0.181072 -2.023199) (xy 0.189101 -2.030840) (xy 0.242524 -2.051963) (xy 0.284351 -2.053000) (xy 0.331319 -2.024978) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.889401 -2.038238) (xy 0.919609 -1.990707) (xy 0.917364 -1.929745) (xy 0.879720 -1.870286) (xy 0.868523 -1.860550) (xy 0.819898 -1.831984) (xy 0.779650 -1.843293) (xy 0.751114 -1.868715)
|
||||||
|
(xy 0.714404 -1.932961) (xy 0.720832 -1.995450) (xy 0.764356 -2.041680) (xy 0.829686 -2.057400) (xy 0.889401 -2.038238) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.009872 -2.038954) (xy 2.047407 -1.993102) (xy 2.048264 -1.934074) (xy 2.008656 -1.876098) (xy 1.991198 -1.862910) (xy 1.947417 -1.841905) (xy 1.908486 -1.853155) (xy 1.877811 -1.875941)
|
||||||
|
(xy 1.837673 -1.916427) (xy 1.834637 -1.956196) (xy 1.848218 -1.990917) (xy 1.893780 -2.045962) (xy 1.939445 -2.057400) (xy 2.009872 -2.038954) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.582532 -2.039185) (xy 2.601858 -2.002934) (xy 2.603500 -1.971599) (xy 2.581852 -1.895348) (xy 2.548211 -1.861787) (xy 2.504227 -1.839732) (xy 2.469135 -1.851347) (xy 2.440261 -1.877739)
|
||||||
|
(xy 2.397647 -1.928164) (xy 2.392601 -1.968367) (xy 2.420602 -2.016625) (xy 2.476534 -2.051704) (xy 2.528552 -2.053230) (xy 2.582532 -2.039185) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.454803 -2.038267) (xy 1.487894 -1.988319) (xy 1.478281 -1.918739) (xy 1.477478 -1.916948) (xy 1.431202 -1.867408) (xy 1.366728 -1.853985) (xy 1.304925 -1.880481) (xy 1.300480 -1.884680)
|
||||||
|
(xy 1.270841 -1.942419) (xy 1.282220 -2.000371) (xy 1.327167 -2.043538) (xy 1.386269 -2.057400) (xy 1.454803 -2.038267) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.081078 -2.064766) (xy 3.108798 -2.048691) (xy 3.159585 -1.993331) (xy 3.168920 -1.933205) (xy 3.140589 -1.882543) (xy 3.078378 -1.855575) (xy 3.057045 -1.854200) (xy 2.996412 -1.876547)
|
||||||
|
(xy 2.965818 -1.920684) (xy 2.949423 -1.972449) (xy 2.966157 -2.009486) (xy 2.995411 -2.035660) (xy 3.043186 -2.067187) (xy 3.081078 -2.064766) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.627111 -2.047296) (xy 3.620635 -2.013961) (xy 3.582833 -1.962150) (xy 3.534934 -1.913789) (xy 3.509632 -1.910740) (xy 3.505200 -1.932070) (xy 3.520412 -1.987838) (xy 3.555717 -2.036822)
|
||||||
|
(xy 3.594993 -2.057400) (xy 3.627111 -2.047296) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.115876 -2.225555) (xy -1.067324 -2.185269) (xy -1.065889 -2.182697) (xy -1.051889 -2.130260) (xy -1.074789 -2.073821) (xy -1.078281 -2.068397) (xy -1.118600 -2.025953) (xy -1.160710 -2.006615)
|
||||||
|
(xy -1.189326 -2.015197) (xy -1.193800 -2.032000) (xy -1.214373 -2.054535) (xy -1.231900 -2.057400) (xy -1.260568 -2.077609) (xy -1.269568 -2.124526) (xy -1.257835 -2.177589) (xy -1.239520 -2.204720)
|
||||||
|
(xy -1.181099 -2.233031) (xy -1.115876 -2.225555) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.541905 -2.247030) (xy -0.504843 -2.200313) (xy -0.493656 -2.130546) (xy -0.518156 -2.072761) (xy -0.566213 -2.036467) (xy -0.625694 -2.031168) (xy -0.680720 -2.062480) (xy -0.709442 -2.121711)
|
||||||
|
(xy -0.692157 -2.186428) (xy -0.664750 -2.218564) (xy -0.598765 -2.256452) (xy -0.541905 -2.247030) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.042816 -2.224754) (xy 0.071190 -2.169034) (xy 0.067591 -2.093000) (xy 0.060782 -2.072178) (xy 0.027398 -2.044849) (xy -0.030331 -2.031770) (xy -0.087113 -2.036382) (xy -0.110067 -2.048934)
|
||||||
|
(xy -0.128576 -2.097895) (xy -0.122171 -2.162935) (xy -0.095445 -2.218782) (xy -0.076200 -2.235200) (xy -0.009119 -2.250147) (xy 0.042816 -2.224754) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.572857 -2.245830) (xy 0.617152 -2.213536) (xy 0.652278 -2.167575) (xy 0.650491 -2.122051) (xy 0.640112 -2.096577) (xy 0.594008 -2.045943) (xy 0.530712 -2.031807) (xy 0.469904 -2.057056)
|
||||||
|
(xy 0.457473 -2.069771) (xy 0.437576 -2.128165) (xy 0.452034 -2.192992) (xy 0.493915 -2.241085) (xy 0.511044 -2.248867) (xy 0.572857 -2.245830) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.157083 -2.241308) (xy 1.197661 -2.201062) (xy 1.211042 -2.140529) (xy 1.194313 -2.083760) (xy 1.147411 -2.042674) (xy 1.082628 -2.033820) (xy 1.023558 -2.060095) (xy 1.021080 -2.062480)
|
||||||
|
(xy 0.992348 -2.121579) (xy 1.010130 -2.186483) (xy 1.039579 -2.220853) (xy 1.100618 -2.251245) (xy 1.157083 -2.241308) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.727200 -2.235200) (xy 1.771468 -2.189667) (xy 1.770121 -2.123719) (xy 1.751706 -2.081131) (xy 1.706089 -2.041288) (xy 1.644754 -2.034716) (xy 1.590309 -2.061436) (xy 1.583864 -2.070100)
|
||||||
|
(xy 1.676400 -2.070100) (xy 1.689100 -2.057400) (xy 1.701800 -2.070100) (xy 1.689100 -2.082800) (xy 1.676400 -2.070100) (xy 1.583864 -2.070100) (xy 1.575784 -2.080960) (xy 1.562676 -2.148097)
|
||||||
|
(xy 1.587615 -2.206051) (xy 1.638455 -2.242450) (xy 1.703053 -2.244924) (xy 1.727200 -2.235200) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.286000 -2.235200) (xy 2.326303 -2.188714) (xy 2.334913 -2.124178) (xy 2.309037 -2.065321) (xy 2.306320 -2.062480) (xy 2.249193 -2.034638) (xy 2.184722 -2.040365) (xy 2.136810 -2.077090)
|
||||||
|
(xy 2.134584 -2.080960) (xy 2.121476 -2.148097) (xy 2.146415 -2.206051) (xy 2.197255 -2.242450) (xy 2.261853 -2.244924) (xy 2.286000 -2.235200) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.844800 -2.235200) (xy 2.889068 -2.189667) (xy 2.887721 -2.123719) (xy 2.869306 -2.081131) (xy 2.823689 -2.041288) (xy 2.762354 -2.034716) (xy 2.707909 -2.061436) (xy 2.693384 -2.080960)
|
||||||
|
(xy 2.680276 -2.148097) (xy 2.705215 -2.206051) (xy 2.756055 -2.242450) (xy 2.820653 -2.244924) (xy 2.844800 -2.235200) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.399281 -2.237489) (xy 3.401896 -2.236112) (xy 3.447301 -2.190636) (xy 3.447109 -2.125564) (xy 3.428106 -2.081131) (xy 3.387690 -2.045917) (xy 3.330084 -2.032006) (xy 3.278946 -2.042831)
|
||||||
|
(xy 3.263959 -2.057305) (xy 3.238254 -2.133752) (xy 3.259403 -2.198090) (xy 3.288991 -2.224634) (xy 3.346620 -2.249929) (xy 3.399281 -2.237489) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.350857 -2.321017) (xy -1.346200 -2.276881) (xy -1.366143 -2.205253) (xy -1.419053 -2.164361) (xy -1.453397 -2.159000) (xy -1.479964 -2.162370) (xy -1.484243 -2.180481) (xy -1.465525 -2.225335)
|
||||||
|
(xy -1.447343 -2.261498) (xy -1.405604 -2.326090) (xy -1.371882 -2.346167) (xy -1.350857 -2.321017) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.857888 -2.378924) (xy -0.799622 -2.341859) (xy -0.774374 -2.278672) (xy -0.789016 -2.206794) (xy -0.789598 -2.205694) (xy -0.834414 -2.168494) (xy -0.897886 -2.161014) (xy -0.955913 -2.185548)
|
||||||
|
(xy -0.960120 -2.189480) (xy -0.989558 -2.247504) (xy -0.981701 -2.309344) (xy -0.944992 -2.359354) (xy -0.887876 -2.381887) (xy -0.857888 -2.378924) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.227346 -2.350141) (xy -0.203624 -2.284945) (xy -0.203200 -2.273300) (xy -0.222859 -2.204307) (xy -0.271862 -2.166069) (xy -0.335250 -2.164482) (xy -0.391886 -2.198915) (xy -0.424977 -2.239638)
|
||||||
|
(xy -0.425045 -2.276700) (xy -0.392260 -2.331149) (xy -0.336652 -2.377829) (xy -0.276685 -2.382631) (xy -0.227346 -2.350141) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.295969 -2.376157) (xy 0.316747 -2.362825) (xy 0.351472 -2.307752) (xy 0.351294 -2.243866) (xy 0.321632 -2.188761) (xy 0.267903 -2.160035) (xy 0.254000 -2.159000) (xy 0.200666 -2.175946)
|
||||||
|
(xy 0.182880 -2.189480) (xy 0.154344 -2.244511) (xy 0.160865 -2.302969) (xy 0.192963 -2.352580) (xy 0.241158 -2.381068) (xy 0.295969 -2.376157) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.870463 -2.360087) (xy 0.906877 -2.319612) (xy 0.928874 -2.275608) (xy 0.917197 -2.240472) (xy 0.890861 -2.211662) (xy 0.826450 -2.165705) (xy 0.770547 -2.167987) (xy 0.741680 -2.189480)
|
||||||
|
(xy 0.714283 -2.247428) (xy 0.719020 -2.315440) (xy 0.748079 -2.361188) (xy 0.808766 -2.383902) (xy 0.870463 -2.360087) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.433681 -2.375150) (xy 1.477774 -2.324204) (xy 1.492944 -2.268461) (xy 1.471333 -2.222360) (xy 1.460593 -2.209904) (xy 1.396658 -2.165486) (xy 1.332964 -2.167201) (xy 1.300480 -2.189480)
|
||||||
|
(xy 1.271905 -2.249512) (xy 1.286423 -2.316658) (xy 1.309914 -2.347686) (xy 1.373019 -2.384180) (xy 1.433681 -2.375150) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.002255 -2.376010) (xy 2.045401 -2.335666) (xy 2.057400 -2.282735) (xy 2.037879 -2.226379) (xy 1.992375 -2.178092) (xy 1.943100 -2.159000) (xy 1.898475 -2.175655) (xy 1.868714 -2.198915)
|
||||||
|
(xy 1.832292 -2.256825) (xy 1.845582 -2.312534) (xy 1.875250 -2.345564) (xy 1.940875 -2.380918) (xy 2.002255 -2.376010) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.561055 -2.376010) (xy 2.604201 -2.335666) (xy 2.616200 -2.282735) (xy 2.596679 -2.226379) (xy 2.551175 -2.178092) (xy 2.501900 -2.159000) (xy 2.457275 -2.175655) (xy 2.427514 -2.198915)
|
||||||
|
(xy 2.391092 -2.256825) (xy 2.404382 -2.312534) (xy 2.434050 -2.345564) (xy 2.499675 -2.380918) (xy 2.561055 -2.376010) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.122576 -2.372980) (xy 3.151611 -2.347077) (xy 3.171703 -2.308941) (xy 3.160482 -2.264198) (xy 3.148371 -2.241413) (xy 3.097047 -2.183647) (xy 3.039471 -2.173342) (xy 2.986179 -2.207945)
|
||||||
|
(xy 2.950597 -2.263117) (xy 2.960769 -2.310664) (xy 2.992850 -2.345564) (xy 3.060709 -2.383810) (xy 3.122576 -2.372980) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.675340 -2.375906) (xy 3.713791 -2.338758) (xy 3.722183 -2.280354) (xy 3.699716 -2.225066) (xy 3.643967 -2.171380) (xy 3.582484 -2.162299) (xy 3.535680 -2.189480) (xy 3.506948 -2.248582)
|
||||||
|
(xy 3.524717 -2.313482) (xy 3.554110 -2.347790) (xy 3.618293 -2.382137) (xy 3.675340 -2.375906) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.116048 -2.577141) (xy -1.077547 -2.528581) (xy -1.061024 -2.460174) (xy -1.070696 -2.406650) (xy -1.110263 -2.374381) (xy -1.170020 -2.362325) (xy -1.227780 -2.371218) (xy -1.260837 -2.400357)
|
||||||
|
(xy -1.267379 -2.467535) (xy -1.243644 -2.529609) (xy -1.200001 -2.573917) (xy -1.146821 -2.587799) (xy -1.116048 -2.577141) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.552678 -2.578963) (xy -0.508313 -2.541949) (xy -0.489466 -2.483598) (xy -0.506281 -2.416213) (xy -0.552789 -2.373026) (xy -0.613963 -2.364059) (xy -0.668786 -2.389886) (xy -0.684907 -2.411331)
|
||||||
|
(xy -0.708876 -2.474378) (xy -0.695946 -2.522165) (xy -0.671286 -2.550886) (xy -0.610891 -2.585116) (xy -0.552678 -2.578963) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.056197 -2.548223) (xy 0.076188 -2.480443) (xy 0.076200 -2.478470) (xy 0.056616 -2.407215) (xy 0.004208 -2.369551) (xy -0.071514 -2.370998) (xy -0.095250 -2.379022) (xy -0.118042 -2.411020)
|
||||||
|
(xy -0.127000 -2.466462) (xy -0.111967 -2.532191) (xy -0.064253 -2.569679) (xy 0.005657 -2.580389) (xy 0.056197 -2.548223) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.598878 -2.570098) (xy 0.640112 -2.519911) (xy 0.646105 -2.458125) (xy 0.645138 -2.454774) (xy 0.605721 -2.390580) (xy 0.547504 -2.362242) (xy 0.485282 -2.374785) (xy 0.462280 -2.392680)
|
||||||
|
(xy 0.432459 -2.451566) (xy 0.438961 -2.516016) (xy 0.475137 -2.568322) (xy 0.534337 -2.590773) (xy 0.536665 -2.590800) (xy 0.598878 -2.570098) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.152734 -2.573838) (xy 1.195573 -2.537076) (xy 1.211920 -2.478246) (xy 1.194313 -2.413960) (xy 1.147319 -2.369639) (xy 1.087070 -2.363791) (xy 1.031935 -2.395133) (xy 1.010887 -2.426777)
|
||||||
|
(xy 0.995290 -2.480299) (xy 1.014341 -2.522717) (xy 1.033847 -2.543736) (xy 1.094970 -2.579176) (xy 1.152734 -2.573838) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.722300 -2.567958) (xy 1.725496 -2.566312) (xy 1.770901 -2.520836) (xy 1.770709 -2.455764) (xy 1.751706 -2.411331) (xy 1.705896 -2.372290) (xy 1.641785 -2.364139) (xy 1.583265 -2.389471)
|
||||||
|
(xy 1.579880 -2.392680) (xy 1.553069 -2.447456) (xy 1.564344 -2.504818) (xy 1.603267 -2.552321) (xy 1.659398 -2.577516) (xy 1.722300 -2.567958) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.279492 -2.576900) (xy 2.319687 -2.536884) (xy 2.330157 -2.473690) (xy 2.316920 -2.427673) (xy 2.271076 -2.374421) (xy 2.210184 -2.365687) (xy 2.151207 -2.400300) (xy 2.235200 -2.400300)
|
||||||
|
(xy 2.247900 -2.387600) (xy 2.260600 -2.400300) (xy 2.247900 -2.413000) (xy 2.235200 -2.400300) (xy 2.151207 -2.400300) (xy 2.148114 -2.402115) (xy 2.133165 -2.425700) (xy 2.184400 -2.425700)
|
||||||
|
(xy 2.197100 -2.413000) (xy 2.209800 -2.425700) (xy 2.197100 -2.438400) (xy 2.184400 -2.425700) (xy 2.133165 -2.425700) (xy 2.111830 -2.459358) (xy 2.124623 -2.514675) (xy 2.157110 -2.550990)
|
||||||
|
(xy 2.221368 -2.584636) (xy 2.279492 -2.576900) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.844800 -2.565400) (xy 2.889068 -2.519867) (xy 2.887721 -2.453919) (xy 2.869306 -2.411331) (xy 2.823597 -2.372252) (xy 2.760116 -2.364564) (xy 2.702260 -2.389895) (xy 2.693411 -2.399082)
|
||||||
|
(xy 2.672676 -2.455707) (xy 2.689731 -2.512608) (xy 2.733198 -2.557285) (xy 2.791701 -2.577240) (xy 2.844800 -2.565400) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.386358 -2.576325) (xy 3.387096 -2.576046) (xy 3.433105 -2.536043) (xy 3.439101 -2.474426) (xy 3.416290 -2.422122) (xy 3.367215 -2.371444) (xy 3.312497 -2.369353) (xy 3.265641 -2.395886)
|
||||||
|
(xy 3.236127 -2.441977) (xy 3.242762 -2.496893) (xy 3.276226 -2.546807) (xy 3.327198 -2.577893) (xy 3.386358 -2.576325) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.908620 -2.561000) (xy 3.938565 -2.553419) (xy 3.943977 -2.535768) (xy 3.923997 -2.495061) (xy 3.901812 -2.458037) (xy 3.861417 -2.400182) (xy 3.832456 -2.383428) (xy 3.814493 -2.393267)
|
||||||
|
(xy 3.786132 -2.449792) (xy 3.797174 -2.507079) (xy 3.838907 -2.549601) (xy 3.902617 -2.561831) (xy 3.908620 -2.561000) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.830862 -2.698629) (xy -0.781347 -2.653443) (xy -0.762000 -2.603500) (xy -0.777776 -2.561904) (xy -0.813099 -2.518168) (xy -0.849966 -2.492948) (xy -0.859065 -2.492147) (xy -0.896256 -2.500549)
|
||||||
|
(xy -0.919557 -2.506480) (xy -0.964181 -2.539356) (xy -0.980314 -2.594691) (xy -0.970450 -2.654688) (xy -0.937085 -2.701553) (xy -0.889921 -2.717800) (xy -0.830862 -2.698629) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.246040 -2.690288) (xy -0.214190 -2.642713) (xy -0.206346 -2.585938) (xy -0.230637 -2.533831) (xy -0.243743 -2.522374) (xy -0.308913 -2.491540) (xy -0.361483 -2.507461) (xy -0.379840 -2.525902)
|
||||||
|
(xy -0.402348 -2.587761) (xy -0.389017 -2.655866) (xy -0.349250 -2.702377) (xy -0.293770 -2.714798) (xy -0.246040 -2.690288) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.312760 -2.690288) (xy 0.344610 -2.642713) (xy 0.352454 -2.585938) (xy 0.328163 -2.533831) (xy 0.315057 -2.522374) (xy 0.249887 -2.491540) (xy 0.197317 -2.507461) (xy 0.178960 -2.525902)
|
||||||
|
(xy 0.156452 -2.587761) (xy 0.169783 -2.655866) (xy 0.209550 -2.702377) (xy 0.265030 -2.714798) (xy 0.312760 -2.690288) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.850570 -2.707453) (xy 0.899466 -2.681677) (xy 0.914302 -2.628117) (xy 0.914400 -2.620797) (xy 0.898599 -2.539920) (xy 0.855199 -2.498535) (xy 0.790203 -2.500579) (xy 0.755650 -2.516635)
|
||||||
|
(xy 0.719562 -2.563028) (xy 0.714232 -2.626774) (xy 0.740562 -2.684120) (xy 0.748970 -2.692127) (xy 0.803867 -2.711100) (xy 0.850570 -2.707453) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.443968 -2.698399) (xy 1.474782 -2.650389) (xy 1.473448 -2.589063) (xy 1.436672 -2.529713) (xy 1.426695 -2.520950) (xy 1.385980 -2.494174) (xy 1.350100 -2.497670) (xy 1.314450 -2.516635)
|
||||||
|
(xy 1.279486 -2.560961) (xy 1.278302 -2.619792) (xy 1.304943 -2.675982) (xy 1.353454 -2.712381) (xy 1.384300 -2.717800) (xy 1.443968 -2.698399) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.994175 -2.697956) (xy 2.037024 -2.653154) (xy 2.057348 -2.605492) (xy 2.057400 -2.603500) (xy 2.037187 -2.553452) (xy 1.991198 -2.508039) (xy 1.943100 -2.489200) (xy 1.898475 -2.505855)
|
||||||
|
(xy 1.868714 -2.529115) (xy 1.836391 -2.574865) (xy 1.828800 -2.601378) (xy 1.848095 -2.644425) (xy 1.891928 -2.689512) (xy 1.939216 -2.716327) (xy 1.949635 -2.717800) (xy 1.994175 -2.697956) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.564528 -2.704047) (xy 2.585720 -2.687320) (xy 2.614230 -2.633350) (xy 2.594255 -2.573743) (xy 2.565400 -2.540000) (xy 2.512113 -2.497388) (xy 2.469244 -2.496618) (xy 2.427514 -2.529115)
|
||||||
|
(xy 2.391092 -2.587025) (xy 2.404382 -2.642734) (xy 2.434050 -2.675764) (xy 2.502113 -2.714170) (xy 2.564528 -2.704047) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.113316 -2.700402) (xy 3.157248 -2.657356) (xy 3.160529 -2.649755) (xy 3.159041 -2.606075) (xy 3.137577 -2.551571) (xy 3.106785 -2.506865) (xy 3.079164 -2.492147) (xy 3.040742 -2.500588)
|
||||||
|
(xy 3.017443 -2.506480) (xy 2.969701 -2.540383) (xy 2.955810 -2.596663) (xy 2.978544 -2.657509) (xy 2.991555 -2.672645) (xy 3.052111 -2.706307) (xy 3.113316 -2.700402) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.671553 -2.701909) (xy 3.709132 -2.663350) (xy 3.717763 -2.604684) (xy 3.695690 -2.549122) (xy 3.648452 -2.499423) (xy 3.594282 -2.496008) (xy 3.549650 -2.516635) (xy 3.510696 -2.563092)
|
||||||
|
(xy 3.514367 -2.623148) (xy 3.554179 -2.678053) (xy 3.616184 -2.710198) (xy 3.671553 -2.701909) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -1.066803 -2.757964) (xy -1.066800 -2.756794) (xy -1.086997 -2.716731) (xy -1.119404 -2.691435) (xy -1.154131 -2.674654) (xy -1.156586 -2.684659) (xy -1.129183 -2.728642) (xy -1.091451 -2.780631)
|
||||||
|
(xy -1.072263 -2.789681) (xy -1.066803 -2.757964) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.528472 -2.889213) (xy -0.495193 -2.844461) (xy -0.493184 -2.779633) (xy -0.522542 -2.728396) (xy -0.570232 -2.697315) (xy -0.623218 -2.692957) (xy -0.668466 -2.721888) (xy -0.683618 -2.749550)
|
||||||
|
(xy -0.685047 -2.768600) (xy -0.558800 -2.768600) (xy -0.549507 -2.747693) (xy -0.541867 -2.751667) (xy -0.538827 -2.781811) (xy -0.541867 -2.785534) (xy -0.556967 -2.782047) (xy -0.558800 -2.768600)
|
||||||
|
(xy -0.685047 -2.768600) (xy -0.689212 -2.824084) (xy -0.657261 -2.889599) (xy -0.634637 -2.908525) (xy -0.583131 -2.914813) (xy -0.528472 -2.889213) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.016569 -2.909557) (xy 0.037347 -2.896225) (xy 0.072072 -2.841152) (xy 0.071894 -2.777266) (xy 0.042232 -2.722161) (xy -0.011497 -2.693435) (xy -0.025400 -2.692400) (xy -0.078734 -2.709346)
|
||||||
|
(xy -0.096520 -2.722880) (xy -0.113642 -2.755900) (xy 0.000000 -2.755900) (xy 0.012700 -2.743200) (xy 0.025400 -2.755900) (xy 0.012700 -2.768600) (xy 0.000000 -2.755900) (xy -0.113642 -2.755900)
|
||||||
|
(xy -0.125056 -2.777911) (xy -0.118535 -2.836369) (xy -0.086437 -2.885980) (xy -0.038242 -2.914468) (xy 0.016569 -2.909557) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.615048 -2.869779) (xy 0.645516 -2.822685) (xy 0.641443 -2.784137) (xy 0.626414 -2.758602) (xy 0.572762 -2.709811) (xy 0.511188 -2.698942) (xy 0.458491 -2.728945) (xy 0.437671 -2.788466)
|
||||||
|
(xy 0.452226 -2.853698) (xy 0.495363 -2.902024) (xy 0.512832 -2.909834) (xy 0.567333 -2.910165) (xy 0.615048 -2.869779) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.141249 -2.910256) (xy 1.180147 -2.880224) (xy 1.208387 -2.820067) (xy 1.203938 -2.784974) (xy 1.165499 -2.720452) (xy 1.110992 -2.692874) (xy 1.054673 -2.704403) (xy 1.023319 -2.741663)
|
||||||
|
(xy 1.055050 -2.741663) (xy 1.085648 -2.721625) (xy 1.123936 -2.719846) (xy 1.142997 -2.737508) (xy 1.143000 -2.737795) (xy 1.121587 -2.755628) (xy 1.091651 -2.761658) (xy 1.056802 -2.755426)
|
||||||
|
(xy 1.055050 -2.741663) (xy 1.023319 -2.741663) (xy 1.011425 -2.755797) (xy 0.996255 -2.811540) (xy 1.017866 -2.857641) (xy 1.028606 -2.870097) (xy 1.086647 -2.914602) (xy 1.141249 -2.910256) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.696436 -2.908239) (xy 1.733412 -2.875276) (xy 1.769325 -2.829055) (xy 1.768743 -2.784443) (xy 1.757712 -2.756977) (xy 1.711235 -2.706175) (xy 1.646968 -2.691932) (xy 1.584978 -2.718097)
|
||||||
|
(xy 1.579880 -2.722880) (xy 1.557128 -2.768600) (xy 1.600200 -2.768600) (xy 1.609493 -2.747693) (xy 1.617133 -2.751667) (xy 1.620173 -2.781811) (xy 1.617133 -2.785534) (xy 1.602033 -2.782047)
|
||||||
|
(xy 1.600200 -2.768600) (xy 1.557128 -2.768600) (xy 1.550914 -2.781086) (xy 1.568339 -2.842338) (xy 1.584269 -2.857500) (xy 1.625600 -2.857500) (xy 1.638300 -2.844800) (xy 1.651000 -2.857500)
|
||||||
|
(xy 1.638300 -2.870200) (xy 1.625600 -2.857500) (xy 1.584269 -2.857500) (xy 1.614545 -2.886314) (xy 1.663118 -2.913426) (xy 1.696436 -2.908239) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.295149 -2.889909) (xy 2.324540 -2.843413) (xy 2.325195 -2.775946) (xy 2.291000 -2.723264) (xy 2.236082 -2.694527) (xy 2.174567 -2.698898) (xy 2.138680 -2.722880) (xy 2.109769 -2.781350)
|
||||||
|
(xy 2.126486 -2.842685) (xy 2.168121 -2.882891) (xy 2.238332 -2.908236) (xy 2.295149 -2.889909) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.847305 -2.873278) (xy 2.847877 -2.872816) (xy 2.887298 -2.832564) (xy 2.889343 -2.792117) (xy 2.876181 -2.758884) (xy 2.830068 -2.707175) (xy 2.767199 -2.691811) (xy 2.706661 -2.715884)
|
||||||
|
(xy 2.693411 -2.729282) (xy 2.691671 -2.734734) (xy 2.751666 -2.734734) (xy 2.755153 -2.719634) (xy 2.768600 -2.717800) (xy 2.789507 -2.727094) (xy 2.785533 -2.734734) (xy 2.755389 -2.737774)
|
||||||
|
(xy 2.751666 -2.734734) (xy 2.691671 -2.734734) (xy 2.675425 -2.785626) (xy 2.694047 -2.848081) (xy 2.742561 -2.895259) (xy 2.791682 -2.904345) (xy 2.847305 -2.873278) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.406119 -2.879470) (xy 3.435461 -2.834905) (xy 3.420695 -2.767643) (xy 3.420677 -2.767608) (xy 3.373749 -2.714203) (xy 3.314292 -2.697775) (xy 3.259007 -2.722035) (xy 3.251593 -2.730027)
|
||||||
|
(xy 3.238359 -2.769398) (xy 3.251200 -2.769398) (xy 3.269818 -2.755422) (xy 3.289300 -2.759415) (xy 3.322720 -2.777444) (xy 3.327400 -2.784018) (xy 3.306658 -2.792897) (xy 3.289300 -2.794000)
|
||||||
|
(xy 3.255492 -2.780708) (xy 3.251200 -2.769398) (xy 3.238359 -2.769398) (xy 3.232772 -2.786016) (xy 3.250743 -2.844222) (xy 3.295968 -2.886030) (xy 3.336445 -2.895600) (xy 3.406119 -2.879470) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.961429 -2.877090) (xy 3.984859 -2.823145) (xy 3.977355 -2.755844) (xy 3.953183 -2.708502) (xy 3.902629 -2.692825) (xy 3.886200 -2.692400) (xy 3.827513 -2.702731) (xy 3.799034 -2.742040)
|
||||||
|
(xy 3.794947 -2.756230) (xy 3.795054 -2.760134) (xy 3.818466 -2.760134) (xy 3.821953 -2.745034) (xy 3.835400 -2.743200) (xy 3.856307 -2.752494) (xy 3.852333 -2.760134) (xy 3.822189 -2.763174)
|
||||||
|
(xy 3.818466 -2.760134) (xy 3.795054 -2.760134) (xy 3.796996 -2.830593) (xy 3.839578 -2.880359) (xy 3.902807 -2.895600) (xy 3.961429 -2.877090) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.776943 -2.981186) (xy -0.763522 -2.922954) (xy -0.784364 -2.878185) (xy -0.801915 -2.859315) (xy -0.858014 -2.824537) (xy -0.924548 -2.832795) (xy -0.933450 -2.836222) (xy -0.963278 -2.865515)
|
||||||
|
(xy -0.946429 -2.907935) (xy -0.884311 -2.960220) (xy -0.878229 -2.964214) (xy -0.821567 -2.997479) (xy -0.792074 -3.002080) (xy -0.776943 -2.981186) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.260350 -3.032577) (xy -0.218736 -2.982248) (xy -0.208602 -2.917644) (xy -0.222105 -2.879974) (xy -0.269784 -2.842840) (xy -0.329726 -2.832862) (xy -0.377850 -2.853785) (xy -0.379364 -2.855529)
|
||||||
|
(xy -0.403852 -2.914003) (xy -0.394840 -2.973988) (xy -0.361276 -3.022172) (xy -0.312110 -3.045245) (xy -0.260350 -3.032577) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.283185 -3.040351) (xy 0.298450 -3.032577) (xy 0.340940 -2.982070) (xy 0.350691 -2.917952) (xy 0.325704 -2.861888) (xy 0.315057 -2.852574) (xy 0.272435 -2.826023) (xy 0.254000 -2.819400)
|
||||||
|
(xy 0.223191 -2.832745) (xy 0.192942 -2.852574) (xy 0.158593 -2.901047) (xy 0.158591 -2.908300) (xy 0.177800 -2.908300) (xy 0.190500 -2.895600) (xy 0.203200 -2.908300) (xy 0.190500 -2.921000)
|
||||||
|
(xy 0.177800 -2.908300) (xy 0.158591 -2.908300) (xy 0.158570 -2.957929) (xy 0.184747 -3.009351) (xy 0.228994 -3.041447) (xy 0.283185 -3.040351) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.843151 -3.043600) (xy 0.890119 -3.015578) (xy 0.912572 -2.961061) (xy 0.907390 -2.899629) (xy 0.873624 -2.852403) (xy 0.822202 -2.823170) (xy 0.782697 -2.831708) (xy 0.751114 -2.859315)
|
||||||
|
(xy 0.714950 -2.922752) (xy 0.720915 -2.984338) (xy 0.761882 -3.029800) (xy 0.830721 -3.044865) (xy 0.843151 -3.043600) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.426494 -3.035507) (xy 1.463017 -2.989372) (xy 1.468685 -2.963915) (xy 1.461829 -2.885145) (xy 1.427176 -2.836025) (xy 1.375013 -2.823334) (xy 1.315630 -2.853849) (xy 1.309914 -2.859315)
|
||||||
|
(xy 1.273249 -2.919894) (xy 1.287115 -2.980108) (xy 1.311265 -3.009438) (xy 1.370947 -3.043631) (xy 1.426494 -3.035507) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.995153 -3.032109) (xy 2.032732 -2.993550) (xy 2.041363 -2.934884) (xy 2.019290 -2.879322) (xy 1.967731 -2.828197) (xy 1.912421 -2.827644) (xy 1.868714 -2.859315) (xy 1.832434 -2.916539)
|
||||||
|
(xy 1.845212 -2.971844) (xy 1.877779 -3.008253) (xy 1.939784 -3.040398) (xy 1.995153 -3.032109) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.549026 -3.037448) (xy 2.594157 -2.987213) (xy 2.595374 -2.984604) (xy 2.610544 -2.928861) (xy 2.588933 -2.882760) (xy 2.578193 -2.870304) (xy 2.521684 -2.825873) (xy 2.468947 -2.827645)
|
||||||
|
(xy 2.449247 -2.838839) (xy 2.407691 -2.893574) (xy 2.406171 -2.960222) (xy 2.429024 -3.000874) (xy 2.490300 -3.042362) (xy 2.549026 -3.037448) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.137564 -3.001507) (xy 3.149600 -2.948763) (xy 3.137791 -2.887082) (xy 3.109574 -2.838793) (xy 3.075764 -2.822144) (xy 3.074670 -2.822347) (xy 3.040722 -2.830648) (xy 3.017443 -2.836680)
|
||||||
|
(xy 2.970870 -2.870259) (xy 2.953728 -2.926047) (xy 2.965644 -2.985118) (xy 3.006243 -3.028543) (xy 3.021368 -3.034910) (xy 3.092075 -3.038259) (xy 3.137564 -3.001507) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.649920 -3.033356) (xy 3.652736 -3.031639) (xy 3.693969 -2.979909) (xy 3.703735 -2.911378) (xy 3.681839 -2.856102) (xy 3.641362 -2.826511) (xy 3.601246 -2.821146) (xy 3.581502 -2.842260)
|
||||||
|
(xy 3.581400 -2.844800) (xy 3.560827 -2.867335) (xy 3.543300 -2.870200) (xy 3.511547 -2.887982) (xy 3.508557 -2.930946) (xy 3.532763 -2.983523) (xy 3.557486 -3.011246) (xy 3.606508 -3.042430)
|
||||||
|
(xy 3.649920 -3.033356) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 4.200858 -3.023245) (xy 4.195020 -2.980579) (xy 4.192929 -2.976609) (xy 4.145230 -2.901538) (xy 4.105696 -2.861493) (xy 4.082352 -2.860314) (xy 4.063422 -2.910002) (xy 4.073837 -2.971305)
|
||||||
|
(xy 4.108398 -3.018592) (xy 4.115324 -3.022881) (xy 4.170910 -3.039363) (xy 4.200858 -3.023245) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.726698 -3.206097) (xy 1.758249 -3.155323) (xy 1.750138 -3.085983) (xy 1.744606 -3.073798) (xy 1.704254 -3.017146) (xy 1.658277 -3.008488) (xy 1.598608 -3.044182) (xy 1.558361 -3.084704)
|
||||||
|
(xy 1.555177 -3.124376) (xy 1.568818 -3.159317) (xy 1.613334 -3.213773) (xy 1.662261 -3.225800) (xy 1.726698 -3.206097) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.798951 -3.221400) (xy 2.843257 -3.201990) (xy 2.863006 -3.151121) (xy 2.865333 -3.132238) (xy 2.855838 -3.058042) (xy 2.816589 -3.018185) (xy 2.757369 -3.019092) (xy 2.721726 -3.037949)
|
||||||
|
(xy 2.676276 -3.092412) (xy 2.672266 -3.150813) (xy 2.703700 -3.198909) (xy 2.764584 -3.222456) (xy 2.798951 -3.221400) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.357751 -3.221400) (xy 3.402057 -3.201990) (xy 3.421806 -3.151121) (xy 3.424133 -3.132238) (xy 3.413384 -3.057781) (xy 3.368709 -3.018410) (xy 3.297648 -3.019862) (xy 3.282950 -3.024783)
|
||||||
|
(xy 3.234999 -3.062654) (xy 3.223148 -3.115570) (xy 3.241981 -3.169299) (xy 3.286083 -3.209608) (xy 3.350039 -3.222264) (xy 3.357751 -3.221400) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.963396 -3.190796) (xy 3.985759 -3.141849) (xy 3.974593 -3.082067) (xy 3.941349 -3.039237) (xy 3.900585 -3.005805) (xy 3.870635 -3.002957) (xy 3.829050 -3.024635) (xy 3.790062 -3.071651)
|
||||||
|
(xy 3.787556 -3.132112) (xy 3.819529 -3.186306) (xy 3.847347 -3.204679) (xy 3.914820 -3.216031) (xy 3.963396 -3.190796) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.485079 -3.130873) (xy -0.490788 -3.092516) (xy -0.498761 -3.078532) (xy -0.541014 -3.044428) (xy -0.601086 -3.026267) (xy -0.654293 -3.029917) (xy -0.667701 -3.038368) (xy -0.683992 -3.066980)
|
||||||
|
(xy -0.663136 -3.091847) (xy -0.599002 -3.119975) (xy -0.594999 -3.121430) (xy -0.520253 -3.140706) (xy -0.485079 -3.130873) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.044959 -3.213130) (xy 0.071096 -3.151514) (xy 0.071333 -3.116163) (xy 0.058406 -3.058387) (xy 0.024013 -3.033790) (xy -0.013613 -3.027747) (xy -0.073842 -3.027789) (xy -0.108863 -3.038330)
|
||||||
|
(xy -0.128211 -3.088185) (xy -0.122173 -3.153810) (xy -0.095169 -3.209839) (xy -0.076200 -3.225800) (xy -0.007840 -3.240642) (xy 0.044959 -3.213130) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.573542 -3.238585) (xy 0.616835 -3.197766) (xy 0.630752 -3.125173) (xy 0.629947 -3.113664) (xy 0.615285 -3.055594) (xy 0.577727 -3.031237) (xy 0.556625 -3.027666) (xy 0.494338 -3.035890)
|
||||||
|
(xy 0.458539 -3.059086) (xy 0.437927 -3.117868) (xy 0.451315 -3.182904) (xy 0.492175 -3.231061) (xy 0.509277 -3.238906) (xy 0.573542 -3.238585) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.167707 -3.206069) (xy 1.204850 -3.165527) (xy 1.205366 -3.119690) (xy 1.196095 -3.092137) (xy 1.153697 -3.038323) (xy 1.092928 -3.021204) (xy 1.032408 -3.044176) (xy 1.017011 -3.059482)
|
||||||
|
(xy 0.999025 -3.115826) (xy 1.017647 -3.178281) (xy 1.066161 -3.225459) (xy 1.116807 -3.234552) (xy 1.167707 -3.206069) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.290311 -3.207676) (xy 2.325616 -3.159638) (xy 2.318208 -3.091191) (xy 2.315678 -3.085348) (xy 2.269630 -3.035772) (xy 2.205983 -3.022836) (xy 2.144877 -3.049173) (xy 2.132975 -3.061453)
|
||||||
|
(xy 2.114900 -3.116592) (xy 2.133262 -3.174333) (xy 2.178336 -3.216063) (xy 2.218845 -3.225800) (xy 2.290311 -3.207676) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy -0.206849 -3.233556) (xy -0.228836 -3.204111) (xy -0.243115 -3.189515) (xy -0.287097 -3.155005) (xy -0.326839 -3.158447) (xy -0.355600 -3.175000) (xy -0.381529 -3.195634) (xy -0.380833 -3.200012)
|
||||||
|
(xy -0.349967 -3.206619) (xy -0.292005 -3.222195) (xy -0.285583 -3.224027) (xy -0.224385 -3.239074) (xy -0.206849 -3.233556) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.346246 -3.312805) (xy 0.357353 -3.278737) (xy 0.349813 -3.232109) (xy 0.324694 -3.189819) (xy 0.306469 -3.175894) (xy 0.246504 -3.151997) (xy 0.204252 -3.161878) (xy 0.182880 -3.180080)
|
||||||
|
(xy 0.152476 -3.232845) (xy 0.160805 -3.278525) (xy 0.203898 -3.301481) (xy 0.213822 -3.302000) (xy 0.279635 -3.308290) (xy 0.315422 -3.317418) (xy 0.346246 -3.312805) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.457044 -3.343422) (xy 1.472982 -3.292129) (xy 1.473200 -3.281197) (xy 1.457399 -3.200320) (xy 1.413999 -3.158935) (xy 1.349003 -3.160979) (xy 1.314450 -3.177035) (xy 1.274874 -3.222626)
|
||||||
|
(xy 1.271850 -3.279332) (xy 1.298288 -3.332264) (xy 1.347099 -3.366534) (xy 1.405747 -3.368762) (xy 1.457044 -3.343422) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.990690 -3.356448) (xy 2.028238 -3.316839) (xy 2.038532 -3.259698) (xy 2.016651 -3.204327) (xy 1.964286 -3.156682) (xy 1.908452 -3.159648) (xy 1.868714 -3.189515) (xy 1.832485 -3.246496)
|
||||||
|
(xy 1.845068 -3.301644) (xy 1.878653 -3.339244) (xy 1.937093 -3.367568) (xy 1.990690 -3.356448) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.544558 -3.365076) (xy 2.547157 -3.364113) (xy 2.593980 -3.325019) (xy 2.596749 -3.262262) (xy 2.581618 -3.223314) (xy 2.534500 -3.166442) (xy 2.475417 -3.158786) (xy 2.427813 -3.183014)
|
||||||
|
(xy 2.392657 -3.232507) (xy 2.395485 -3.288709) (xy 2.427565 -3.338371) (xy 2.480166 -3.368243) (xy 2.544558 -3.365076) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.120922 -3.331054) (xy 3.147067 -3.276434) (xy 3.142522 -3.215684) (xy 3.119120 -3.180080) (xy 3.068327 -3.151673) (xy 3.009549 -3.167925) (xy 2.985609 -3.183748) (xy 2.955325 -3.232789)
|
||||||
|
(xy 2.957095 -3.295129) (xy 2.987568 -3.347641) (xy 3.011520 -3.362608) (xy 3.072827 -3.364720) (xy 3.120922 -3.331054) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.689273 -3.320116) (xy 3.703999 -3.281552) (xy 3.695711 -3.211811) (xy 3.657608 -3.166009) (xy 3.603486 -3.151904) (xy 3.547141 -3.177255) (xy 3.536950 -3.187595) (xy 3.508319 -3.248754)
|
||||||
|
(xy 3.521753 -3.304527) (xy 3.569105 -3.341836) (xy 3.637151 -3.348400) (xy 3.689273 -3.320116) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 4.190878 -3.353629) (xy 4.238196 -3.317748) (xy 4.265773 -3.269603) (xy 4.267200 -3.257365) (xy 4.247355 -3.212825) (xy 4.202553 -3.169976) (xy 4.154891 -3.149652) (xy 4.152900 -3.149600)
|
||||||
|
(xy 4.108275 -3.166255) (xy 4.078514 -3.189515) (xy 4.046600 -3.228943) (xy 4.038600 -3.248160) (xy 4.057606 -3.289954) (xy 4.101389 -3.334930) (xy 4.144163 -3.360238) (xy 4.190878 -3.353629) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 0.872723 -3.335810) (xy 0.897097 -3.314087) (xy 0.901700 -3.263900) (xy 0.895287 -3.210516) (xy 0.865559 -3.187145) (xy 0.818975 -3.179728) (xy 0.748825 -3.184634) (xy 0.721577 -3.209994)
|
||||||
|
(xy 0.710715 -3.281552) (xy 0.742351 -3.325511) (xy 0.813147 -3.340100) (xy 0.872723 -3.335810) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.754873 -3.413987) (xy 1.735408 -3.372321) (xy 1.722120 -3.357880) (xy 1.684703 -3.330963) (xy 1.647964 -3.339506) (xy 1.608354 -3.371850) (xy 1.575635 -3.403458) (xy 1.568711 -3.412912)
|
||||||
|
(xy 1.596671 -3.415677) (xy 1.654095 -3.426875) (xy 1.664971 -3.429287) (xy 1.730310 -3.434330) (xy 1.754873 -3.413987) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.386723 -3.534300) (xy 3.419407 -3.480149) (xy 3.419355 -3.419432) (xy 3.388203 -3.359241) (xy 3.333562 -3.343014) (xy 3.282950 -3.355320) (xy 3.237487 -3.393346) (xy 3.225454 -3.449028)
|
||||||
|
(xy 3.242962 -3.505554) (xy 3.286121 -3.546113) (xy 3.329369 -3.556000) (xy 3.386723 -3.534300) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.954846 -3.519478) (xy 3.986110 -3.471305) (xy 3.987800 -3.455321) (xy 3.971309 -3.402374) (xy 3.933218 -3.352674) (xy 3.890596 -3.327713) (xy 3.886200 -3.327400) (xy 3.852606 -3.343537)
|
||||||
|
(xy 3.824514 -3.367315) (xy 3.788772 -3.429300) (xy 3.795242 -3.490248) (xy 3.835400 -3.530600) (xy 3.898368 -3.542326) (xy 3.954846 -3.519478) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 1.149833 -3.369461) (xy 1.150677 -3.361123) (xy 1.110915 -3.357717) (xy 1.104900 -3.357752) (xy 1.065505 -3.361415) (xy 1.069266 -3.369146) (xy 1.073633 -3.370402) (xy 1.128962 -3.374121)
|
||||||
|
(xy 1.149833 -3.369461) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.287991 -3.511145) (xy 2.320804 -3.481286) (xy 2.313434 -3.421095) (xy 2.312632 -3.418895) (xy 2.273684 -3.376420) (xy 2.212729 -3.360639) (xy 2.152917 -3.374980) (xy 2.132494 -3.392232)
|
||||||
|
(xy 2.112307 -3.443423) (xy 2.138545 -3.484856) (xy 2.206961 -3.510322) (xy 2.214132 -3.511484) (xy 2.287991 -3.511145) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.839414 -3.536601) (xy 2.855535 -3.496888) (xy 2.857500 -3.454748) (xy 2.848817 -3.387924) (xy 2.819699 -3.359302) (xy 2.813050 -3.357636) (xy 2.775243 -3.367340) (xy 2.768600 -3.389038)
|
||||||
|
(xy 2.755850 -3.424024) (xy 2.743997 -3.429000) (xy 2.730021 -3.410382) (xy 2.734014 -3.390900) (xy 2.731974 -3.357998) (xy 2.703307 -3.355878) (xy 2.683933 -3.369734) (xy 2.667389 -3.416045)
|
||||||
|
(xy 2.674189 -3.477715) (xy 2.700891 -3.526941) (xy 2.703701 -3.529440) (xy 2.757124 -3.550563) (xy 2.798951 -3.551600) (xy 2.839414 -3.536601) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 4.466182 -3.512297) (xy 4.436446 -3.437174) (xy 4.431647 -3.427739) (xy 4.399237 -3.371019) (xy 4.376703 -3.358124) (xy 4.352857 -3.386650) (xy 4.340912 -3.408249) (xy 4.325664 -3.453908)
|
||||||
|
(xy 4.346056 -3.490451) (xy 4.368232 -3.509849) (xy 4.430518 -3.550651) (xy 4.463687 -3.550795) (xy 4.466182 -3.512297) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 2.586790 -3.563106) (xy 2.577665 -3.533825) (xy 2.565909 -3.518514) (xy 2.510138 -3.483798) (xy 2.448255 -3.489643) (xy 2.415799 -3.514527) (xy 2.406020 -3.538908) (xy 2.433013 -3.554741)
|
||||||
|
(xy 2.481206 -3.564544) (xy 2.556081 -3.572561) (xy 2.586790 -3.563106) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.079600 -3.671234) (xy 3.129176 -3.637589) (xy 3.150002 -3.585068) (xy 3.133124 -3.527025) (xy 3.119120 -3.510280) (xy 3.070439 -3.486078) (xy 3.009033 -3.480650) (xy 2.963581 -3.496489)
|
||||||
|
(xy 2.963333 -3.496734) (xy 2.950892 -3.532289) (xy 2.946400 -3.585150) (xy 2.958226 -3.642601) (xy 3.002140 -3.670459) (xy 3.010229 -3.672653) (xy 3.079600 -3.671234) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.678479 -3.644477) (xy 3.692976 -3.625850) (xy 3.705249 -3.567672) (xy 3.675679 -3.516954) (xy 3.612913 -3.486772) (xy 3.599596 -3.484628) (xy 3.536750 -3.494719) (xy 3.504883 -3.531191)
|
||||||
|
(xy 3.493886 -3.591164) (xy 3.519609 -3.639455) (xy 3.568189 -3.669088) (xy 3.625767 -3.673087) (xy 3.678479 -3.644477) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 4.233528 -3.636339) (xy 4.237435 -3.565445) (xy 4.219904 -3.509275) (xy 4.175527 -3.486619) (xy 4.163425 -3.484866) (xy 4.101879 -3.492671) (xy 4.066077 -3.515397) (xy 4.046117 -3.572637)
|
||||||
|
(xy 4.066114 -3.630074) (xy 4.118633 -3.669618) (xy 4.131052 -3.673462) (xy 4.198303 -3.674605) (xy 4.233528 -3.636339) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.422304 -3.765519) (xy 3.410506 -3.721757) (xy 3.404764 -3.710576) (xy 3.363473 -3.672781) (xy 3.305746 -3.657237) (xy 3.254274 -3.667706) (xy 3.238500 -3.683000) (xy 3.234777 -3.725024)
|
||||||
|
(xy 3.280066 -3.757786) (xy 3.329507 -3.772363) (xy 3.396829 -3.781137) (xy 3.422304 -3.765519) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.959915 -3.825558) (xy 3.963024 -3.821948) (xy 3.982312 -3.777456) (xy 3.966678 -3.720348) (xy 3.922211 -3.670998) (xy 3.862381 -3.657428) (xy 3.806202 -3.680885) (xy 3.784600 -3.708400)
|
||||||
|
(xy 3.772211 -3.771878) (xy 3.797045 -3.823922) (xy 3.845606 -3.855943) (xy 3.904395 -3.859352) (xy 3.959915 -3.825558) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 4.470825 -3.846032) (xy 4.512475 -3.809415) (xy 4.521200 -3.776497) (xy 4.508547 -3.716925) (xy 4.490720 -3.688080) (xy 4.442039 -3.663878) (xy 4.380633 -3.658450) (xy 4.335181 -3.674289)
|
||||||
|
(xy 4.334933 -3.674534) (xy 4.318309 -3.721063) (xy 4.325480 -3.782902) (xy 4.352879 -3.832561) (xy 4.355770 -3.835127) (xy 4.412108 -3.856899) (xy 4.470825 -3.846032) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 3.679891 -3.866701) (xy 3.664399 -3.831208) (xy 3.658109 -3.823314) (xy 3.606038 -3.787601) (xy 3.545174 -3.800728) (xy 3.534502 -3.807051) (xy 3.523903 -3.826572) (xy 3.557830 -3.848066)
|
||||||
|
(xy 3.583070 -3.857577) (xy 3.652590 -3.875578) (xy 3.679891 -3.866701) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 4.183789 -3.991586) (xy 4.188887 -3.988931) (xy 4.231735 -3.942965) (xy 4.240114 -3.882630) (xy 4.218223 -3.825556) (xy 4.170263 -3.789375) (xy 4.140200 -3.784600) (xy 4.086866 -3.801546)
|
||||||
|
(xy 4.069080 -3.815080) (xy 4.040349 -3.874194) (xy 4.058075 -3.939078) (xy 4.087287 -3.973188) (xy 4.134942 -4.002385) (xy 4.183789 -3.991586) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 4.690938 -3.983195) (xy 4.695051 -3.961716) (xy 4.673958 -3.911873) (xy 4.660247 -3.884939) (xy 4.628413 -3.828419) (xy 4.608751 -3.813987) (xy 4.592521 -3.837438) (xy 4.587508 -3.849941)
|
||||||
|
(xy 4.586353 -3.905085) (xy 4.612302 -3.958170) (xy 4.653355 -3.986925) (xy 4.661793 -3.987800) (xy 4.690938 -3.983195) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 4.472240 -4.164616) (xy 4.515266 -4.118974) (xy 4.512622 -4.052003) (xy 4.494906 -4.011531) (xy 4.449290 -3.969411) (xy 4.390101 -3.969704) (xy 4.337449 -4.006850) (xy 4.311430 -4.065570)
|
||||||
|
(xy 4.324436 -4.122076) (xy 4.365755 -4.163829) (xy 4.424671 -4.178287) (xy 4.472240 -4.164616) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 4.755660 -4.292772) (xy 4.771570 -4.230714) (xy 4.770472 -4.210225) (xy 4.756663 -4.150210) (xy 4.722699 -4.124514) (xy 4.698821 -4.120059) (xy 4.637741 -4.125984) (xy 4.603571 -4.144189)
|
||||||
|
(xy 4.573598 -4.202805) (xy 4.588865 -4.260582) (xy 4.633880 -4.296484) (xy 4.708804 -4.315301) (xy 4.755660 -4.292772) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
(fp_poly (pts (xy 4.928244 -4.451401) (xy 4.919604 -4.407686) (xy 4.894871 -4.359178) (xy 4.893584 -4.357392) (xy 4.866063 -4.326457) (xy 4.850040 -4.337189) (xy 4.843864 -4.351802) (xy 4.848017 -4.394952)
|
||||||
|
(xy 4.875372 -4.442504) (xy 4.910666 -4.469610) (xy 4.916714 -4.470400) (xy 4.928244 -4.451401) )(layer F.SilkS) (width 0.010000)
|
||||||
|
)
|
||||||
|
)
|
283
firmware/firmware/Adafruit_MCP23017.cpp
Normal file
283
firmware/firmware/Adafruit_MCP23017.cpp
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
/***************************************************
|
||||||
|
This is a library for the MCP23017 i2c port expander
|
||||||
|
|
||||||
|
These displays use I2C to communicate, 2 pins are required to
|
||||||
|
interface
|
||||||
|
Adafruit invests time and resources providing this open source code,
|
||||||
|
please support Adafruit and open-source hardware by purchasing
|
||||||
|
products from Adafruit!
|
||||||
|
|
||||||
|
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||||
|
BSD license, all text above must be included in any redistribution
|
||||||
|
****************************************************/
|
||||||
|
|
||||||
|
#ifdef __AVR
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
#elif defined(ESP8266)
|
||||||
|
#include <pgmspace.h>
|
||||||
|
#endif
|
||||||
|
#include "Adafruit_MCP23017.h"
|
||||||
|
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
#include "Arduino.h"
|
||||||
|
#else
|
||||||
|
#include "WProgram.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// minihelper to keep Arduino backward compatibility
|
||||||
|
static inline void wiresend(uint8_t x) {
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
Wire.write((uint8_t) x);
|
||||||
|
#else
|
||||||
|
Wire.send(x);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint8_t wirerecv(void) {
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
return Wire.read();
|
||||||
|
#else
|
||||||
|
return Wire.receive();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bit number associated to a give Pin
|
||||||
|
*/
|
||||||
|
uint8_t Adafruit_MCP23017::bitForPin(uint8_t pin){
|
||||||
|
return pin%8;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register address, port dependent, for a given PIN
|
||||||
|
*/
|
||||||
|
uint8_t Adafruit_MCP23017::regForPin(uint8_t pin, uint8_t portAaddr, uint8_t portBaddr){
|
||||||
|
return(pin<8) ?portAaddr:portBaddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a given register
|
||||||
|
*/
|
||||||
|
uint8_t Adafruit_MCP23017::readRegister(uint8_t addr){
|
||||||
|
// read the current GPINTEN
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(addr);
|
||||||
|
Wire.endTransmission();
|
||||||
|
Wire.requestFrom(MCP23017_ADDRESS | i2caddr, 1);
|
||||||
|
return wirerecv();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes a given register
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::writeRegister(uint8_t regAddr, uint8_t regValue){
|
||||||
|
// Write the register
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(regAddr);
|
||||||
|
wiresend(regValue);
|
||||||
|
Wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper to update a single bit of an A/B register.
|
||||||
|
* - Reads the current register value
|
||||||
|
* - Writes the new register value
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::updateRegisterBit(uint8_t pin, uint8_t pValue, uint8_t portAaddr, uint8_t portBaddr) {
|
||||||
|
uint8_t regValue;
|
||||||
|
uint8_t regAddr=regForPin(pin,portAaddr,portBaddr);
|
||||||
|
uint8_t bit=bitForPin(pin);
|
||||||
|
regValue = readRegister(regAddr);
|
||||||
|
|
||||||
|
// set the value for the particular bit
|
||||||
|
bitWrite(regValue,bit,pValue);
|
||||||
|
|
||||||
|
writeRegister(regAddr,regValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the MCP23017 given its HW selected address, see datasheet for Address selection.
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::begin(uint8_t addr) {
|
||||||
|
if (addr > 7) {
|
||||||
|
addr = 7;
|
||||||
|
}
|
||||||
|
i2caddr = addr;
|
||||||
|
|
||||||
|
Wire.begin();
|
||||||
|
|
||||||
|
// set defaults!
|
||||||
|
// all inputs on port A and B
|
||||||
|
writeRegister(MCP23017_IODIRA,0xff);
|
||||||
|
writeRegister(MCP23017_IODIRB,0xff);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the default MCP23017, with 000 for the configurable part of the address
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::begin(void) {
|
||||||
|
begin(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the pin mode to either INPUT or OUTPUT
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::pinMode(uint8_t p, uint8_t d) {
|
||||||
|
updateRegisterBit(p,(d==INPUT),MCP23017_IODIRA,MCP23017_IODIRB);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads all 16 pins (port A and B) into a single 16 bits variable.
|
||||||
|
*/
|
||||||
|
uint16_t Adafruit_MCP23017::readGPIOAB() {
|
||||||
|
uint16_t ba = 0;
|
||||||
|
uint8_t a;
|
||||||
|
|
||||||
|
// read the current GPIO output latches
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(MCP23017_GPIOA);
|
||||||
|
Wire.endTransmission();
|
||||||
|
|
||||||
|
Wire.requestFrom(MCP23017_ADDRESS | i2caddr, 2);
|
||||||
|
a = wirerecv();
|
||||||
|
ba = wirerecv();
|
||||||
|
ba <<= 8;
|
||||||
|
ba |= a;
|
||||||
|
|
||||||
|
return ba;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read a single port, A or B, and return its current 8 bit value.
|
||||||
|
* Parameter b should be 0 for GPIOA, and 1 for GPIOB.
|
||||||
|
*/
|
||||||
|
uint8_t Adafruit_MCP23017::readGPIO(uint8_t b) {
|
||||||
|
|
||||||
|
// read the current GPIO output latches
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
if (b == 0)
|
||||||
|
wiresend(MCP23017_GPIOA);
|
||||||
|
else {
|
||||||
|
wiresend(MCP23017_GPIOB);
|
||||||
|
}
|
||||||
|
Wire.endTransmission();
|
||||||
|
|
||||||
|
Wire.requestFrom(MCP23017_ADDRESS | i2caddr, 1);
|
||||||
|
return wirerecv();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes all the pins in one go. This method is very useful if you are implementing a multiplexed matrix and want to get a decent refresh rate.
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::writeGPIOAB(uint16_t ba) {
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(MCP23017_GPIOA);
|
||||||
|
wiresend(ba & 0xFF);
|
||||||
|
wiresend(ba >> 8);
|
||||||
|
Wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_MCP23017::digitalWrite(uint8_t pin, uint8_t d) {
|
||||||
|
uint8_t gpio;
|
||||||
|
uint8_t bit=bitForPin(pin);
|
||||||
|
|
||||||
|
|
||||||
|
// read the current GPIO output latches
|
||||||
|
uint8_t regAddr=regForPin(pin,MCP23017_OLATA,MCP23017_OLATB);
|
||||||
|
gpio = readRegister(regAddr);
|
||||||
|
|
||||||
|
// set the pin and direction
|
||||||
|
bitWrite(gpio,bit,d);
|
||||||
|
|
||||||
|
// write the new GPIO
|
||||||
|
regAddr=regForPin(pin,MCP23017_GPIOA,MCP23017_GPIOB);
|
||||||
|
writeRegister(regAddr,gpio);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_MCP23017::pullUp(uint8_t p, uint8_t d) {
|
||||||
|
updateRegisterBit(p,d,MCP23017_GPPUA,MCP23017_GPPUB);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Adafruit_MCP23017::digitalRead(uint8_t pin) {
|
||||||
|
uint8_t bit=bitForPin(pin);
|
||||||
|
uint8_t regAddr=regForPin(pin,MCP23017_GPIOA,MCP23017_GPIOB);
|
||||||
|
return (readRegister(regAddr) >> bit) & 0x1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configures the interrupt system. both port A and B are assigned the same configuration.
|
||||||
|
* Mirroring will OR both INTA and INTB pins.
|
||||||
|
* Opendrain will set the INT pin to value or open drain.
|
||||||
|
* polarity will set LOW or HIGH on interrupt.
|
||||||
|
* Default values after Power On Reset are: (false, false, LOW)
|
||||||
|
* If you are connecting the INTA/B pin to arduino 2/3, you should configure the interupt handling as FALLING with
|
||||||
|
* the default configuration.
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::setupInterrupts(uint8_t mirroring, uint8_t openDrain, uint8_t polarity){
|
||||||
|
// configure the port A
|
||||||
|
uint8_t ioconfValue=readRegister(MCP23017_IOCONA);
|
||||||
|
bitWrite(ioconfValue,6,mirroring);
|
||||||
|
bitWrite(ioconfValue,2,openDrain);
|
||||||
|
bitWrite(ioconfValue,1,polarity);
|
||||||
|
writeRegister(MCP23017_IOCONA,ioconfValue);
|
||||||
|
|
||||||
|
// Configure the port B
|
||||||
|
ioconfValue=readRegister(MCP23017_IOCONB);
|
||||||
|
bitWrite(ioconfValue,6,mirroring);
|
||||||
|
bitWrite(ioconfValue,2,openDrain);
|
||||||
|
bitWrite(ioconfValue,1,polarity);
|
||||||
|
writeRegister(MCP23017_IOCONB,ioconfValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set's up a pin for interrupt. uses arduino MODEs: CHANGE, FALLING, RISING.
|
||||||
|
*
|
||||||
|
* Note that the interrupt condition finishes when you read the information about the port / value
|
||||||
|
* that caused the interrupt or you read the port itself. Check the datasheet can be confusing.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::setupInterruptPin(uint8_t pin, uint8_t mode) {
|
||||||
|
|
||||||
|
// set the pin interrupt control (0 means change, 1 means compare against given value);
|
||||||
|
updateRegisterBit(pin,(mode!=CHANGE),MCP23017_INTCONA,MCP23017_INTCONB);
|
||||||
|
// if the mode is not CHANGE, we need to set up a default value, different value triggers interrupt
|
||||||
|
|
||||||
|
// In a RISING interrupt the default value is 0, interrupt is triggered when the pin goes to 1.
|
||||||
|
// In a FALLING interrupt the default value is 1, interrupt is triggered when pin goes to 0.
|
||||||
|
updateRegisterBit(pin,(mode==FALLING),MCP23017_DEFVALA,MCP23017_DEFVALB);
|
||||||
|
|
||||||
|
// enable the pin for interrupt
|
||||||
|
updateRegisterBit(pin,HIGH,MCP23017_GPINTENA,MCP23017_GPINTENB);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Adafruit_MCP23017::getLastInterruptPin(){
|
||||||
|
uint8_t intf;
|
||||||
|
|
||||||
|
// try port A
|
||||||
|
intf=readRegister(MCP23017_INTFA);
|
||||||
|
for(int i=0;i<8;i++) if (bitRead(intf,i)) return i;
|
||||||
|
|
||||||
|
// try port B
|
||||||
|
intf=readRegister(MCP23017_INTFB);
|
||||||
|
for(int i=0;i<8;i++) if (bitRead(intf,i)) return i+8;
|
||||||
|
|
||||||
|
return MCP23017_INT_ERR;
|
||||||
|
|
||||||
|
}
|
||||||
|
uint8_t Adafruit_MCP23017::getLastInterruptPinValue(){
|
||||||
|
uint8_t intPin=getLastInterruptPin();
|
||||||
|
if(intPin!=MCP23017_INT_ERR){
|
||||||
|
uint8_t intcapreg=regForPin(intPin,MCP23017_INTCAPA,MCP23017_INTCAPB);
|
||||||
|
uint8_t bit=bitForPin(intPin);
|
||||||
|
return (readRegister(intcapreg)>>bit) & (0x01);
|
||||||
|
}
|
||||||
|
|
||||||
|
return MCP23017_INT_ERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
97
firmware/firmware/Adafruit_MCP23017.h
Normal file
97
firmware/firmware/Adafruit_MCP23017.h
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
/***************************************************
|
||||||
|
This is a library for the MCP23017 i2c port expander
|
||||||
|
|
||||||
|
These displays use I2C to communicate, 2 pins are required to
|
||||||
|
interface
|
||||||
|
Adafruit invests time and resources providing this open source code,
|
||||||
|
please support Adafruit and open-source hardware by purchasing
|
||||||
|
products from Adafruit!
|
||||||
|
|
||||||
|
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||||
|
BSD license, all text above must be included in any redistribution
|
||||||
|
****************************************************/
|
||||||
|
|
||||||
|
#ifndef _Adafruit_MCP23017_H_
|
||||||
|
#define _Adafruit_MCP23017_H_
|
||||||
|
|
||||||
|
// Don't forget the Wire library
|
||||||
|
#ifndef ARDUINO_AVR_GEMMA
|
||||||
|
//TinyWireM is now part of
|
||||||
|
// Adafruit version of Wire Library, so this
|
||||||
|
// will work with Adafruit ATtiny85's
|
||||||
|
//But Arduino Gemma doesn't use that library
|
||||||
|
// We do NOT want to include Wire if it's an arduino Gemma
|
||||||
|
#include <Wire.h>
|
||||||
|
#else
|
||||||
|
#include <TinyWireM.h>
|
||||||
|
#define Wire TinyWireM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
class Adafruit_MCP23017 {
|
||||||
|
public:
|
||||||
|
void begin(uint8_t addr);
|
||||||
|
void begin(void);
|
||||||
|
|
||||||
|
void pinMode(uint8_t p, uint8_t d);
|
||||||
|
void digitalWrite(uint8_t p, uint8_t d);
|
||||||
|
void pullUp(uint8_t p, uint8_t d);
|
||||||
|
uint8_t digitalRead(uint8_t p);
|
||||||
|
|
||||||
|
void writeGPIOAB(uint16_t);
|
||||||
|
uint16_t readGPIOAB();
|
||||||
|
uint8_t readGPIO(uint8_t b);
|
||||||
|
|
||||||
|
void setupInterrupts(uint8_t mirroring, uint8_t open, uint8_t polarity);
|
||||||
|
void setupInterruptPin(uint8_t p, uint8_t mode);
|
||||||
|
uint8_t getLastInterruptPin();
|
||||||
|
uint8_t getLastInterruptPinValue();
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint8_t i2caddr;
|
||||||
|
|
||||||
|
uint8_t bitForPin(uint8_t pin);
|
||||||
|
uint8_t regForPin(uint8_t pin, uint8_t portAaddr, uint8_t portBaddr);
|
||||||
|
|
||||||
|
uint8_t readRegister(uint8_t addr);
|
||||||
|
void writeRegister(uint8_t addr, uint8_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility private method to update a register associated with a pin (whether port A/B)
|
||||||
|
* reads its value, updates the particular bit, and writes its value.
|
||||||
|
*/
|
||||||
|
void updateRegisterBit(uint8_t p, uint8_t pValue, uint8_t portAaddr, uint8_t portBaddr);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#define MCP23017_ADDRESS 0x20
|
||||||
|
|
||||||
|
// registers
|
||||||
|
#define MCP23017_IODIRA 0x00
|
||||||
|
#define MCP23017_IPOLA 0x02
|
||||||
|
#define MCP23017_GPINTENA 0x04
|
||||||
|
#define MCP23017_DEFVALA 0x06
|
||||||
|
#define MCP23017_INTCONA 0x08
|
||||||
|
#define MCP23017_IOCONA 0x0A
|
||||||
|
#define MCP23017_GPPUA 0x0C
|
||||||
|
#define MCP23017_INTFA 0x0E
|
||||||
|
#define MCP23017_INTCAPA 0x10
|
||||||
|
#define MCP23017_GPIOA 0x12
|
||||||
|
#define MCP23017_OLATA 0x14
|
||||||
|
|
||||||
|
|
||||||
|
#define MCP23017_IODIRB 0x01
|
||||||
|
#define MCP23017_IPOLB 0x03
|
||||||
|
#define MCP23017_GPINTENB 0x05
|
||||||
|
#define MCP23017_DEFVALB 0x07
|
||||||
|
#define MCP23017_INTCONB 0x09
|
||||||
|
#define MCP23017_IOCONB 0x0B
|
||||||
|
#define MCP23017_GPPUB 0x0D
|
||||||
|
#define MCP23017_INTFB 0x0F
|
||||||
|
#define MCP23017_INTCAPB 0x11
|
||||||
|
#define MCP23017_GPIOB 0x13
|
||||||
|
#define MCP23017_OLATB 0x15
|
||||||
|
|
||||||
|
#define MCP23017_INT_ERR 255
|
||||||
|
|
||||||
|
#endif
|
309
firmware/firmware/CheapMCPStepper.cpp
Normal file
309
firmware/firmware/CheapMCPStepper.cpp
Normal file
@ -0,0 +1,309 @@
|
|||||||
|
/* CheapMCPStepper.cpp -
|
||||||
|
v0.2
|
||||||
|
Library for the 28BYJ-48 stepper motor, using ULN2003 driver board
|
||||||
|
https://arduino-info.wikispaces.com/SmallSteppers
|
||||||
|
|
||||||
|
Library written by Tyler Henry, 6/2016
|
||||||
|
|
||||||
|
uses 8-step sequence: A-AB-B-BC-C-CD-D-DA
|
||||||
|
|
||||||
|
motor has gear ratio of either:
|
||||||
|
64:1 (per manufacturer specs)
|
||||||
|
or
|
||||||
|
63.68395:1 measured
|
||||||
|
(see: http://forum.arduino.cc/index.php?topic=71964.15)
|
||||||
|
* 64 steps per internal motor rev
|
||||||
|
=
|
||||||
|
|
||||||
|
4096 total mini-steps / revolution
|
||||||
|
or ~4076 (4075.7728) depending on exact gear ratio
|
||||||
|
|
||||||
|
assumes 5v power source for rpm calc
|
||||||
|
|
||||||
|
Modified by Fandly Gergo 2018.06.27.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include "CheapMCPStepper.h"
|
||||||
|
|
||||||
|
|
||||||
|
CheapMCPStepper::CheapMCPStepper () {
|
||||||
|
for (int pin=0; pin<4; pin++){
|
||||||
|
if(mcp!=NULL){
|
||||||
|
mcp->pinMode(pins[pin], OUTPUT);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
pinMode(pins[pin], OUTPUT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CheapMCPStepper::CheapMCPStepper (Adafruit_MCP23017* _mcp, int in1, int in2, int in3, int in4) {
|
||||||
|
mcp=_mcp;
|
||||||
|
pins[0] = in1;
|
||||||
|
pins[1] = in2;
|
||||||
|
pins[2] = in3;
|
||||||
|
pins[3] = in4;
|
||||||
|
CheapMCPStepper();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::setRpm (int rpm){
|
||||||
|
|
||||||
|
delay = calcDelay(rpm);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::move (bool clockwise, int numSteps){
|
||||||
|
|
||||||
|
for (int n=0; n<numSteps; n++){
|
||||||
|
step(clockwise);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::moveTo (bool clockwise, int toStep){
|
||||||
|
|
||||||
|
// keep to 0-(totalSteps-1) range
|
||||||
|
if (toStep >= totalSteps) toStep %= totalSteps;
|
||||||
|
else if (toStep < 0) {
|
||||||
|
toStep %= totalSteps; // returns negative if toStep not multiple of totalSteps
|
||||||
|
if (toStep < 0) toStep += totalSteps; // shift into 0-(totalSteps-1) range
|
||||||
|
}
|
||||||
|
while (stepN != toStep){
|
||||||
|
step(clockwise);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::moveDegrees (bool clockwise, int deg){
|
||||||
|
|
||||||
|
int nSteps = (unsigned long) deg * totalSteps / 360;
|
||||||
|
move(clockwise, nSteps);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::moveToDegree (bool clockwise, int deg){
|
||||||
|
|
||||||
|
// keep to 0-359 range
|
||||||
|
if (deg >= 360) deg %= 360;
|
||||||
|
else if (deg < 0) {
|
||||||
|
deg %= 360; // returns negative if deg not multiple of 360
|
||||||
|
if (deg < 0) deg += 360; // shift into 0-359 range
|
||||||
|
}
|
||||||
|
|
||||||
|
int toStep = deg * totalSteps / 360;
|
||||||
|
moveTo (clockwise, toStep);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// NON-BLOCKING MOVES
|
||||||
|
|
||||||
|
void CheapMCPStepper::newMove (bool clockwise, int numSteps){
|
||||||
|
|
||||||
|
// numSteps sign ignored
|
||||||
|
// stepsLeft signed positive if clockwise, neg if ccw
|
||||||
|
|
||||||
|
if (clockwise) stepsLeft = abs(numSteps);
|
||||||
|
else stepsLeft = -1 * abs(numSteps);
|
||||||
|
|
||||||
|
lastStepTime = micros();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::newMoveTo (bool clockwise, int toStep){
|
||||||
|
|
||||||
|
// keep toStep in 0-(totalSteps-1) range
|
||||||
|
if (toStep >= totalSteps) toStep %= totalSteps;
|
||||||
|
else if (toStep < 0) {
|
||||||
|
toStep %= totalSteps; // returns negative if toStep not multiple of totalSteps
|
||||||
|
if (toStep < 0) toStep += totalSteps; // shift into 0-(totalSteps-1) range
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clockwise) stepsLeft = abs(toStep - stepN);
|
||||||
|
// clockwise: simple diff, always pos
|
||||||
|
else stepsLeft = -1*(totalSteps - abs(toStep - stepN));
|
||||||
|
// counter-clockwise: totalSteps - diff, made neg
|
||||||
|
|
||||||
|
lastStepTime = micros();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::newMoveDegrees (bool clockwise, int deg){
|
||||||
|
|
||||||
|
int nSteps = (unsigned long) deg * totalSteps / 360;
|
||||||
|
newMove (clockwise, nSteps);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::newMoveToDegree (bool clockwise, int deg){
|
||||||
|
|
||||||
|
// keep to 0-359 range
|
||||||
|
if (deg >= 360) deg %= 360;
|
||||||
|
else if (deg < 0) {
|
||||||
|
deg %= 360; // returns negative if deg not multiple of 360
|
||||||
|
if (deg < 0) deg += 360; // shift into 0-359 range
|
||||||
|
}
|
||||||
|
|
||||||
|
int toStep = deg * totalSteps / 360;
|
||||||
|
newMoveTo (clockwise, toStep);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::run(){
|
||||||
|
|
||||||
|
if (micros() - lastStepTime >= delay) { // if time for step
|
||||||
|
if (stepsLeft > 0) { // clockwise
|
||||||
|
stepCW();
|
||||||
|
stepsLeft--;
|
||||||
|
} else if (stepsLeft < 0){ // counter-clockwise
|
||||||
|
stepCCW();
|
||||||
|
stepsLeft++;
|
||||||
|
}
|
||||||
|
|
||||||
|
lastStepTime = micros();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::stop(){
|
||||||
|
|
||||||
|
stepsLeft = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CheapMCPStepper::step(bool clockwise){
|
||||||
|
|
||||||
|
if (clockwise) seqCW();
|
||||||
|
else seqCCW();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/////////////
|
||||||
|
// PRIVATE //
|
||||||
|
/////////////
|
||||||
|
|
||||||
|
int CheapMCPStepper::calcDelay (int rpm){
|
||||||
|
|
||||||
|
if (rpm < 6) return delay; // will overheat, no change
|
||||||
|
else if (rpm >= 24) return 600; // highest speed
|
||||||
|
|
||||||
|
unsigned long d = 60000000 / (totalSteps* (unsigned long) rpm);
|
||||||
|
// in range: 600-1465 microseconds (24-1 rpm)
|
||||||
|
return (int) d;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int CheapMCPStepper::calcRpm (int _delay){
|
||||||
|
|
||||||
|
unsigned long rpm = 60000000 / (unsigned long) _delay / totalSteps;
|
||||||
|
return (int) rpm;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::seqCW (){
|
||||||
|
seqN++;
|
||||||
|
if (seqN > 7) seqN = 0; // roll over to A seq
|
||||||
|
seq(seqN);
|
||||||
|
|
||||||
|
stepN++; // track miniSteps
|
||||||
|
if (stepN >= totalSteps){
|
||||||
|
stepN -=totalSteps; // keep stepN within 0-(totalSteps-1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::seqCCW (){
|
||||||
|
seqN--;
|
||||||
|
if (seqN < 0) seqN = 7; // roll over to DA seq
|
||||||
|
seq(seqN);
|
||||||
|
|
||||||
|
stepN--; // track miniSteps
|
||||||
|
if (stepN < 0){
|
||||||
|
stepN +=totalSteps; // keep stepN within 0-(totalSteps-1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapMCPStepper::seq (int seqNum){
|
||||||
|
|
||||||
|
int pattern[4];
|
||||||
|
// A,B,C,D HIGH/LOW pattern to write to driver board
|
||||||
|
|
||||||
|
switch(seqNum){
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
pattern[0] = 1;
|
||||||
|
pattern[1] = 0;
|
||||||
|
pattern[2] = 0;
|
||||||
|
pattern[3] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
pattern[0] = 1;
|
||||||
|
pattern[1] = 1;
|
||||||
|
pattern[2] = 0;
|
||||||
|
pattern[3] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
pattern[0] = 0;
|
||||||
|
pattern[1] = 1;
|
||||||
|
pattern[2] = 0;
|
||||||
|
pattern[3] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
pattern[0] = 0;
|
||||||
|
pattern[1] = 1;
|
||||||
|
pattern[2] = 1;
|
||||||
|
pattern[3] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
pattern[0] = 0;
|
||||||
|
pattern[1] = 0;
|
||||||
|
pattern[2] = 1;
|
||||||
|
pattern[3] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 5:
|
||||||
|
{
|
||||||
|
pattern[0] = 0;
|
||||||
|
pattern[1] = 0;
|
||||||
|
pattern[2] = 1;
|
||||||
|
pattern[3] = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 6:
|
||||||
|
{
|
||||||
|
pattern[0] = 0;
|
||||||
|
pattern[1] = 0;
|
||||||
|
pattern[2] = 0;
|
||||||
|
pattern[3] = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 7:
|
||||||
|
{
|
||||||
|
pattern[0] = 1;
|
||||||
|
pattern[1] = 0;
|
||||||
|
pattern[2] = 0;
|
||||||
|
pattern[3] = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
pattern[0] = 0;
|
||||||
|
pattern[1] = 0;
|
||||||
|
pattern[2] = 0;
|
||||||
|
pattern[3] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// write pattern to pins
|
||||||
|
for (int p=0; p<4; p++){
|
||||||
|
if(mcp!=NULL){
|
||||||
|
mcp->digitalWrite(pins[p], pattern[p]);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
digitalWrite(pins[p], pattern[p]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delayMicroseconds(delay);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
133
firmware/firmware/CheapMCPStepper.h
Normal file
133
firmware/firmware/CheapMCPStepper.h
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
/* CheapMCPStepper.h -
|
||||||
|
v0.2
|
||||||
|
Library for the 28BYJ-48 stepper motor, using ULN2003 driver board
|
||||||
|
https://arduino-info.wikispaces.com/SmallSteppers
|
||||||
|
|
||||||
|
Library written by Tyler Henry, 6/2016
|
||||||
|
|
||||||
|
uses 8-step sequence: A-AB-B-BC-C-CD-D-DA
|
||||||
|
|
||||||
|
motor has gear ratio of either:
|
||||||
|
64:1 (per manufacturer specs)
|
||||||
|
or
|
||||||
|
63.68395:1 measured
|
||||||
|
(see: http://forum.arduino.cc/index.php?topic=71964.15)
|
||||||
|
* 64 steps per internal motor rev
|
||||||
|
=
|
||||||
|
|
||||||
|
4096 total mini-steps / revolution
|
||||||
|
or ~4076 (4075.7728) depending on exact gear ratio
|
||||||
|
|
||||||
|
assumes 5v power source for rpm calc
|
||||||
|
|
||||||
|
Modified by Fandly Gergo, 2018.06.27.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CheapMCPStepper_H
|
||||||
|
#define CheapMCPStepper_H
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include "Adafruit_MCP23017.h"
|
||||||
|
|
||||||
|
class CheapMCPStepper
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
CheapMCPStepper();
|
||||||
|
CheapMCPStepper (Adafruit_MCP23017* _mcp, int in1, int in2, int in3, int in4);
|
||||||
|
|
||||||
|
void setRpm (int rpm); // sets speed (10-24 rpm, hi-low torque)
|
||||||
|
// <6 rpm blocked in code, may overheat
|
||||||
|
// 23-24rpm may skip
|
||||||
|
|
||||||
|
void set4076StepMode() { totalSteps = 4076; }
|
||||||
|
void setTotalSteps (int numSteps) { totalSteps = numSteps; }
|
||||||
|
// allows custom # of steps (usually 4076)
|
||||||
|
|
||||||
|
// blocking! (pauses arduino until move is done)
|
||||||
|
void move (bool clockwise, int numSteps); // 4096 steps = 1 revolution
|
||||||
|
void moveTo (bool clockwise, int toStep); // move to specific step position
|
||||||
|
void moveDegrees (bool clockwise, int deg);
|
||||||
|
void moveToDegree (bool clockwise, int deg);
|
||||||
|
|
||||||
|
void moveCW (int numSteps) { move (true, numSteps); }
|
||||||
|
void moveCCW (int numSteps) { move (false, numSteps); }
|
||||||
|
void moveToCW (int toStep) { moveTo (true, toStep); }
|
||||||
|
void moveToCCW (int toStep) { moveTo (false, toStep); }
|
||||||
|
void moveDegreesCW (int deg) { moveDegrees (true, deg); }
|
||||||
|
void moveDegreesCCW (int deg) { moveDegrees (false, deg); }
|
||||||
|
void moveToDegreeCW (int deg) { moveToDegree (true, deg); }
|
||||||
|
void moveToDegreeCCW (int deg) { moveToDegree (false, deg); }
|
||||||
|
|
||||||
|
|
||||||
|
// non-blocking versions of move()
|
||||||
|
// call run() in loop to keep moving
|
||||||
|
|
||||||
|
void newMove (bool clockwise, int numSteps);
|
||||||
|
void newMoveTo (bool clockwise, int toStep);
|
||||||
|
void newMoveDegrees (bool clockwise, int deg);
|
||||||
|
void newMoveToDegree (bool clockwise, int deg);
|
||||||
|
|
||||||
|
void run();
|
||||||
|
void stop();
|
||||||
|
|
||||||
|
void newMoveCW(int numSteps) { newMove(true, numSteps); }
|
||||||
|
void newMoveCCW(int numSteps) { newMove(false, numSteps); }
|
||||||
|
void newMoveToCW(int toStep) { newMoveTo(true, toStep); }
|
||||||
|
void newMoveToCCW(int toStep) { newMoveTo(false, toStep); }
|
||||||
|
void newMoveDegreesCW(int deg) { newMoveDegrees(true, deg); }
|
||||||
|
void newMoveDegreesCCW(int deg) { newMoveDegrees(false, deg); }
|
||||||
|
void newMoveToDegreeCW(int deg) { newMoveToDegree(true, deg); }
|
||||||
|
void newMoveToDegreeCCW(int deg) { newMoveToDegree(false, deg); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void step (bool clockwise);
|
||||||
|
// move 1 step clockwise or counter-clockwise
|
||||||
|
|
||||||
|
void stepCW () { step (true); } // move 1 step clockwise
|
||||||
|
void stepCCW () { step (false); } // move 1 step counter-clockwise
|
||||||
|
|
||||||
|
int getStep() { return stepN; } // returns current miniStep position
|
||||||
|
int getDelay() { return delay; } // returns current delay (microseconds)
|
||||||
|
int getRpm() { return calcRpm(); } // returns current rpm
|
||||||
|
int getPin(int p) {
|
||||||
|
if (p<4) return pins[p]; // returns pin #
|
||||||
|
return 0; // default 0
|
||||||
|
}
|
||||||
|
int getStepsLeft() { return stepsLeft; } // returns steps left in current move
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
Adafruit_MCP23017* mcp;
|
||||||
|
|
||||||
|
int calcDelay(int rpm); // calcs microsecond step delay for given rpm
|
||||||
|
int calcRpm(int _delay); // calcs rpm for given delay in microseconds
|
||||||
|
int calcRpm(){
|
||||||
|
return calcRpm(delay); // calcs rpm from current delay
|
||||||
|
}
|
||||||
|
|
||||||
|
void seqCW();
|
||||||
|
void seqCCW();
|
||||||
|
void seq(int seqNum); // send specific sequence num to driver
|
||||||
|
|
||||||
|
int pins[4] = {8,9,10,11}; // in1, in2, in3, in4
|
||||||
|
|
||||||
|
int stepN = 0; // keeps track of step position
|
||||||
|
// 0-4095 (4096 mini-steps / revolution) or maybe 4076...
|
||||||
|
int totalSteps = 4096;
|
||||||
|
|
||||||
|
int delay = 900; // microsecond delay between steps
|
||||||
|
// 900 ~= 16.25 rpm
|
||||||
|
// low speed (high torque) = 1465 ~= 1 rpm
|
||||||
|
// high speed (low torque) = 600 ~= 24 rpm
|
||||||
|
|
||||||
|
int seqN = -1; // keeps track of sequence number
|
||||||
|
|
||||||
|
// variables for non-blocking moves:
|
||||||
|
unsigned long lastStepTime; // time in microseconds that last step happened
|
||||||
|
int stepsLeft = 0; // steps left to move, neg for counter-clockwise
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
249
firmware/firmware/DS18B20.cpp
Normal file
249
firmware/firmware/DS18B20.cpp
Normal file
@ -0,0 +1,249 @@
|
|||||||
|
#include "DS18B20.h"
|
||||||
|
|
||||||
|
// Exception handler
|
||||||
|
// Prints the line number of the exception and block the program, when the function returns false
|
||||||
|
void __check(bool value, uint16_t line)
|
||||||
|
{
|
||||||
|
if (value)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Serial.print(F("EXCEPTION at line: "));
|
||||||
|
Serial.println(line);
|
||||||
|
while(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constructor
|
||||||
|
// Argument: Pointer to OneWire object
|
||||||
|
// Return: New DS18B20 object
|
||||||
|
DS18B20::DS18B20(OneWire *oneWire)
|
||||||
|
{
|
||||||
|
_oneWire = oneWire;
|
||||||
|
_quality = 0;
|
||||||
|
_samePowerType = false;
|
||||||
|
_powerType = false;
|
||||||
|
_beginConversionTime = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup for all ds19b20 sensors in 1-Wire bus.
|
||||||
|
// Argument: quality - measurement resolution in bits (from 9 to 12)
|
||||||
|
// Return:
|
||||||
|
// true - if all operations were successful
|
||||||
|
// false - when the bus is physically damaged
|
||||||
|
// - when devices not respond
|
||||||
|
// - when device address is not valid
|
||||||
|
// - when not detect any device
|
||||||
|
bool DS18B20::begin(uint8_t quality)
|
||||||
|
{
|
||||||
|
_quality = constrain(quality, 9, 12);
|
||||||
|
uint8_t address[8];
|
||||||
|
uint8_t devices = 0;
|
||||||
|
uint8_t parasiteDevices = 0;
|
||||||
|
|
||||||
|
uint32_t beginResetTimeout = millis();
|
||||||
|
|
||||||
|
while(!_oneWire->reset())
|
||||||
|
{
|
||||||
|
uint32_t elapsedResetTimeout = millis() - beginResetTimeout;
|
||||||
|
|
||||||
|
if (elapsedResetTimeout > 1000)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
_oneWire->reset_search();
|
||||||
|
while (_oneWire->search(address))
|
||||||
|
{
|
||||||
|
if (OneWire::crc8(address, 7) != address[7])
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (address[0] != 0x28)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!_sendQuality(address))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
_powerType = _receivePowerType(address);
|
||||||
|
if (!_powerType)
|
||||||
|
parasiteDevices++;
|
||||||
|
|
||||||
|
devices++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parasiteDevices == devices || parasiteDevices == 0)
|
||||||
|
_samePowerType = true;
|
||||||
|
|
||||||
|
if (devices == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Request for temperature measurements on all devices
|
||||||
|
// Return:
|
||||||
|
// - true - if operation were successful
|
||||||
|
// - false - if devices have different ways of power (combinations of normal and parasite in one bus)
|
||||||
|
// - if devices not responding
|
||||||
|
bool DS18B20::request()
|
||||||
|
{
|
||||||
|
if (!_samePowerType)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!_oneWire->reset())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
_oneWire->skip();
|
||||||
|
_oneWire->write(0x44, !_powerType);
|
||||||
|
|
||||||
|
_beginConversionTime = millis();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Request for temperature measurements on device
|
||||||
|
// Argument: Pointer to an array of device address
|
||||||
|
// Return:
|
||||||
|
// - true - if operation were successful
|
||||||
|
// - false - if device not responding
|
||||||
|
bool DS18B20::request(uint8_t *address)
|
||||||
|
{
|
||||||
|
if (!_samePowerType)
|
||||||
|
{
|
||||||
|
_powerType = _receivePowerType(address);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!_oneWire->reset())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
_oneWire->select(address);
|
||||||
|
_oneWire->write(0x44, !_powerType);
|
||||||
|
|
||||||
|
_beginConversionTime = millis();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Request for temperature measurements on device
|
||||||
|
// Argument: Pointer to an array in flash memory of device address
|
||||||
|
// Return:
|
||||||
|
// - true - if operation were successful
|
||||||
|
// - false - if device not responding
|
||||||
|
bool DS18B20::request(const __FlashStringHelper *_address)
|
||||||
|
{
|
||||||
|
uint8_t address[8];
|
||||||
|
_readFlashAddress(_address, address);
|
||||||
|
|
||||||
|
return request(address);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Checks if devices completed the measurement
|
||||||
|
// Return:
|
||||||
|
// - true - the measurement was completed
|
||||||
|
// - false - the measurement wasn't completed
|
||||||
|
bool DS18B20::available(void)
|
||||||
|
{
|
||||||
|
uint32_t durationTime[] = {94, 188, 375, 750};
|
||||||
|
uint32_t elapsedTime = millis() - _beginConversionTime;
|
||||||
|
bool timeout = elapsedTime >= durationTime[_quality-9];
|
||||||
|
|
||||||
|
if (_powerType)
|
||||||
|
{
|
||||||
|
bool ready = _oneWire->read_bit();
|
||||||
|
|
||||||
|
if (ready || timeout)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (timeout)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read temperature from device
|
||||||
|
// Argument: Pointer to an array of device address
|
||||||
|
// Return: temperature in degrees Celsius
|
||||||
|
// If the temperature is TEMP_ERROR value - measurement failed because:
|
||||||
|
// - the bus is physically damaged
|
||||||
|
// - devices not respond
|
||||||
|
// - when data from the device is not valid
|
||||||
|
// - when not detect device of thad address
|
||||||
|
float DS18B20::readTemperature(uint8_t *address)
|
||||||
|
{
|
||||||
|
uint8_t scratchpad[9];
|
||||||
|
|
||||||
|
if (!_sendCommand(address, 0xbe))
|
||||||
|
return TEMP_ERROR;
|
||||||
|
|
||||||
|
_oneWire->read_bytes(scratchpad, 9);
|
||||||
|
|
||||||
|
if (OneWire::crc8(scratchpad, 8) != scratchpad[8])
|
||||||
|
return TEMP_ERROR;
|
||||||
|
|
||||||
|
float quality[] = {0.5, 0.25, 0.125, 0.0625};
|
||||||
|
uint8_t shift[] = {3, 2, 1, 0};
|
||||||
|
int16_t raw = word(scratchpad[1], scratchpad[0]);
|
||||||
|
raw >>= shift[_quality-9];
|
||||||
|
|
||||||
|
return raw * quality[_quality-9];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read temperature from device
|
||||||
|
// Argument: Pointer to an array in flash memory of device address
|
||||||
|
// Return: temperature in degrees Celsius
|
||||||
|
// If the temperature is TEMP_ERROR value - measurement failed because:
|
||||||
|
// - the bus is physically damaged
|
||||||
|
// - devices not respond
|
||||||
|
// - when data from the device is not valid
|
||||||
|
// - when not detect device of thad address
|
||||||
|
float DS18B20::readTemperature(const __FlashStringHelper *_address)
|
||||||
|
{
|
||||||
|
uint8_t address[8];
|
||||||
|
_readFlashAddress(_address, address);
|
||||||
|
|
||||||
|
return readTemperature(address);
|
||||||
|
}
|
||||||
|
|
||||||
|
// private methods
|
||||||
|
bool DS18B20::_sendCommand(uint8_t *address, uint8_t command)
|
||||||
|
{
|
||||||
|
if (!_oneWire->reset())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
_oneWire->select(address);
|
||||||
|
_oneWire->write(command);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DS18B20::_sendQuality(uint8_t *address)
|
||||||
|
{
|
||||||
|
if (!_sendCommand(address, 0x4e))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
_oneWire->write(0);
|
||||||
|
_oneWire->write(0);
|
||||||
|
|
||||||
|
uint8_t quality = _quality;
|
||||||
|
quality -= 9;
|
||||||
|
quality <<= 5;
|
||||||
|
quality |= 0b00011111;
|
||||||
|
_oneWire->write(quality);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DS18B20::_receivePowerType(uint8_t *address)
|
||||||
|
{
|
||||||
|
_sendCommand(address, 0xb4);
|
||||||
|
|
||||||
|
return _oneWire->read();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DS18B20::_readFlashAddress(const __FlashStringHelper *_address, uint8_t *address)
|
||||||
|
{
|
||||||
|
const uint8_t *pgmAddress PROGMEM = (const uint8_t PROGMEM *) _address;
|
||||||
|
|
||||||
|
for (uint8_t i=0; i<8; i++)
|
||||||
|
{
|
||||||
|
address[i] = pgm_read_byte(pgmAddress++);
|
||||||
|
}
|
||||||
|
}
|
48
firmware/firmware/DS18B20.h
Normal file
48
firmware/firmware/DS18B20.h
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#ifndef _DS18B20_h_
|
||||||
|
#define _DS18B20_h_
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
#include <OneWire.h>
|
||||||
|
|
||||||
|
#define TEMP_ERROR -273.15f
|
||||||
|
|
||||||
|
// Pointer type to an array in flash memory of device address
|
||||||
|
#define FA( pgm_ptr ) ( reinterpret_cast< const __FlashStringHelper * >( pgm_ptr ) )
|
||||||
|
|
||||||
|
// Exceptions catcher
|
||||||
|
#define E(a) __check(a, __LINE__)
|
||||||
|
|
||||||
|
// Teperature value exception catcher
|
||||||
|
#define TE(a) __check(a != TEMP_ERROR, __LINE__)
|
||||||
|
|
||||||
|
|
||||||
|
void __check(bool value, uint16_t line);
|
||||||
|
|
||||||
|
class DS18B20
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DS18B20(OneWire *oneWire);
|
||||||
|
bool begin(uint8_t quality=12);
|
||||||
|
bool request(void);
|
||||||
|
bool request(uint8_t *address);
|
||||||
|
bool request(const __FlashStringHelper *_address);
|
||||||
|
|
||||||
|
bool available(void);
|
||||||
|
float readTemperature(uint8_t *address);
|
||||||
|
float readTemperature(const __FlashStringHelper *_address);
|
||||||
|
|
||||||
|
private:
|
||||||
|
OneWire *_oneWire;
|
||||||
|
uint8_t _quality;
|
||||||
|
bool _samePowerType;
|
||||||
|
bool _powerType;
|
||||||
|
uint32_t _beginConversionTime;
|
||||||
|
|
||||||
|
bool _sendCommand(uint8_t *address, uint8_t command);
|
||||||
|
bool _sendQuality(uint8_t *address);
|
||||||
|
bool _receivePowerType(uint8_t *address);
|
||||||
|
void _readFlashAddress(const __FlashStringHelper *_address, uint8_t *address);
|
||||||
|
};
|
||||||
|
#endif
|
136
firmware/firmware/Memory.cpp
Normal file
136
firmware/firmware/Memory.cpp
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
/**
|
||||||
|
* /Memory.cpp
|
||||||
|
* @version 1.0
|
||||||
|
* @desc Body of the memory manager
|
||||||
|
* @author Fándly Gergő Zoltán (fandlygergo@gmail.hu, systemtest.tk)
|
||||||
|
* @copy 2018 Fándly Gergő Zoltán
|
||||||
|
* License:
|
||||||
|
Firmware for the Profile F1 fertilizer machine.
|
||||||
|
Copyright (C) 2018 Fándly Gergő Zoltán
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#include "modules.h"
|
||||||
|
|
||||||
|
Memory::Memory(){
|
||||||
|
//check if everything is set up
|
||||||
|
if(EEPROM.read(0)!=170){
|
||||||
|
//not set up yet. reset
|
||||||
|
|
||||||
|
//set up to 10101010
|
||||||
|
EEPROM.update(0, 170);
|
||||||
|
//motor count
|
||||||
|
EEPROM.update(1, DEFAULT_MOTOR_COUNT);
|
||||||
|
//LCD brightness
|
||||||
|
EEPROM.update(2, DEFAULT_LCD_BRIGHTNESS);
|
||||||
|
//set everything else to 0
|
||||||
|
for(int i=3; i<EEPROM.length(); i++){
|
||||||
|
EEPROM.update(i, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//set timer array to null
|
||||||
|
timers=NULL;
|
||||||
|
|
||||||
|
//load timers
|
||||||
|
loadTimers();
|
||||||
|
}
|
||||||
|
|
||||||
|
byte Memory::getMotorCount(){
|
||||||
|
return EEPROM.read(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
byte Memory::getLCDBrightness(){
|
||||||
|
return EEPROM.read(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
byte Memory::getTimerCount(){
|
||||||
|
return EEPROM.read(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer Memory::getTimer(byte n){
|
||||||
|
return timers[n];
|
||||||
|
}
|
||||||
|
|
||||||
|
byte Memory::getTempCount(){
|
||||||
|
return EEPROM.length()-4-(getTimerCount()*8);
|
||||||
|
}
|
||||||
|
|
||||||
|
float Memory::getTemp(byte n){
|
||||||
|
byte raw=EEPROM.read(4+(getTimerCount()*8)+n);
|
||||||
|
//interval: [-10, 53.75], step: 0.25
|
||||||
|
return -10+(0.25*raw);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Memory::setMotorCount(byte a){
|
||||||
|
EEPROM.update(1, a);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Memory::setLCDBrightness(byte a){
|
||||||
|
EEPROM.update(2, a);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Memory::addTimer(Timer t){
|
||||||
|
int mem=4+(getTimerCount()*8);
|
||||||
|
EEPROM.update(mem, t.hour);
|
||||||
|
EEPROM.update(mem+1, t.minute);
|
||||||
|
EEPROM.update(mem+2, t.pump[0]);
|
||||||
|
EEPROM.update(mem+3, t.pump[1]);
|
||||||
|
EEPROM.update(mem+4, t.pump[2]);
|
||||||
|
EEPROM.update(mem+5, t.pump[3]);
|
||||||
|
EEPROM.update(mem+6, t.pump[4]);
|
||||||
|
EEPROM.update(mem+5, t.switches);
|
||||||
|
loadTimers();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Memory::deleteTimer(byte n){
|
||||||
|
//shift backwards to its memory address
|
||||||
|
for(int i=4+(n*8); i<EEPROM.length()-8; i++){
|
||||||
|
EEPROM.update(i, EEPROM.read(i+8));
|
||||||
|
}
|
||||||
|
//set the remaining to 0
|
||||||
|
for(int i=EEPROM.length()-8; i<EEPROM.length(); i++){
|
||||||
|
EEPROM.update(i, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
//load timers to RAM
|
||||||
|
loadTimers();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Memory::addTemp(float t){
|
||||||
|
//FOLI
|
||||||
|
//shift all the stuff backwards
|
||||||
|
for(int i=4+(getTimerCount()*8); i<EEPROM.length()-1; i++){
|
||||||
|
EEPROM.update(i, EEPROM.read(i+1));
|
||||||
|
}
|
||||||
|
byte data=(t+10)/0.25;
|
||||||
|
EEPROM.update(EEPROM.length()-1, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer Memory::getTimer_eeprom(byte n){
|
||||||
|
int mem=4+(n*8);
|
||||||
|
return Timer(EEPROM.read(mem), EEPROM.read(mem+1), EEPROM.read(mem+2), EEPROM.read(mem+3), EEPROM.read(mem+4), EEPROM.read(mem+5), EEPROM.read(mem+6), EEPROM.read(mem+7));
|
||||||
|
}
|
||||||
|
|
||||||
|
void Memory::loadTimers(){
|
||||||
|
int tcount=getTimerCount();
|
||||||
|
if(timers!=NULL){
|
||||||
|
delete[] timers;
|
||||||
|
}
|
||||||
|
timers=new Timer[tcount];
|
||||||
|
for(int i=0; i<tcount; i++){
|
||||||
|
timers[i]=getTimer_eeprom(i);
|
||||||
|
}
|
||||||
|
}
|
88
firmware/firmware/Memory.h
Normal file
88
firmware/firmware/Memory.h
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
/**
|
||||||
|
* /Memory.h
|
||||||
|
* @version 1.0
|
||||||
|
* @desc Class for managing the EEPROM storage in a convincing manner
|
||||||
|
* @author Fándly Gergő Zoltán (fandlygergo@gmail.hu, systemtest.tk)
|
||||||
|
* @copy 2018 Fándly Gergő Zoltán
|
||||||
|
* License:
|
||||||
|
Firmware for the Profile F1 fertilizer machine.
|
||||||
|
Copyright (C) 2018 Fándly Gergő Zoltán
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef MEMORY_H_INCLUDED
|
||||||
|
#define MEMORY_H_INCLUDED
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <EEPROM.h>
|
||||||
|
#include "defaults.h"
|
||||||
|
#include "CheapMCPStepper.h"
|
||||||
|
|
||||||
|
struct Timer{
|
||||||
|
byte hour;
|
||||||
|
byte minute;
|
||||||
|
byte pump[5];
|
||||||
|
byte switches;
|
||||||
|
Timer(){
|
||||||
|
hour=0;
|
||||||
|
minute=0;
|
||||||
|
pump[0]=0;
|
||||||
|
pump[1]=0;
|
||||||
|
pump[2]=0;
|
||||||
|
pump[3]=0;
|
||||||
|
pump[4]=0;
|
||||||
|
switches=0;
|
||||||
|
}
|
||||||
|
Timer(byte _hour, byte _minute, byte _pump0, byte _pump1, byte _pump2, byte _pump3, byte _pump4, byte _switches){
|
||||||
|
hour=_hour;
|
||||||
|
minute=_minute;
|
||||||
|
pump[0]=_pump0;
|
||||||
|
pump[1]=_pump1;
|
||||||
|
pump[2]=_pump2;
|
||||||
|
pump[3]=_pump3;
|
||||||
|
pump[4]=_pump4;
|
||||||
|
switches=_switches;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class Memory{
|
||||||
|
public:
|
||||||
|
//constructor
|
||||||
|
Memory();
|
||||||
|
|
||||||
|
//get methods
|
||||||
|
byte getMotorCount();
|
||||||
|
byte getLCDBrightness();
|
||||||
|
byte getTimerCount();
|
||||||
|
Timer getTimer(byte n);
|
||||||
|
byte getTempCount();
|
||||||
|
float getTemp(byte n);
|
||||||
|
|
||||||
|
//set methods
|
||||||
|
void setMotorCount(byte a);
|
||||||
|
void setLCDBrightness(byte a);
|
||||||
|
void addTimer(Timer t);
|
||||||
|
void deleteTimer(byte n);
|
||||||
|
void addTemp(float t);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Timer* timers;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Timer getTimer_eeprom(byte n);
|
||||||
|
void loadTimers();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MEMORY_H_INCLUDED
|
62
firmware/firmware/MotorBroker.cpp
Normal file
62
firmware/firmware/MotorBroker.cpp
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/**
|
||||||
|
* /MotorBroker.cpp
|
||||||
|
* @version 1.0
|
||||||
|
* @desc Body for the motor broker
|
||||||
|
* @author Fándly Gergő Zoltán (fandlygergo@gmail.hu, systemtest.tk)
|
||||||
|
* @copy 2018 Fándly Gergő Zoltán
|
||||||
|
* License:
|
||||||
|
Firmware for the Profile F1 fertilizer machine.
|
||||||
|
Copyright (C) 2018 Fándly Gergő Zoltán
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#incldue "modules.h"
|
||||||
|
|
||||||
|
MotorBroker::MotorBroker(){
|
||||||
|
//init motors
|
||||||
|
initMotors();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MotorBroker::addExtrude(float pump0, float pump1, float pump2, float pump3, float pump4){
|
||||||
|
extrude[0]+=pump0*STEPS_PER_ML;
|
||||||
|
extrude[1]+=pump1*STEPS_PER_ML;
|
||||||
|
extrude[2]+=pump2*STEPS_PER_ML;
|
||||||
|
extrude[3]+=pump3*STEPS_PER_ML;
|
||||||
|
extrude[4]+=pump4*STEPS_PER_ML;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MotorBroker::run(){
|
||||||
|
//run the motors if it is needed
|
||||||
|
for(int i=0; i<5; i++){
|
||||||
|
if(extrude[i]){
|
||||||
|
int toMove=extrude[i]>=STEPS_PER_ROUND?STEPS_PER_ROUND:extrude[i];
|
||||||
|
motors[i].move(true, toMove);
|
||||||
|
extrude[i]-=toMove;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MotorBroker::initMotors(){
|
||||||
|
//init first motor which is wired directly to the AtMega
|
||||||
|
motors[0]=CheapMCPStepper(NULL, 10, 11, 12, 13);
|
||||||
|
|
||||||
|
//init other motors if needed.
|
||||||
|
int mcpPin=0;
|
||||||
|
for(int i=1; i<memory.getMotorCount(); i++){
|
||||||
|
motors[i]=CheapMCPStepper(&mcp, mcpPin, mcpPin+1, mcpPin+2, mcpPin+3);
|
||||||
|
mcpPin+=4;
|
||||||
|
}
|
||||||
|
}
|
51
firmware/firmware/MotorBroker.h
Normal file
51
firmware/firmware/MotorBroker.h
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/**
|
||||||
|
* /MotorBroker.h
|
||||||
|
* @version 1.0
|
||||||
|
* @desc A driver class for the attached stepper motors
|
||||||
|
* @author Fándly Gergő Zoltán (fandlygergo@gmail.hu, systemtest.tk)
|
||||||
|
* @copy 2018 Fándly Gergő Zoltán
|
||||||
|
* License:
|
||||||
|
Firmware for the Profile F1 fertilizer machine.
|
||||||
|
Copyright (C) 2018 Fándly Gergő Zoltán
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef MOTORBROKER_H_INCLUDED
|
||||||
|
#define MOTORBROKER_H_INCLUDED
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include "CheapMCPStepper.h"
|
||||||
|
|
||||||
|
class MotorBroker{
|
||||||
|
public:
|
||||||
|
//constructor
|
||||||
|
MotorBroker();
|
||||||
|
|
||||||
|
//add MLs to extrude
|
||||||
|
void addExtrude(float pump0, float pump1, float pump2, float pump3, float pump4);
|
||||||
|
|
||||||
|
//run motors
|
||||||
|
void run();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
CheapMCPStepper motors[5];
|
||||||
|
//extrude in steps
|
||||||
|
int extrude[5];
|
||||||
|
|
||||||
|
private:
|
||||||
|
void initMotors();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MOTORBROKER_H_INCLUDED
|
223
firmware/firmware/RtcDS1307.h
Normal file
223
firmware/firmware/RtcDS1307.h
Normal file
@ -0,0 +1,223 @@
|
|||||||
|
#ifndef __RTCDS1307_H__
|
||||||
|
#define __RTCDS1307_H__
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include "RtcDateTime.h"
|
||||||
|
#include "RtcUtility.h"
|
||||||
|
|
||||||
|
//I2C Slave Address
|
||||||
|
const uint8_t DS1307_ADDRESS = 0x68;
|
||||||
|
|
||||||
|
//DS1307 Register Addresses
|
||||||
|
const uint8_t DS1307_REG_TIMEDATE = 0x00;
|
||||||
|
const uint8_t DS1307_REG_STATUS = 0x00;
|
||||||
|
const uint8_t DS1307_REG_CONTROL = 0x07;
|
||||||
|
const uint8_t DS1307_REG_RAMSTART = 0x08;
|
||||||
|
const uint8_t DS1307_REG_RAMEND = 0x3f;
|
||||||
|
const uint8_t DS1307_REG_RAMSIZE = DS1307_REG_RAMEND - DS1307_REG_RAMSTART;
|
||||||
|
|
||||||
|
//DS1307 Register Data Size if not just 1
|
||||||
|
const uint8_t DS1307_REG_TIMEDATE_SIZE = 7;
|
||||||
|
|
||||||
|
// DS1307 Control Register Bits
|
||||||
|
const uint8_t DS1307_RS0 = 0;
|
||||||
|
const uint8_t DS1307_RS1 = 1;
|
||||||
|
const uint8_t DS1307_SQWE = 4;
|
||||||
|
const uint8_t DS1307_OUT = 7;
|
||||||
|
|
||||||
|
// DS1307 Status Register Bits
|
||||||
|
const uint8_t DS1307_CH = 7;
|
||||||
|
|
||||||
|
enum DS1307SquareWaveOut
|
||||||
|
{
|
||||||
|
DS1307SquareWaveOut_1Hz = 0b00010000,
|
||||||
|
DS1307SquareWaveOut_4kHz = 0b00010001,
|
||||||
|
DS1307SquareWaveOut_8kHz = 0b00010010,
|
||||||
|
DS1307SquareWaveOut_32kHz = 0b00010011,
|
||||||
|
DS1307SquareWaveOut_High = 0b10000000,
|
||||||
|
DS1307SquareWaveOut_Low = 0b00000000,
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class T_WIRE_METHOD> class RtcDS1307
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RtcDS1307(T_WIRE_METHOD& wire) :
|
||||||
|
_wire(wire)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Begin()
|
||||||
|
{
|
||||||
|
_wire.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsDateTimeValid()
|
||||||
|
{
|
||||||
|
return GetIsRunning();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GetIsRunning()
|
||||||
|
{
|
||||||
|
uint8_t sreg = getReg(DS1307_REG_STATUS);
|
||||||
|
return !(sreg & _BV(DS1307_CH));
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetIsRunning(bool isRunning)
|
||||||
|
{
|
||||||
|
uint8_t sreg = getReg(DS1307_REG_STATUS);
|
||||||
|
if (isRunning)
|
||||||
|
{
|
||||||
|
sreg &= ~_BV(DS1307_CH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sreg |= _BV(DS1307_CH);
|
||||||
|
}
|
||||||
|
setReg(DS1307_REG_STATUS, sreg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetDateTime(const RtcDateTime& dt)
|
||||||
|
{
|
||||||
|
// retain running state
|
||||||
|
uint8_t sreg = getReg(DS1307_REG_STATUS) & _BV(DS1307_CH);
|
||||||
|
|
||||||
|
// set the date time
|
||||||
|
_wire.beginTransmission(DS1307_ADDRESS);
|
||||||
|
_wire.write(DS1307_REG_TIMEDATE);
|
||||||
|
|
||||||
|
_wire.write(Uint8ToBcd(dt.Second()) | sreg);
|
||||||
|
_wire.write(Uint8ToBcd(dt.Minute()));
|
||||||
|
_wire.write(Uint8ToBcd(dt.Hour())); // 24 hour mode only
|
||||||
|
|
||||||
|
// RTC Hardware Day of Week is 1-7, 1 = Monday
|
||||||
|
// convert our Day of Week to Rtc Day of Week
|
||||||
|
uint8_t rtcDow = RtcDateTime::ConvertDowToRtc(dt.DayOfWeek());
|
||||||
|
|
||||||
|
_wire.write(Uint8ToBcd(rtcDow));
|
||||||
|
_wire.write(Uint8ToBcd(dt.Day()));
|
||||||
|
_wire.write(Uint8ToBcd(dt.Month()));
|
||||||
|
_wire.write(Uint8ToBcd(dt.Year() - 2000));
|
||||||
|
|
||||||
|
_wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime GetDateTime()
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS1307_ADDRESS);
|
||||||
|
_wire.write(DS1307_REG_TIMEDATE);
|
||||||
|
_wire.endTransmission();
|
||||||
|
|
||||||
|
_wire.requestFrom(DS1307_ADDRESS, DS1307_REG_TIMEDATE_SIZE);
|
||||||
|
uint8_t second = BcdToUint8(_wire.read() & 0x7F);
|
||||||
|
uint8_t minute = BcdToUint8(_wire.read());
|
||||||
|
uint8_t hour = BcdToBin24Hour(_wire.read());
|
||||||
|
|
||||||
|
_wire.read(); // throwing away day of week as we calculate it
|
||||||
|
|
||||||
|
uint8_t dayOfMonth = BcdToUint8(_wire.read());
|
||||||
|
uint8_t month = BcdToUint8(_wire.read());
|
||||||
|
uint16_t year = BcdToUint8(_wire.read()) + 2000;
|
||||||
|
|
||||||
|
return RtcDateTime(year, month, dayOfMonth, hour, minute, second);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetMemory(uint8_t memoryAddress, uint8_t value)
|
||||||
|
{
|
||||||
|
uint8_t address = memoryAddress + DS1307_REG_RAMSTART;
|
||||||
|
if (address <= DS1307_REG_RAMEND)
|
||||||
|
{
|
||||||
|
setReg(address, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t GetMemory(uint8_t memoryAddress)
|
||||||
|
{
|
||||||
|
uint8_t value = 0;
|
||||||
|
uint8_t address = memoryAddress + DS1307_REG_RAMSTART;
|
||||||
|
if (address <= DS1307_REG_RAMEND)
|
||||||
|
{
|
||||||
|
value = getReg(address);
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t SetMemory(uint8_t memoryAddress, const uint8_t* pValue, uint8_t countBytes)
|
||||||
|
{
|
||||||
|
uint8_t address = memoryAddress + DS1307_REG_RAMSTART;
|
||||||
|
uint8_t countWritten = 0;
|
||||||
|
if (address <= DS1307_REG_RAMEND)
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS1307_ADDRESS);
|
||||||
|
_wire.write(address);
|
||||||
|
|
||||||
|
while (countBytes > 0 && address <= DS1307_REG_RAMEND)
|
||||||
|
{
|
||||||
|
_wire.write(*pValue++);
|
||||||
|
address++;
|
||||||
|
countBytes--;
|
||||||
|
countWritten++;
|
||||||
|
}
|
||||||
|
|
||||||
|
_wire.endTransmission();
|
||||||
|
}
|
||||||
|
return countWritten;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t GetMemory(uint8_t memoryAddress, uint8_t* pValue, uint8_t countBytes)
|
||||||
|
{
|
||||||
|
uint8_t address = memoryAddress + DS1307_REG_RAMSTART;
|
||||||
|
uint8_t countRead = 0;
|
||||||
|
if (address <= DS1307_REG_RAMEND)
|
||||||
|
{
|
||||||
|
if (countBytes > DS1307_REG_RAMSIZE)
|
||||||
|
{
|
||||||
|
countBytes = DS1307_REG_RAMSIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
_wire.beginTransmission(DS1307_ADDRESS);
|
||||||
|
_wire.write(address);
|
||||||
|
_wire.endTransmission();
|
||||||
|
|
||||||
|
_wire.requestFrom(DS1307_ADDRESS, countBytes);
|
||||||
|
|
||||||
|
while (countBytes-- > 0)
|
||||||
|
{
|
||||||
|
*pValue++ = _wire.read();
|
||||||
|
countRead++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return countRead;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetSquareWavePin(DS1307SquareWaveOut pinMode)
|
||||||
|
{
|
||||||
|
setReg(DS1307_REG_CONTROL, pinMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
T_WIRE_METHOD& _wire;
|
||||||
|
|
||||||
|
uint8_t getReg(uint8_t regAddress)
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS1307_ADDRESS);
|
||||||
|
_wire.write(regAddress);
|
||||||
|
_wire.endTransmission();
|
||||||
|
|
||||||
|
// control register
|
||||||
|
_wire.requestFrom(DS1307_ADDRESS, (uint8_t)1);
|
||||||
|
|
||||||
|
uint8_t regValue = _wire.read();
|
||||||
|
return regValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setReg(uint8_t regAddress, uint8_t regValue)
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS1307_ADDRESS);
|
||||||
|
_wire.write(regAddress);
|
||||||
|
_wire.write(regValue);
|
||||||
|
_wire.endTransmission();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __RTCDS1307_H__
|
154
firmware/firmware/RtcDateTime.cpp
Normal file
154
firmware/firmware/RtcDateTime.cpp
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include "RtcDateTime.h"
|
||||||
|
|
||||||
|
const uint8_t c_daysInMonth[] PROGMEM = { 31,28,31,30,31,30,31,31,30,31,30,31 };
|
||||||
|
|
||||||
|
RtcDateTime::RtcDateTime(uint32_t secondsFrom2000)
|
||||||
|
{
|
||||||
|
_initWithSecondsFrom2000<uint32_t>(secondsFrom2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t StringToUint8(const char* pString)
|
||||||
|
{
|
||||||
|
uint8_t value = 0;
|
||||||
|
|
||||||
|
// skip leading 0 and spaces
|
||||||
|
while ('0' == *pString || *pString == ' ')
|
||||||
|
{
|
||||||
|
pString++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// calculate number until we hit non-numeral char
|
||||||
|
while ('0' <= *pString && *pString <= '9')
|
||||||
|
{
|
||||||
|
value *= 10;
|
||||||
|
value += *pString - '0';
|
||||||
|
pString++;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime::RtcDateTime(const char* date, const char* time)
|
||||||
|
{
|
||||||
|
// sample input: date = "Dec 26 2009", time = "12:34:56"
|
||||||
|
_yearFrom2000 = StringToUint8(date + 9);
|
||||||
|
// Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
|
||||||
|
switch (date[0])
|
||||||
|
{
|
||||||
|
case 'J':
|
||||||
|
if ( date[1] == 'a' )
|
||||||
|
_month = 1;
|
||||||
|
else if ( date[2] == 'n' )
|
||||||
|
_month = 6;
|
||||||
|
else
|
||||||
|
_month = 7;
|
||||||
|
break;
|
||||||
|
case 'F':
|
||||||
|
_month = 2;
|
||||||
|
break;
|
||||||
|
case 'A':
|
||||||
|
_month = date[1] == 'p' ? 4 : 8;
|
||||||
|
break;
|
||||||
|
case 'M':
|
||||||
|
_month = date[2] == 'r' ? 3 : 5;
|
||||||
|
break;
|
||||||
|
case 'S':
|
||||||
|
_month = 9;
|
||||||
|
break;
|
||||||
|
case 'O':
|
||||||
|
_month = 10;
|
||||||
|
break;
|
||||||
|
case 'N':
|
||||||
|
_month = 11;
|
||||||
|
break;
|
||||||
|
case 'D':
|
||||||
|
_month = 12;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_dayOfMonth = StringToUint8(date + 4);
|
||||||
|
_hour = StringToUint8(time);
|
||||||
|
_minute = StringToUint8(time + 3);
|
||||||
|
_second = StringToUint8(time + 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> T DaysSinceFirstOfYear2000(uint16_t year, uint8_t month, uint8_t dayOfMonth)
|
||||||
|
{
|
||||||
|
T days = dayOfMonth;
|
||||||
|
for (uint8_t indexMonth = 1; indexMonth < month; ++indexMonth)
|
||||||
|
{
|
||||||
|
days += pgm_read_byte(c_daysInMonth + indexMonth - 1);
|
||||||
|
}
|
||||||
|
if (month > 2 && year % 4 == 0)
|
||||||
|
{
|
||||||
|
days++;
|
||||||
|
}
|
||||||
|
return days + 365 * year + (year + 3) / 4 - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> T SecondsIn(T days, uint8_t hours, uint8_t minutes, uint8_t seconds)
|
||||||
|
{
|
||||||
|
return ((days * 24L + hours) * 60 + minutes) * 60 + seconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t RtcDateTime::DayOfWeek() const
|
||||||
|
{
|
||||||
|
uint16_t days = DaysSinceFirstOfYear2000<uint16_t>(_yearFrom2000, _month, _dayOfMonth);
|
||||||
|
return (days + 6) % 7; // Jan 1, 2000 is a Saturday, i.e. returns 6
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t RtcDateTime::TotalSeconds() const
|
||||||
|
{
|
||||||
|
uint16_t days = DaysSinceFirstOfYear2000<uint16_t>(_yearFrom2000, _month, _dayOfMonth);
|
||||||
|
return SecondsIn<uint32_t>(days, _hour, _minute, _second);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t RtcDateTime::TotalSeconds64() const
|
||||||
|
{
|
||||||
|
uint32_t days = DaysSinceFirstOfYear2000<uint32_t>(_yearFrom2000, _month, _dayOfMonth);
|
||||||
|
return SecondsIn<uint64_t>(days, _hour, _minute, _second);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RtcDateTime::InitWithIso8601(const char* date)
|
||||||
|
{
|
||||||
|
// sample input: date = "Sat, 26 Dec 2009 12:34:56 GMT"
|
||||||
|
_yearFrom2000 = StringToUint8(date + 13);
|
||||||
|
// Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
|
||||||
|
switch (date[8])
|
||||||
|
{
|
||||||
|
case 'J':
|
||||||
|
if (date[1 + 8] == 'a')
|
||||||
|
_month = 1;
|
||||||
|
else if (date[2 + 8] == 'n')
|
||||||
|
_month = 6;
|
||||||
|
else
|
||||||
|
_month = 7;
|
||||||
|
break;
|
||||||
|
case 'F':
|
||||||
|
_month = 2;
|
||||||
|
break;
|
||||||
|
case 'A':
|
||||||
|
_month = date[1 + 8] == 'p' ? 4 : 8;
|
||||||
|
break;
|
||||||
|
case 'M':
|
||||||
|
_month = date[2 + 8] == 'r' ? 3 : 5;
|
||||||
|
break;
|
||||||
|
case 'S':
|
||||||
|
_month = 9;
|
||||||
|
break;
|
||||||
|
case 'O':
|
||||||
|
_month = 10;
|
||||||
|
break;
|
||||||
|
case 'N':
|
||||||
|
_month = 11;
|
||||||
|
break;
|
||||||
|
case 'D':
|
||||||
|
_month = 12;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_dayOfMonth = StringToUint8(date + 5);
|
||||||
|
_hour = StringToUint8(date + 17);
|
||||||
|
_minute = StringToUint8(date + 20);
|
||||||
|
_second = StringToUint8(date + 23);
|
||||||
|
}
|
176
firmware/firmware/RtcDateTime.h
Normal file
176
firmware/firmware/RtcDateTime.h
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
#ifndef __RTCDATETIME_H__
|
||||||
|
#define __RTCDATETIME_H__
|
||||||
|
|
||||||
|
// ESP32 complains if not included
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#include <inttypes.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum DayOfWeek
|
||||||
|
{
|
||||||
|
DayOfWeek_Sunday = 0,
|
||||||
|
DayOfWeek_Monday,
|
||||||
|
DayOfWeek_Tuesday,
|
||||||
|
DayOfWeek_Wednesday,
|
||||||
|
DayOfWeek_Thursday,
|
||||||
|
DayOfWeek_Friday,
|
||||||
|
DayOfWeek_Saturday,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t c_OriginYear = 2000;
|
||||||
|
const uint32_t c_Epoch32OfOriginYear = 946684800;
|
||||||
|
extern const uint8_t c_daysInMonth[] PROGMEM;
|
||||||
|
|
||||||
|
class RtcDateTime
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RtcDateTime(uint32_t secondsFrom2000 = 0);
|
||||||
|
RtcDateTime(uint16_t year,
|
||||||
|
uint8_t month,
|
||||||
|
uint8_t dayOfMonth,
|
||||||
|
uint8_t hour,
|
||||||
|
uint8_t minute,
|
||||||
|
uint8_t second) :
|
||||||
|
_yearFrom2000((year >= c_OriginYear) ? year - c_OriginYear : year),
|
||||||
|
_month(month),
|
||||||
|
_dayOfMonth(dayOfMonth),
|
||||||
|
_hour(hour),
|
||||||
|
_minute(minute),
|
||||||
|
_second(second)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// RtcDateTime compileDateTime(__DATE__, __TIME__);
|
||||||
|
RtcDateTime(const char* date, const char* time);
|
||||||
|
|
||||||
|
uint16_t Year() const
|
||||||
|
{
|
||||||
|
return c_OriginYear + _yearFrom2000;
|
||||||
|
}
|
||||||
|
uint8_t Month() const
|
||||||
|
{
|
||||||
|
return _month;
|
||||||
|
}
|
||||||
|
uint8_t Day() const
|
||||||
|
{
|
||||||
|
return _dayOfMonth;
|
||||||
|
}
|
||||||
|
uint8_t Hour() const
|
||||||
|
{
|
||||||
|
return _hour;
|
||||||
|
}
|
||||||
|
uint8_t Minute() const
|
||||||
|
{
|
||||||
|
return _minute;
|
||||||
|
}
|
||||||
|
uint8_t Second() const
|
||||||
|
{
|
||||||
|
return _second;
|
||||||
|
}
|
||||||
|
// 0 = Sunday, 1 = Monday, ... 6 = Saturday
|
||||||
|
uint8_t DayOfWeek() const;
|
||||||
|
|
||||||
|
// 32-bit times as seconds since 1/1/2000
|
||||||
|
uint32_t TotalSeconds() const;
|
||||||
|
uint64_t TotalSeconds64() const;
|
||||||
|
|
||||||
|
// add seconds
|
||||||
|
void operator += (uint32_t seconds)
|
||||||
|
{
|
||||||
|
RtcDateTime after = RtcDateTime( TotalSeconds() + seconds );
|
||||||
|
*this = after;
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove seconds
|
||||||
|
void operator -= (uint32_t seconds)
|
||||||
|
{
|
||||||
|
RtcDateTime before = RtcDateTime( TotalSeconds() - seconds );
|
||||||
|
*this = before;
|
||||||
|
}
|
||||||
|
|
||||||
|
// allows for comparisons to just work (==, <, >, <=, >=, !=)
|
||||||
|
operator uint32_t() const
|
||||||
|
{
|
||||||
|
return TotalSeconds();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Epoch32 support
|
||||||
|
uint32_t Epoch32Time() const
|
||||||
|
{
|
||||||
|
return TotalSeconds() + c_Epoch32OfOriginYear;
|
||||||
|
}
|
||||||
|
void InitWithEpoch32Time(uint32_t time)
|
||||||
|
{
|
||||||
|
_initWithSecondsFrom2000<uint32_t>(time - c_Epoch32OfOriginYear);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Epoch64 support
|
||||||
|
uint64_t Epoch64Time() const
|
||||||
|
{
|
||||||
|
return TotalSeconds64() + c_Epoch32OfOriginYear;
|
||||||
|
}
|
||||||
|
void InitWithEpoch64Time(uint64_t time)
|
||||||
|
{
|
||||||
|
_initWithSecondsFrom2000<uint64_t>(time - c_Epoch32OfOriginYear);
|
||||||
|
}
|
||||||
|
|
||||||
|
void InitWithIso8601(const char* date);
|
||||||
|
|
||||||
|
|
||||||
|
// convert our Day of Week to Rtc Day of Week
|
||||||
|
// RTC Hardware Day of Week is 1-7, 1 = Monday
|
||||||
|
static uint8_t ConvertDowToRtc(uint8_t dow)
|
||||||
|
{
|
||||||
|
if (dow == 0)
|
||||||
|
{
|
||||||
|
dow = 7;
|
||||||
|
}
|
||||||
|
return dow;
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert Rtc Day of Week to our Day of Week
|
||||||
|
static uint8_t ConvertRtcToDow(uint8_t rtcDow)
|
||||||
|
{
|
||||||
|
return (rtcDow % 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
uint8_t _yearFrom2000;
|
||||||
|
uint8_t _month;
|
||||||
|
uint8_t _dayOfMonth;
|
||||||
|
uint8_t _hour;
|
||||||
|
uint8_t _minute;
|
||||||
|
uint8_t _second;
|
||||||
|
|
||||||
|
template <typename T> void _initWithSecondsFrom2000(T secondsFrom2000)
|
||||||
|
{
|
||||||
|
_second = secondsFrom2000 % 60;
|
||||||
|
T timeFrom2000 = secondsFrom2000 / 60;
|
||||||
|
_minute = timeFrom2000 % 60;
|
||||||
|
timeFrom2000 /= 60;
|
||||||
|
_hour = timeFrom2000 % 24;
|
||||||
|
T days = timeFrom2000 / 24;
|
||||||
|
T leapDays;
|
||||||
|
|
||||||
|
for (_yearFrom2000 = 0;; ++_yearFrom2000)
|
||||||
|
{
|
||||||
|
leapDays = (_yearFrom2000 % 4 == 0) ? 1 : 0;
|
||||||
|
if (days < 365U + leapDays)
|
||||||
|
break;
|
||||||
|
days -= 365 + leapDays;
|
||||||
|
}
|
||||||
|
for (_month = 1;; ++_month)
|
||||||
|
{
|
||||||
|
uint8_t daysPerMonth = pgm_read_byte(c_daysInMonth + _month - 1);
|
||||||
|
if (leapDays && _month == 2)
|
||||||
|
daysPerMonth++;
|
||||||
|
if (days < daysPerMonth)
|
||||||
|
break;
|
||||||
|
days -= daysPerMonth;
|
||||||
|
}
|
||||||
|
_dayOfMonth = days + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __RTCDATETIME_H__
|
34
firmware/firmware/RtcUtility.cpp
Normal file
34
firmware/firmware/RtcUtility.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include "RtcUtility.h"
|
||||||
|
|
||||||
|
uint8_t BcdToUint8(uint8_t val)
|
||||||
|
{
|
||||||
|
return val - 6 * (val >> 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Uint8ToBcd(uint8_t val)
|
||||||
|
{
|
||||||
|
return val + 6 * (val / 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t BcdToBin24Hour(uint8_t bcdHour)
|
||||||
|
{
|
||||||
|
uint8_t hour;
|
||||||
|
if (bcdHour & 0x40)
|
||||||
|
{
|
||||||
|
// 12 hour mode, convert to 24
|
||||||
|
bool isPm = ((bcdHour & 0x20) != 0);
|
||||||
|
|
||||||
|
hour = BcdToUint8(bcdHour & 0x1f);
|
||||||
|
if (isPm)
|
||||||
|
{
|
||||||
|
hour += 12;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
hour = BcdToUint8(bcdHour);
|
||||||
|
}
|
||||||
|
return hour;
|
||||||
|
}
|
18
firmware/firmware/RtcUtility.h
Normal file
18
firmware/firmware/RtcUtility.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#ifndef __RTCUTILITY_H__
|
||||||
|
#define __RTCUTILITY_H__
|
||||||
|
|
||||||
|
// ESP32 complains if not included
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#include <inttypes.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// for some reason, the DUE board support does not define this, even though other non AVR archs do
|
||||||
|
#ifndef _BV
|
||||||
|
#define _BV(b) (1UL << (b))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint8_t BcdToUint8(uint8_t val);
|
||||||
|
extern uint8_t Uint8ToBcd(uint8_t val);
|
||||||
|
extern uint8_t BcdToBin24Hour(uint8_t bcdHour);
|
||||||
|
|
||||||
|
#endif // __RTCUTILITY_H__
|
120
firmware/firmware/TempLogger.cpp
Normal file
120
firmware/firmware/TempLogger.cpp
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
/**
|
||||||
|
* /TempLogger.cpp
|
||||||
|
* @version 1.0
|
||||||
|
* @desc Body file of the TempLogger class
|
||||||
|
* @author Fándly Gergő Zoltán (fandlygergo@gmail.hu, systemtest.tk)
|
||||||
|
* @copy 2018 Fándly Gergő Zoltán
|
||||||
|
* License:
|
||||||
|
Firmware for the Profile F1 fertilizer machine.
|
||||||
|
Copyright (C) 2018 Fándly Gergő Zoltán
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#include "modules.h"
|
||||||
|
|
||||||
|
TempLogger::TempLogger(){
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TempLogger::run(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
float TempLogger::getMin(){
|
||||||
|
float m=100;
|
||||||
|
int c=getCount();
|
||||||
|
for(int i=0; i<c; i++){
|
||||||
|
float t=getTemp(i);
|
||||||
|
if(t<m){
|
||||||
|
m=t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
float TempLogger::getMax(){
|
||||||
|
float m=-100;
|
||||||
|
int c=getCount();
|
||||||
|
for(int i=0; i<c; i++){
|
||||||
|
float t=getTemp(i);
|
||||||
|
if(t>m){
|
||||||
|
m=t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
|
||||||
|
float TempLogger::getAvg(){
|
||||||
|
float sum=0;
|
||||||
|
int c=getCount();
|
||||||
|
for(int i=0; i<c; i++){
|
||||||
|
sum+=getTemp(i);
|
||||||
|
}
|
||||||
|
return sum/c;
|
||||||
|
}
|
||||||
|
|
||||||
|
byte TempLogger::getCount(){
|
||||||
|
return memory.getTempCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
float TempLogger::getTemp(byte n){
|
||||||
|
return memory.getTemp(n);
|
||||||
|
}
|
||||||
|
|
||||||
|
float TempLogger::now(){
|
||||||
|
//request temp read
|
||||||
|
sensor.request(sensorAddress);
|
||||||
|
|
||||||
|
//wait for temp read
|
||||||
|
while(sensor.available());
|
||||||
|
|
||||||
|
//return sensor reading
|
||||||
|
return sensor.readTemperature(sensorAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TempLogger::init(){
|
||||||
|
//init oneWire
|
||||||
|
oneWire=oneWire(8);
|
||||||
|
|
||||||
|
//search DS18B20 address
|
||||||
|
oneWire.reset_search();
|
||||||
|
while(oneWire.search(sensorAddress)){
|
||||||
|
if(sensorAddress[0]!=0x28){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(OneWire::crc8(sensorAddress, 7) != sensorAddress[7]){
|
||||||
|
Serial.println(F("E: 0x01 OneWire bus connection error."))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.print(F("I: 0x02 DS18B20 address found"));
|
||||||
|
|
||||||
|
//init DS18B20
|
||||||
|
sensor=DS18B20(&oneWire);
|
||||||
|
sensor.begin();
|
||||||
|
|
||||||
|
//request first temp read
|
||||||
|
sensor.request(sensorAddress);
|
||||||
|
|
||||||
|
//log first temperature to memory
|
||||||
|
lastSave=-100;
|
||||||
|
saveTemp();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TempLogger::saveTemp(){
|
||||||
|
|
||||||
|
}
|
64
firmware/firmware/TempLogger.h
Normal file
64
firmware/firmware/TempLogger.h
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/**
|
||||||
|
* /TempLogger.h
|
||||||
|
* @version 1.0
|
||||||
|
* @desc Module for logging temperatures and saving them to Memory
|
||||||
|
* @author Fándly Gergő Zoltán (fandlygergo@gmail.hu, systemtest.tk)
|
||||||
|
* @copy 2018 Fándly Gergő Zoltán
|
||||||
|
* License:
|
||||||
|
Firmware for the Profile F1 fertilizer machine.
|
||||||
|
Copyright (C) 2018 Fándly Gergő Zoltán
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef TEMPLOGGER_H_INCLUDED
|
||||||
|
#define TEMPLOGGER_H_INCLUDED
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <OneWire.h>
|
||||||
|
#include "DS18B20.h"
|
||||||
|
|
||||||
|
class TempLogger{
|
||||||
|
public:
|
||||||
|
//constructor
|
||||||
|
TempLogger();
|
||||||
|
|
||||||
|
//regular run
|
||||||
|
void run();
|
||||||
|
|
||||||
|
//get temperatures
|
||||||
|
float getMin();
|
||||||
|
float getMax();
|
||||||
|
float getAvg();
|
||||||
|
|
||||||
|
byte getCount();
|
||||||
|
float getTemp(byte n);
|
||||||
|
|
||||||
|
//get temp now
|
||||||
|
float now();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
OneWire oneWire;
|
||||||
|
DS18B20 sensor;
|
||||||
|
byte sensorAddress[8];
|
||||||
|
int lastSave;
|
||||||
|
|
||||||
|
private:
|
||||||
|
//init everything
|
||||||
|
void init();
|
||||||
|
//add temp to log
|
||||||
|
void saveTemp();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TEMPLOGGER_H_INCLUDED
|
36
firmware/firmware/defaults.h
Normal file
36
firmware/firmware/defaults.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/**
|
||||||
|
* /defaults.h
|
||||||
|
* @version 1.0
|
||||||
|
* @desc Default defines
|
||||||
|
* @author Fándly Gergő Zoltán (fandlygergo@gmail.hu, systemtest.tk)
|
||||||
|
* @copy 2018 Fándly Gergő Zoltán
|
||||||
|
* License:
|
||||||
|
Firmware for the Profile F1 fertilizer machine.
|
||||||
|
Copyright (C) 2018 Fándly Gergő Zoltán
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef DEFAULTS_H_INCLUDED
|
||||||
|
#define DEFAULTS_H_INCLUDED
|
||||||
|
|
||||||
|
#define DEFAULT_MOTOR_COUNT 1
|
||||||
|
#define DEFAULT_LCD_BRIGHTNESS 255
|
||||||
|
|
||||||
|
#define STEPS_PER_ML 50 //TO BE ACCORDINGLY!!!
|
||||||
|
#define STEPS_PER_ROUND 20 //NEED SOME TWEAKING
|
||||||
|
|
||||||
|
#define TEMP_LOG_INTERVAL 15 //minutes
|
||||||
|
|
||||||
|
#endif // DEFAULTS_H_INCLUDED
|
61
firmware/firmware/firmware.cbp
Normal file
61
firmware/firmware/firmware.cbp
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||||
|
<CodeBlocks_project_file>
|
||||||
|
<FileVersion major="1" minor="6" />
|
||||||
|
<Project>
|
||||||
|
<Option title="firmware" />
|
||||||
|
<Option pch_mode="2" />
|
||||||
|
<Option compiler="gcc" />
|
||||||
|
<Build>
|
||||||
|
<Target title="Debug">
|
||||||
|
<Option output="bin/Debug/firmware" prefix_auto="1" extension_auto="1" />
|
||||||
|
<Option object_output="obj/Debug/" />
|
||||||
|
<Option type="1" />
|
||||||
|
<Option compiler="gcc" />
|
||||||
|
<Compiler>
|
||||||
|
<Add option="-g" />
|
||||||
|
</Compiler>
|
||||||
|
</Target>
|
||||||
|
</Build>
|
||||||
|
<Compiler>
|
||||||
|
<Add option="-Wall" />
|
||||||
|
</Compiler>
|
||||||
|
<Unit filename="Adafruit_MCP23017.cpp" />
|
||||||
|
<Unit filename="Adafruit_MCP23017.h" />
|
||||||
|
<Unit filename="CheapMCPStepper.cpp" />
|
||||||
|
<Unit filename="CheapMCPStepper.h" />
|
||||||
|
<Unit filename="DS18B20.cpp" />
|
||||||
|
<Unit filename="DS18B20.h" />
|
||||||
|
<Unit filename="Memory.cpp" />
|
||||||
|
<Unit filename="Memory.h" />
|
||||||
|
<Unit filename="MotorBroker.cpp" />
|
||||||
|
<Unit filename="MotorBroker.h" />
|
||||||
|
<Unit filename="RtcDS1307.h" />
|
||||||
|
<Unit filename="RtcDateTime.cpp" />
|
||||||
|
<Unit filename="RtcDateTime.h" />
|
||||||
|
<Unit filename="RtcUtility.cpp" />
|
||||||
|
<Unit filename="RtcUtility.h" />
|
||||||
|
<Unit filename="TempLogger.cpp">
|
||||||
|
<Option target="<{~None~}>" />
|
||||||
|
</Unit>
|
||||||
|
<Unit filename="TempLogger.h">
|
||||||
|
<Option target="<{~None~}>" />
|
||||||
|
</Unit>
|
||||||
|
<Unit filename="defaults.h" />
|
||||||
|
<Unit filename="firmware.ino" />
|
||||||
|
<Unit filename="messageCodes.txt" />
|
||||||
|
<Unit filename="modules.h" />
|
||||||
|
<Unit filename="version.h" />
|
||||||
|
<Extensions>
|
||||||
|
<code_completion />
|
||||||
|
<envvars />
|
||||||
|
<debugger />
|
||||||
|
<lib_finder disable_auto="1" />
|
||||||
|
<AutoVersioning>
|
||||||
|
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
|
||||||
|
<Settings autoincrement="1" date_declarations="1" use_define="0" update_manifest="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
|
||||||
|
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
|
||||||
|
<Code header_guard="VERSION_H" namespace="AutoVersion" prefix="" />
|
||||||
|
</AutoVersioning>
|
||||||
|
</Extensions>
|
||||||
|
</Project>
|
||||||
|
</CodeBlocks_project_file>
|
32
firmware/firmware/firmware.ino
Normal file
32
firmware/firmware/firmware.ino
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/**
|
||||||
|
* /firmware.ino
|
||||||
|
* @version 1.1
|
||||||
|
* @desc Main file
|
||||||
|
* @author Fándly Gergő Zoltán (fandlygergo@gmail.hu, systemtest.tk)
|
||||||
|
* @copy 2018 Fándly Gergő Zoltán
|
||||||
|
* License:
|
||||||
|
Firmware for the Profile F1 fertilizer machine.
|
||||||
|
Copyright (C) 2018 Fándly Gergő Zoltán
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
**/
|
||||||
|
|
||||||
|
//include our libs
|
||||||
|
|
||||||
|
|
||||||
|
void setup(){
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop(){
|
||||||
|
}
|
95
firmware/firmware/firmware.layout
Normal file
95
firmware/firmware/firmware.layout
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||||
|
<CodeBlocks_layout_file>
|
||||||
|
<FileVersion major="1" minor="0" />
|
||||||
|
<ActiveTarget name="Debug" />
|
||||||
|
<File name="CheapMCPStepper.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="671" topLine="11" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="RtcDS1307.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="0" topLine="84" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="modules.h" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="1353" topLine="29" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="DS18B20.h" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="521" topLine="24" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="TempLogger.h" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="1343" topLine="47" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="firmware.ino" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="956" topLine="3" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="MotorBroker.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="1114" topLine="11" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="Memory.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="2152" topLine="60" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="defaults.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="1230" topLine="0" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="TempLogger.cpp" open="1" top="1" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="2761" topLine="101" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="version.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="501" topLine="0" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="Adafruit_MCP23017.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="3074" topLine="125" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="CheapMCPStepper.cpp" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="6017" topLine="30" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="MotorBroker.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="977" topLine="44" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="Adafruit_MCP23017.h" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="0" topLine="28" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="messageCodes.txt" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="144" topLine="0" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="RtcDateTime.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="0" topLine="0" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
<File name="Memory.cpp" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
|
<Cursor>
|
||||||
|
<Cursor1 position="973" topLine="102" />
|
||||||
|
</Cursor>
|
||||||
|
</File>
|
||||||
|
</CodeBlocks_layout_file>
|
621
firmware/firmware/license.txt
Normal file
621
firmware/firmware/license.txt
Normal file
@ -0,0 +1,621 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
4
firmware/firmware/messageCodes.txt
Normal file
4
firmware/firmware/messageCodes.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Code - Type (E,W,I,D) - Description
|
||||||
|
------------------------------------
|
||||||
|
0x01 - E - OneWire connection error
|
||||||
|
0x02 - I - DS18B20 address found
|
46
firmware/firmware/modules.h
Normal file
46
firmware/firmware/modules.h
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/**
|
||||||
|
* /modules.h
|
||||||
|
* @version 1.0
|
||||||
|
* @desc File storing the variables which represent each module
|
||||||
|
* @author Fándly Gergő Zoltán (fandlygergo@gmail.hu, systemtest.tk)
|
||||||
|
* @copy 2018 Fándly Gergő Zoltán
|
||||||
|
* License:
|
||||||
|
Firmware for the Profile F1 fertilizer machine.
|
||||||
|
Copyright (C) 2018 Fándly Gergő Zoltán
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef MODULES_H_INCLUDED
|
||||||
|
#define MODULES_H_INCLUDED
|
||||||
|
|
||||||
|
//include libraries
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
|
||||||
|
//include modules
|
||||||
|
#include "Adafruit_MCP23017.h"
|
||||||
|
#include "RtcDS1307.h"
|
||||||
|
#include "Memory.h"
|
||||||
|
#include "MotorBroker.h"
|
||||||
|
#include "TempLogger.h"
|
||||||
|
|
||||||
|
//modules
|
||||||
|
Adafruit_MCP23017 mcp;
|
||||||
|
RtcDS1307<TwoWire> rtc(Wire);
|
||||||
|
Memory memory;
|
||||||
|
MotorBroker motorBroker;
|
||||||
|
TempLogger tempLogger;
|
||||||
|
|
||||||
|
#endif // MODULES_H_INCLUDED
|
33
firmware/firmware/version.h
Normal file
33
firmware/firmware/version.h
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#ifndef VERSION_H
|
||||||
|
#define VERSION_H
|
||||||
|
|
||||||
|
namespace AutoVersion{
|
||||||
|
|
||||||
|
//Date Version Types
|
||||||
|
static const char DATE[] = "09";
|
||||||
|
static const char MONTH[] = "07";
|
||||||
|
static const char YEAR[] = "2018";
|
||||||
|
static const char UBUNTU_VERSION_STYLE[] = "18.07";
|
||||||
|
|
||||||
|
//Software Status
|
||||||
|
static const char STATUS[] = "Alpha";
|
||||||
|
static const char STATUS_SHORT[] = "a";
|
||||||
|
|
||||||
|
//Standard Version Type
|
||||||
|
static const long MAJOR = 1;
|
||||||
|
static const long MINOR = 0;
|
||||||
|
static const long BUILD = 2;
|
||||||
|
static const long REVISION = 11;
|
||||||
|
|
||||||
|
//Miscellaneous Version Types
|
||||||
|
static const long BUILDS_COUNT = 1;
|
||||||
|
#define RC_FILEVERSION 1,0,2,11
|
||||||
|
#define RC_FILEVERSION_STRING "1, 0, 2, 11\0"
|
||||||
|
static const char FULLVERSION_STRING [] = "1.0.2.11";
|
||||||
|
|
||||||
|
//These values are to keep track of your versioning state, don't modify them.
|
||||||
|
static const long BUILD_HISTORY = 2;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif //VERSION_H
|
BIN
firmware/lib/Adafruit-MCP23017-Arduino-Library-master.zip
Normal file
BIN
firmware/lib/Adafruit-MCP23017-Arduino-Library-master.zip
Normal file
Binary file not shown.
46
firmware/lib/Adafruit-MCP23017-Arduino-Library-master/.github/ISSUE_TEMPLATE.md
vendored
Normal file
46
firmware/lib/Adafruit-MCP23017-Arduino-Library-master/.github/ISSUE_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
Thank you for opening an issue on an Adafruit Arduino library repository. To
|
||||||
|
improve the speed of resolution please review the following guidelines and
|
||||||
|
common troubleshooting steps below before creating the issue:
|
||||||
|
|
||||||
|
- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use
|
||||||
|
the forums at http://forums.adafruit.com to ask questions and troubleshoot why
|
||||||
|
something isn't working as expected. In many cases the problem is a common issue
|
||||||
|
that you will more quickly receive help from the forum community. GitHub issues
|
||||||
|
are meant for known defects in the code. If you don't know if there is a defect
|
||||||
|
in the code then start with troubleshooting on the forum first.
|
||||||
|
|
||||||
|
- **If following a tutorial or guide be sure you didn't miss a step.** Carefully
|
||||||
|
check all of the steps and commands to run have been followed. Consult the
|
||||||
|
forum if you're unsure or have questions about steps in a guide/tutorial.
|
||||||
|
|
||||||
|
- **For Arduino projects check these very common issues to ensure they don't apply**:
|
||||||
|
|
||||||
|
- For uploading sketches or communicating with the board make sure you're using
|
||||||
|
a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes
|
||||||
|
very hard to tell the difference between a data and charge cable! Try using the
|
||||||
|
cable with other devices or swapping to another cable to confirm it is not
|
||||||
|
the problem.
|
||||||
|
|
||||||
|
- **Be sure you are supplying adequate power to the board.** Check the specs of
|
||||||
|
your board and plug in an external power supply. In many cases just
|
||||||
|
plugging a board into your computer is not enough to power it and other
|
||||||
|
peripherals.
|
||||||
|
|
||||||
|
- **Double check all soldering joints and connections.** Flakey connections
|
||||||
|
cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints.
|
||||||
|
|
||||||
|
- **Ensure you are using an official Arduino or Adafruit board.** We can't
|
||||||
|
guarantee a clone board will have the same functionality and work as expected
|
||||||
|
with this code and don't support them.
|
||||||
|
|
||||||
|
If you're sure this issue is a defect in the code and checked the steps above
|
||||||
|
please fill in the following fields to provide enough troubleshooting information.
|
||||||
|
You may delete the guideline and text above to just leave the following details:
|
||||||
|
|
||||||
|
- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE**
|
||||||
|
|
||||||
|
- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO
|
||||||
|
VERSION HERE**
|
||||||
|
|
||||||
|
- List the steps to reproduce the problem below (if possible attach a sketch or
|
||||||
|
copy the sketch code in too): **LIST REPRO STEPS BELOW**
|
26
firmware/lib/Adafruit-MCP23017-Arduino-Library-master/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
26
firmware/lib/Adafruit-MCP23017-Arduino-Library-master/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
Thank you for creating a pull request to contribute to Adafruit's GitHub code!
|
||||||
|
Before you open the request please review the following guidelines and tips to
|
||||||
|
help it be more easily integrated:
|
||||||
|
|
||||||
|
- **Describe the scope of your change--i.e. what the change does and what parts
|
||||||
|
of the code were modified.** This will help us understand any risks of integrating
|
||||||
|
the code.
|
||||||
|
|
||||||
|
- **Describe any known limitations with your change.** For example if the change
|
||||||
|
doesn't apply to a supported platform of the library please mention it.
|
||||||
|
|
||||||
|
- **Please run any tests or examples that can exercise your modified code.** We
|
||||||
|
strive to not break users of the code and running tests/examples helps with this
|
||||||
|
process.
|
||||||
|
|
||||||
|
Thank you again for contributing! We will try to test and integrate the change
|
||||||
|
as soon as we can, but be aware we have many GitHub repositories to manage and
|
||||||
|
can't immediately respond to every request. There is no need to bump or check in
|
||||||
|
on a pull request (it will clutter the discussion of the request).
|
||||||
|
|
||||||
|
Also don't be worried if the request is closed or not integrated--sometimes the
|
||||||
|
priorities of Adafruit's GitHub code (education, ease of use) might not match the
|
||||||
|
priorities of the pull request. Don't fret, the open source community thrives on
|
||||||
|
forks and GitHub makes it easy to keep your changes in a forked repo.
|
||||||
|
|
||||||
|
After reviewing the guidelines above you can delete this text from the pull request.
|
@ -0,0 +1,283 @@
|
|||||||
|
/***************************************************
|
||||||
|
This is a library for the MCP23017 i2c port expander
|
||||||
|
|
||||||
|
These displays use I2C to communicate, 2 pins are required to
|
||||||
|
interface
|
||||||
|
Adafruit invests time and resources providing this open source code,
|
||||||
|
please support Adafruit and open-source hardware by purchasing
|
||||||
|
products from Adafruit!
|
||||||
|
|
||||||
|
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||||
|
BSD license, all text above must be included in any redistribution
|
||||||
|
****************************************************/
|
||||||
|
|
||||||
|
#ifdef __AVR
|
||||||
|
#include <avr/pgmspace.h>
|
||||||
|
#elif defined(ESP8266)
|
||||||
|
#include <pgmspace.h>
|
||||||
|
#endif
|
||||||
|
#include "Adafruit_MCP23017.h"
|
||||||
|
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
#include "Arduino.h"
|
||||||
|
#else
|
||||||
|
#include "WProgram.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// minihelper to keep Arduino backward compatibility
|
||||||
|
static inline void wiresend(uint8_t x) {
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
Wire.write((uint8_t) x);
|
||||||
|
#else
|
||||||
|
Wire.send(x);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint8_t wirerecv(void) {
|
||||||
|
#if ARDUINO >= 100
|
||||||
|
return Wire.read();
|
||||||
|
#else
|
||||||
|
return Wire.receive();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bit number associated to a give Pin
|
||||||
|
*/
|
||||||
|
uint8_t Adafruit_MCP23017::bitForPin(uint8_t pin){
|
||||||
|
return pin%8;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register address, port dependent, for a given PIN
|
||||||
|
*/
|
||||||
|
uint8_t Adafruit_MCP23017::regForPin(uint8_t pin, uint8_t portAaddr, uint8_t portBaddr){
|
||||||
|
return(pin<8) ?portAaddr:portBaddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads a given register
|
||||||
|
*/
|
||||||
|
uint8_t Adafruit_MCP23017::readRegister(uint8_t addr){
|
||||||
|
// read the current GPINTEN
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(addr);
|
||||||
|
Wire.endTransmission();
|
||||||
|
Wire.requestFrom(MCP23017_ADDRESS | i2caddr, 1);
|
||||||
|
return wirerecv();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes a given register
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::writeRegister(uint8_t regAddr, uint8_t regValue){
|
||||||
|
// Write the register
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(regAddr);
|
||||||
|
wiresend(regValue);
|
||||||
|
Wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper to update a single bit of an A/B register.
|
||||||
|
* - Reads the current register value
|
||||||
|
* - Writes the new register value
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::updateRegisterBit(uint8_t pin, uint8_t pValue, uint8_t portAaddr, uint8_t portBaddr) {
|
||||||
|
uint8_t regValue;
|
||||||
|
uint8_t regAddr=regForPin(pin,portAaddr,portBaddr);
|
||||||
|
uint8_t bit=bitForPin(pin);
|
||||||
|
regValue = readRegister(regAddr);
|
||||||
|
|
||||||
|
// set the value for the particular bit
|
||||||
|
bitWrite(regValue,bit,pValue);
|
||||||
|
|
||||||
|
writeRegister(regAddr,regValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the MCP23017 given its HW selected address, see datasheet for Address selection.
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::begin(uint8_t addr) {
|
||||||
|
if (addr > 7) {
|
||||||
|
addr = 7;
|
||||||
|
}
|
||||||
|
i2caddr = addr;
|
||||||
|
|
||||||
|
Wire.begin();
|
||||||
|
|
||||||
|
// set defaults!
|
||||||
|
// all inputs on port A and B
|
||||||
|
writeRegister(MCP23017_IODIRA,0xff);
|
||||||
|
writeRegister(MCP23017_IODIRB,0xff);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes the default MCP23017, with 000 for the configurable part of the address
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::begin(void) {
|
||||||
|
begin(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the pin mode to either INPUT or OUTPUT
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::pinMode(uint8_t p, uint8_t d) {
|
||||||
|
updateRegisterBit(p,(d==INPUT),MCP23017_IODIRA,MCP23017_IODIRB);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads all 16 pins (port A and B) into a single 16 bits variable.
|
||||||
|
*/
|
||||||
|
uint16_t Adafruit_MCP23017::readGPIOAB() {
|
||||||
|
uint16_t ba = 0;
|
||||||
|
uint8_t a;
|
||||||
|
|
||||||
|
// read the current GPIO output latches
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(MCP23017_GPIOA);
|
||||||
|
Wire.endTransmission();
|
||||||
|
|
||||||
|
Wire.requestFrom(MCP23017_ADDRESS | i2caddr, 2);
|
||||||
|
a = wirerecv();
|
||||||
|
ba = wirerecv();
|
||||||
|
ba <<= 8;
|
||||||
|
ba |= a;
|
||||||
|
|
||||||
|
return ba;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read a single port, A or B, and return its current 8 bit value.
|
||||||
|
* Parameter b should be 0 for GPIOA, and 1 for GPIOB.
|
||||||
|
*/
|
||||||
|
uint8_t Adafruit_MCP23017::readGPIO(uint8_t b) {
|
||||||
|
|
||||||
|
// read the current GPIO output latches
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
if (b == 0)
|
||||||
|
wiresend(MCP23017_GPIOA);
|
||||||
|
else {
|
||||||
|
wiresend(MCP23017_GPIOB);
|
||||||
|
}
|
||||||
|
Wire.endTransmission();
|
||||||
|
|
||||||
|
Wire.requestFrom(MCP23017_ADDRESS | i2caddr, 1);
|
||||||
|
return wirerecv();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes all the pins in one go. This method is very useful if you are implementing a multiplexed matrix and want to get a decent refresh rate.
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::writeGPIOAB(uint16_t ba) {
|
||||||
|
Wire.beginTransmission(MCP23017_ADDRESS | i2caddr);
|
||||||
|
wiresend(MCP23017_GPIOA);
|
||||||
|
wiresend(ba & 0xFF);
|
||||||
|
wiresend(ba >> 8);
|
||||||
|
Wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_MCP23017::digitalWrite(uint8_t pin, uint8_t d) {
|
||||||
|
uint8_t gpio;
|
||||||
|
uint8_t bit=bitForPin(pin);
|
||||||
|
|
||||||
|
|
||||||
|
// read the current GPIO output latches
|
||||||
|
uint8_t regAddr=regForPin(pin,MCP23017_OLATA,MCP23017_OLATB);
|
||||||
|
gpio = readRegister(regAddr);
|
||||||
|
|
||||||
|
// set the pin and direction
|
||||||
|
bitWrite(gpio,bit,d);
|
||||||
|
|
||||||
|
// write the new GPIO
|
||||||
|
regAddr=regForPin(pin,MCP23017_GPIOA,MCP23017_GPIOB);
|
||||||
|
writeRegister(regAddr,gpio);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Adafruit_MCP23017::pullUp(uint8_t p, uint8_t d) {
|
||||||
|
updateRegisterBit(p,d,MCP23017_GPPUA,MCP23017_GPPUB);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Adafruit_MCP23017::digitalRead(uint8_t pin) {
|
||||||
|
uint8_t bit=bitForPin(pin);
|
||||||
|
uint8_t regAddr=regForPin(pin,MCP23017_GPIOA,MCP23017_GPIOB);
|
||||||
|
return (readRegister(regAddr) >> bit) & 0x1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configures the interrupt system. both port A and B are assigned the same configuration.
|
||||||
|
* Mirroring will OR both INTA and INTB pins.
|
||||||
|
* Opendrain will set the INT pin to value or open drain.
|
||||||
|
* polarity will set LOW or HIGH on interrupt.
|
||||||
|
* Default values after Power On Reset are: (false, false, LOW)
|
||||||
|
* If you are connecting the INTA/B pin to arduino 2/3, you should configure the interupt handling as FALLING with
|
||||||
|
* the default configuration.
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::setupInterrupts(uint8_t mirroring, uint8_t openDrain, uint8_t polarity){
|
||||||
|
// configure the port A
|
||||||
|
uint8_t ioconfValue=readRegister(MCP23017_IOCONA);
|
||||||
|
bitWrite(ioconfValue,6,mirroring);
|
||||||
|
bitWrite(ioconfValue,2,openDrain);
|
||||||
|
bitWrite(ioconfValue,1,polarity);
|
||||||
|
writeRegister(MCP23017_IOCONA,ioconfValue);
|
||||||
|
|
||||||
|
// Configure the port B
|
||||||
|
ioconfValue=readRegister(MCP23017_IOCONB);
|
||||||
|
bitWrite(ioconfValue,6,mirroring);
|
||||||
|
bitWrite(ioconfValue,2,openDrain);
|
||||||
|
bitWrite(ioconfValue,1,polarity);
|
||||||
|
writeRegister(MCP23017_IOCONB,ioconfValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set's up a pin for interrupt. uses arduino MODEs: CHANGE, FALLING, RISING.
|
||||||
|
*
|
||||||
|
* Note that the interrupt condition finishes when you read the information about the port / value
|
||||||
|
* that caused the interrupt or you read the port itself. Check the datasheet can be confusing.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void Adafruit_MCP23017::setupInterruptPin(uint8_t pin, uint8_t mode) {
|
||||||
|
|
||||||
|
// set the pin interrupt control (0 means change, 1 means compare against given value);
|
||||||
|
updateRegisterBit(pin,(mode!=CHANGE),MCP23017_INTCONA,MCP23017_INTCONB);
|
||||||
|
// if the mode is not CHANGE, we need to set up a default value, different value triggers interrupt
|
||||||
|
|
||||||
|
// In a RISING interrupt the default value is 0, interrupt is triggered when the pin goes to 1.
|
||||||
|
// In a FALLING interrupt the default value is 1, interrupt is triggered when pin goes to 0.
|
||||||
|
updateRegisterBit(pin,(mode==FALLING),MCP23017_DEFVALA,MCP23017_DEFVALB);
|
||||||
|
|
||||||
|
// enable the pin for interrupt
|
||||||
|
updateRegisterBit(pin,HIGH,MCP23017_GPINTENA,MCP23017_GPINTENB);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Adafruit_MCP23017::getLastInterruptPin(){
|
||||||
|
uint8_t intf;
|
||||||
|
|
||||||
|
// try port A
|
||||||
|
intf=readRegister(MCP23017_INTFA);
|
||||||
|
for(int i=0;i<8;i++) if (bitRead(intf,i)) return i;
|
||||||
|
|
||||||
|
// try port B
|
||||||
|
intf=readRegister(MCP23017_INTFB);
|
||||||
|
for(int i=0;i<8;i++) if (bitRead(intf,i)) return i+8;
|
||||||
|
|
||||||
|
return MCP23017_INT_ERR;
|
||||||
|
|
||||||
|
}
|
||||||
|
uint8_t Adafruit_MCP23017::getLastInterruptPinValue(){
|
||||||
|
uint8_t intPin=getLastInterruptPin();
|
||||||
|
if(intPin!=MCP23017_INT_ERR){
|
||||||
|
uint8_t intcapreg=regForPin(intPin,MCP23017_INTCAPA,MCP23017_INTCAPB);
|
||||||
|
uint8_t bit=bitForPin(intPin);
|
||||||
|
return (readRegister(intcapreg)>>bit) & (0x01);
|
||||||
|
}
|
||||||
|
|
||||||
|
return MCP23017_INT_ERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,97 @@
|
|||||||
|
/***************************************************
|
||||||
|
This is a library for the MCP23017 i2c port expander
|
||||||
|
|
||||||
|
These displays use I2C to communicate, 2 pins are required to
|
||||||
|
interface
|
||||||
|
Adafruit invests time and resources providing this open source code,
|
||||||
|
please support Adafruit and open-source hardware by purchasing
|
||||||
|
products from Adafruit!
|
||||||
|
|
||||||
|
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||||
|
BSD license, all text above must be included in any redistribution
|
||||||
|
****************************************************/
|
||||||
|
|
||||||
|
#ifndef _Adafruit_MCP23017_H_
|
||||||
|
#define _Adafruit_MCP23017_H_
|
||||||
|
|
||||||
|
// Don't forget the Wire library
|
||||||
|
#ifndef ARDUINO_AVR_GEMMA
|
||||||
|
//TinyWireM is now part of
|
||||||
|
// Adafruit version of Wire Library, so this
|
||||||
|
// will work with Adafruit ATtiny85's
|
||||||
|
//But Arduino Gemma doesn't use that library
|
||||||
|
// We do NOT want to include Wire if it's an arduino Gemma
|
||||||
|
#include <Wire.h>
|
||||||
|
#else
|
||||||
|
#include <TinyWireM.h>
|
||||||
|
#define Wire TinyWireM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
class Adafruit_MCP23017 {
|
||||||
|
public:
|
||||||
|
void begin(uint8_t addr);
|
||||||
|
void begin(void);
|
||||||
|
|
||||||
|
void pinMode(uint8_t p, uint8_t d);
|
||||||
|
void digitalWrite(uint8_t p, uint8_t d);
|
||||||
|
void pullUp(uint8_t p, uint8_t d);
|
||||||
|
uint8_t digitalRead(uint8_t p);
|
||||||
|
|
||||||
|
void writeGPIOAB(uint16_t);
|
||||||
|
uint16_t readGPIOAB();
|
||||||
|
uint8_t readGPIO(uint8_t b);
|
||||||
|
|
||||||
|
void setupInterrupts(uint8_t mirroring, uint8_t open, uint8_t polarity);
|
||||||
|
void setupInterruptPin(uint8_t p, uint8_t mode);
|
||||||
|
uint8_t getLastInterruptPin();
|
||||||
|
uint8_t getLastInterruptPinValue();
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint8_t i2caddr;
|
||||||
|
|
||||||
|
uint8_t bitForPin(uint8_t pin);
|
||||||
|
uint8_t regForPin(uint8_t pin, uint8_t portAaddr, uint8_t portBaddr);
|
||||||
|
|
||||||
|
uint8_t readRegister(uint8_t addr);
|
||||||
|
void writeRegister(uint8_t addr, uint8_t value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility private method to update a register associated with a pin (whether port A/B)
|
||||||
|
* reads its value, updates the particular bit, and writes its value.
|
||||||
|
*/
|
||||||
|
void updateRegisterBit(uint8_t p, uint8_t pValue, uint8_t portAaddr, uint8_t portBaddr);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#define MCP23017_ADDRESS 0x20
|
||||||
|
|
||||||
|
// registers
|
||||||
|
#define MCP23017_IODIRA 0x00
|
||||||
|
#define MCP23017_IPOLA 0x02
|
||||||
|
#define MCP23017_GPINTENA 0x04
|
||||||
|
#define MCP23017_DEFVALA 0x06
|
||||||
|
#define MCP23017_INTCONA 0x08
|
||||||
|
#define MCP23017_IOCONA 0x0A
|
||||||
|
#define MCP23017_GPPUA 0x0C
|
||||||
|
#define MCP23017_INTFA 0x0E
|
||||||
|
#define MCP23017_INTCAPA 0x10
|
||||||
|
#define MCP23017_GPIOA 0x12
|
||||||
|
#define MCP23017_OLATA 0x14
|
||||||
|
|
||||||
|
|
||||||
|
#define MCP23017_IODIRB 0x01
|
||||||
|
#define MCP23017_IPOLB 0x03
|
||||||
|
#define MCP23017_GPINTENB 0x05
|
||||||
|
#define MCP23017_DEFVALB 0x07
|
||||||
|
#define MCP23017_INTCONB 0x09
|
||||||
|
#define MCP23017_IOCONB 0x0B
|
||||||
|
#define MCP23017_GPPUB 0x0D
|
||||||
|
#define MCP23017_INTFB 0x0F
|
||||||
|
#define MCP23017_INTCAPB 0x11
|
||||||
|
#define MCP23017_GPIOB 0x13
|
||||||
|
#define MCP23017_OLATB 0x15
|
||||||
|
|
||||||
|
#define MCP23017_INT_ERR 255
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,15 @@
|
|||||||
|
This is a library for the MCP23017 I2c Port Expander
|
||||||
|
|
||||||
|
These chips use I2C to communicate, 2 pins required to interface
|
||||||
|
|
||||||
|
Adafruit invests time and resources providing this open source code,
|
||||||
|
please support Adafruit and open-source hardware by purchasing
|
||||||
|
products from Adafruit!
|
||||||
|
|
||||||
|
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||||
|
BSD license, check license.txt for more information
|
||||||
|
All text above must be included in any redistribution
|
||||||
|
|
||||||
|
To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_MCP23017. Check that the Adafruit_MCP23017 folder contains Adafruit_MCP23017.cpp and Adafruit_MCP23017.h
|
||||||
|
|
||||||
|
Place the Adafruit_MCP23017 library folder your <arduinosketchfolder>/libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE.
|
@ -0,0 +1,32 @@
|
|||||||
|
#include <Wire.h>
|
||||||
|
#include "Adafruit_MCP23017.h"
|
||||||
|
|
||||||
|
// Basic pin reading and pullup test for the MCP23017 I/O expander
|
||||||
|
// public domain!
|
||||||
|
|
||||||
|
// Connect pin #12 of the expander to Analog 5 (i2c clock)
|
||||||
|
// Connect pin #13 of the expander to Analog 4 (i2c data)
|
||||||
|
// Connect pins #15, 16 and 17 of the expander to ground (address selection)
|
||||||
|
// Connect pin #9 of the expander to 5V (power)
|
||||||
|
// Connect pin #10 of the expander to ground (common ground)
|
||||||
|
// Connect pin #18 through a ~10kohm resistor to 5V (reset pin, active low)
|
||||||
|
|
||||||
|
// Input #0 is on pin 21 so connect a button or switch from there to ground
|
||||||
|
|
||||||
|
Adafruit_MCP23017 mcp;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
mcp.begin(); // use default address 0
|
||||||
|
|
||||||
|
mcp.pinMode(0, INPUT);
|
||||||
|
mcp.pullUp(0, HIGH); // turn on a 100K pullup internally
|
||||||
|
|
||||||
|
pinMode(13, OUTPUT); // use the p13 LED as debugging
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
// The LED will 'echo' the button
|
||||||
|
digitalWrite(13, mcp.digitalRead(0));
|
||||||
|
}
|
@ -0,0 +1,123 @@
|
|||||||
|
// Install the LowPower library for optional sleeping support.
|
||||||
|
// See loop() function comments for details on usage.
|
||||||
|
//#include <LowPower.h>
|
||||||
|
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <Adafruit_MCP23017.h>
|
||||||
|
|
||||||
|
Adafruit_MCP23017 mcp;
|
||||||
|
|
||||||
|
byte ledPin=13;
|
||||||
|
|
||||||
|
// Interrupts from the MCP will be handled by this PIN
|
||||||
|
byte arduinoIntPin=3;
|
||||||
|
|
||||||
|
// ... and this interrupt vector
|
||||||
|
byte arduinoInterrupt=1;
|
||||||
|
|
||||||
|
volatile boolean awakenByInterrupt = false;
|
||||||
|
|
||||||
|
// Two pins at the MCP (Ports A/B where some buttons have been setup.)
|
||||||
|
// Buttons connect the pin to grond, and pins are pulled up.
|
||||||
|
byte mcpPinA=7;
|
||||||
|
byte mcpPinB=15;
|
||||||
|
|
||||||
|
void setup(){
|
||||||
|
|
||||||
|
Serial.begin(9600);
|
||||||
|
Serial.println("MCP23007 Interrupt Test");
|
||||||
|
|
||||||
|
pinMode(arduinoIntPin,INPUT);
|
||||||
|
|
||||||
|
mcp.begin(); // use default address 0
|
||||||
|
|
||||||
|
// We mirror INTA and INTB, so that only one line is required between MCP and Arduino for int reporting
|
||||||
|
// The INTA/B will not be Floating
|
||||||
|
// INTs will be signaled with a LOW
|
||||||
|
mcp.setupInterrupts(true,false,LOW);
|
||||||
|
|
||||||
|
// configuration for a button on port A
|
||||||
|
// interrupt will triger when the pin is taken to ground by a pushbutton
|
||||||
|
mcp.pinMode(mcpPinA, INPUT);
|
||||||
|
mcp.pullUp(mcpPinA, HIGH); // turn on a 100K pullup internally
|
||||||
|
mcp.setupInterruptPin(mcpPinA,FALLING);
|
||||||
|
|
||||||
|
// similar, but on port B.
|
||||||
|
mcp.pinMode(mcpPinB, INPUT);
|
||||||
|
mcp.pullUp(mcpPinB, HIGH); // turn on a 100K pullup internall
|
||||||
|
mcp.setupInterruptPin(mcpPinB,FALLING);
|
||||||
|
|
||||||
|
// We will setup a pin for flashing from the int routine
|
||||||
|
pinMode(ledPin, OUTPUT); // use the p13 LED as debugging
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// The int handler will just signal that the int has happen
|
||||||
|
// we will do the work from the main loop.
|
||||||
|
void intCallBack(){
|
||||||
|
awakenByInterrupt=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void handleInterrupt(){
|
||||||
|
|
||||||
|
// Get more information from the MCP from the INT
|
||||||
|
uint8_t pin=mcp.getLastInterruptPin();
|
||||||
|
uint8_t val=mcp.getLastInterruptPinValue();
|
||||||
|
|
||||||
|
// We will flash the led 1 or 2 times depending on the PIN that triggered the Interrupt
|
||||||
|
// 3 and 4 flases are supposed to be impossible conditions... just for debugging.
|
||||||
|
uint8_t flashes=4;
|
||||||
|
if(pin==mcpPinA) flashes=1;
|
||||||
|
if(pin==mcpPinB) flashes=2;
|
||||||
|
if(val!=LOW) flashes=3;
|
||||||
|
|
||||||
|
// simulate some output associated to this
|
||||||
|
for(int i=0;i<flashes;i++){
|
||||||
|
delay(100);
|
||||||
|
digitalWrite(ledPin,HIGH);
|
||||||
|
delay(100);
|
||||||
|
digitalWrite(ledPin,LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
// we have to wait for the interrupt condition to finish
|
||||||
|
// otherwise we might go to sleep with an ongoing condition and never wake up again.
|
||||||
|
// as, an action is required to clear the INT flag, and allow it to trigger again.
|
||||||
|
// see datasheet for datails.
|
||||||
|
while( ! (mcp.digitalRead(mcpPinB) && mcp.digitalRead(mcpPinA) ));
|
||||||
|
// and clean queued INT signal
|
||||||
|
cleanInterrupts();
|
||||||
|
}
|
||||||
|
|
||||||
|
// handy for interrupts triggered by buttons
|
||||||
|
// normally signal a few due to bouncing issues
|
||||||
|
void cleanInterrupts(){
|
||||||
|
EIFR=0x01;
|
||||||
|
awakenByInterrupt=false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* main routine: sleep the arduino, and wake up on Interrups.
|
||||||
|
* the LowPower library, or similar is required for sleeping, but sleep is simulated here.
|
||||||
|
* It is actually posible to get the MCP to draw only 1uA while in standby as the datasheet claims,
|
||||||
|
* however there is no stadndby mode. Its all down to seting up each pin in a way that current does not flow.
|
||||||
|
* and you can wait for interrupts while waiting.
|
||||||
|
*/
|
||||||
|
void loop(){
|
||||||
|
|
||||||
|
// enable interrupts before going to sleep/wait
|
||||||
|
// And we setup a callback for the arduino INT handler.
|
||||||
|
attachInterrupt(arduinoInterrupt,intCallBack,FALLING);
|
||||||
|
|
||||||
|
// Simulate a deep sleep
|
||||||
|
while(!awakenByInterrupt);
|
||||||
|
// Or sleep the arduino, this lib is great, if you have it.
|
||||||
|
//LowPower.powerDown(SLEEP_1S, ADC_OFF, BOD_OFF);
|
||||||
|
|
||||||
|
// disable interrupts while handling them.
|
||||||
|
detachInterrupt(arduinoInterrupt);
|
||||||
|
|
||||||
|
if(awakenByInterrupt) handleInterrupt();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
|||||||
|
#include <Wire.h>
|
||||||
|
#include "Adafruit_MCP23017.h"
|
||||||
|
|
||||||
|
// Basic pin reading and pullup test for the MCP23017 I/O expander
|
||||||
|
// public domain!
|
||||||
|
|
||||||
|
// Connect pin #12 of the expander to Analog 5 (i2c clock)
|
||||||
|
// Connect pin #13 of the expander to Analog 4 (i2c data)
|
||||||
|
// Connect pins #15, 16 and 17 of the expander to ground (address selection)
|
||||||
|
// Connect pin #9 of the expander to 5V (power)
|
||||||
|
// Connect pin #10 of the expander to ground (common ground)
|
||||||
|
// Connect pin #18 through a ~10kohm resistor to 5V (reset pin, active low)
|
||||||
|
|
||||||
|
// Output #0 is on pin 21 so connect an LED or whatever from that to ground
|
||||||
|
|
||||||
|
Adafruit_MCP23017 mcp;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
mcp.begin(); // use default address 0
|
||||||
|
|
||||||
|
mcp.pinMode(0, OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// flip the pin #0 up and down
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
delay(100);
|
||||||
|
|
||||||
|
mcp.digitalWrite(0, HIGH);
|
||||||
|
|
||||||
|
delay(100);
|
||||||
|
|
||||||
|
mcp.digitalWrite(0, LOW);
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
#######################################
|
||||||
|
# Syntax Coloring Map for MCP23017
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Datatypes (KEYWORD1)
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
MCP23017 KEYWORD1
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Methods and Functions (KEYWORD2)
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
pullUp KEYWORD2
|
||||||
|
writeGPIOAB KEYWORD2
|
||||||
|
readGPIOAB KEYWORD2
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Constants (LITERAL1)
|
||||||
|
#######################################
|
@ -0,0 +1,9 @@
|
|||||||
|
name=Adafruit MCP23017 Arduino Library
|
||||||
|
version=1.0.3
|
||||||
|
author=Adafruit
|
||||||
|
maintainer=Adafruit <info@adafruit.com>
|
||||||
|
sentence=Library for the MCP23017 I2C Port Expander
|
||||||
|
paragraph=Library for the MCP23017 I2C Port Expander
|
||||||
|
category=Signal Input/Output
|
||||||
|
url=https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library
|
||||||
|
architectures=*
|
@ -0,0 +1,26 @@
|
|||||||
|
Software License Agreement (BSD License)
|
||||||
|
|
||||||
|
Copyright (c) 2012, Adafruit Industries
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
3. Neither the name of the copyright holders nor the
|
||||||
|
names of its contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||||
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
BIN
firmware/lib/CheapStepper-master.zip
Normal file
BIN
firmware/lib/CheapStepper-master.zip
Normal file
Binary file not shown.
297
firmware/lib/CheapStepper-master/CheapStepper.cpp
Normal file
297
firmware/lib/CheapStepper-master/CheapStepper.cpp
Normal file
@ -0,0 +1,297 @@
|
|||||||
|
/* CheapStepper.cpp -
|
||||||
|
v0.2
|
||||||
|
Library for the 28BYJ-48 stepper motor, using ULN2003 driver board
|
||||||
|
https://arduino-info.wikispaces.com/SmallSteppers
|
||||||
|
|
||||||
|
Library written by Tyler Henry, 6/2016
|
||||||
|
|
||||||
|
uses 8-step sequence: A-AB-B-BC-C-CD-D-DA
|
||||||
|
|
||||||
|
motor has gear ratio of either:
|
||||||
|
64:1 (per manufacturer specs)
|
||||||
|
or
|
||||||
|
63.68395:1 measured
|
||||||
|
(see: http://forum.arduino.cc/index.php?topic=71964.15)
|
||||||
|
* 64 steps per internal motor rev
|
||||||
|
=
|
||||||
|
|
||||||
|
4096 total mini-steps / revolution
|
||||||
|
or ~4076 (4075.7728) depending on exact gear ratio
|
||||||
|
|
||||||
|
assumes 5v power source for rpm calc
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include "CheapStepper.h"
|
||||||
|
|
||||||
|
|
||||||
|
CheapStepper::CheapStepper () {
|
||||||
|
for (int pin=0; pin<4; pin++){
|
||||||
|
pinMode(pins[pin], OUTPUT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CheapStepper::CheapStepper (int in1, int in2, int in3, int in4) {
|
||||||
|
|
||||||
|
pins[0] = in1;
|
||||||
|
pins[1] = in2;
|
||||||
|
pins[2] = in3;
|
||||||
|
pins[3] = in4;
|
||||||
|
CheapStepper();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::setRpm (int rpm){
|
||||||
|
|
||||||
|
delay = calcDelay(rpm);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::move (bool clockwise, int numSteps){
|
||||||
|
|
||||||
|
for (int n=0; n<numSteps; n++){
|
||||||
|
step(clockwise);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::moveTo (bool clockwise, int toStep){
|
||||||
|
|
||||||
|
// keep to 0-(totalSteps-1) range
|
||||||
|
if (toStep >= totalSteps) toStep %= totalSteps;
|
||||||
|
else if (toStep < 0) {
|
||||||
|
toStep %= totalSteps; // returns negative if toStep not multiple of totalSteps
|
||||||
|
if (toStep < 0) toStep += totalSteps; // shift into 0-(totalSteps-1) range
|
||||||
|
}
|
||||||
|
while (stepN != toStep){
|
||||||
|
step(clockwise);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::moveDegrees (bool clockwise, int deg){
|
||||||
|
|
||||||
|
int nSteps = (unsigned long) deg * totalSteps / 360;
|
||||||
|
move(clockwise, nSteps);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::moveToDegree (bool clockwise, int deg){
|
||||||
|
|
||||||
|
// keep to 0-359 range
|
||||||
|
if (deg >= 360) deg %= 360;
|
||||||
|
else if (deg < 0) {
|
||||||
|
deg %= 360; // returns negative if deg not multiple of 360
|
||||||
|
if (deg < 0) deg += 360; // shift into 0-359 range
|
||||||
|
}
|
||||||
|
|
||||||
|
int toStep = deg * totalSteps / 360;
|
||||||
|
moveTo (clockwise, toStep);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// NON-BLOCKING MOVES
|
||||||
|
|
||||||
|
void CheapStepper::newMove (bool clockwise, int numSteps){
|
||||||
|
|
||||||
|
// numSteps sign ignored
|
||||||
|
// stepsLeft signed positive if clockwise, neg if ccw
|
||||||
|
|
||||||
|
if (clockwise) stepsLeft = abs(numSteps);
|
||||||
|
else stepsLeft = -1 * abs(numSteps);
|
||||||
|
|
||||||
|
lastStepTime = micros();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::newMoveTo (bool clockwise, int toStep){
|
||||||
|
|
||||||
|
// keep toStep in 0-(totalSteps-1) range
|
||||||
|
if (toStep >= totalSteps) toStep %= totalSteps;
|
||||||
|
else if (toStep < 0) {
|
||||||
|
toStep %= totalSteps; // returns negative if toStep not multiple of totalSteps
|
||||||
|
if (toStep < 0) toStep += totalSteps; // shift into 0-(totalSteps-1) range
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clockwise) stepsLeft = abs(toStep - stepN);
|
||||||
|
// clockwise: simple diff, always pos
|
||||||
|
else stepsLeft = -1*(totalSteps - abs(toStep - stepN));
|
||||||
|
// counter-clockwise: totalSteps - diff, made neg
|
||||||
|
|
||||||
|
lastStepTime = micros();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::newMoveDegrees (bool clockwise, int deg){
|
||||||
|
|
||||||
|
int nSteps = (unsigned long) deg * totalSteps / 360;
|
||||||
|
newMove (clockwise, nSteps);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::newMoveToDegree (bool clockwise, int deg){
|
||||||
|
|
||||||
|
// keep to 0-359 range
|
||||||
|
if (deg >= 360) deg %= 360;
|
||||||
|
else if (deg < 0) {
|
||||||
|
deg %= 360; // returns negative if deg not multiple of 360
|
||||||
|
if (deg < 0) deg += 360; // shift into 0-359 range
|
||||||
|
}
|
||||||
|
|
||||||
|
int toStep = deg * totalSteps / 360;
|
||||||
|
newMoveTo (clockwise, toStep);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::run(){
|
||||||
|
|
||||||
|
if (micros() - lastStepTime >= delay) { // if time for step
|
||||||
|
if (stepsLeft > 0) { // clockwise
|
||||||
|
stepCW();
|
||||||
|
stepsLeft--;
|
||||||
|
} else if (stepsLeft < 0){ // counter-clockwise
|
||||||
|
stepCCW();
|
||||||
|
stepsLeft++;
|
||||||
|
}
|
||||||
|
|
||||||
|
lastStepTime = micros();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::stop(){
|
||||||
|
|
||||||
|
stepsLeft = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CheapStepper::step(bool clockwise){
|
||||||
|
|
||||||
|
if (clockwise) seqCW();
|
||||||
|
else seqCCW();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/////////////
|
||||||
|
// PRIVATE //
|
||||||
|
/////////////
|
||||||
|
|
||||||
|
int CheapStepper::calcDelay (int rpm){
|
||||||
|
|
||||||
|
if (rpm < 6) return delay; // will overheat, no change
|
||||||
|
else if (rpm >= 24) return 600; // highest speed
|
||||||
|
|
||||||
|
unsigned long d = 60000000 / (totalSteps* (unsigned long) rpm);
|
||||||
|
// in range: 600-1465 microseconds (24-1 rpm)
|
||||||
|
return (int) d;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int CheapStepper::calcRpm (int _delay){
|
||||||
|
|
||||||
|
unsigned long rpm = 60000000 / (unsigned long) _delay / totalSteps;
|
||||||
|
return (int) rpm;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::seqCW (){
|
||||||
|
seqN++;
|
||||||
|
if (seqN > 7) seqN = 0; // roll over to A seq
|
||||||
|
seq(seqN);
|
||||||
|
|
||||||
|
stepN++; // track miniSteps
|
||||||
|
if (stepN >= totalSteps){
|
||||||
|
stepN -=totalSteps; // keep stepN within 0-(totalSteps-1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::seqCCW (){
|
||||||
|
seqN--;
|
||||||
|
if (seqN < 0) seqN = 7; // roll over to DA seq
|
||||||
|
seq(seqN);
|
||||||
|
|
||||||
|
stepN--; // track miniSteps
|
||||||
|
if (stepN < 0){
|
||||||
|
stepN +=totalSteps; // keep stepN within 0-(totalSteps-1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheapStepper::seq (int seqNum){
|
||||||
|
|
||||||
|
int pattern[4];
|
||||||
|
// A,B,C,D HIGH/LOW pattern to write to driver board
|
||||||
|
|
||||||
|
switch(seqNum){
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
pattern[0] = 1;
|
||||||
|
pattern[1] = 0;
|
||||||
|
pattern[2] = 0;
|
||||||
|
pattern[3] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
pattern[0] = 1;
|
||||||
|
pattern[1] = 1;
|
||||||
|
pattern[2] = 0;
|
||||||
|
pattern[3] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
pattern[0] = 0;
|
||||||
|
pattern[1] = 1;
|
||||||
|
pattern[2] = 0;
|
||||||
|
pattern[3] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
pattern[0] = 0;
|
||||||
|
pattern[1] = 1;
|
||||||
|
pattern[2] = 1;
|
||||||
|
pattern[3] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
pattern[0] = 0;
|
||||||
|
pattern[1] = 0;
|
||||||
|
pattern[2] = 1;
|
||||||
|
pattern[3] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 5:
|
||||||
|
{
|
||||||
|
pattern[0] = 0;
|
||||||
|
pattern[1] = 0;
|
||||||
|
pattern[2] = 1;
|
||||||
|
pattern[3] = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 6:
|
||||||
|
{
|
||||||
|
pattern[0] = 0;
|
||||||
|
pattern[1] = 0;
|
||||||
|
pattern[2] = 0;
|
||||||
|
pattern[3] = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 7:
|
||||||
|
{
|
||||||
|
pattern[0] = 1;
|
||||||
|
pattern[1] = 0;
|
||||||
|
pattern[2] = 0;
|
||||||
|
pattern[3] = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
pattern[0] = 0;
|
||||||
|
pattern[1] = 0;
|
||||||
|
pattern[2] = 0;
|
||||||
|
pattern[3] = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// write pattern to pins
|
||||||
|
for (int p=0; p<4; p++){
|
||||||
|
digitalWrite(pins[p], pattern[p]);
|
||||||
|
}
|
||||||
|
delayMicroseconds(delay);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
128
firmware/lib/CheapStepper-master/CheapStepper.h
Normal file
128
firmware/lib/CheapStepper-master/CheapStepper.h
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
/* CheapStepper.h -
|
||||||
|
v0.2
|
||||||
|
Library for the 28BYJ-48 stepper motor, using ULN2003 driver board
|
||||||
|
https://arduino-info.wikispaces.com/SmallSteppers
|
||||||
|
|
||||||
|
Library written by Tyler Henry, 6/2016
|
||||||
|
|
||||||
|
uses 8-step sequence: A-AB-B-BC-C-CD-D-DA
|
||||||
|
|
||||||
|
motor has gear ratio of either:
|
||||||
|
64:1 (per manufacturer specs)
|
||||||
|
or
|
||||||
|
63.68395:1 measured
|
||||||
|
(see: http://forum.arduino.cc/index.php?topic=71964.15)
|
||||||
|
* 64 steps per internal motor rev
|
||||||
|
=
|
||||||
|
|
||||||
|
4096 total mini-steps / revolution
|
||||||
|
or ~4076 (4075.7728) depending on exact gear ratio
|
||||||
|
|
||||||
|
assumes 5v power source for rpm calc
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CHEAPSTEPPER_H
|
||||||
|
#define CHEAPSTEPPER_H
|
||||||
|
|
||||||
|
#include "Arduino.h"
|
||||||
|
|
||||||
|
class CheapStepper
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
CheapStepper();
|
||||||
|
CheapStepper (int in1, int in2, int in3, int in4);
|
||||||
|
|
||||||
|
void setRpm (int rpm); // sets speed (10-24 rpm, hi-low torque)
|
||||||
|
// <6 rpm blocked in code, may overheat
|
||||||
|
// 23-24rpm may skip
|
||||||
|
|
||||||
|
void set4076StepMode() { totalSteps = 4076; }
|
||||||
|
void setTotalSteps (int numSteps) { totalSteps = numSteps; }
|
||||||
|
// allows custom # of steps (usually 4076)
|
||||||
|
|
||||||
|
// blocking! (pauses arduino until move is done)
|
||||||
|
void move (bool clockwise, int numSteps); // 4096 steps = 1 revolution
|
||||||
|
void moveTo (bool clockwise, int toStep); // move to specific step position
|
||||||
|
void moveDegrees (bool clockwise, int deg);
|
||||||
|
void moveToDegree (bool clockwise, int deg);
|
||||||
|
|
||||||
|
void moveCW (int numSteps) { move (true, numSteps); }
|
||||||
|
void moveCCW (int numSteps) { move (false, numSteps); }
|
||||||
|
void moveToCW (int toStep) { moveTo (true, toStep); }
|
||||||
|
void moveToCCW (int toStep) { moveTo (false, toStep); }
|
||||||
|
void moveDegreesCW (int deg) { moveDegrees (true, deg); }
|
||||||
|
void moveDegreesCCW (int deg) { moveDegrees (false, deg); }
|
||||||
|
void moveToDegreeCW (int deg) { moveToDegree (true, deg); }
|
||||||
|
void moveToDegreeCCW (int deg) { moveToDegree (false, deg); }
|
||||||
|
|
||||||
|
|
||||||
|
// non-blocking versions of move()
|
||||||
|
// call run() in loop to keep moving
|
||||||
|
|
||||||
|
void newMove (bool clockwise, int numSteps);
|
||||||
|
void newMoveTo (bool clockwise, int toStep);
|
||||||
|
void newMoveDegrees (bool clockwise, int deg);
|
||||||
|
void newMoveToDegree (bool clockwise, int deg);
|
||||||
|
|
||||||
|
void run();
|
||||||
|
void stop();
|
||||||
|
|
||||||
|
void newMoveCW(int numSteps) { newMove(true, numSteps); }
|
||||||
|
void newMoveCCW(int numSteps) { newMove(false, numSteps); }
|
||||||
|
void newMoveToCW(int toStep) { newMoveTo(true, toStep); }
|
||||||
|
void newMoveToCCW(int toStep) { newMoveTo(false, toStep); }
|
||||||
|
void newMoveDegreesCW(int deg) { newMoveDegrees(true, deg); }
|
||||||
|
void newMoveDegreesCCW(int deg) { newMoveDegrees(false, deg); }
|
||||||
|
void newMoveToDegreeCW(int deg) { newMoveToDegree(true, deg); }
|
||||||
|
void newMoveToDegreeCCW(int deg) { newMoveToDegree(false, deg); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void step (bool clockwise);
|
||||||
|
// move 1 step clockwise or counter-clockwise
|
||||||
|
|
||||||
|
void stepCW () { step (true); } // move 1 step clockwise
|
||||||
|
void stepCCW () { step (false); } // move 1 step counter-clockwise
|
||||||
|
|
||||||
|
int getStep() { return stepN; } // returns current miniStep position
|
||||||
|
int getDelay() { return delay; } // returns current delay (microseconds)
|
||||||
|
int getRpm() { return calcRpm(); } // returns current rpm
|
||||||
|
int getPin(int p) {
|
||||||
|
if (p<4) return pins[p]; // returns pin #
|
||||||
|
return 0; // default 0
|
||||||
|
}
|
||||||
|
int getStepsLeft() { return stepsLeft; } // returns steps left in current move
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
int calcDelay(int rpm); // calcs microsecond step delay for given rpm
|
||||||
|
int calcRpm(int _delay); // calcs rpm for given delay in microseconds
|
||||||
|
int calcRpm(){
|
||||||
|
return calcRpm(delay); // calcs rpm from current delay
|
||||||
|
}
|
||||||
|
|
||||||
|
void seqCW();
|
||||||
|
void seqCCW();
|
||||||
|
void seq(int seqNum); // send specific sequence num to driver
|
||||||
|
|
||||||
|
int pins[4] = {8,9,10,11}; // in1, in2, in3, in4
|
||||||
|
|
||||||
|
int stepN = 0; // keeps track of step position
|
||||||
|
// 0-4095 (4096 mini-steps / revolution) or maybe 4076...
|
||||||
|
int totalSteps = 4096;
|
||||||
|
|
||||||
|
int delay = 900; // microsecond delay between steps
|
||||||
|
// 900 ~= 16.25 rpm
|
||||||
|
// low speed (high torque) = 1465 ~= 1 rpm
|
||||||
|
// high speed (low torque) = 600 ~= 24 rpm
|
||||||
|
|
||||||
|
int seqN = -1; // keeps track of sequence number
|
||||||
|
|
||||||
|
// variables for non-blocking moves:
|
||||||
|
unsigned long lastStepTime; // time in microseconds that last step happened
|
||||||
|
int stepsLeft = 0; // steps left to move, neg for counter-clockwise
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
78
firmware/lib/CheapStepper-master/README.md
Normal file
78
firmware/lib/CheapStepper-master/README.md
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
# CheapStepper v0.2 #
|
||||||
|
## An Arduino library for the 28BYJ-48 stepper motor using ULN2003 driver board ##
|
||||||
|
|
||||||
|
#### created by Tyler Henry, 6/2016 ####
|
||||||
|
|
||||||
|
|
||||||
|
You can read some more info on the cheap yet worthy 28BYJ-48 stepper motor [here](https://arduino-info.wikispaces.com/SmallSteppers).
|
||||||
|
|
||||||
|
## Wiring example
|
||||||
|
|
||||||
|
<img src="https://github.com/tyhenry/CheapStepper/blob/master/extras/connections.png?raw=true" width="400">
|
||||||
|
|
||||||
|
## Library Info
|
||||||
|
|
||||||
|
### Half-stepping
|
||||||
|
CheapStepper uses an 8 mini-step sequence to perform all moves
|
||||||
|
([a.k.a half-stepping](https://www.youtube.com/watch?v=B86nqDRskVU&feature=youtu.be&t=11m0s)): A-AB-B-BC-C-CD-D-DA
|
||||||
|
|
||||||
|
### Gear Ratio
|
||||||
|
Depending on whom you ask, the 28BYJ-48 motor has an internal gear ratio of either:
|
||||||
|
|
||||||
|
- 64:1 (per manufacturer specs) or
|
||||||
|
- 63.68395:1 (measured... see this [Arduino Forum topic](http://forum.arduino.cc/index.php?topic=71964.15) for more info)
|
||||||
|
|
||||||
|
### Total Steps
|
||||||
|
|
||||||
|
64:1 gear ratio **\*** 64 steps (1 step = 8 mini-steps) per internal motor revolution =
|
||||||
|
4096 total mini-steps / revolution
|
||||||
|
or ~4076 (4075.7728) if the gear ratio is 63.68395:1
|
||||||
|
|
||||||
|
CheapStepper library defaults to 4096 mini-steps but you can call:
|
||||||
|
`CheapStepper::set4076StepMode()` to use 4076 steps
|
||||||
|
or `CheapStepper::setTotalSteps(int numSteps)` to use a custom amount
|
||||||
|
|
||||||
|
|
||||||
|
### Power
|
||||||
|
CheapStepper assumes a 5v power source for RPM calculations.
|
||||||
|
It's best to use an external power supply like [this](https://www.adafruit.com/products/276), wired directly to the ULN2003 driver board, rather than draw from the Arduino's onboard power, which may have insufficient amperage (>100mA needed).
|
||||||
|
|
||||||
|
----
|
||||||
|
## Blocking Moves
|
||||||
|
_The Arduino sketch "pauses" during move()_
|
||||||
|
|
||||||
|
- move (boolean clockwise, int numSteps);
|
||||||
|
- moveTo (boolean clockwise, int toStep);
|
||||||
|
- moveDegrees (boolean clockwise, int degrees);
|
||||||
|
- moveToDegree (boolean clockwise, int toDegree);
|
||||||
|
|
||||||
|
----
|
||||||
|
## Non-blocking Moves
|
||||||
|
_The Arduino sketch will continue running during the move.
|
||||||
|
You must call run() on your stepper during loop()_
|
||||||
|
|
||||||
|
- newMove (boolean clockwise, int numSteps);
|
||||||
|
- newMoveTo (boolean clockwise, int toStep);
|
||||||
|
- newMoveDegrees (boolean clockwise, int degrees);
|
||||||
|
- newMoveToDegree (boolean clockwise, int toDegree);
|
||||||
|
|
||||||
|
### Note
|
||||||
|
* must call run() during loop to continue move
|
||||||
|
* call stop() to cancel/end move
|
||||||
|
|
||||||
|
----
|
||||||
|
### Move a Single Mini-Step<br/>(1/8 of 8 Step Sequence)
|
||||||
|
|
||||||
|
- step (boolean clockwise);
|
||||||
|
- or stepCW(); or stepCCW();
|
||||||
|
|
||||||
|
----
|
||||||
|
#### All move functions have ...CW() or ...CCW() variants:
|
||||||
|
e.g.
|
||||||
|
|
||||||
|
- move 8 steps clockwise:
|
||||||
|
`move (true, 8);` is the same as
|
||||||
|
`moveCW (8);`
|
||||||
|
- create new move of 90 degrees counter-clockwise
|
||||||
|
`newMoveDegrees (false, 90);` is the same as
|
||||||
|
`newMoveDegreesCCW (90);`
|
@ -0,0 +1,126 @@
|
|||||||
|
/*
|
||||||
|
* cheapStepper_move.ino
|
||||||
|
* ///////////////////////////////////////////
|
||||||
|
* using CheapStepper Arduino library v.0.2.0
|
||||||
|
* created by Tyler Henry, 7/2016
|
||||||
|
* ///////////////////////////////////////////
|
||||||
|
*
|
||||||
|
* This sketch illustrates the library's
|
||||||
|
* "blocking" move functions -
|
||||||
|
* i.e. the move will "pause" the arduino sketch
|
||||||
|
* -- for non-blocking moves, see cheapStepper_newMoveTo.ino example
|
||||||
|
*
|
||||||
|
* This sketch also shows how to set the RPM
|
||||||
|
* and shows a few different types of move functions
|
||||||
|
* - by steps or by degrees.
|
||||||
|
*
|
||||||
|
* Blocking moves are useful if you need a specific RPM
|
||||||
|
* but don't need your arduino to perform other functions
|
||||||
|
* while the stepper is moving.
|
||||||
|
*
|
||||||
|
* //////////////////////////////////////////////////////
|
||||||
|
*/
|
||||||
|
|
||||||
|
// first, include the library :)
|
||||||
|
|
||||||
|
#include <CheapStepper.h>
|
||||||
|
|
||||||
|
// next, declare the stepper
|
||||||
|
// and connect pins 8,9,10,11 to IN1,IN2,IN3,IN4 on ULN2003 board
|
||||||
|
|
||||||
|
CheapStepper stepper (8,9,10,11);
|
||||||
|
|
||||||
|
// let's create a boolean variable to save the direction of our rotation
|
||||||
|
|
||||||
|
boolean moveClockwise = true;
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
|
||||||
|
// let's set a custom speed of 20rpm (the default is ~16.25rpm)
|
||||||
|
|
||||||
|
stepper.setRpm(20);
|
||||||
|
/* Note: CheapStepper library assumes you are powering your 28BYJ-48 stepper
|
||||||
|
* using an external 5V power supply (>100mA) for RPM calculations
|
||||||
|
* -- don't try to power the stepper directly from the Arduino
|
||||||
|
*
|
||||||
|
* accepted RPM range: 6RPM (may overheat) - 24RPM (may skip)
|
||||||
|
* ideal range: 10RPM (safe, high torque) - 22RPM (fast, low torque)
|
||||||
|
*/
|
||||||
|
|
||||||
|
// now let's set up a serial connection and print some stepper info to the console
|
||||||
|
|
||||||
|
Serial.begin(9600); Serial.println();
|
||||||
|
Serial.print(stepper.getRpm()); // get the RPM of the stepper
|
||||||
|
Serial.print(" rpm = delay of ");
|
||||||
|
Serial.print(stepper.getDelay()); // get delay between steps for set RPM
|
||||||
|
Serial.print(" microseconds between steps");
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
// stepper.setTotalSteps(4076);
|
||||||
|
/* you can uncomment the above line if you think your motor
|
||||||
|
* is geared 63.68395:1 (measured) rather than 64:1 (advertised)
|
||||||
|
* which would make the total steps 4076 (rather than default 4096)
|
||||||
|
* for more info see: http://forum.arduino.cc/index.php?topic=71964.15
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
// let's do a clockwise move first
|
||||||
|
|
||||||
|
moveClockwise = true;
|
||||||
|
|
||||||
|
// let's move the stepper clockwise to position 2048
|
||||||
|
// which is 180 degrees, a half-turn (if using default of 4096 total steps)
|
||||||
|
|
||||||
|
stepper.moveTo (moveClockwise, 2048);
|
||||||
|
|
||||||
|
// now let's print the stepper position to the console
|
||||||
|
|
||||||
|
Serial.print("step position: ");
|
||||||
|
Serial.print(stepper.getStep()); // get the current step position
|
||||||
|
Serial.print(" / 4096");
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
// now let's wait one second
|
||||||
|
|
||||||
|
delay(1000); // wait a sec
|
||||||
|
|
||||||
|
// and now let's move another 90 degrees (a quarter-turn) clockwise
|
||||||
|
|
||||||
|
stepper.moveDegrees (moveClockwise, 90);
|
||||||
|
// stepper.moveDegreesCW (90); <--- another way to do a clockwise 90 degree turn
|
||||||
|
|
||||||
|
// let's print the stepper position to the console again
|
||||||
|
|
||||||
|
Serial.print("step position: ");
|
||||||
|
Serial.print(stepper.getStep());
|
||||||
|
Serial.print(" / 4096");
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
// and wait another second
|
||||||
|
|
||||||
|
delay(1000);
|
||||||
|
|
||||||
|
// ok, now let's reverse directions (to counter-clockwise)
|
||||||
|
|
||||||
|
moveClockwise = false;
|
||||||
|
|
||||||
|
// and move back to the start position (0 degree)
|
||||||
|
|
||||||
|
stepper.moveToDegree (moveClockwise, 0);
|
||||||
|
// moveClockwise is now false, so move counter-clockwise back to start
|
||||||
|
|
||||||
|
// let's print the position to the console once again
|
||||||
|
|
||||||
|
Serial.print("step position: ");
|
||||||
|
Serial.print(stepper.getStep());
|
||||||
|
Serial.print(" / 4096");
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
// and wait another second before starting loop() over
|
||||||
|
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,110 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
* cheapStepper_newMoveTo.ino
|
||||||
|
* ///////////////////////////////////////////
|
||||||
|
* using CheapStepper Arduino library v.0.2.0
|
||||||
|
* created by Tyler Henry, 7/2016
|
||||||
|
* ///////////////////////////////////////////
|
||||||
|
*
|
||||||
|
* This sketch illustrates the library's
|
||||||
|
* "non-blocking" move functions -
|
||||||
|
* i.e. you can perform moves with the stepper over time
|
||||||
|
* while still running other code in your loop()
|
||||||
|
*
|
||||||
|
* This can be useful if your Arduino is multi-tasking,
|
||||||
|
* but be careful: if the other code in your loop()
|
||||||
|
* slows down your Arduino, the stepper motor may
|
||||||
|
* slow down or move with a stutter
|
||||||
|
*
|
||||||
|
* //////////////////////////////////////////////////////
|
||||||
|
*/
|
||||||
|
|
||||||
|
// first, include the library :)
|
||||||
|
|
||||||
|
#include <CheapStepper.h>
|
||||||
|
|
||||||
|
// next, declare the stepper
|
||||||
|
// and connect pins 8,9,10,11 to IN1,IN2,IN3,IN4 on ULN2003 board
|
||||||
|
|
||||||
|
CheapStepper stepper (8,9,10,11);
|
||||||
|
|
||||||
|
|
||||||
|
// let's also create a boolean variable to save the direction of our rotation
|
||||||
|
// and a timer variable to keep track of move times
|
||||||
|
|
||||||
|
bool moveClockwise = true;
|
||||||
|
unsigned long moveStartTime = 0; // this will save the time (millis()) when we started each new move
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
|
||||||
|
// let's run the stepper at 12rpm (if using 5V power) - the default is ~16 rpm
|
||||||
|
|
||||||
|
stepper.setRpm(12);
|
||||||
|
|
||||||
|
// let's print out the RPM to make sure the setting worked
|
||||||
|
|
||||||
|
Serial.begin(9600);
|
||||||
|
Serial.print("stepper RPM: "); Serial.print(stepper.getRpm());
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
// and let's print the delay time (in microseconds) between each step
|
||||||
|
// the delay is based on the RPM setting:
|
||||||
|
// it's how long the stepper will wait before each step
|
||||||
|
|
||||||
|
Serial.print("stepper delay (micros): "); Serial.print(stepper.getDelay());
|
||||||
|
Serial.println(); Serial.println();
|
||||||
|
|
||||||
|
// now let's set up our first move...
|
||||||
|
// let's move a half rotation from the start point
|
||||||
|
|
||||||
|
stepper.newMoveTo(moveClockwise, 2048);
|
||||||
|
/* this is the same as:
|
||||||
|
* stepper.newMoveToDegree(clockwise, 180);
|
||||||
|
* because there are 4096 (default) steps in a full rotation
|
||||||
|
*/
|
||||||
|
moveStartTime = millis(); // let's save the time at which we started this move
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
// we need to call run() during loop()
|
||||||
|
// in order to keep the stepper moving
|
||||||
|
// if we are using non-blocking moves
|
||||||
|
|
||||||
|
stepper.run();
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
// now the stepper is moving, //
|
||||||
|
// let's do some other stuff! //
|
||||||
|
////////////////////////////////
|
||||||
|
|
||||||
|
// let's check how many steps are left in the current move:
|
||||||
|
|
||||||
|
int stepsLeft = stepper.getStepsLeft();
|
||||||
|
|
||||||
|
// if the current move is done...
|
||||||
|
|
||||||
|
if (stepsLeft == 0){
|
||||||
|
|
||||||
|
// let's print the position of the stepper to serial
|
||||||
|
|
||||||
|
Serial.print("stepper position: "); Serial.print(stepper.getStep());
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
// and now let's print the time the move took
|
||||||
|
|
||||||
|
unsigned long timeTook = millis() - moveStartTime; // calculate time elapsed since move start
|
||||||
|
Serial.print("move took (ms): "); Serial.print(timeTook);
|
||||||
|
Serial.println(); Serial.println();
|
||||||
|
|
||||||
|
// let's start a new move in the reverse direction
|
||||||
|
|
||||||
|
moveClockwise = !moveClockwise; // reverse direction
|
||||||
|
stepper.newMoveDegrees (moveClockwise, 180); // move 180 degrees from current position
|
||||||
|
moveStartTime = millis(); // reset move start time
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,90 @@
|
|||||||
|
/*
|
||||||
|
* cheapStepper_simple.ino
|
||||||
|
* ///////////////////////////////////////////
|
||||||
|
* using CheapStepper Arduino library v.0.2.0
|
||||||
|
* created by Tyler Henry, 7/2016
|
||||||
|
* ///////////////////////////////////////////
|
||||||
|
*
|
||||||
|
* this sketch illustrates basic step() functionality of the library:
|
||||||
|
* the stepper performs a full rotation, pauses 1 second,
|
||||||
|
* then does a full rotation in the other direction, and so on
|
||||||
|
*
|
||||||
|
* //////////////////////////////////////////////////////
|
||||||
|
*/
|
||||||
|
|
||||||
|
// first, include the library :)
|
||||||
|
|
||||||
|
#include <CheapStepper.h>
|
||||||
|
|
||||||
|
|
||||||
|
CheapStepper stepper;
|
||||||
|
// here we declare our stepper using default pins:
|
||||||
|
// arduino pin <--> pins on ULN2003 board:
|
||||||
|
// 8 <--> IN1
|
||||||
|
// 9 <--> IN2
|
||||||
|
// 10 <--> IN3
|
||||||
|
// 11 <--> IN4
|
||||||
|
|
||||||
|
// let's create a boolean variable to save the direction of our rotation
|
||||||
|
|
||||||
|
boolean moveClockwise = true;
|
||||||
|
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
|
||||||
|
// let's just set up a serial connection and test print to the console
|
||||||
|
|
||||||
|
Serial.begin(9600);
|
||||||
|
Serial.println("Ready to start moving!");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
|
||||||
|
// let's move a full rotation (4096 mini-steps)
|
||||||
|
// we'll go step-by-step using the step() function
|
||||||
|
|
||||||
|
for (int s=0; s<4096; s++){
|
||||||
|
// this will loop 4096 times
|
||||||
|
// 4096 steps = full rotation using default values
|
||||||
|
/* Note:
|
||||||
|
* you could alternatively use 4076 steps...
|
||||||
|
* if you think your 28BYJ-48 stepper's internal gear ratio is 63.68395:1 (measured) rather than 64:1 (advertised)
|
||||||
|
* for more info, see: http://forum.arduino.cc/index.php?topic=71964.15)
|
||||||
|
*/
|
||||||
|
|
||||||
|
// let's move one "step" (of the 4096 per full rotation)
|
||||||
|
|
||||||
|
stepper.step(moveClockwise);
|
||||||
|
/* the direction is based on moveClockwise boolean:
|
||||||
|
* true for clockwise, false for counter-clockwise
|
||||||
|
* -- you could also say stepper.stepCW(); or stepper.stepCCW();
|
||||||
|
*/
|
||||||
|
|
||||||
|
// now let's get the current step position of motor
|
||||||
|
|
||||||
|
int nStep = stepper.getStep();
|
||||||
|
|
||||||
|
// and if it's divisible by 64...
|
||||||
|
|
||||||
|
if (nStep%64==0){
|
||||||
|
|
||||||
|
// let's print the position to the console
|
||||||
|
|
||||||
|
Serial.print("current step position: "); Serial.print(nStep);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// now we've moved 4096 steps
|
||||||
|
|
||||||
|
// let's wait one second
|
||||||
|
|
||||||
|
delay(1000);
|
||||||
|
|
||||||
|
// and switch directions before starting loop() again
|
||||||
|
|
||||||
|
moveClockwise = !moveClockwise;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
BIN
firmware/lib/CheapStepper-master/extras/connections.fzz
Normal file
BIN
firmware/lib/CheapStepper-master/extras/connections.fzz
Normal file
Binary file not shown.
BIN
firmware/lib/CheapStepper-master/extras/connections.png
Normal file
BIN
firmware/lib/CheapStepper-master/extras/connections.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 150 KiB |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,27 @@
|
|||||||
|
28BYJ-49 Stepper Motor.fzpz
|
||||||
|
X113647 Stepper Driver Board.fzpz
|
||||||
|
Fritzing parts from https://github.com/tardate/X113647Stepper
|
||||||
|
|
||||||
|
Copyright (c) 2014 Paul Gallagher
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
56
firmware/lib/CheapStepper-master/keywords.txt
Normal file
56
firmware/lib/CheapStepper-master/keywords.txt
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
#######################################
|
||||||
|
# Syntax Coloring Map For CheapStepper
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Datatypes (KEYWORD1)
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
CheapStepper KEYWORD1
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Methods and Functions (KEYWORD2)
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
setRpm KEYWORD2
|
||||||
|
set4076StepMode KEYWORD2
|
||||||
|
setTotalSteps KEYWORD2
|
||||||
|
move KEYWORD2
|
||||||
|
moveTo KEYWORD2
|
||||||
|
moveDegrees KEYWORD2
|
||||||
|
moveToDegree KEYWORD2
|
||||||
|
moveCW KEYWORD2
|
||||||
|
moveCCW KEYWORD2
|
||||||
|
moveToCW KEYWORD2
|
||||||
|
moveToCCW KEYWORD2
|
||||||
|
moveDegreesCW KEYWORD2
|
||||||
|
moveDegreesCCW KEYWORD2
|
||||||
|
moveToDegreeCW KEYWORD2
|
||||||
|
moveToDegreeCCW KEYWORD2
|
||||||
|
newMove KEYWORD2
|
||||||
|
newMoveTo KEYWORD2
|
||||||
|
newMoveDegrees KEYWORD2
|
||||||
|
newMoveToDegree KEYWORD2
|
||||||
|
run KEYWORD2
|
||||||
|
stop KEYWORD2
|
||||||
|
newMoveCW KEYWORD2
|
||||||
|
newMoveCCW KEYWORD2
|
||||||
|
newMoveToCW KEYWORD2
|
||||||
|
newMoveToCCW KEYWORD2
|
||||||
|
newMoveDegreesCW KEYWORD2
|
||||||
|
newMoveDegreesCCW KEYWORD2
|
||||||
|
newMoveToDegreeCW KEYWORD2
|
||||||
|
newMoveToDegreeCCW KEYWORD2
|
||||||
|
step KEYWORD2
|
||||||
|
stepCW KEYWORD2
|
||||||
|
stepCCW KEYWORD2
|
||||||
|
getStep KEYWORD2
|
||||||
|
getDelay KEYWORD2
|
||||||
|
getRpm KEYWORD2
|
||||||
|
getPin KEYWORD2
|
||||||
|
getStepsLeft KEYWORD2
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Constants (LITERAL1)
|
||||||
|
#######################################
|
||||||
|
|
9
firmware/lib/CheapStepper-master/library.properties
Normal file
9
firmware/lib/CheapStepper-master/library.properties
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
name=CheapStepper
|
||||||
|
version=0.2
|
||||||
|
author=Tyler Henry
|
||||||
|
maintainer=Tyler Henry <tyler@tylerhenry.com>
|
||||||
|
sentence=A library for the cheap but useful 28BYJ-48 5v stepper motor with ULN2003 driver board
|
||||||
|
paragraph=Library uses half-stepping for fine control (default: 4096 mini-steps per rotation), and supports blocking and non-blocking moves. The total number of steps is also adjustable (e.g. 4076 steps for 63.68395:1 measured gear ratio).
|
||||||
|
category=Device Control
|
||||||
|
url=https://github.com/tyhenry/CheapStepper
|
||||||
|
architectures=*
|
674
firmware/lib/CheapStepper-master/license.txt
Normal file
674
firmware/lib/CheapStepper-master/license.txt
Normal file
@ -0,0 +1,674 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
BIN
firmware/lib/Rtc-master.zip
Normal file
BIN
firmware/lib/Rtc-master.zip
Normal file
Binary file not shown.
17
firmware/lib/Rtc-master/.gitattributes
vendored
Normal file
17
firmware/lib/Rtc-master/.gitattributes
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Auto detect text files and perform LF normalization
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
# Custom for Visual Studio
|
||||||
|
*.cs diff=csharp
|
||||||
|
|
||||||
|
# Standard to msysgit
|
||||||
|
*.doc diff=astextplain
|
||||||
|
*.DOC diff=astextplain
|
||||||
|
*.docx diff=astextplain
|
||||||
|
*.DOCX diff=astextplain
|
||||||
|
*.dot diff=astextplain
|
||||||
|
*.DOT diff=astextplain
|
||||||
|
*.pdf diff=astextplain
|
||||||
|
*.PDF diff=astextplain
|
||||||
|
*.rtf diff=astextplain
|
||||||
|
*.RTF diff=astextplain
|
43
firmware/lib/Rtc-master/.gitignore
vendored
Normal file
43
firmware/lib/Rtc-master/.gitignore
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# Windows image file caches
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
Desktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Windows Installer files
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# Windows shortcuts
|
||||||
|
*.lnk
|
||||||
|
|
||||||
|
# =========================
|
||||||
|
# Operating System Files
|
||||||
|
# =========================
|
||||||
|
|
||||||
|
# OSX
|
||||||
|
# =========================
|
||||||
|
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear on external disk
|
||||||
|
.Spotlight-V100
|
||||||
|
.Trashes
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
165
firmware/lib/Rtc-master/COPYING
Normal file
165
firmware/lib/Rtc-master/COPYING
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
This version of the GNU Lesser General Public License incorporates
|
||||||
|
the terms and conditions of version 3 of the GNU General Public
|
||||||
|
License, supplemented by the additional permissions listed below.
|
||||||
|
|
||||||
|
0. Additional Definitions.
|
||||||
|
|
||||||
|
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||||
|
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||||
|
General Public License.
|
||||||
|
|
||||||
|
"The Library" refers to a covered work governed by this License,
|
||||||
|
other than an Application or a Combined Work as defined below.
|
||||||
|
|
||||||
|
An "Application" is any work that makes use of an interface provided
|
||||||
|
by the Library, but which is not otherwise based on the Library.
|
||||||
|
Defining a subclass of a class defined by the Library is deemed a mode
|
||||||
|
of using an interface provided by the Library.
|
||||||
|
|
||||||
|
A "Combined Work" is a work produced by combining or linking an
|
||||||
|
Application with the Library. The particular version of the Library
|
||||||
|
with which the Combined Work was made is also called the "Linked
|
||||||
|
Version".
|
||||||
|
|
||||||
|
The "Minimal Corresponding Source" for a Combined Work means the
|
||||||
|
Corresponding Source for the Combined Work, excluding any source code
|
||||||
|
for portions of the Combined Work that, considered in isolation, are
|
||||||
|
based on the Application, and not on the Linked Version.
|
||||||
|
|
||||||
|
The "Corresponding Application Code" for a Combined Work means the
|
||||||
|
object code and/or source code for the Application, including any data
|
||||||
|
and utility programs needed for reproducing the Combined Work from the
|
||||||
|
Application, but excluding the System Libraries of the Combined Work.
|
||||||
|
|
||||||
|
1. Exception to Section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
You may convey a covered work under sections 3 and 4 of this License
|
||||||
|
without being bound by section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
2. Conveying Modified Versions.
|
||||||
|
|
||||||
|
If you modify a copy of the Library, and, in your modifications, a
|
||||||
|
facility refers to a function or data to be supplied by an Application
|
||||||
|
that uses the facility (other than as an argument passed when the
|
||||||
|
facility is invoked), then you may convey a copy of the modified
|
||||||
|
version:
|
||||||
|
|
||||||
|
a) under this License, provided that you make a good faith effort to
|
||||||
|
ensure that, in the event an Application does not supply the
|
||||||
|
function or data, the facility still operates, and performs
|
||||||
|
whatever part of its purpose remains meaningful, or
|
||||||
|
|
||||||
|
b) under the GNU GPL, with none of the additional permissions of
|
||||||
|
this License applicable to that copy.
|
||||||
|
|
||||||
|
3. Object Code Incorporating Material from Library Header Files.
|
||||||
|
|
||||||
|
The object code form of an Application may incorporate material from
|
||||||
|
a header file that is part of the Library. You may convey such object
|
||||||
|
code under terms of your choice, provided that, if the incorporated
|
||||||
|
material is not limited to numerical parameters, data structure
|
||||||
|
layouts and accessors, or small macros, inline functions and templates
|
||||||
|
(ten or fewer lines in length), you do both of the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the object code that the
|
||||||
|
Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
4. Combined Works.
|
||||||
|
|
||||||
|
You may convey a Combined Work under terms of your choice that,
|
||||||
|
taken together, effectively do not restrict modification of the
|
||||||
|
portions of the Library contained in the Combined Work and reverse
|
||||||
|
engineering for debugging such modifications, if you also do each of
|
||||||
|
the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the Combined Work that
|
||||||
|
the Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
c) For a Combined Work that displays copyright notices during
|
||||||
|
execution, include the copyright notice for the Library among
|
||||||
|
these notices, as well as a reference directing the user to the
|
||||||
|
copies of the GNU GPL and this license document.
|
||||||
|
|
||||||
|
d) Do one of the following:
|
||||||
|
|
||||||
|
0) Convey the Minimal Corresponding Source under the terms of this
|
||||||
|
License, and the Corresponding Application Code in a form
|
||||||
|
suitable for, and under terms that permit, the user to
|
||||||
|
recombine or relink the Application with a modified version of
|
||||||
|
the Linked Version to produce a modified Combined Work, in the
|
||||||
|
manner specified by section 6 of the GNU GPL for conveying
|
||||||
|
Corresponding Source.
|
||||||
|
|
||||||
|
1) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (a) uses at run time
|
||||||
|
a copy of the Library already present on the user's computer
|
||||||
|
system, and (b) will operate properly with a modified version
|
||||||
|
of the Library that is interface-compatible with the Linked
|
||||||
|
Version.
|
||||||
|
|
||||||
|
e) Provide Installation Information, but only if you would otherwise
|
||||||
|
be required to provide such information under section 6 of the
|
||||||
|
GNU GPL, and only to the extent that such information is
|
||||||
|
necessary to install and execute a modified version of the
|
||||||
|
Combined Work produced by recombining or relinking the
|
||||||
|
Application with a modified version of the Linked Version. (If
|
||||||
|
you use option 4d0, the Installation Information must accompany
|
||||||
|
the Minimal Corresponding Source and Corresponding Application
|
||||||
|
Code. If you use option 4d1, you must provide the Installation
|
||||||
|
Information in the manner specified by section 6 of the GNU GPL
|
||||||
|
for conveying Corresponding Source.)
|
||||||
|
|
||||||
|
5. Combined Libraries.
|
||||||
|
|
||||||
|
You may place library facilities that are a work based on the
|
||||||
|
Library side by side in a single library together with other library
|
||||||
|
facilities that are not Applications and are not covered by this
|
||||||
|
License, and convey such a combined library under terms of your
|
||||||
|
choice, if you do both of the following:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work based
|
||||||
|
on the Library, uncombined with any other library facilities,
|
||||||
|
conveyed under the terms of this License.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library that part of it
|
||||||
|
is a work based on the Library, and explaining where to find the
|
||||||
|
accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
6. Revised Versions of the GNU Lesser General Public License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU Lesser General Public License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Library as you received it specifies that a certain numbered version
|
||||||
|
of the GNU Lesser General Public License "or any later version"
|
||||||
|
applies to it, you have the option of following the terms and
|
||||||
|
conditions either of that published version or of any later version
|
||||||
|
published by the Free Software Foundation. If the Library as you
|
||||||
|
received it does not specify a version number of the GNU Lesser
|
||||||
|
General Public License, you may choose any version of the GNU Lesser
|
||||||
|
General Public License ever published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Library as you received it specifies that a proxy can decide
|
||||||
|
whether future versions of the GNU Lesser General Public License shall
|
||||||
|
apply, that proxy's public statement of acceptance of any version is
|
||||||
|
permanent authorization for you to choose that version for the
|
||||||
|
Library.
|
25
firmware/lib/Rtc-master/README.md
Normal file
25
firmware/lib/Rtc-master/README.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Rtc
|
||||||
|
|
||||||
|
Arduino Real Time Clock library.
|
||||||
|
An RTC library with deep device support.
|
||||||
|
|
||||||
|
[![Donate](http://img.shields.io/paypal/donate.png?color=yellow)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6AA97KE54UJR4)
|
||||||
|
|
||||||
|
Now supports esp8266.
|
||||||
|
Now supports SoftwareWire library.
|
||||||
|
|
||||||
|
For quick questions jump on Gitter and ask away.
|
||||||
|
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/Makuna/Rtc?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
||||||
|
|
||||||
|
For bugs, make sure there isn't an active issue and then create one.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
[See Wiki](https://github.com/Makuna/Rtc/wiki)
|
||||||
|
|
||||||
|
## Installing This Library (prefered, you just want to use it)
|
||||||
|
Open the Library Manager and search for "Rtc by Makuna" and install
|
||||||
|
|
||||||
|
## Installing This Library From GitHub (advanced, you want to contribute)
|
||||||
|
Create a directory in your Arduino\Library folder named "Rtc"
|
||||||
|
Clone (Git) this project into that folder.
|
||||||
|
It should now show up in the import list when you restart Arduino IDE.
|
151
firmware/lib/Rtc-master/examples/DS1307_Memory/DS1307_Memory.ino
Normal file
151
firmware/lib/Rtc-master/examples/DS1307_Memory/DS1307_Memory.ino
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
|
||||||
|
// CONNECTIONS:
|
||||||
|
// DS1307 SDA --> SDA
|
||||||
|
// DS1307 SCL --> SCL
|
||||||
|
// DS1307 VCC --> 5v
|
||||||
|
// DS1307 GND --> GND
|
||||||
|
|
||||||
|
#define countof(a) (sizeof(a) / sizeof(a[0]))
|
||||||
|
|
||||||
|
/* for software wire use below
|
||||||
|
#include <SoftwareWire.h> // must be included here so that Arduino library object file references work
|
||||||
|
#include <RtcDS1307.h>
|
||||||
|
|
||||||
|
SoftwareWire myWire(SDA, SCL);
|
||||||
|
RtcDS1307<SoftwareWire> Rtc(myWire);
|
||||||
|
for software wire use above */
|
||||||
|
|
||||||
|
/* for normal hardware wire use below */
|
||||||
|
#include <Wire.h> // must be included here so that Arduino library object file references work
|
||||||
|
#include <RtcDS1307.h>
|
||||||
|
RtcDS1307<TwoWire> Rtc(Wire);
|
||||||
|
/* for normal hardware wire use above */
|
||||||
|
|
||||||
|
|
||||||
|
const char data[] = "what time is it";
|
||||||
|
|
||||||
|
void setup ()
|
||||||
|
{
|
||||||
|
Serial.begin(57600);
|
||||||
|
|
||||||
|
Serial.print("compiled: ");
|
||||||
|
Serial.print(__DATE__);
|
||||||
|
Serial.println(__TIME__);
|
||||||
|
|
||||||
|
//--------RTC SETUP ------------
|
||||||
|
// if you are using ESP-01 then uncomment the line below to reset the pins to
|
||||||
|
// the available pins for SDA, SCL
|
||||||
|
// Wire.begin(0, 2); // due to limited pins, use pin 0 and 2 for SDA, SCL
|
||||||
|
|
||||||
|
Rtc.Begin();
|
||||||
|
|
||||||
|
RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
|
||||||
|
printDateTime(compiled);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
if (!Rtc.IsDateTimeValid())
|
||||||
|
{
|
||||||
|
Serial.println("RTC lost confidence in the DateTime!");
|
||||||
|
Rtc.SetDateTime(compiled);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Rtc.GetIsRunning())
|
||||||
|
{
|
||||||
|
Serial.println("RTC was not actively running, starting now");
|
||||||
|
Rtc.SetIsRunning(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime now = Rtc.GetDateTime();
|
||||||
|
if (now < compiled)
|
||||||
|
{
|
||||||
|
Serial.println("RTC is older than compile time! (Updating DateTime)");
|
||||||
|
Rtc.SetDateTime(compiled);
|
||||||
|
}
|
||||||
|
|
||||||
|
// never assume the Rtc was last configured by you, so
|
||||||
|
// just clear them to your needed state
|
||||||
|
Rtc.SetSquareWavePin(DS1307SquareWaveOut_Low);
|
||||||
|
|
||||||
|
/* comment out on a second run to see that the info is stored long term */
|
||||||
|
// Store something in memory on the RTC
|
||||||
|
Rtc.SetMemory(0, 13);
|
||||||
|
uint8_t written = Rtc.SetMemory(13, (const uint8_t*)data, sizeof(data) - 1); // remove the null terminator strings add
|
||||||
|
Rtc.SetMemory(1, written);
|
||||||
|
/* end of comment out section */
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop ()
|
||||||
|
{
|
||||||
|
if (!Rtc.IsDateTimeValid())
|
||||||
|
{
|
||||||
|
// Common Cuases:
|
||||||
|
// 1) the battery on the device is low or even missing and the power line was disconnected
|
||||||
|
Serial.println("RTC lost confidence in the DateTime!");
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime now = Rtc.GetDateTime();
|
||||||
|
|
||||||
|
printDateTime(now);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
delay(5000);
|
||||||
|
|
||||||
|
// read data
|
||||||
|
|
||||||
|
// get the offset we stored our data from address zero
|
||||||
|
uint8_t address = Rtc.GetMemory(0);
|
||||||
|
if (address != 13)
|
||||||
|
{
|
||||||
|
Serial.println("address didn't match");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// get the size of the data from address 1
|
||||||
|
uint8_t count = Rtc.GetMemory(1);
|
||||||
|
uint8_t buff[20];
|
||||||
|
|
||||||
|
// get our data from the address with the given size
|
||||||
|
uint8_t gotten = Rtc.GetMemory(address, buff, count);
|
||||||
|
|
||||||
|
if (gotten != count ||
|
||||||
|
count != sizeof(data) - 1) // remove the extra null terminator strings add
|
||||||
|
{
|
||||||
|
Serial.print("something didn't match, count = ");
|
||||||
|
Serial.print(count, DEC);
|
||||||
|
Serial.print(", gotten = ");
|
||||||
|
Serial.print(gotten, DEC);
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
Serial.print("data read (");
|
||||||
|
Serial.print(gotten);
|
||||||
|
Serial.print(") = \"");
|
||||||
|
while (gotten > 0)
|
||||||
|
{
|
||||||
|
Serial.print((char)buff[count - gotten]);
|
||||||
|
gotten--;
|
||||||
|
}
|
||||||
|
Serial.println("\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
delay(5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void printDateTime(const RtcDateTime& dt)
|
||||||
|
{
|
||||||
|
char datestring[20];
|
||||||
|
|
||||||
|
snprintf_P(datestring,
|
||||||
|
countof(datestring),
|
||||||
|
PSTR("%02u/%02u/%04u %02u:%02u:%02u"),
|
||||||
|
dt.Month(),
|
||||||
|
dt.Day(),
|
||||||
|
dt.Year(),
|
||||||
|
dt.Hour(),
|
||||||
|
dt.Minute(),
|
||||||
|
dt.Second() );
|
||||||
|
Serial.print(datestring);
|
||||||
|
}
|
||||||
|
|
116
firmware/lib/Rtc-master/examples/DS1307_Simple/DS1307_Simple.ino
Normal file
116
firmware/lib/Rtc-master/examples/DS1307_Simple/DS1307_Simple.ino
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
|
||||||
|
// CONNECTIONS:
|
||||||
|
// DS1307 SDA --> SDA
|
||||||
|
// DS1307 SCL --> SCL
|
||||||
|
// DS1307 VCC --> 5v
|
||||||
|
// DS1307 GND --> GND
|
||||||
|
|
||||||
|
/* for software wire use below
|
||||||
|
#include <SoftwareWire.h> // must be included here so that Arduino library object file references work
|
||||||
|
#include <RtcDS1307.h>
|
||||||
|
|
||||||
|
SoftwareWire myWire(SDA, SCL);
|
||||||
|
RtcDS1307<SoftwareWire> Rtc(myWire);
|
||||||
|
for software wire use above */
|
||||||
|
|
||||||
|
/* for normal hardware wire use below */
|
||||||
|
#include <Wire.h> // must be included here so that Arduino library object file references work
|
||||||
|
#include <RtcDS1307.h>
|
||||||
|
RtcDS1307<TwoWire> Rtc(Wire);
|
||||||
|
/* for normal hardware wire use above */
|
||||||
|
|
||||||
|
void setup ()
|
||||||
|
{
|
||||||
|
Serial.begin(57600);
|
||||||
|
|
||||||
|
Serial.print("compiled: ");
|
||||||
|
Serial.print(__DATE__);
|
||||||
|
Serial.println(__TIME__);
|
||||||
|
|
||||||
|
//--------RTC SETUP ------------
|
||||||
|
// if you are using ESP-01 then uncomment the line below to reset the pins to
|
||||||
|
// the available pins for SDA, SCL
|
||||||
|
// Wire.begin(0, 2); // due to limited pins, use pin 0 and 2 for SDA, SCL
|
||||||
|
|
||||||
|
Rtc.Begin();
|
||||||
|
|
||||||
|
RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
|
||||||
|
printDateTime(compiled);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
if (!Rtc.IsDateTimeValid())
|
||||||
|
{
|
||||||
|
// Common Cuases:
|
||||||
|
// 1) first time you ran and the device wasn't running yet
|
||||||
|
// 2) the battery on the device is low or even missing
|
||||||
|
|
||||||
|
Serial.println("RTC lost confidence in the DateTime!");
|
||||||
|
|
||||||
|
// following line sets the RTC to the date & time this sketch was compiled
|
||||||
|
// it will also reset the valid flag internally unless the Rtc device is
|
||||||
|
// having an issue
|
||||||
|
|
||||||
|
Rtc.SetDateTime(compiled);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Rtc.GetIsRunning())
|
||||||
|
{
|
||||||
|
Serial.println("RTC was not actively running, starting now");
|
||||||
|
Rtc.SetIsRunning(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime now = Rtc.GetDateTime();
|
||||||
|
if (now < compiled)
|
||||||
|
{
|
||||||
|
Serial.println("RTC is older than compile time! (Updating DateTime)");
|
||||||
|
Rtc.SetDateTime(compiled);
|
||||||
|
}
|
||||||
|
else if (now > compiled)
|
||||||
|
{
|
||||||
|
Serial.println("RTC is newer than compile time. (this is expected)");
|
||||||
|
}
|
||||||
|
else if (now == compiled)
|
||||||
|
{
|
||||||
|
Serial.println("RTC is the same as compile time! (not expected but all is fine)");
|
||||||
|
}
|
||||||
|
|
||||||
|
// never assume the Rtc was last configured by you, so
|
||||||
|
// just clear them to your needed state
|
||||||
|
Rtc.SetSquareWavePin(DS1307SquareWaveOut_Low);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop ()
|
||||||
|
{
|
||||||
|
if (!Rtc.IsDateTimeValid())
|
||||||
|
{
|
||||||
|
// Common Cuases:
|
||||||
|
// 1) the battery on the device is low or even missing and the power line was disconnected
|
||||||
|
Serial.println("RTC lost confidence in the DateTime!");
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime now = Rtc.GetDateTime();
|
||||||
|
|
||||||
|
printDateTime(now);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
delay(10000); // ten seconds
|
||||||
|
}
|
||||||
|
|
||||||
|
#define countof(a) (sizeof(a) / sizeof(a[0]))
|
||||||
|
|
||||||
|
void printDateTime(const RtcDateTime& dt)
|
||||||
|
{
|
||||||
|
char datestring[20];
|
||||||
|
|
||||||
|
snprintf_P(datestring,
|
||||||
|
countof(datestring),
|
||||||
|
PSTR("%02u/%02u/%04u %02u:%02u:%02u"),
|
||||||
|
dt.Month(),
|
||||||
|
dt.Day(),
|
||||||
|
dt.Year(),
|
||||||
|
dt.Hour(),
|
||||||
|
dt.Minute(),
|
||||||
|
dt.Second() );
|
||||||
|
Serial.print(datestring);
|
||||||
|
}
|
||||||
|
|
185
firmware/lib/Rtc-master/examples/DS3231_Alarms/DS3231_Alarms.ino
Normal file
185
firmware/lib/Rtc-master/examples/DS3231_Alarms/DS3231_Alarms.ino
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
|
||||||
|
// CONNECTIONS:
|
||||||
|
// DS3231 SDA --> SDA
|
||||||
|
// DS3231 SCL --> SCL
|
||||||
|
// DS3231 VCC --> 3.3v or 5v
|
||||||
|
// DS3231 GND --> GND
|
||||||
|
// SQW ---> (Pin19) Don't forget to pullup (4.7k to 10k to VCC)
|
||||||
|
|
||||||
|
/* for software wire use below
|
||||||
|
#include <SoftwareWire.h> // must be included here so that Arduino library object file references work
|
||||||
|
#include <RtcDS3231.h>
|
||||||
|
|
||||||
|
SoftwareWire myWire(SDA, SCL);
|
||||||
|
RtcDS3231<SoftwareWire> Rtc(myWire);
|
||||||
|
for software wire use above */
|
||||||
|
|
||||||
|
/* for normal hardware wire use below */
|
||||||
|
#include <Wire.h> // must be included here so that Arduino library object file references work
|
||||||
|
#include <RtcDS3231.h>
|
||||||
|
RtcDS3231<TwoWire> Rtc(Wire);
|
||||||
|
/* for normal hardware wire use above */
|
||||||
|
|
||||||
|
|
||||||
|
// Interrupt Pin Lookup Table
|
||||||
|
// (copied from Arduino Docs)
|
||||||
|
//
|
||||||
|
// CAUTION: The interrupts are Arduino numbers NOT Atmel numbers
|
||||||
|
// and may not match (example, Mega2560 int.4 is actually Atmel Int2)
|
||||||
|
// this is only an issue if you plan to use the lower level interupt features
|
||||||
|
//
|
||||||
|
// Board int.0 int.1 int.2 int.3 int.4 int.5
|
||||||
|
// ---------------------------------------------------------------
|
||||||
|
// Uno, Ethernet 2 3
|
||||||
|
// Mega2560 2 3 21 20 [19] 18
|
||||||
|
// Leonardo 3 2 0 1 7
|
||||||
|
|
||||||
|
#define RtcSquareWavePin 19 // Mega2560
|
||||||
|
#define RtcSquareWaveInterrupt 4 // Mega2560
|
||||||
|
|
||||||
|
// marked volatile so interrupt can safely modify them and
|
||||||
|
// other code can safely read and modify them
|
||||||
|
volatile uint16_t interuptCount = 0;
|
||||||
|
volatile bool interuptFlag = false;
|
||||||
|
|
||||||
|
void InteruptServiceRoutine()
|
||||||
|
{
|
||||||
|
// since this interupted any other running code,
|
||||||
|
// don't do anything that takes long and especially avoid
|
||||||
|
// any communications calls within this routine
|
||||||
|
interuptCount++;
|
||||||
|
interuptFlag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup ()
|
||||||
|
{
|
||||||
|
Serial.begin(57600);
|
||||||
|
|
||||||
|
// set the interupt pin to input mode
|
||||||
|
pinMode(RtcSquareWavePin, INPUT);
|
||||||
|
|
||||||
|
//--------RTC SETUP ------------
|
||||||
|
// if you are using ESP-01 then uncomment the line below to reset the pins to
|
||||||
|
// the available pins for SDA, SCL
|
||||||
|
// Wire.begin(0, 2); // due to limited pins, use pin 0 and 2 for SDA, SCL
|
||||||
|
|
||||||
|
Rtc.Begin();
|
||||||
|
|
||||||
|
RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
|
||||||
|
|
||||||
|
if (!Rtc.IsDateTimeValid())
|
||||||
|
{
|
||||||
|
Serial.println("RTC lost confidence in the DateTime!");
|
||||||
|
Rtc.SetDateTime(compiled);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Rtc.GetIsRunning())
|
||||||
|
{
|
||||||
|
Serial.println("RTC was not actively running, starting now");
|
||||||
|
Rtc.SetIsRunning(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime now = Rtc.GetDateTime();
|
||||||
|
if (now < compiled)
|
||||||
|
{
|
||||||
|
Serial.println("RTC is older than compile time! (Updating DateTime)");
|
||||||
|
Rtc.SetDateTime(compiled);
|
||||||
|
}
|
||||||
|
|
||||||
|
Rtc.Enable32kHzPin(false);
|
||||||
|
Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeAlarmBoth);
|
||||||
|
|
||||||
|
// Alarm 1 set to trigger every day when
|
||||||
|
// the hours, minutes, and seconds match
|
||||||
|
RtcDateTime alarmTime = now + 88; // into the future
|
||||||
|
DS3231AlarmOne alarm1(
|
||||||
|
alarmTime.Day(),
|
||||||
|
alarmTime.Hour(),
|
||||||
|
alarmTime.Minute(),
|
||||||
|
alarmTime.Second(),
|
||||||
|
DS3231AlarmOneControl_HoursMinutesSecondsMatch);
|
||||||
|
Rtc.SetAlarmOne(alarm1);
|
||||||
|
|
||||||
|
// Alarm 2 set to trigger at the top of the minute
|
||||||
|
DS3231AlarmTwo alarm2(
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
DS3231AlarmTwoControl_OncePerMinute);
|
||||||
|
Rtc.SetAlarmTwo(alarm2);
|
||||||
|
|
||||||
|
// throw away any old alarm state before we ran
|
||||||
|
Rtc.LatchAlarmsTriggeredFlags();
|
||||||
|
|
||||||
|
// setup external interupt
|
||||||
|
attachInterrupt(RtcSquareWaveInterrupt, InteruptServiceRoutine, FALLING);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop ()
|
||||||
|
{
|
||||||
|
if (!Rtc.IsDateTimeValid())
|
||||||
|
{
|
||||||
|
Serial.println("RTC lost confidence in the DateTime!");
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime now = Rtc.GetDateTime();
|
||||||
|
|
||||||
|
printDateTime(now);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
// we only want to show time every 10 seconds
|
||||||
|
// but we want to show responce to the interupt firing
|
||||||
|
for (int timeCount = 0; timeCount < 20; timeCount++)
|
||||||
|
{
|
||||||
|
if (Alarmed())
|
||||||
|
{
|
||||||
|
Serial.print(">>Interupt Count: ");
|
||||||
|
Serial.print(interuptCount);
|
||||||
|
Serial.println("<<");
|
||||||
|
}
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Alarmed()
|
||||||
|
{
|
||||||
|
bool wasAlarmed = false;
|
||||||
|
if (interuptFlag) // check our flag that gets sets in the interupt
|
||||||
|
{
|
||||||
|
wasAlarmed = true;
|
||||||
|
interuptFlag = false; // reset the flag
|
||||||
|
|
||||||
|
// this gives us which alarms triggered and
|
||||||
|
// then allows for others to trigger again
|
||||||
|
DS3231AlarmFlag flag = Rtc.LatchAlarmsTriggeredFlags();
|
||||||
|
|
||||||
|
if (flag & DS3231AlarmFlag_Alarm1)
|
||||||
|
{
|
||||||
|
Serial.println("alarm one triggered");
|
||||||
|
}
|
||||||
|
if (flag & DS3231AlarmFlag_Alarm2)
|
||||||
|
{
|
||||||
|
Serial.println("alarm two triggered");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return wasAlarmed;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define countof(a) (sizeof(a) / sizeof(a[0]))
|
||||||
|
|
||||||
|
void printDateTime(const RtcDateTime& dt)
|
||||||
|
{
|
||||||
|
char datestring[20];
|
||||||
|
|
||||||
|
snprintf_P(datestring,
|
||||||
|
countof(datestring),
|
||||||
|
PSTR("%02u/%02u/%04u %02u:%02u:%02u"),
|
||||||
|
dt.Month(),
|
||||||
|
dt.Day(),
|
||||||
|
dt.Year(),
|
||||||
|
dt.Hour(),
|
||||||
|
dt.Minute(),
|
||||||
|
dt.Second() );
|
||||||
|
Serial.print(datestring);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,71 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{969D9575-C911-4B46-BC8C-88C6A9086115}</ProjectGuid>
|
||||||
|
<RootNamespace>DS3231_Alarms</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v120</PlatformToolset>
|
||||||
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v120</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>MultiByte</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup />
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
@ -0,0 +1,82 @@
|
|||||||
|
/*
|
||||||
|
Editor: http://www.visualmicro.com
|
||||||
|
visual micro and the arduino ide ignore this code during compilation. this code is automatically maintained by visualmicro, manual changes to this file will be overwritten
|
||||||
|
the contents of the Visual Micro sketch sub folder can be deleted prior to publishing a project
|
||||||
|
all non-arduino files created by visual micro and all visual studio project or solution files can be freely deleted and are not required to compile a sketch (do not delete your own code!).
|
||||||
|
note: debugger breakpoints are stored in '.sln' or '.asln' files, knowledge of last uploaded breakpoints is stored in the upload.vmps.xml file. Both files are required to continue a previous debug session without needing to compile and upload again
|
||||||
|
|
||||||
|
Hardware: Arduino Mega w/ ATmega2560 (Mega 2560), Platform=avr, Package=arduino
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _VSARDUINO_H_
|
||||||
|
#define _VSARDUINO_H_
|
||||||
|
#define __AVR_ATmega2560__
|
||||||
|
#define ARDUINO 161
|
||||||
|
#define ARDUINO_MAIN
|
||||||
|
#define __AVR__
|
||||||
|
#define __avr__
|
||||||
|
#define F_CPU 16000000L
|
||||||
|
#define __cplusplus
|
||||||
|
#define GCC_VERSION 40801
|
||||||
|
#define ARDUINO_ARCH_AVR
|
||||||
|
#define ARDUINO_AVR_MEGA2560
|
||||||
|
#define __inline__
|
||||||
|
#define __asm__(x)
|
||||||
|
#define __extension__
|
||||||
|
//#define __ATTR_PURE__
|
||||||
|
//#define __ATTR_CONST__
|
||||||
|
#define __inline__
|
||||||
|
//#define __asm__
|
||||||
|
#define __volatile__
|
||||||
|
#define GCC_VERSION 40801
|
||||||
|
#define volatile(va_arg)
|
||||||
|
|
||||||
|
typedef void *__builtin_va_list;
|
||||||
|
#define __builtin_va_start
|
||||||
|
#define __builtin_va_end
|
||||||
|
//#define __DOXYGEN__
|
||||||
|
#define __attribute__(x)
|
||||||
|
#define NOINLINE __attribute__((noinline))
|
||||||
|
#define prog_void
|
||||||
|
#define PGM_VOID_P int
|
||||||
|
#define NEW_H
|
||||||
|
/*
|
||||||
|
#ifndef __ATTR_CONST__
|
||||||
|
#define __ATTR_CONST__ __attribute__((__const__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __ATTR_MALLOC__
|
||||||
|
#define __ATTR_MALLOC__ __attribute__((__malloc__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __ATTR_NORETURN__
|
||||||
|
#define __ATTR_NORETURN__ __attribute__((__noreturn__))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __ATTR_PURE__
|
||||||
|
#define __ATTR_PURE__ __attribute__((__pure__))
|
||||||
|
#endif
|
||||||
|
*/
|
||||||
|
typedef unsigned char byte;
|
||||||
|
extern "C" void __cxa_pure_virtual() {;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include <arduino.h>
|
||||||
|
#include <pins_arduino.h>
|
||||||
|
#undef F
|
||||||
|
#define F(string_literal) ((const PROGMEM char *)(string_literal))
|
||||||
|
#undef cli
|
||||||
|
#define cli()
|
||||||
|
#define pgm_read_byte(address_short)
|
||||||
|
#define pgm_read_word(address_short)
|
||||||
|
#define pgm_read_word2(address_short)
|
||||||
|
#define digitalPinToPort(P)
|
||||||
|
#define digitalPinToBitMask(P)
|
||||||
|
#define digitalPinToTimer(P)
|
||||||
|
#define analogInPinToBit(P)
|
||||||
|
#define portOutputRegister(P)
|
||||||
|
#define portInputRegister(P)
|
||||||
|
#define portModeRegister(P)
|
||||||
|
#include <DS3231_Alarms.ino>
|
||||||
|
#endif
|
123
firmware/lib/Rtc-master/examples/DS3231_Simple/DS3231_Simple.ino
Normal file
123
firmware/lib/Rtc-master/examples/DS3231_Simple/DS3231_Simple.ino
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
|
||||||
|
// CONNECTIONS:
|
||||||
|
// DS3231 SDA --> SDA
|
||||||
|
// DS3231 SCL --> SCL
|
||||||
|
// DS3231 VCC --> 3.3v or 5v
|
||||||
|
// DS3231 GND --> GND
|
||||||
|
|
||||||
|
/* for software wire use below
|
||||||
|
#include <SoftwareWire.h> // must be included here so that Arduino library object file references work
|
||||||
|
#include <RtcDS3231.h>
|
||||||
|
|
||||||
|
SoftwareWire myWire(SDA, SCL);
|
||||||
|
RtcDS3231<SoftwareWire> Rtc(myWire);
|
||||||
|
for software wire use above */
|
||||||
|
|
||||||
|
/* for normal hardware wire use below */
|
||||||
|
#include <Wire.h> // must be included here so that Arduino library object file references work
|
||||||
|
#include <RtcDS3231.h>
|
||||||
|
RtcDS3231<TwoWire> Rtc(Wire);
|
||||||
|
/* for normal hardware wire use above */
|
||||||
|
|
||||||
|
|
||||||
|
void setup ()
|
||||||
|
{
|
||||||
|
Serial.begin(57600);
|
||||||
|
|
||||||
|
Serial.print("compiled: ");
|
||||||
|
Serial.print(__DATE__);
|
||||||
|
Serial.println(__TIME__);
|
||||||
|
|
||||||
|
//--------RTC SETUP ------------
|
||||||
|
// if you are using ESP-01 then uncomment the line below to reset the pins to
|
||||||
|
// the available pins for SDA, SCL
|
||||||
|
// Wire.begin(0, 2); // due to limited pins, use pin 0 and 2 for SDA, SCL
|
||||||
|
|
||||||
|
Rtc.Begin();
|
||||||
|
|
||||||
|
RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
|
||||||
|
printDateTime(compiled);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
if (!Rtc.IsDateTimeValid())
|
||||||
|
{
|
||||||
|
// Common Cuases:
|
||||||
|
// 1) first time you ran and the device wasn't running yet
|
||||||
|
// 2) the battery on the device is low or even missing
|
||||||
|
|
||||||
|
Serial.println("RTC lost confidence in the DateTime!");
|
||||||
|
|
||||||
|
// following line sets the RTC to the date & time this sketch was compiled
|
||||||
|
// it will also reset the valid flag internally unless the Rtc device is
|
||||||
|
// having an issue
|
||||||
|
|
||||||
|
Rtc.SetDateTime(compiled);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Rtc.GetIsRunning())
|
||||||
|
{
|
||||||
|
Serial.println("RTC was not actively running, starting now");
|
||||||
|
Rtc.SetIsRunning(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime now = Rtc.GetDateTime();
|
||||||
|
if (now < compiled)
|
||||||
|
{
|
||||||
|
Serial.println("RTC is older than compile time! (Updating DateTime)");
|
||||||
|
Rtc.SetDateTime(compiled);
|
||||||
|
}
|
||||||
|
else if (now > compiled)
|
||||||
|
{
|
||||||
|
Serial.println("RTC is newer than compile time. (this is expected)");
|
||||||
|
}
|
||||||
|
else if (now == compiled)
|
||||||
|
{
|
||||||
|
Serial.println("RTC is the same as compile time! (not expected but all is fine)");
|
||||||
|
}
|
||||||
|
|
||||||
|
// never assume the Rtc was last configured by you, so
|
||||||
|
// just clear them to your needed state
|
||||||
|
Rtc.Enable32kHzPin(false);
|
||||||
|
Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeNone);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop ()
|
||||||
|
{
|
||||||
|
if (!Rtc.IsDateTimeValid())
|
||||||
|
{
|
||||||
|
// Common Cuases:
|
||||||
|
// 1) the battery on the device is low or even missing and the power line was disconnected
|
||||||
|
Serial.println("RTC lost confidence in the DateTime!");
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime now = Rtc.GetDateTime();
|
||||||
|
printDateTime(now);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
RtcTemperature temp = Rtc.GetTemperature();
|
||||||
|
temp.Print(Serial);
|
||||||
|
// you may also get the temperature as a float and print it
|
||||||
|
// Serial.print(temp.AsFloatDegC());
|
||||||
|
Serial.println("C");
|
||||||
|
|
||||||
|
delay(10000); // ten seconds
|
||||||
|
}
|
||||||
|
|
||||||
|
#define countof(a) (sizeof(a) / sizeof(a[0]))
|
||||||
|
|
||||||
|
void printDateTime(const RtcDateTime& dt)
|
||||||
|
{
|
||||||
|
char datestring[20];
|
||||||
|
|
||||||
|
snprintf_P(datestring,
|
||||||
|
countof(datestring),
|
||||||
|
PSTR("%02u/%02u/%04u %02u:%02u:%02u"),
|
||||||
|
dt.Month(),
|
||||||
|
dt.Day(),
|
||||||
|
dt.Year(),
|
||||||
|
dt.Hour(),
|
||||||
|
dt.Minute(),
|
||||||
|
dt.Second() );
|
||||||
|
Serial.print(datestring);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,100 @@
|
|||||||
|
|
||||||
|
// CONNECTIONS:
|
||||||
|
// DS3231 SDA --> SDA
|
||||||
|
// DS3231 SCL --> SCL
|
||||||
|
// DS3231 VCC --> 3.3v or 5v
|
||||||
|
// DS3231 GND --> GND
|
||||||
|
|
||||||
|
/* for software wire use below
|
||||||
|
#include <SoftwareWire.h> // must be included here so that Arduino library object file references work
|
||||||
|
#include <RtcDS3231.h>
|
||||||
|
|
||||||
|
SoftwareWire myWire(SDA, SCL);
|
||||||
|
RtcDS3231<SoftwareWire> Rtc(myWire);
|
||||||
|
for software wire use above */
|
||||||
|
|
||||||
|
/* for normal hardware wire use below */
|
||||||
|
#include <Wire.h> // must be included here so that Arduino library object file references work
|
||||||
|
#include <RtcDS3231.h>
|
||||||
|
RtcDS3231<TwoWire> Rtc(Wire);
|
||||||
|
/* for normal hardware wire use above */
|
||||||
|
|
||||||
|
|
||||||
|
void setup ()
|
||||||
|
{
|
||||||
|
Serial.begin(57600);
|
||||||
|
|
||||||
|
Serial.print("compiled: ");
|
||||||
|
Serial.print(__DATE__);
|
||||||
|
Serial.println(__TIME__);
|
||||||
|
|
||||||
|
//--------RTC SETUP ------------
|
||||||
|
// if you are using ESP-01 then uncomment the line below to reset the pins to
|
||||||
|
// the available pins for SDA, SCL
|
||||||
|
// Wire.begin(0, 2); // due to limited pins, use pin 0 and 2 for SDA, SCL
|
||||||
|
|
||||||
|
Rtc.Begin();
|
||||||
|
|
||||||
|
RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
|
||||||
|
printDateTime(compiled);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
if (!Rtc.IsDateTimeValid())
|
||||||
|
{
|
||||||
|
Serial.println("RTC lost confidence in the DateTime!");
|
||||||
|
Rtc.SetDateTime(compiled);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Rtc.GetIsRunning())
|
||||||
|
{
|
||||||
|
Serial.println("RTC was not actively running, starting now");
|
||||||
|
Rtc.SetIsRunning(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime now = Rtc.GetDateTime();
|
||||||
|
if (now < compiled)
|
||||||
|
{
|
||||||
|
Serial.println("RTC is older than compile time! (Updating DateTime)");
|
||||||
|
Rtc.SetDateTime(compiled);
|
||||||
|
}
|
||||||
|
|
||||||
|
// never assume the Rtc was last configured by you, so
|
||||||
|
// just clear them to your needed state
|
||||||
|
Rtc.Enable32kHzPin(false);
|
||||||
|
Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeNone);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop ()
|
||||||
|
{
|
||||||
|
RtcDateTime now = Rtc.GetDateTime();
|
||||||
|
|
||||||
|
printDateTime(now);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
Rtc.SetIsRunning(false);
|
||||||
|
Serial.println(">>> Rtc ready for storage <<<");
|
||||||
|
|
||||||
|
delay(10000); // ten seconds
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define countof(a) (sizeof(a) / sizeof(a[0]))
|
||||||
|
|
||||||
|
void printDateTime(const RtcDateTime& dt)
|
||||||
|
{
|
||||||
|
char datestring[20];
|
||||||
|
|
||||||
|
snprintf_P(datestring,
|
||||||
|
countof(datestring),
|
||||||
|
PSTR("%02u/%02u/%04u %02u:%02u:%02u"),
|
||||||
|
dt.Month(),
|
||||||
|
dt.Day(),
|
||||||
|
dt.Year(),
|
||||||
|
dt.Hour(),
|
||||||
|
dt.Minute(),
|
||||||
|
dt.Second() );
|
||||||
|
Serial.print(datestring);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,204 @@
|
|||||||
|
// These tests do not rely on RTC hardware at all
|
||||||
|
|
||||||
|
//#include <Wire.h> // must be included here so that Arduino library object file references work
|
||||||
|
#include <RtcDS3231.h>
|
||||||
|
|
||||||
|
void PrintPassFail(bool passed)
|
||||||
|
{
|
||||||
|
if (passed)
|
||||||
|
{
|
||||||
|
Serial.print("passed");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Serial.print("failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ComparePrintlnPassFail(RtcTemperature& rtcTemp, float compare)
|
||||||
|
{
|
||||||
|
Serial.print(rtcTemp.AsFloatDegC());
|
||||||
|
Serial.print("C ");
|
||||||
|
PrintPassFail(rtcTemp.AsFloatDegC() == compare);
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConstructorTests()
|
||||||
|
{
|
||||||
|
// RTC constructors
|
||||||
|
Serial.println("Constructors:");
|
||||||
|
{
|
||||||
|
RtcTemperature temp075Below(0b11111111, 0b01000000); // -0.75
|
||||||
|
ComparePrintlnPassFail(temp075Below, -0.75f);
|
||||||
|
|
||||||
|
RtcTemperature temp050Below(0b11111111, 0b10000000); // -0.5
|
||||||
|
ComparePrintlnPassFail(temp050Below, -0.50f);
|
||||||
|
|
||||||
|
RtcTemperature temp025Below(0b11111111, 0b11000000); // -0.25
|
||||||
|
ComparePrintlnPassFail(temp025Below, -0.25f);
|
||||||
|
|
||||||
|
RtcTemperature tempZero(0b00000000, 0b00000000); // 0.0
|
||||||
|
ComparePrintlnPassFail(tempZero, -0.0f);
|
||||||
|
|
||||||
|
RtcTemperature temp025Above(0b00000000, 0b01000000); // 0.25
|
||||||
|
ComparePrintlnPassFail(temp025Above, 0.25f);
|
||||||
|
|
||||||
|
RtcTemperature temp050Above(0b00000000, 0b10000000); // 0.5
|
||||||
|
ComparePrintlnPassFail(temp050Above, 0.5f);
|
||||||
|
|
||||||
|
RtcTemperature temp075Above(0b00000000, 0b11000000); // 0.75
|
||||||
|
ComparePrintlnPassFail(temp075Above, 0.75f);
|
||||||
|
|
||||||
|
RtcTemperature temp25Above(0b00011001, 0b00000000); // 25.0
|
||||||
|
ComparePrintlnPassFail(temp25Above, 25.0f);
|
||||||
|
|
||||||
|
RtcTemperature temp25Below(0b11100111, 0b00000000); // -25.0
|
||||||
|
ComparePrintlnPassFail(temp25Below, -25.0f);
|
||||||
|
}
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
// SameType
|
||||||
|
{
|
||||||
|
Serial.print("same type ");
|
||||||
|
RtcTemperature temp25Below(0b11100111, 0b00000000); // -25.0
|
||||||
|
RtcTemperature test = temp25Below;
|
||||||
|
ComparePrintlnPassFail(test, -25.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
// CentiDegrees
|
||||||
|
{
|
||||||
|
Serial.print("centi degrees ");
|
||||||
|
RtcTemperature temp025Below(-25); // -0.25
|
||||||
|
ComparePrintlnPassFail(temp025Below, -0.25f);
|
||||||
|
|
||||||
|
Serial.print("centi degrees ");
|
||||||
|
RtcTemperature temp025Above(25); // 0.25
|
||||||
|
ComparePrintlnPassFail(temp025Above, 0.25f);
|
||||||
|
|
||||||
|
Serial.print("centi degrees ");
|
||||||
|
RtcTemperature temp25Below(-2500); // -25.0
|
||||||
|
ComparePrintlnPassFail(temp25Below, -25.0f);
|
||||||
|
|
||||||
|
Serial.print("centi degrees ");
|
||||||
|
RtcTemperature temp25Above(2500); // 25.0
|
||||||
|
ComparePrintlnPassFail(temp25Above, 25.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintlnExpected(RtcTemperature& temp, uint16_t digits)
|
||||||
|
{
|
||||||
|
Serial.print(" = ");
|
||||||
|
Serial.print(temp.AsFloatDegC(), digits);
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintTests()
|
||||||
|
{
|
||||||
|
Serial.println("Prints:");
|
||||||
|
|
||||||
|
RtcTemperature temp25Above(2500);
|
||||||
|
temp25Above.Print(Serial);
|
||||||
|
PrintlnExpected(temp25Above, 2);
|
||||||
|
|
||||||
|
RtcTemperature temp25Below(-2500);
|
||||||
|
temp25Below.Print(Serial);
|
||||||
|
PrintlnExpected(temp25Below, 2);
|
||||||
|
|
||||||
|
RtcTemperature temp025Above(25);
|
||||||
|
temp025Above.Print(Serial);
|
||||||
|
PrintlnExpected(temp025Above, 2);
|
||||||
|
temp025Above.Print(Serial, 1);
|
||||||
|
PrintlnExpected(temp025Above, 1);
|
||||||
|
|
||||||
|
RtcTemperature temp025Below(-25);
|
||||||
|
temp025Below.Print(Serial);
|
||||||
|
PrintlnExpected(temp025Below, 2);
|
||||||
|
temp025Below.Print(Serial, 1);
|
||||||
|
PrintlnExpected(temp025Below, 1);
|
||||||
|
|
||||||
|
RtcTemperature temp050Above(50);
|
||||||
|
temp050Above.Print(Serial);
|
||||||
|
PrintlnExpected(temp050Above, 2);
|
||||||
|
temp050Above.Print(Serial, 0);
|
||||||
|
PrintlnExpected(temp050Above, 0);
|
||||||
|
|
||||||
|
RtcTemperature temp050Below(-50);
|
||||||
|
temp050Below.Print(Serial);
|
||||||
|
PrintlnExpected(temp050Below, 2);
|
||||||
|
temp050Below.Print(Serial, 0);
|
||||||
|
PrintlnExpected(temp050Below, 0);
|
||||||
|
temp050Below.Print(Serial, 2, ',');
|
||||||
|
Serial.println(" == -0,50");
|
||||||
|
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MathmaticalOperatorTests()
|
||||||
|
{
|
||||||
|
Serial.println("Mathmaticals:");
|
||||||
|
|
||||||
|
RtcTemperature temp050Below(-50);
|
||||||
|
RtcTemperature temp050Above(50);
|
||||||
|
RtcTemperature temp050Diff(100);
|
||||||
|
RtcTemperature temp050Same(-50);
|
||||||
|
RtcTemperature tempResult;
|
||||||
|
|
||||||
|
Serial.print("equality ");
|
||||||
|
PrintPassFail(temp050Below == temp050Same);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
Serial.print("inequality ");
|
||||||
|
PrintPassFail(temp050Below != temp050Above);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
Serial.print("less than ");
|
||||||
|
PrintPassFail(temp050Below < temp050Above);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
Serial.print("greater than ");
|
||||||
|
PrintPassFail(temp050Above > temp050Below);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
Serial.print("less than ");
|
||||||
|
PrintPassFail(temp050Below <= temp050Above);
|
||||||
|
Serial.print(" or equal ");
|
||||||
|
PrintPassFail(temp050Below <= temp050Same);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
Serial.print("greater than ");
|
||||||
|
PrintPassFail(temp050Above >= temp050Below);
|
||||||
|
Serial.print(" or equal ");
|
||||||
|
PrintPassFail(temp050Below >= temp050Same);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
tempResult = temp050Above - temp050Below;
|
||||||
|
Serial.print("subtraction ");
|
||||||
|
PrintPassFail(tempResult == temp050Diff);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
tempResult = temp050Above + temp050Above;
|
||||||
|
Serial.print("addition ");
|
||||||
|
PrintPassFail(tempResult == temp050Diff);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup ()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
while (!Serial);
|
||||||
|
Serial.println();
|
||||||
|
|
||||||
|
ConstructorTests();
|
||||||
|
PrintTests();
|
||||||
|
MathmaticalOperatorTests();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop ()
|
||||||
|
{
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
|
93
firmware/lib/Rtc-master/keywords.txt
Normal file
93
firmware/lib/Rtc-master/keywords.txt
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
#######################################
|
||||||
|
# Syntax Coloring Map RTC
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Datatypes (KEYWORD1)
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
DS3231AlarmOne KEYWORD1
|
||||||
|
DS3231AlarmTwo KEYWORD1
|
||||||
|
RtcDS3231 KEYWORD1
|
||||||
|
RtcTemperature KEYWORD1
|
||||||
|
RtcDateTime KEYWORD1
|
||||||
|
DayOfWeek KEYWORD1
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Methods and Functions (KEYWORD2)
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
Begin KEYWORD2
|
||||||
|
IsDateTimeValid KEYWORD2
|
||||||
|
GetIsRunning KEYWORD2
|
||||||
|
SetIsRunning KEYWORD2
|
||||||
|
SetDateTime KEYWORD2
|
||||||
|
GetDateTime KEYWORD2
|
||||||
|
GetTemperature KEYWORD2
|
||||||
|
Enable32kHzPin KEYWORD2
|
||||||
|
SetSquareWavePin KEYWORD2
|
||||||
|
SetSquareWavePinClockFrequency KEYWORD2
|
||||||
|
SetAlarmOne KEYWORD2
|
||||||
|
SetAlarmTwo KEYWORD2
|
||||||
|
GetAlarmOne KEYWORD2
|
||||||
|
GetAlarmTwo KEYWORD2
|
||||||
|
LatchAlarmsTriggeredFlags KEYWORD2
|
||||||
|
ForceTemperatureCompensationUpdate KEYWORD2
|
||||||
|
GetAgingOffset KEYWORD2
|
||||||
|
SetAgingOffset KEYWORD2
|
||||||
|
AsFloat KEYWORD2
|
||||||
|
AsWholeDegrees KEYWORD2
|
||||||
|
GetFractional KEYWORD2
|
||||||
|
Year KEYWORD2
|
||||||
|
Month KEYWORD2
|
||||||
|
Day KEYWORD2
|
||||||
|
Hour KEYWORD2
|
||||||
|
Minute KEYWORD2
|
||||||
|
Second KEYWORD2
|
||||||
|
DayOfWeek KEYWORD2
|
||||||
|
TotalSeconds KEYWORD2
|
||||||
|
DayOf KEYWORD2
|
||||||
|
ControlFlags KEYWORD2
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Constants (LITERAL1)
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
DS3231SquareWaveClock_1Hz LITERAL1
|
||||||
|
DS3231SquareWaveClock_1kHz LITERAL1
|
||||||
|
DS3231SquareWaveClock_4kHz LITERAL1
|
||||||
|
DS3231SquareWaveClock_8kHz LITERAL1
|
||||||
|
DS3231SquareWavePin_ModeNone LITERAL1
|
||||||
|
DS3231SquareWavePin_ModeBatteryBackup LITERAL1
|
||||||
|
DS3231SquareWavePin_ModeClock LITERAL1
|
||||||
|
DS3231SquareWavePin_ModeAlarmOne LITERAL1
|
||||||
|
DS3231SquareWavePin_ModeAlarmTwo LITERAL1
|
||||||
|
DS3231SquareWavePin_ModeAlarmBoth LITERAL1
|
||||||
|
DS3231AlarmOneControl_HoursMinutesSecondsDayOfMonthMatch LITERAL1
|
||||||
|
DS3231AlarmOneControl_OncePerSecond LITERAL1
|
||||||
|
DS3231AlarmOneControl_SecondsMatch LITERAL1
|
||||||
|
DS3231AlarmOneControl_MinutesSecondsMatch LITERAL1
|
||||||
|
DS3231AlarmOneControl_HoursMinutesSecondsMatch LITERAL1
|
||||||
|
DS3231AlarmOneControl_HoursMinutesSecondsDayOfWeekMatch LITERAL1
|
||||||
|
DS3231AlarmTwoControl_HoursMinutesDayOfMonthMatch LITERAL1
|
||||||
|
DS3231AlarmTwoControl_OncePerMinute LITERAL1
|
||||||
|
DS3231AlarmTwoControl_MinutesMatch LITERAL1
|
||||||
|
DS3231AlarmTwoControl_HoursMinutesMatch LITERAL1
|
||||||
|
DS3231AlarmTwoControl_HoursMinutesDayOfWeekMatch LITERAL1
|
||||||
|
DS3231AlarmFlag_Alarm1 LITERAL1
|
||||||
|
DS3231AlarmFlag_Alarm2 LITERAL1
|
||||||
|
DS3231AlarmFlag_AlarmBoth LITERAL1
|
||||||
|
DS1307SquareWaveOut_1Hz LITERAL1
|
||||||
|
DS1307SquareWaveOut_4kHz LITERAL1
|
||||||
|
DS1307SquareWaveOut_8kHz LITERAL1
|
||||||
|
DS1307SquareWaveOut_32kHz LITERAL1
|
||||||
|
DS1307SquareWaveOut_High LITERAL1
|
||||||
|
DS1307SquareWaveOut_Low LITERAL1
|
||||||
|
DayOfWeek_Sunday LITERAL1
|
||||||
|
DayOfWeek_Monday LITERAL1
|
||||||
|
DayOfWeek_Tuesday LITERAL1
|
||||||
|
DayOfWeek_Wednesday LITERAL1
|
||||||
|
DayOfWeek_Thursday LITERAL1
|
||||||
|
DayOfWeek_Friday LITERAL1
|
||||||
|
DayOfWeek_Saturday LITERAL1
|
||||||
|
|
14
firmware/lib/Rtc-master/library.json
Normal file
14
firmware/lib/Rtc-master/library.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"name": "RTC",
|
||||||
|
"keywords": "RTC, DS1307, DS3231, clock",
|
||||||
|
"description": "A library that makes interfacing DS1307 and DS3231 Real Time Clock modules easy.",
|
||||||
|
"repository":
|
||||||
|
{
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/Makuna/Rtc.git"
|
||||||
|
},
|
||||||
|
"version": "2.1.0",
|
||||||
|
"frameworks": "arduino",
|
||||||
|
"platforms": "*"
|
||||||
|
}
|
||||||
|
|
9
firmware/lib/Rtc-master/library.properties
Normal file
9
firmware/lib/Rtc-master/library.properties
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
name=Rtc by Makuna
|
||||||
|
version=2.1.0
|
||||||
|
author=Michael C. Miller (makuna@live.com)
|
||||||
|
maintainer=Michael C. Miller (makuna@live.com)
|
||||||
|
sentence=A library that makes interfacing DS1307 and DS3231 Real Time Clock modules easy.
|
||||||
|
paragraph=Includes deep support of module features, including temperature, alarms and memory storage if present. Tested on esp8266.
|
||||||
|
category=Device Control
|
||||||
|
url=https://github.com/Makuna/Rtc/wiki
|
||||||
|
architectures=*
|
225
firmware/lib/Rtc-master/src/RtcDS1307.h
Normal file
225
firmware/lib/Rtc-master/src/RtcDS1307.h
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
|
||||||
|
|
||||||
|
#ifndef __RTCDS1307_H__
|
||||||
|
#define __RTCDS1307_H__
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include "RtcDateTime.h"
|
||||||
|
#include "RtcUtility.h"
|
||||||
|
|
||||||
|
//I2C Slave Address
|
||||||
|
const uint8_t DS1307_ADDRESS = 0x68;
|
||||||
|
|
||||||
|
//DS1307 Register Addresses
|
||||||
|
const uint8_t DS1307_REG_TIMEDATE = 0x00;
|
||||||
|
const uint8_t DS1307_REG_STATUS = 0x00;
|
||||||
|
const uint8_t DS1307_REG_CONTROL = 0x07;
|
||||||
|
const uint8_t DS1307_REG_RAMSTART = 0x08;
|
||||||
|
const uint8_t DS1307_REG_RAMEND = 0x3f;
|
||||||
|
const uint8_t DS1307_REG_RAMSIZE = DS1307_REG_RAMEND - DS1307_REG_RAMSTART;
|
||||||
|
|
||||||
|
//DS1307 Register Data Size if not just 1
|
||||||
|
const uint8_t DS1307_REG_TIMEDATE_SIZE = 7;
|
||||||
|
|
||||||
|
// DS1307 Control Register Bits
|
||||||
|
const uint8_t DS1307_RS0 = 0;
|
||||||
|
const uint8_t DS1307_RS1 = 1;
|
||||||
|
const uint8_t DS1307_SQWE = 4;
|
||||||
|
const uint8_t DS1307_OUT = 7;
|
||||||
|
|
||||||
|
// DS1307 Status Register Bits
|
||||||
|
const uint8_t DS1307_CH = 7;
|
||||||
|
|
||||||
|
enum DS1307SquareWaveOut
|
||||||
|
{
|
||||||
|
DS1307SquareWaveOut_1Hz = 0b00010000,
|
||||||
|
DS1307SquareWaveOut_4kHz = 0b00010001,
|
||||||
|
DS1307SquareWaveOut_8kHz = 0b00010010,
|
||||||
|
DS1307SquareWaveOut_32kHz = 0b00010011,
|
||||||
|
DS1307SquareWaveOut_High = 0b10000000,
|
||||||
|
DS1307SquareWaveOut_Low = 0b00000000,
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class T_WIRE_METHOD> class RtcDS1307
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RtcDS1307(T_WIRE_METHOD& wire) :
|
||||||
|
_wire(wire)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Begin()
|
||||||
|
{
|
||||||
|
_wire.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsDateTimeValid()
|
||||||
|
{
|
||||||
|
return GetIsRunning();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GetIsRunning()
|
||||||
|
{
|
||||||
|
uint8_t sreg = getReg(DS1307_REG_STATUS);
|
||||||
|
return !(sreg & _BV(DS1307_CH));
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetIsRunning(bool isRunning)
|
||||||
|
{
|
||||||
|
uint8_t sreg = getReg(DS1307_REG_STATUS);
|
||||||
|
if (isRunning)
|
||||||
|
{
|
||||||
|
sreg &= ~_BV(DS1307_CH);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sreg |= _BV(DS1307_CH);
|
||||||
|
}
|
||||||
|
setReg(DS1307_REG_STATUS, sreg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetDateTime(const RtcDateTime& dt)
|
||||||
|
{
|
||||||
|
// retain running state
|
||||||
|
uint8_t sreg = getReg(DS1307_REG_STATUS) & _BV(DS1307_CH);
|
||||||
|
|
||||||
|
// set the date time
|
||||||
|
_wire.beginTransmission(DS1307_ADDRESS);
|
||||||
|
_wire.write(DS1307_REG_TIMEDATE);
|
||||||
|
|
||||||
|
_wire.write(Uint8ToBcd(dt.Second()) | sreg);
|
||||||
|
_wire.write(Uint8ToBcd(dt.Minute()));
|
||||||
|
_wire.write(Uint8ToBcd(dt.Hour())); // 24 hour mode only
|
||||||
|
|
||||||
|
// RTC Hardware Day of Week is 1-7, 1 = Monday
|
||||||
|
// convert our Day of Week to Rtc Day of Week
|
||||||
|
uint8_t rtcDow = RtcDateTime::ConvertDowToRtc(dt.DayOfWeek());
|
||||||
|
|
||||||
|
_wire.write(Uint8ToBcd(rtcDow));
|
||||||
|
_wire.write(Uint8ToBcd(dt.Day()));
|
||||||
|
_wire.write(Uint8ToBcd(dt.Month()));
|
||||||
|
_wire.write(Uint8ToBcd(dt.Year() - 2000));
|
||||||
|
|
||||||
|
_wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime GetDateTime()
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS1307_ADDRESS);
|
||||||
|
_wire.write(DS1307_REG_TIMEDATE);
|
||||||
|
_wire.endTransmission();
|
||||||
|
|
||||||
|
_wire.requestFrom(DS1307_ADDRESS, DS1307_REG_TIMEDATE_SIZE);
|
||||||
|
uint8_t second = BcdToUint8(_wire.read() & 0x7F);
|
||||||
|
uint8_t minute = BcdToUint8(_wire.read());
|
||||||
|
uint8_t hour = BcdToBin24Hour(_wire.read());
|
||||||
|
|
||||||
|
_wire.read(); // throwing away day of week as we calculate it
|
||||||
|
|
||||||
|
uint8_t dayOfMonth = BcdToUint8(_wire.read());
|
||||||
|
uint8_t month = BcdToUint8(_wire.read());
|
||||||
|
uint16_t year = BcdToUint8(_wire.read()) + 2000;
|
||||||
|
|
||||||
|
return RtcDateTime(year, month, dayOfMonth, hour, minute, second);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetMemory(uint8_t memoryAddress, uint8_t value)
|
||||||
|
{
|
||||||
|
uint8_t address = memoryAddress + DS1307_REG_RAMSTART;
|
||||||
|
if (address <= DS1307_REG_RAMEND)
|
||||||
|
{
|
||||||
|
setReg(address, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t GetMemory(uint8_t memoryAddress)
|
||||||
|
{
|
||||||
|
uint8_t value = 0;
|
||||||
|
uint8_t address = memoryAddress + DS1307_REG_RAMSTART;
|
||||||
|
if (address <= DS1307_REG_RAMEND)
|
||||||
|
{
|
||||||
|
value = getReg(address);
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t SetMemory(uint8_t memoryAddress, const uint8_t* pValue, uint8_t countBytes)
|
||||||
|
{
|
||||||
|
uint8_t address = memoryAddress + DS1307_REG_RAMSTART;
|
||||||
|
uint8_t countWritten = 0;
|
||||||
|
if (address <= DS1307_REG_RAMEND)
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS1307_ADDRESS);
|
||||||
|
_wire.write(address);
|
||||||
|
|
||||||
|
while (countBytes > 0 && address <= DS1307_REG_RAMEND)
|
||||||
|
{
|
||||||
|
_wire.write(*pValue++);
|
||||||
|
address++;
|
||||||
|
countBytes--;
|
||||||
|
countWritten++;
|
||||||
|
}
|
||||||
|
|
||||||
|
_wire.endTransmission();
|
||||||
|
}
|
||||||
|
return countWritten;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t GetMemory(uint8_t memoryAddress, uint8_t* pValue, uint8_t countBytes)
|
||||||
|
{
|
||||||
|
uint8_t address = memoryAddress + DS1307_REG_RAMSTART;
|
||||||
|
uint8_t countRead = 0;
|
||||||
|
if (address <= DS1307_REG_RAMEND)
|
||||||
|
{
|
||||||
|
if (countBytes > DS1307_REG_RAMSIZE)
|
||||||
|
{
|
||||||
|
countBytes = DS1307_REG_RAMSIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
_wire.beginTransmission(DS1307_ADDRESS);
|
||||||
|
_wire.write(address);
|
||||||
|
_wire.endTransmission();
|
||||||
|
|
||||||
|
_wire.requestFrom(DS1307_ADDRESS, countBytes);
|
||||||
|
|
||||||
|
while (countBytes-- > 0)
|
||||||
|
{
|
||||||
|
*pValue++ = _wire.read();
|
||||||
|
countRead++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return countRead;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetSquareWavePin(DS1307SquareWaveOut pinMode)
|
||||||
|
{
|
||||||
|
setReg(DS1307_REG_CONTROL, pinMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
T_WIRE_METHOD& _wire;
|
||||||
|
|
||||||
|
uint8_t getReg(uint8_t regAddress)
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS1307_ADDRESS);
|
||||||
|
_wire.write(regAddress);
|
||||||
|
_wire.endTransmission();
|
||||||
|
|
||||||
|
// control register
|
||||||
|
_wire.requestFrom(DS1307_ADDRESS, (uint8_t)1);
|
||||||
|
|
||||||
|
uint8_t regValue = _wire.read();
|
||||||
|
return regValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setReg(uint8_t regAddress, uint8_t regValue)
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS1307_ADDRESS);
|
||||||
|
_wire.write(regAddress);
|
||||||
|
_wire.write(regValue);
|
||||||
|
_wire.endTransmission();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __RTCDS1307_H__
|
576
firmware/lib/Rtc-master/src/RtcDS3231.h
Normal file
576
firmware/lib/Rtc-master/src/RtcDS3231.h
Normal file
@ -0,0 +1,576 @@
|
|||||||
|
|
||||||
|
|
||||||
|
#ifndef __RTCDS3231_H__
|
||||||
|
#define __RTCDS3231_H__
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
#include "RtcDateTime.h"
|
||||||
|
#include "RtcTemperature.h"
|
||||||
|
#include "RtcUtility.h"
|
||||||
|
|
||||||
|
|
||||||
|
//I2C Slave Address
|
||||||
|
const uint8_t DS3231_ADDRESS = 0x68;
|
||||||
|
|
||||||
|
//DS3231 Register Addresses
|
||||||
|
const uint8_t DS3231_REG_TIMEDATE = 0x00;
|
||||||
|
const uint8_t DS3231_REG_ALARMONE = 0x07;
|
||||||
|
const uint8_t DS3231_REG_ALARMTWO = 0x0B;
|
||||||
|
|
||||||
|
const uint8_t DS3231_REG_CONTROL = 0x0E;
|
||||||
|
const uint8_t DS3231_REG_STATUS = 0x0F;
|
||||||
|
const uint8_t DS3231_REG_AGING = 0x10;
|
||||||
|
|
||||||
|
const uint8_t DS3231_REG_TEMP = 0x11;
|
||||||
|
|
||||||
|
//DS3231 Register Data Size if not just 1
|
||||||
|
const uint8_t DS3231_REG_TIMEDATE_SIZE = 7;
|
||||||
|
const uint8_t DS3231_REG_ALARMONE_SIZE = 4;
|
||||||
|
const uint8_t DS3231_REG_ALARMTWO_SIZE = 3;
|
||||||
|
|
||||||
|
const uint8_t DS3231_REG_TEMP_SIZE = 2;
|
||||||
|
|
||||||
|
// DS3231 Control Register Bits
|
||||||
|
const uint8_t DS3231_A1IE = 0;
|
||||||
|
const uint8_t DS3231_A2IE = 1;
|
||||||
|
const uint8_t DS3231_INTCN = 2;
|
||||||
|
const uint8_t DS3231_RS1 = 3;
|
||||||
|
const uint8_t DS3231_RS2 = 4;
|
||||||
|
const uint8_t DS3231_CONV = 5;
|
||||||
|
const uint8_t DS3231_BBSQW = 6;
|
||||||
|
const uint8_t DS3231_EOSC = 7;
|
||||||
|
const uint8_t DS3231_AIEMASK = (_BV(DS3231_A1IE) | _BV(DS3231_A2IE));
|
||||||
|
const uint8_t DS3231_RSMASK = (_BV(DS3231_RS1) | _BV(DS3231_RS2));
|
||||||
|
|
||||||
|
// DS3231 Status Register Bits
|
||||||
|
const uint8_t DS3231_A1F = 0;
|
||||||
|
const uint8_t DS3231_A2F = 1;
|
||||||
|
const uint8_t DS3231_BSY = 2;
|
||||||
|
const uint8_t DS3231_EN32KHZ = 3;
|
||||||
|
const uint8_t DS3231_OSF = 7;
|
||||||
|
const uint8_t DS3231_AIFMASK = (_BV(DS3231_A1F) | _BV(DS3231_A2F));
|
||||||
|
|
||||||
|
|
||||||
|
// seconds accuracy
|
||||||
|
enum DS3231AlarmOneControl
|
||||||
|
{
|
||||||
|
// bit order: A1M4 DY/DT A1M3 A1M2 A1M1
|
||||||
|
DS3231AlarmOneControl_HoursMinutesSecondsDayOfMonthMatch = 0x00,
|
||||||
|
DS3231AlarmOneControl_OncePerSecond = 0x17,
|
||||||
|
DS3231AlarmOneControl_SecondsMatch = 0x16,
|
||||||
|
DS3231AlarmOneControl_MinutesSecondsMatch = 0x14,
|
||||||
|
DS3231AlarmOneControl_HoursMinutesSecondsMatch = 0x10,
|
||||||
|
DS3231AlarmOneControl_HoursMinutesSecondsDayOfWeekMatch = 0x08,
|
||||||
|
};
|
||||||
|
|
||||||
|
class DS3231AlarmOne
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DS3231AlarmOne( uint8_t dayOf,
|
||||||
|
uint8_t hour,
|
||||||
|
uint8_t minute,
|
||||||
|
uint8_t second,
|
||||||
|
DS3231AlarmOneControl controlFlags) :
|
||||||
|
_flags(controlFlags),
|
||||||
|
_dayOf(dayOf),
|
||||||
|
_hour(hour),
|
||||||
|
_minute(minute),
|
||||||
|
_second(second)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t DayOf() const
|
||||||
|
{
|
||||||
|
return _dayOf;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Hour() const
|
||||||
|
{
|
||||||
|
return _hour;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Minute() const
|
||||||
|
{
|
||||||
|
return _minute;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Second() const
|
||||||
|
{
|
||||||
|
return _second;
|
||||||
|
}
|
||||||
|
|
||||||
|
DS3231AlarmOneControl ControlFlags() const
|
||||||
|
{
|
||||||
|
return _flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator == (const DS3231AlarmOne& other) const
|
||||||
|
{
|
||||||
|
return (_dayOf == other._dayOf &&
|
||||||
|
_hour == other._hour &&
|
||||||
|
_minute == other._minute &&
|
||||||
|
_second == other._second &&
|
||||||
|
_flags == other._flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator != (const DS3231AlarmOne& other) const
|
||||||
|
{
|
||||||
|
return !(*this == other);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
DS3231AlarmOneControl _flags;
|
||||||
|
|
||||||
|
uint8_t _dayOf;
|
||||||
|
uint8_t _hour;
|
||||||
|
uint8_t _minute;
|
||||||
|
uint8_t _second;
|
||||||
|
};
|
||||||
|
|
||||||
|
// minutes accuracy
|
||||||
|
enum DS3231AlarmTwoControl
|
||||||
|
{
|
||||||
|
// bit order: A2M4 DY/DT A2M3 A2M2
|
||||||
|
DS3231AlarmTwoControl_HoursMinutesDayOfMonthMatch = 0x00,
|
||||||
|
DS3231AlarmTwoControl_OncePerMinute = 0x0b,
|
||||||
|
DS3231AlarmTwoControl_MinutesMatch = 0x0a,
|
||||||
|
DS3231AlarmTwoControl_HoursMinutesMatch = 0x08,
|
||||||
|
DS3231AlarmTwoControl_HoursMinutesDayOfWeekMatch = 0x04,
|
||||||
|
};
|
||||||
|
|
||||||
|
class DS3231AlarmTwo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DS3231AlarmTwo( uint8_t dayOf,
|
||||||
|
uint8_t hour,
|
||||||
|
uint8_t minute,
|
||||||
|
DS3231AlarmTwoControl controlFlags) :
|
||||||
|
_flags(controlFlags),
|
||||||
|
_dayOf(dayOf),
|
||||||
|
_hour(hour),
|
||||||
|
_minute(minute)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t DayOf() const
|
||||||
|
{
|
||||||
|
return _dayOf;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Hour() const
|
||||||
|
{
|
||||||
|
return _hour;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Minute() const
|
||||||
|
{
|
||||||
|
return _minute;
|
||||||
|
}
|
||||||
|
|
||||||
|
DS3231AlarmTwoControl ControlFlags() const
|
||||||
|
{
|
||||||
|
return _flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator == (const DS3231AlarmTwo& other) const
|
||||||
|
{
|
||||||
|
return (_dayOf == other._dayOf &&
|
||||||
|
_hour == other._hour &&
|
||||||
|
_minute == other._minute &&
|
||||||
|
_flags == other._flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator != (const DS3231AlarmTwo& other) const
|
||||||
|
{
|
||||||
|
return !(*this == other);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
DS3231AlarmTwoControl _flags;
|
||||||
|
|
||||||
|
uint8_t _dayOf;
|
||||||
|
uint8_t _hour;
|
||||||
|
uint8_t _minute;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
enum DS3231SquareWaveClock
|
||||||
|
{
|
||||||
|
DS3231SquareWaveClock_1Hz = 0b00000000,
|
||||||
|
DS3231SquareWaveClock_1kHz = 0b00001000,
|
||||||
|
DS3231SquareWaveClock_4kHz = 0b00010000,
|
||||||
|
DS3231SquareWaveClock_8kHz = 0b00011000,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum DS3231SquareWavePinMode
|
||||||
|
{
|
||||||
|
DS3231SquareWavePin_ModeNone,
|
||||||
|
DS3231SquareWavePin_ModeBatteryBackup,
|
||||||
|
DS3231SquareWavePin_ModeClock,
|
||||||
|
DS3231SquareWavePin_ModeAlarmOne,
|
||||||
|
DS3231SquareWavePin_ModeAlarmTwo,
|
||||||
|
DS3231SquareWavePin_ModeAlarmBoth
|
||||||
|
};
|
||||||
|
|
||||||
|
enum DS3231AlarmFlag
|
||||||
|
{
|
||||||
|
DS3231AlarmFlag_Alarm1 = 0x01,
|
||||||
|
DS3231AlarmFlag_Alarm2 = 0x02,
|
||||||
|
DS3231AlarmFlag_AlarmBoth = 0x03,
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class T_WIRE_METHOD> class RtcDS3231
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RtcDS3231(T_WIRE_METHOD& wire) :
|
||||||
|
_wire(wire)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Begin()
|
||||||
|
{
|
||||||
|
_wire.begin();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsDateTimeValid()
|
||||||
|
{
|
||||||
|
uint8_t status = getReg(DS3231_REG_STATUS);
|
||||||
|
return !(status & _BV(DS3231_OSF));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GetIsRunning()
|
||||||
|
{
|
||||||
|
uint8_t creg = getReg(DS3231_REG_CONTROL);
|
||||||
|
return !(creg & _BV(DS3231_EOSC));
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetIsRunning(bool isRunning)
|
||||||
|
{
|
||||||
|
uint8_t creg = getReg(DS3231_REG_CONTROL);
|
||||||
|
if (isRunning)
|
||||||
|
{
|
||||||
|
creg &= ~_BV(DS3231_EOSC);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
creg |= _BV(DS3231_EOSC);
|
||||||
|
}
|
||||||
|
setReg(DS3231_REG_CONTROL, creg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetDateTime(const RtcDateTime& dt)
|
||||||
|
{
|
||||||
|
// clear the invalid flag
|
||||||
|
uint8_t status = getReg(DS3231_REG_STATUS);
|
||||||
|
status &= ~_BV(DS3231_OSF); // clear the flag
|
||||||
|
setReg(DS3231_REG_STATUS, status);
|
||||||
|
|
||||||
|
// set the date time
|
||||||
|
_wire.beginTransmission(DS3231_ADDRESS);
|
||||||
|
_wire.write(DS3231_REG_TIMEDATE);
|
||||||
|
|
||||||
|
_wire.write(Uint8ToBcd(dt.Second()));
|
||||||
|
_wire.write(Uint8ToBcd(dt.Minute()));
|
||||||
|
_wire.write(Uint8ToBcd(dt.Hour())); // 24 hour mode only
|
||||||
|
|
||||||
|
uint8_t year = dt.Year() - 2000;
|
||||||
|
uint8_t centuryFlag = 0;
|
||||||
|
|
||||||
|
if (year >= 100)
|
||||||
|
{
|
||||||
|
year -= 100;
|
||||||
|
centuryFlag = _BV(7);
|
||||||
|
}
|
||||||
|
|
||||||
|
// RTC Hardware Day of Week is 1-7, 1 = Monday
|
||||||
|
// convert our Day of Week to Rtc Day of Week
|
||||||
|
uint8_t rtcDow = RtcDateTime::ConvertDowToRtc(dt.DayOfWeek());
|
||||||
|
|
||||||
|
_wire.write(Uint8ToBcd(rtcDow));
|
||||||
|
|
||||||
|
_wire.write(Uint8ToBcd(dt.Day()));
|
||||||
|
_wire.write(Uint8ToBcd(dt.Month()) | centuryFlag);
|
||||||
|
_wire.write(Uint8ToBcd(year));
|
||||||
|
|
||||||
|
_wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime GetDateTime()
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS3231_ADDRESS);
|
||||||
|
_wire.write(DS3231_REG_TIMEDATE);
|
||||||
|
_wire.endTransmission();
|
||||||
|
|
||||||
|
_wire.requestFrom(DS3231_ADDRESS, DS3231_REG_TIMEDATE_SIZE);
|
||||||
|
uint8_t second = BcdToUint8(_wire.read() & 0x7F);
|
||||||
|
uint8_t minute = BcdToUint8(_wire.read());
|
||||||
|
uint8_t hour = BcdToBin24Hour(_wire.read());
|
||||||
|
|
||||||
|
_wire.read(); // throwing away day of week as we calculate it
|
||||||
|
|
||||||
|
uint8_t dayOfMonth = BcdToUint8(_wire.read());
|
||||||
|
uint8_t monthRaw = _wire.read();
|
||||||
|
uint16_t year = BcdToUint8(_wire.read()) + 2000;
|
||||||
|
|
||||||
|
if (monthRaw & _BV(7)) // century wrap flag
|
||||||
|
{
|
||||||
|
year += 100;
|
||||||
|
}
|
||||||
|
uint8_t month = BcdToUint8(monthRaw & 0x7f);
|
||||||
|
|
||||||
|
|
||||||
|
return RtcDateTime(year, month, dayOfMonth, hour, minute, second);
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcTemperature GetTemperature()
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS3231_ADDRESS);
|
||||||
|
_wire.write(DS3231_REG_TEMP);
|
||||||
|
_wire.endTransmission();
|
||||||
|
|
||||||
|
// Temperature is represented as a 10-bit code with a resolution
|
||||||
|
// of 1/4th °C and is accessable as a signed 16-bit integer at
|
||||||
|
// locations 11h and 12h.
|
||||||
|
//
|
||||||
|
// | r11h | DP | r12h |
|
||||||
|
// Bit: 15 14 13 12 11 10 9 8 . 7 6 5 4 3 2 1 0 -1 -2
|
||||||
|
// s i i i i i i i . f f 0 0 0 0 0 0
|
||||||
|
//
|
||||||
|
// As it takes (8) right-shifts to register the decimal point (DP) to
|
||||||
|
// the right of the 0th bit, the overall word scaling equals 256.
|
||||||
|
//
|
||||||
|
// For example, at +/- 25.25°C, concatenated registers <r11h:r12h> =
|
||||||
|
// 256 * (+/- 25+(1/4)) = +/- 6464, or 1940h / E6C0h.
|
||||||
|
|
||||||
|
_wire.requestFrom(DS3231_ADDRESS, DS3231_REG_TEMP_SIZE);
|
||||||
|
int8_t r11h = _wire.read(); // MS byte, signed temperature
|
||||||
|
return RtcTemperature( r11h, _wire.read() ); // LS byte is r12h
|
||||||
|
}
|
||||||
|
|
||||||
|
void Enable32kHzPin(bool enable)
|
||||||
|
{
|
||||||
|
uint8_t sreg = getReg(DS3231_REG_STATUS);
|
||||||
|
|
||||||
|
if (enable == true)
|
||||||
|
{
|
||||||
|
sreg |= _BV(DS3231_EN32KHZ);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sreg &= ~_BV(DS3231_EN32KHZ);
|
||||||
|
}
|
||||||
|
|
||||||
|
setReg(DS3231_REG_STATUS, sreg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetSquareWavePin(DS3231SquareWavePinMode pinMode)
|
||||||
|
{
|
||||||
|
uint8_t creg = getReg(DS3231_REG_CONTROL);
|
||||||
|
|
||||||
|
// clear all relevant bits to a known "off" state
|
||||||
|
creg &= ~(DS3231_AIEMASK | _BV(DS3231_BBSQW));
|
||||||
|
creg |= _BV(DS3231_INTCN); // set INTCN to disables SQW
|
||||||
|
|
||||||
|
switch (pinMode)
|
||||||
|
{
|
||||||
|
case DS3231SquareWavePin_ModeNone:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DS3231SquareWavePin_ModeBatteryBackup:
|
||||||
|
creg |= _BV(DS3231_BBSQW); // set battery backup flag
|
||||||
|
creg &= ~_BV(DS3231_INTCN); // clear INTCN to enable SQW
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DS3231SquareWavePin_ModeClock:
|
||||||
|
creg &= ~_BV(DS3231_INTCN); // clear INTCN to enable SQW
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DS3231SquareWavePin_ModeAlarmOne:
|
||||||
|
creg |= _BV(DS3231_A1IE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DS3231SquareWavePin_ModeAlarmTwo:
|
||||||
|
creg |= _BV(DS3231_A2IE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DS3231SquareWavePin_ModeAlarmBoth:
|
||||||
|
creg |= _BV(DS3231_A1IE) | _BV(DS3231_A2IE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
setReg(DS3231_REG_CONTROL, creg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetSquareWavePinClockFrequency(DS3231SquareWaveClock freq)
|
||||||
|
{
|
||||||
|
uint8_t creg = getReg(DS3231_REG_CONTROL);
|
||||||
|
|
||||||
|
creg &= ~DS3231_RSMASK; // Set to 0
|
||||||
|
creg |= (freq & DS3231_RSMASK); // Set freq bits
|
||||||
|
|
||||||
|
setReg(DS3231_REG_CONTROL, creg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SetAlarmOne(const DS3231AlarmOne& alarm)
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS3231_ADDRESS);
|
||||||
|
_wire.write(DS3231_REG_ALARMONE);
|
||||||
|
|
||||||
|
_wire.write(Uint8ToBcd(alarm.Second()) | ((alarm.ControlFlags() & 0x01) << 7));
|
||||||
|
_wire.write(Uint8ToBcd(alarm.Minute()) | ((alarm.ControlFlags() & 0x02) << 6));
|
||||||
|
_wire.write(Uint8ToBcd(alarm.Hour()) | ((alarm.ControlFlags() & 0x04) << 5)); // 24 hour mode only
|
||||||
|
|
||||||
|
uint8_t rtcDow = alarm.DayOf();
|
||||||
|
if (alarm.ControlFlags() == DS3231AlarmOneControl_HoursMinutesSecondsDayOfWeekMatch)
|
||||||
|
{
|
||||||
|
rtcDow = RtcDateTime::ConvertDowToRtc(rtcDow);
|
||||||
|
}
|
||||||
|
|
||||||
|
_wire.write(Uint8ToBcd(rtcDow) | ((alarm.ControlFlags() & 0x18) << 3));
|
||||||
|
|
||||||
|
_wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetAlarmTwo(const DS3231AlarmTwo& alarm)
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS3231_ADDRESS);
|
||||||
|
_wire.write(DS3231_REG_ALARMTWO);
|
||||||
|
|
||||||
|
_wire.write(Uint8ToBcd(alarm.Minute()) | ((alarm.ControlFlags() & 0x01) << 7));
|
||||||
|
_wire.write(Uint8ToBcd(alarm.Hour()) | ((alarm.ControlFlags() & 0x02) << 6)); // 24 hour mode only
|
||||||
|
|
||||||
|
// convert our Day of Week to Rtc Day of Week if needed
|
||||||
|
uint8_t rtcDow = alarm.DayOf();
|
||||||
|
if (alarm.ControlFlags() == DS3231AlarmTwoControl_HoursMinutesDayOfWeekMatch)
|
||||||
|
{
|
||||||
|
rtcDow = RtcDateTime::ConvertDowToRtc(rtcDow);
|
||||||
|
}
|
||||||
|
|
||||||
|
_wire.write(Uint8ToBcd(rtcDow) | ((alarm.ControlFlags() & 0x0c) << 4));
|
||||||
|
|
||||||
|
_wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
DS3231AlarmOne GetAlarmOne()
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS3231_ADDRESS);
|
||||||
|
_wire.write(DS3231_REG_ALARMONE);
|
||||||
|
_wire.endTransmission();
|
||||||
|
|
||||||
|
_wire.requestFrom(DS3231_ADDRESS, DS3231_REG_ALARMONE_SIZE);
|
||||||
|
|
||||||
|
uint8_t raw = _wire.read();
|
||||||
|
uint8_t flags = (raw & 0x80) >> 7;
|
||||||
|
uint8_t second = BcdToUint8(raw & 0x7F);
|
||||||
|
|
||||||
|
raw = _wire.read();
|
||||||
|
flags |= (raw & 0x80) >> 6;
|
||||||
|
uint8_t minute = BcdToUint8(raw & 0x7F);
|
||||||
|
|
||||||
|
raw = _wire.read();
|
||||||
|
flags |= (raw & 0x80) >> 5;
|
||||||
|
uint8_t hour = BcdToBin24Hour(raw & 0x7f);
|
||||||
|
|
||||||
|
raw = _wire.read();
|
||||||
|
flags |= (raw & 0xc0) >> 3;
|
||||||
|
uint8_t dayOf = BcdToUint8(raw & 0x3f);
|
||||||
|
|
||||||
|
if (flags == DS3231AlarmOneControl_HoursMinutesSecondsDayOfWeekMatch)
|
||||||
|
{
|
||||||
|
dayOf = RtcDateTime::ConvertRtcToDow(dayOf);
|
||||||
|
}
|
||||||
|
|
||||||
|
return DS3231AlarmOne(dayOf, hour, minute, second, (DS3231AlarmOneControl)flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
DS3231AlarmTwo GetAlarmTwo()
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS3231_ADDRESS);
|
||||||
|
_wire.write(DS3231_REG_ALARMTWO);
|
||||||
|
_wire.endTransmission();
|
||||||
|
|
||||||
|
_wire.requestFrom(DS3231_ADDRESS, DS3231_REG_ALARMTWO_SIZE);
|
||||||
|
|
||||||
|
uint8_t raw = _wire.read();
|
||||||
|
uint8_t flags = (raw & 0x80) >> 7;
|
||||||
|
uint8_t minute = BcdToUint8(raw & 0x7F);
|
||||||
|
|
||||||
|
raw = _wire.read();
|
||||||
|
flags |= (raw & 0x80) >> 6;
|
||||||
|
uint8_t hour = BcdToBin24Hour(raw & 0x7f);
|
||||||
|
|
||||||
|
raw = _wire.read();
|
||||||
|
flags |= (raw & 0xc0) >> 4;
|
||||||
|
uint8_t dayOf = BcdToUint8(raw & 0x3f);
|
||||||
|
|
||||||
|
if (flags == DS3231AlarmTwoControl_HoursMinutesDayOfWeekMatch)
|
||||||
|
{
|
||||||
|
dayOf = RtcDateTime::ConvertRtcToDow(dayOf);
|
||||||
|
}
|
||||||
|
|
||||||
|
return DS3231AlarmTwo(dayOf, hour, minute, (DS3231AlarmTwoControl)flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Latch must be called after an alarm otherwise it will not
|
||||||
|
// trigger again
|
||||||
|
DS3231AlarmFlag LatchAlarmsTriggeredFlags()
|
||||||
|
{
|
||||||
|
uint8_t sreg = getReg(DS3231_REG_STATUS);
|
||||||
|
uint8_t alarmFlags = (sreg & DS3231_AIFMASK);
|
||||||
|
sreg &= ~DS3231_AIFMASK; // clear the flags
|
||||||
|
setReg(DS3231_REG_STATUS, sreg);
|
||||||
|
return (DS3231AlarmFlag)alarmFlags;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ForceTemperatureCompensationUpdate(bool block)
|
||||||
|
{
|
||||||
|
uint8_t creg = getReg(DS3231_REG_CONTROL);
|
||||||
|
creg |= _BV(DS3231_CONV); // Write CONV bit
|
||||||
|
setReg(DS3231_REG_CONTROL, creg);
|
||||||
|
|
||||||
|
while (block && (creg & _BV(DS3231_CONV)) != 0)
|
||||||
|
{
|
||||||
|
// Block until CONV is 0
|
||||||
|
creg = getReg(DS3231_REG_CONTROL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int8_t GetAgingOffset()
|
||||||
|
{
|
||||||
|
return getReg(DS3231_REG_AGING);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetAgingOffset(int8_t value)
|
||||||
|
{
|
||||||
|
setReg(DS3231_REG_AGING, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
T_WIRE_METHOD& _wire;
|
||||||
|
|
||||||
|
uint8_t getReg(uint8_t regAddress)
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS3231_ADDRESS);
|
||||||
|
_wire.write(regAddress);
|
||||||
|
_wire.endTransmission();
|
||||||
|
|
||||||
|
// control register
|
||||||
|
_wire.requestFrom(DS3231_ADDRESS, (uint8_t)1);
|
||||||
|
|
||||||
|
uint8_t regValue = _wire.read();
|
||||||
|
return regValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setReg(uint8_t regAddress, uint8_t regValue)
|
||||||
|
{
|
||||||
|
_wire.beginTransmission(DS3231_ADDRESS);
|
||||||
|
_wire.write(regAddress);
|
||||||
|
_wire.write(regValue);
|
||||||
|
_wire.endTransmission();
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __RTCDS3231_H__
|
154
firmware/lib/Rtc-master/src/RtcDateTime.cpp
Normal file
154
firmware/lib/Rtc-master/src/RtcDateTime.cpp
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include "RtcDateTime.h"
|
||||||
|
|
||||||
|
const uint8_t c_daysInMonth[] PROGMEM = { 31,28,31,30,31,30,31,31,30,31,30,31 };
|
||||||
|
|
||||||
|
RtcDateTime::RtcDateTime(uint32_t secondsFrom2000)
|
||||||
|
{
|
||||||
|
_initWithSecondsFrom2000<uint32_t>(secondsFrom2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t StringToUint8(const char* pString)
|
||||||
|
{
|
||||||
|
uint8_t value = 0;
|
||||||
|
|
||||||
|
// skip leading 0 and spaces
|
||||||
|
while ('0' == *pString || *pString == ' ')
|
||||||
|
{
|
||||||
|
pString++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// calculate number until we hit non-numeral char
|
||||||
|
while ('0' <= *pString && *pString <= '9')
|
||||||
|
{
|
||||||
|
value *= 10;
|
||||||
|
value += *pString - '0';
|
||||||
|
pString++;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcDateTime::RtcDateTime(const char* date, const char* time)
|
||||||
|
{
|
||||||
|
// sample input: date = "Dec 26 2009", time = "12:34:56"
|
||||||
|
_yearFrom2000 = StringToUint8(date + 9);
|
||||||
|
// Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
|
||||||
|
switch (date[0])
|
||||||
|
{
|
||||||
|
case 'J':
|
||||||
|
if ( date[1] == 'a' )
|
||||||
|
_month = 1;
|
||||||
|
else if ( date[2] == 'n' )
|
||||||
|
_month = 6;
|
||||||
|
else
|
||||||
|
_month = 7;
|
||||||
|
break;
|
||||||
|
case 'F':
|
||||||
|
_month = 2;
|
||||||
|
break;
|
||||||
|
case 'A':
|
||||||
|
_month = date[1] == 'p' ? 4 : 8;
|
||||||
|
break;
|
||||||
|
case 'M':
|
||||||
|
_month = date[2] == 'r' ? 3 : 5;
|
||||||
|
break;
|
||||||
|
case 'S':
|
||||||
|
_month = 9;
|
||||||
|
break;
|
||||||
|
case 'O':
|
||||||
|
_month = 10;
|
||||||
|
break;
|
||||||
|
case 'N':
|
||||||
|
_month = 11;
|
||||||
|
break;
|
||||||
|
case 'D':
|
||||||
|
_month = 12;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_dayOfMonth = StringToUint8(date + 4);
|
||||||
|
_hour = StringToUint8(time);
|
||||||
|
_minute = StringToUint8(time + 3);
|
||||||
|
_second = StringToUint8(time + 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> T DaysSinceFirstOfYear2000(uint16_t year, uint8_t month, uint8_t dayOfMonth)
|
||||||
|
{
|
||||||
|
T days = dayOfMonth;
|
||||||
|
for (uint8_t indexMonth = 1; indexMonth < month; ++indexMonth)
|
||||||
|
{
|
||||||
|
days += pgm_read_byte(c_daysInMonth + indexMonth - 1);
|
||||||
|
}
|
||||||
|
if (month > 2 && year % 4 == 0)
|
||||||
|
{
|
||||||
|
days++;
|
||||||
|
}
|
||||||
|
return days + 365 * year + (year + 3) / 4 - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T> T SecondsIn(T days, uint8_t hours, uint8_t minutes, uint8_t seconds)
|
||||||
|
{
|
||||||
|
return ((days * 24L + hours) * 60 + minutes) * 60 + seconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t RtcDateTime::DayOfWeek() const
|
||||||
|
{
|
||||||
|
uint16_t days = DaysSinceFirstOfYear2000<uint16_t>(_yearFrom2000, _month, _dayOfMonth);
|
||||||
|
return (days + 6) % 7; // Jan 1, 2000 is a Saturday, i.e. returns 6
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t RtcDateTime::TotalSeconds() const
|
||||||
|
{
|
||||||
|
uint16_t days = DaysSinceFirstOfYear2000<uint16_t>(_yearFrom2000, _month, _dayOfMonth);
|
||||||
|
return SecondsIn<uint32_t>(days, _hour, _minute, _second);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t RtcDateTime::TotalSeconds64() const
|
||||||
|
{
|
||||||
|
uint32_t days = DaysSinceFirstOfYear2000<uint32_t>(_yearFrom2000, _month, _dayOfMonth);
|
||||||
|
return SecondsIn<uint64_t>(days, _hour, _minute, _second);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RtcDateTime::InitWithIso8601(const char* date)
|
||||||
|
{
|
||||||
|
// sample input: date = "Sat, 26 Dec 2009 12:34:56 GMT"
|
||||||
|
_yearFrom2000 = StringToUint8(date + 13);
|
||||||
|
// Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
|
||||||
|
switch (date[8])
|
||||||
|
{
|
||||||
|
case 'J':
|
||||||
|
if (date[1 + 8] == 'a')
|
||||||
|
_month = 1;
|
||||||
|
else if (date[2 + 8] == 'n')
|
||||||
|
_month = 6;
|
||||||
|
else
|
||||||
|
_month = 7;
|
||||||
|
break;
|
||||||
|
case 'F':
|
||||||
|
_month = 2;
|
||||||
|
break;
|
||||||
|
case 'A':
|
||||||
|
_month = date[1 + 8] == 'p' ? 4 : 8;
|
||||||
|
break;
|
||||||
|
case 'M':
|
||||||
|
_month = date[2 + 8] == 'r' ? 3 : 5;
|
||||||
|
break;
|
||||||
|
case 'S':
|
||||||
|
_month = 9;
|
||||||
|
break;
|
||||||
|
case 'O':
|
||||||
|
_month = 10;
|
||||||
|
break;
|
||||||
|
case 'N':
|
||||||
|
_month = 11;
|
||||||
|
break;
|
||||||
|
case 'D':
|
||||||
|
_month = 12;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
_dayOfMonth = StringToUint8(date + 5);
|
||||||
|
_hour = StringToUint8(date + 17);
|
||||||
|
_minute = StringToUint8(date + 20);
|
||||||
|
_second = StringToUint8(date + 23);
|
||||||
|
}
|
178
firmware/lib/Rtc-master/src/RtcDateTime.h
Normal file
178
firmware/lib/Rtc-master/src/RtcDateTime.h
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
|
||||||
|
|
||||||
|
#ifndef __RTCDATETIME_H__
|
||||||
|
#define __RTCDATETIME_H__
|
||||||
|
|
||||||
|
// ESP32 complains if not included
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#include <inttypes.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum DayOfWeek
|
||||||
|
{
|
||||||
|
DayOfWeek_Sunday = 0,
|
||||||
|
DayOfWeek_Monday,
|
||||||
|
DayOfWeek_Tuesday,
|
||||||
|
DayOfWeek_Wednesday,
|
||||||
|
DayOfWeek_Thursday,
|
||||||
|
DayOfWeek_Friday,
|
||||||
|
DayOfWeek_Saturday,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t c_OriginYear = 2000;
|
||||||
|
const uint32_t c_Epoch32OfOriginYear = 946684800;
|
||||||
|
extern const uint8_t c_daysInMonth[] PROGMEM;
|
||||||
|
|
||||||
|
class RtcDateTime
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RtcDateTime(uint32_t secondsFrom2000 = 0);
|
||||||
|
RtcDateTime(uint16_t year,
|
||||||
|
uint8_t month,
|
||||||
|
uint8_t dayOfMonth,
|
||||||
|
uint8_t hour,
|
||||||
|
uint8_t minute,
|
||||||
|
uint8_t second) :
|
||||||
|
_yearFrom2000((year >= c_OriginYear) ? year - c_OriginYear : year),
|
||||||
|
_month(month),
|
||||||
|
_dayOfMonth(dayOfMonth),
|
||||||
|
_hour(hour),
|
||||||
|
_minute(minute),
|
||||||
|
_second(second)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// RtcDateTime compileDateTime(__DATE__, __TIME__);
|
||||||
|
RtcDateTime(const char* date, const char* time);
|
||||||
|
|
||||||
|
uint16_t Year() const
|
||||||
|
{
|
||||||
|
return c_OriginYear + _yearFrom2000;
|
||||||
|
}
|
||||||
|
uint8_t Month() const
|
||||||
|
{
|
||||||
|
return _month;
|
||||||
|
}
|
||||||
|
uint8_t Day() const
|
||||||
|
{
|
||||||
|
return _dayOfMonth;
|
||||||
|
}
|
||||||
|
uint8_t Hour() const
|
||||||
|
{
|
||||||
|
return _hour;
|
||||||
|
}
|
||||||
|
uint8_t Minute() const
|
||||||
|
{
|
||||||
|
return _minute;
|
||||||
|
}
|
||||||
|
uint8_t Second() const
|
||||||
|
{
|
||||||
|
return _second;
|
||||||
|
}
|
||||||
|
// 0 = Sunday, 1 = Monday, ... 6 = Saturday
|
||||||
|
uint8_t DayOfWeek() const;
|
||||||
|
|
||||||
|
// 32-bit times as seconds since 1/1/2000
|
||||||
|
uint32_t TotalSeconds() const;
|
||||||
|
uint64_t TotalSeconds64() const;
|
||||||
|
|
||||||
|
// add seconds
|
||||||
|
void operator += (uint32_t seconds)
|
||||||
|
{
|
||||||
|
RtcDateTime after = RtcDateTime( TotalSeconds() + seconds );
|
||||||
|
*this = after;
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove seconds
|
||||||
|
void operator -= (uint32_t seconds)
|
||||||
|
{
|
||||||
|
RtcDateTime before = RtcDateTime( TotalSeconds() - seconds );
|
||||||
|
*this = before;
|
||||||
|
}
|
||||||
|
|
||||||
|
// allows for comparisons to just work (==, <, >, <=, >=, !=)
|
||||||
|
operator uint32_t() const
|
||||||
|
{
|
||||||
|
return TotalSeconds();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Epoch32 support
|
||||||
|
uint32_t Epoch32Time() const
|
||||||
|
{
|
||||||
|
return TotalSeconds() + c_Epoch32OfOriginYear;
|
||||||
|
}
|
||||||
|
void InitWithEpoch32Time(uint32_t time)
|
||||||
|
{
|
||||||
|
_initWithSecondsFrom2000<uint32_t>(time - c_Epoch32OfOriginYear);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Epoch64 support
|
||||||
|
uint64_t Epoch64Time() const
|
||||||
|
{
|
||||||
|
return TotalSeconds64() + c_Epoch32OfOriginYear;
|
||||||
|
}
|
||||||
|
void InitWithEpoch64Time(uint64_t time)
|
||||||
|
{
|
||||||
|
_initWithSecondsFrom2000<uint64_t>(time - c_Epoch32OfOriginYear);
|
||||||
|
}
|
||||||
|
|
||||||
|
void InitWithIso8601(const char* date);
|
||||||
|
|
||||||
|
|
||||||
|
// convert our Day of Week to Rtc Day of Week
|
||||||
|
// RTC Hardware Day of Week is 1-7, 1 = Monday
|
||||||
|
static uint8_t ConvertDowToRtc(uint8_t dow)
|
||||||
|
{
|
||||||
|
if (dow == 0)
|
||||||
|
{
|
||||||
|
dow = 7;
|
||||||
|
}
|
||||||
|
return dow;
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert Rtc Day of Week to our Day of Week
|
||||||
|
static uint8_t ConvertRtcToDow(uint8_t rtcDow)
|
||||||
|
{
|
||||||
|
return (rtcDow % 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
uint8_t _yearFrom2000;
|
||||||
|
uint8_t _month;
|
||||||
|
uint8_t _dayOfMonth;
|
||||||
|
uint8_t _hour;
|
||||||
|
uint8_t _minute;
|
||||||
|
uint8_t _second;
|
||||||
|
|
||||||
|
template <typename T> void _initWithSecondsFrom2000(T secondsFrom2000)
|
||||||
|
{
|
||||||
|
_second = secondsFrom2000 % 60;
|
||||||
|
T timeFrom2000 = secondsFrom2000 / 60;
|
||||||
|
_minute = timeFrom2000 % 60;
|
||||||
|
timeFrom2000 /= 60;
|
||||||
|
_hour = timeFrom2000 % 24;
|
||||||
|
T days = timeFrom2000 / 24;
|
||||||
|
T leapDays;
|
||||||
|
|
||||||
|
for (_yearFrom2000 = 0;; ++_yearFrom2000)
|
||||||
|
{
|
||||||
|
leapDays = (_yearFrom2000 % 4 == 0) ? 1 : 0;
|
||||||
|
if (days < 365U + leapDays)
|
||||||
|
break;
|
||||||
|
days -= 365 + leapDays;
|
||||||
|
}
|
||||||
|
for (_month = 1;; ++_month)
|
||||||
|
{
|
||||||
|
uint8_t daysPerMonth = pgm_read_byte(c_daysInMonth + _month - 1);
|
||||||
|
if (leapDays && _month == 2)
|
||||||
|
daysPerMonth++;
|
||||||
|
if (days < daysPerMonth)
|
||||||
|
break;
|
||||||
|
days -= daysPerMonth;
|
||||||
|
}
|
||||||
|
_dayOfMonth = days + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __RTCDATETIME_H__
|
153
firmware/lib/Rtc-master/src/RtcTemperature.h
Normal file
153
firmware/lib/Rtc-master/src/RtcTemperature.h
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
|
||||||
|
|
||||||
|
#ifndef __RTCTEMPERATURE_H__
|
||||||
|
#define __RTCTEMPERATURE_H__
|
||||||
|
|
||||||
|
|
||||||
|
class RtcTemperature
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// Constructor
|
||||||
|
// a) Merge RTC registers into signed scaled temperature (x256),
|
||||||
|
// then bind to RTC resolution.
|
||||||
|
// | r11h | DP | r12h |
|
||||||
|
// Bit: 15 14 13 12 11 10 9 8 . 7 6 5 4 3 2 1 0 -1 -2
|
||||||
|
// s i i i i i i i . f f 0 0 0 0 0 0
|
||||||
|
//
|
||||||
|
// b) Rescale to (x4) by right-shifting (6) bits
|
||||||
|
// | | DP | |
|
||||||
|
// Bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 . 1 0 -1 -2
|
||||||
|
// s s s s s s s i i i i i i i f f 0 0
|
||||||
|
RtcTemperature(int8_t highByteDegreesC, uint8_t lowByteDegreesC)
|
||||||
|
{
|
||||||
|
int16_t scaledDegC = ((highByteDegreesC << 8) | (lowByteDegreesC & 0xC0)) >> 6;
|
||||||
|
_centiDegC = scaledDegC * 100 / 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcTemperature(int16_t centiDegC = 0) :
|
||||||
|
_centiDegC(centiDegC)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// Float temperature Celsius
|
||||||
|
float AsFloatDegC()
|
||||||
|
{
|
||||||
|
return (float)_centiDegC / 100.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Float temperature Fahrenheit
|
||||||
|
float AsFloatDegF()
|
||||||
|
{
|
||||||
|
return AsFloatDegC() * 1.8f + 32.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// centi degrees (1/100th of a degree),
|
||||||
|
int16_t AsCentiDegC()
|
||||||
|
{
|
||||||
|
return _centiDegC;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Print(Stream& target, uint8_t decimals = 2, char decimal = '.')
|
||||||
|
{
|
||||||
|
int16_t decimalDivisor = 1;
|
||||||
|
int16_t integerPart;
|
||||||
|
int16_t decimalPart;
|
||||||
|
|
||||||
|
{
|
||||||
|
int16_t rounded = abs(_centiDegC);
|
||||||
|
// round up as needed
|
||||||
|
if (decimals == 0)
|
||||||
|
{
|
||||||
|
rounded += 50;
|
||||||
|
}
|
||||||
|
else if (decimals == 1)
|
||||||
|
{
|
||||||
|
rounded += 5;
|
||||||
|
decimalDivisor = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
integerPart = rounded / 100;
|
||||||
|
decimalPart = (rounded % 100) / decimalDivisor;
|
||||||
|
}
|
||||||
|
|
||||||
|
// test for zero before printing negative sign to not print-0.00
|
||||||
|
if (_centiDegC < 0 && (integerPart != 0 || decimalPart != 0))
|
||||||
|
{
|
||||||
|
target.print('-');
|
||||||
|
}
|
||||||
|
|
||||||
|
// print integer part
|
||||||
|
target.print(integerPart);
|
||||||
|
|
||||||
|
// print decimal part
|
||||||
|
if (decimals != 0)
|
||||||
|
{
|
||||||
|
target.print(decimal);
|
||||||
|
|
||||||
|
if (decimalPart != 0)
|
||||||
|
{
|
||||||
|
target.print(decimalPart);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// append zeros as requested
|
||||||
|
while (decimals > 0)
|
||||||
|
{
|
||||||
|
target.print('0');
|
||||||
|
decimals--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==(const RtcTemperature& other) const
|
||||||
|
{
|
||||||
|
return (_centiDegC == other._centiDegC);
|
||||||
|
};
|
||||||
|
|
||||||
|
bool operator>(const RtcTemperature& other) const
|
||||||
|
{
|
||||||
|
return (_centiDegC > other._centiDegC);
|
||||||
|
};
|
||||||
|
|
||||||
|
bool operator<(const RtcTemperature& other) const
|
||||||
|
{
|
||||||
|
return (_centiDegC < other._centiDegC);
|
||||||
|
};
|
||||||
|
|
||||||
|
bool operator>=(const RtcTemperature& other) const
|
||||||
|
{
|
||||||
|
return (_centiDegC >= other._centiDegC);
|
||||||
|
};
|
||||||
|
|
||||||
|
bool operator<=(const RtcTemperature& other) const
|
||||||
|
{
|
||||||
|
return (_centiDegC <= other._centiDegC);
|
||||||
|
};
|
||||||
|
|
||||||
|
bool operator!=(const RtcTemperature& other) const
|
||||||
|
{
|
||||||
|
return (_centiDegC != other._centiDegC);
|
||||||
|
};
|
||||||
|
|
||||||
|
RtcTemperature operator-(const RtcTemperature& right)
|
||||||
|
{
|
||||||
|
RtcTemperature result;
|
||||||
|
|
||||||
|
result._centiDegC = (_centiDegC - right._centiDegC);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
RtcTemperature operator+(const RtcTemperature& right)
|
||||||
|
{
|
||||||
|
RtcTemperature result;
|
||||||
|
|
||||||
|
result._centiDegC = (_centiDegC + right._centiDegC);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int16_t _centiDegC; // 1/100th of a degree temperature (100 x degC)
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __RTCTEMPERATURE_H__
|
34
firmware/lib/Rtc-master/src/RtcUtility.cpp
Normal file
34
firmware/lib/Rtc-master/src/RtcUtility.cpp
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include "RtcUtility.h"
|
||||||
|
|
||||||
|
uint8_t BcdToUint8(uint8_t val)
|
||||||
|
{
|
||||||
|
return val - 6 * (val >> 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t Uint8ToBcd(uint8_t val)
|
||||||
|
{
|
||||||
|
return val + 6 * (val / 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t BcdToBin24Hour(uint8_t bcdHour)
|
||||||
|
{
|
||||||
|
uint8_t hour;
|
||||||
|
if (bcdHour & 0x40)
|
||||||
|
{
|
||||||
|
// 12 hour mode, convert to 24
|
||||||
|
bool isPm = ((bcdHour & 0x20) != 0);
|
||||||
|
|
||||||
|
hour = BcdToUint8(bcdHour & 0x1f);
|
||||||
|
if (isPm)
|
||||||
|
{
|
||||||
|
hour += 12;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
hour = BcdToUint8(bcdHour);
|
||||||
|
}
|
||||||
|
return hour;
|
||||||
|
}
|
19
firmware/lib/Rtc-master/src/RtcUtility.h
Normal file
19
firmware/lib/Rtc-master/src/RtcUtility.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
#ifndef __RTCUTILITY_H__
|
||||||
|
#define __RTCUTILITY_H__
|
||||||
|
|
||||||
|
// ESP32 complains if not included
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#include <inttypes.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// for some reason, the DUE board support does not define this, even though other non AVR archs do
|
||||||
|
#ifndef _BV
|
||||||
|
#define _BV(b) (1UL << (b))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern uint8_t BcdToUint8(uint8_t val);
|
||||||
|
extern uint8_t Uint8ToBcd(uint8_t val);
|
||||||
|
extern uint8_t BcdToBin24Hour(uint8_t bcdHour);
|
||||||
|
|
||||||
|
#endif // __RTCUTILITY_H__
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user