mirror of
https://gitlab.com/fabinfra/fabhardware/FabReader2.git
synced 2025-03-12 06:31:54 +01:00
argh
This commit is contained in:
parent
2b9a0c3247
commit
95060d3db9
6
.gitmodules
vendored
Normal file
6
.gitmodules
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[submodule "Hardware/FabReader1.5/kicad-libraries"]
|
||||||
|
path = Hardware/FabReader1.5/kicad-libraries
|
||||||
|
url = https://github.com/espressif/kicad-libraries.git
|
||||||
|
[submodule "Hardware/FabReader1.5/Library/espressif"]
|
||||||
|
path = Hardware/FabReader1.5/Library/espressif
|
||||||
|
url = https://github.com/espressif/kicad-libraries.git
|
825
Hardware/FabReader1.5/FabReader1.5.kicad_pcb
Normal file
825
Hardware/FabReader1.5/FabReader1.5.kicad_pcb
Normal file
@ -0,0 +1,825 @@
|
|||||||
|
(kicad_pcb (version 20221018) (generator pcbnew)
|
||||||
|
|
||||||
|
(general
|
||||||
|
(thickness 1.6)
|
||||||
|
)
|
||||||
|
|
||||||
|
(paper "A4")
|
||||||
|
(layers
|
||||||
|
(0 "F.Cu" signal)
|
||||||
|
(31 "B.Cu" signal)
|
||||||
|
(32 "B.Adhes" user "B.Adhesive")
|
||||||
|
(33 "F.Adhes" user "F.Adhesive")
|
||||||
|
(34 "B.Paste" user)
|
||||||
|
(35 "F.Paste" user)
|
||||||
|
(36 "B.SilkS" user "B.Silkscreen")
|
||||||
|
(37 "F.SilkS" user "F.Silkscreen")
|
||||||
|
(38 "B.Mask" user)
|
||||||
|
(39 "F.Mask" user)
|
||||||
|
(40 "Dwgs.User" user "User.Drawings")
|
||||||
|
(41 "Cmts.User" user "User.Comments")
|
||||||
|
(42 "Eco1.User" user "User.Eco1")
|
||||||
|
(43 "Eco2.User" user "User.Eco2")
|
||||||
|
(44 "Edge.Cuts" user)
|
||||||
|
(45 "Margin" user)
|
||||||
|
(46 "B.CrtYd" user "B.Courtyard")
|
||||||
|
(47 "F.CrtYd" user "F.Courtyard")
|
||||||
|
(48 "B.Fab" user)
|
||||||
|
(49 "F.Fab" user)
|
||||||
|
(50 "User.1" user)
|
||||||
|
(51 "User.2" user)
|
||||||
|
(52 "User.3" user)
|
||||||
|
(53 "User.4" user)
|
||||||
|
(54 "User.5" user)
|
||||||
|
(55 "User.6" user)
|
||||||
|
(56 "User.7" user)
|
||||||
|
(57 "User.8" user)
|
||||||
|
(58 "User.9" user)
|
||||||
|
)
|
||||||
|
|
||||||
|
(setup
|
||||||
|
(pad_to_mask_clearance 0)
|
||||||
|
(pcbplotparams
|
||||||
|
(layerselection 0x00010fc_ffffffff)
|
||||||
|
(plot_on_all_layers_selection 0x0000000_00000000)
|
||||||
|
(disableapertmacros false)
|
||||||
|
(usegerberextensions false)
|
||||||
|
(usegerberattributes true)
|
||||||
|
(usegerberadvancedattributes true)
|
||||||
|
(creategerberjobfile true)
|
||||||
|
(dashed_line_dash_ratio 12.000000)
|
||||||
|
(dashed_line_gap_ratio 3.000000)
|
||||||
|
(svgprecision 4)
|
||||||
|
(plotframeref false)
|
||||||
|
(viasonmask false)
|
||||||
|
(mode 1)
|
||||||
|
(useauxorigin false)
|
||||||
|
(hpglpennumber 1)
|
||||||
|
(hpglpenspeed 20)
|
||||||
|
(hpglpendiameter 15.000000)
|
||||||
|
(dxfpolygonmode true)
|
||||||
|
(dxfimperialunits true)
|
||||||
|
(dxfusepcbnewfont true)
|
||||||
|
(psnegative false)
|
||||||
|
(psa4output false)
|
||||||
|
(plotreference true)
|
||||||
|
(plotvalue true)
|
||||||
|
(plotinvisibletext false)
|
||||||
|
(sketchpadsonfab false)
|
||||||
|
(subtractmaskfromsilk false)
|
||||||
|
(outputformat 1)
|
||||||
|
(mirror false)
|
||||||
|
(drillshape 1)
|
||||||
|
(scaleselection 1)
|
||||||
|
(outputdirectory "")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(net 0 "")
|
||||||
|
(net 1 "unconnected-(A101-NC-Pad1)")
|
||||||
|
(net 2 "unconnected-(A101-IOREF-Pad2)")
|
||||||
|
(net 3 "unconnected-(A101-~{RESET}-Pad3)")
|
||||||
|
(net 4 "+3V3")
|
||||||
|
(net 5 "GND")
|
||||||
|
(net 6 "unconnected-(A101-VIN-Pad8)")
|
||||||
|
(net 7 "NFC_IRQ")
|
||||||
|
(net 8 "unconnected-(A101-A1-Pad10)")
|
||||||
|
(net 9 "unconnected-(A101-A2-Pad11)")
|
||||||
|
(net 10 "unconnected-(A101-A3-Pad12)")
|
||||||
|
(net 11 "unconnected-(A101-SDA{slash}A4-Pad13)")
|
||||||
|
(net 12 "unconnected-(A101-SCL{slash}A5-Pad14)")
|
||||||
|
(net 13 "unconnected-(A101-D0{slash}RX-Pad15)")
|
||||||
|
(net 14 "unconnected-(A101-D1{slash}TX-Pad16)")
|
||||||
|
(net 15 "unconnected-(A101-D2-Pad17)")
|
||||||
|
(net 16 "unconnected-(A101-D3-Pad18)")
|
||||||
|
(net 17 "unconnected-(A101-D4-Pad19)")
|
||||||
|
(net 18 "unconnected-(A101-D5-Pad20)")
|
||||||
|
(net 19 "unconnected-(A101-D6-Pad21)")
|
||||||
|
(net 20 "unconnected-(A101-D7-Pad22)")
|
||||||
|
(net 21 "unconnected-(A101-D8-Pad23)")
|
||||||
|
(net 22 "unconnected-(A101-D9-Pad24)")
|
||||||
|
(net 23 "NFC_SS_N")
|
||||||
|
(net 24 "MOSI")
|
||||||
|
(net 25 "MISO")
|
||||||
|
(net 26 "SLCK")
|
||||||
|
(net 27 "unconnected-(A101-GND-Pad29)")
|
||||||
|
(net 28 "unconnected-(A101-AREF-Pad30)")
|
||||||
|
(net 29 "unconnected-(A101-SDA{slash}A4-Pad31)")
|
||||||
|
(net 30 "unconnected-(A101-SCL{slash}A5-Pad32)")
|
||||||
|
(net 31 "unconnected-(U101-3V3-Pad2)")
|
||||||
|
(net 32 "unconnected-(U101-CHIP_PU-Pad3)")
|
||||||
|
(net 33 "SCLK")
|
||||||
|
(net 34 "unconnected-(U101-GPIO16{slash}ADC2_CH5{slash}32K_N-Pad9)")
|
||||||
|
(net 35 "unconnected-(U101-GPIO17{slash}ADC2_CH6-Pad10)")
|
||||||
|
(net 36 "unconnected-(U101-GPIO18{slash}ADC2_CH7-Pad11)")
|
||||||
|
(net 37 "unconnected-(U101-GPIO8{slash}ADC1_CH7-Pad12)")
|
||||||
|
(net 38 "unconnected-(U101-GPIO3{slash}ADC1_CH2-Pad13)")
|
||||||
|
(net 39 "unconnected-(U101-GPIO46-Pad14)")
|
||||||
|
(net 40 "unconnected-(U101-GPIO9{slash}ADC1_CH8-Pad15)")
|
||||||
|
(net 41 "unconnected-(U101-GPIO10{slash}ADC1_CH9-Pad16)")
|
||||||
|
(net 42 "unconnected-(U101-GPIO11{slash}ADC2_CH0-Pad17)")
|
||||||
|
(net 43 "unconnected-(U101-GPIO12{slash}ADC2_CH1-Pad18)")
|
||||||
|
(net 44 "unconnected-(U101-GPIO13{slash}ADC2_CH2-Pad19)")
|
||||||
|
(net 45 "unconnected-(U101-GPIO14{slash}ADC2_CH3-Pad20)")
|
||||||
|
(net 46 "unconnected-(U101-5V-Pad21)")
|
||||||
|
(net 47 "unconnected-(U101-GND-Pad22)")
|
||||||
|
(net 48 "unconnected-(U101-GND-Pad23)")
|
||||||
|
(net 49 "unconnected-(U101-GND-Pad24)")
|
||||||
|
(net 50 "unconnected-(U101-GPIO19{slash}USB_D--Pad25)")
|
||||||
|
(net 51 "unconnected-(U101-GPIO20{slash}USB_D+-Pad26)")
|
||||||
|
(net 52 "unconnected-(U101-GPIO21-Pad27)")
|
||||||
|
(net 53 "unconnected-(U101-GPIO47-Pad28)")
|
||||||
|
(net 54 "unconnected-(U101-GPIO48-Pad29)")
|
||||||
|
(net 55 "unconnected-(U101-GPIO45-Pad30)")
|
||||||
|
(net 56 "unconnected-(U101-GPIO0-Pad31)")
|
||||||
|
(net 57 "unconnected-(U101-GPIO35-Pad32)")
|
||||||
|
(net 58 "unconnected-(U101-GPIO36-Pad33)")
|
||||||
|
(net 59 "unconnected-(U101-GPIO37-Pad34)")
|
||||||
|
(net 60 "DISP_SS_N")
|
||||||
|
(net 61 "DISP_DC")
|
||||||
|
(net 62 "DISP_RST")
|
||||||
|
(net 63 "DISP_BUSY_N")
|
||||||
|
(net 64 "unconnected-(U101-GPIO42{slash}MTMS-Pad39)")
|
||||||
|
(net 65 "unconnected-(U101-GPIO2{slash}ADC1_CH1-Pad40)")
|
||||||
|
(net 66 "unconnected-(U101-GPIO1{slash}ADC1_CH0-Pad41)")
|
||||||
|
(net 67 "unconnected-(U101-GPIO44{slash}U0RXD-Pad42)")
|
||||||
|
(net 68 "unconnected-(U101-GPIO43{slash}U0TXD-Pad43)")
|
||||||
|
(net 69 "DISP_CS_N")
|
||||||
|
|
||||||
|
(footprint "Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical" (layer "F.Cu")
|
||||||
|
(tstamp c24ce1e4-29a8-4dca-b1a4-eed4a27bb3ef)
|
||||||
|
(at 124.45 81.75 -90)
|
||||||
|
(descr "Through hole straight pin header, 1x08, 2.54mm pitch, single row")
|
||||||
|
(tags "Through hole pin header THT 1x08 2.54mm single row")
|
||||||
|
(property "Sheetfile" "FabReader1.5.kicad_sch")
|
||||||
|
(property "Sheetname" "")
|
||||||
|
(property "ki_description" "Generic connector, single row, 01x08, script generated")
|
||||||
|
(property "ki_keywords" "connector")
|
||||||
|
(path "/1b08339d-3a72-4809-8c9c-8377740dc375")
|
||||||
|
(attr through_hole)
|
||||||
|
(fp_text reference "J101" (at 0 -2.33 90) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp e96d8545-626d-47a4-8e80-f78d8179c719)
|
||||||
|
)
|
||||||
|
(fp_text value "Conn_01x08_Pin" (at 0 20.11 90) (layer "F.Fab")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp 19251175-3c4a-4f24-bd4a-cf77324ca7f4)
|
||||||
|
)
|
||||||
|
(fp_text user "${REFERENCE}" (at 0 8.89) (layer "F.Fab")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp 705cd682-6af6-4d8b-acf4-d024fba1bfc3)
|
||||||
|
)
|
||||||
|
(fp_line (start -1.33 -1.33) (end 0 -1.33)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 6332fd91-a852-4ddf-9816-0cd2cef99152))
|
||||||
|
(fp_line (start -1.33 0) (end -1.33 -1.33)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 7fda776c-24c3-465d-a2f2-1ae4e6d0876f))
|
||||||
|
(fp_line (start -1.33 1.27) (end -1.33 19.11)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 32d98a69-adcc-4806-94ec-d457f4d8638f))
|
||||||
|
(fp_line (start -1.33 1.27) (end 1.33 1.27)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 5f6681b8-d391-46ef-b803-93ac491919da))
|
||||||
|
(fp_line (start -1.33 19.11) (end 1.33 19.11)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp ffddf2d8-6f62-4e3b-b960-33acb8daf0fa))
|
||||||
|
(fp_line (start 1.33 1.27) (end 1.33 19.11)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp e5080e41-a2c7-4b6b-b2b4-9e906070f551))
|
||||||
|
(fp_line (start -1.8 -1.8) (end -1.8 19.55)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 6c5c73fe-95d2-490b-9153-f0f3b61806a8))
|
||||||
|
(fp_line (start -1.8 19.55) (end 1.8 19.55)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 70bc937e-0b13-40c4-a99e-e63065141220))
|
||||||
|
(fp_line (start 1.8 -1.8) (end -1.8 -1.8)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 315b739b-48e2-4987-a929-4d1800f33885))
|
||||||
|
(fp_line (start 1.8 19.55) (end 1.8 -1.8)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 1f197270-7a62-4a4b-9f80-336bbe9e0a48))
|
||||||
|
(fp_line (start -1.27 -0.635) (end -0.635 -1.27)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp b18221b9-d243-404a-a5a5-87ac93582b1c))
|
||||||
|
(fp_line (start -1.27 19.05) (end -1.27 -0.635)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6c2c28bc-f012-4ec5-b2e6-e7f386539b5c))
|
||||||
|
(fp_line (start -0.635 -1.27) (end 1.27 -1.27)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 60fa9191-f06c-469f-a6c0-2f6451e780d6))
|
||||||
|
(fp_line (start 1.27 -1.27) (end 1.27 19.05)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 262288c6-171e-45fb-a442-aec8b6590245))
|
||||||
|
(fp_line (start 1.27 19.05) (end -1.27 19.05)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp ffcdd726-f38a-491e-a840-32d0cbbd0709))
|
||||||
|
(pad "1" thru_hole rect (at 0 0 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 63 "DISP_BUSY_N") (pinfunction "Pin_1") (pintype "passive") (tstamp 2b8cd8b4-86eb-46b9-b616-194420b6a0bb))
|
||||||
|
(pad "2" thru_hole oval (at 0 2.54 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 62 "DISP_RST") (pinfunction "Pin_2") (pintype "passive") (tstamp 45594ade-8b44-42f8-ae68-0a612936cc6b))
|
||||||
|
(pad "3" thru_hole oval (at 0 5.08 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 61 "DISP_DC") (pinfunction "Pin_3") (pintype "passive") (tstamp 7f6f6e59-9434-4407-b52d-52a357c0eda3))
|
||||||
|
(pad "4" thru_hole oval (at 0 7.62 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 69 "DISP_CS_N") (pinfunction "Pin_4") (pintype "passive") (tstamp f2bf72d2-e579-4366-9971-fae12dc5aecb))
|
||||||
|
(pad "5" thru_hole oval (at 0 10.16 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 33 "SCLK") (pinfunction "Pin_5") (pintype "passive") (tstamp 9f3f4794-fa0b-4f7e-8772-86411c6293ef))
|
||||||
|
(pad "6" thru_hole oval (at 0 12.7 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 24 "MOSI") (pinfunction "Pin_6") (pintype "passive") (tstamp 2a01fb4c-2e99-40e8-a866-94167e37171c))
|
||||||
|
(pad "7" thru_hole oval (at 0 15.24 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 5 "GND") (pinfunction "Pin_7") (pintype "passive") (tstamp a8c130f1-f98b-4172-8727-bd6508f50154))
|
||||||
|
(pad "8" thru_hole oval (at 0 17.78 270) (size 1.7 1.7) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 4 "+3V3") (pinfunction "Pin_8") (pintype "passive") (tstamp 62020073-f8d1-4a02-a721-5e7b21a9592d))
|
||||||
|
(model "${KICAD6_3DMODEL_DIR}/Connector_PinHeader_2.54mm.3dshapes/PinHeader_1x08_P2.54mm_Vertical.wrl"
|
||||||
|
(offset (xyz 0 0 0))
|
||||||
|
(scale (xyz 1 1 1))
|
||||||
|
(rotate (xyz 0 0 0))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(footprint "Espressif:ESP32-S3-DevKitC" (layer "F.Cu")
|
||||||
|
(tstamp f1f5d3b0-af4b-4454-8a44-1eb639926ce7)
|
||||||
|
(at 99.3579 72.43 90)
|
||||||
|
(descr "ESP32-S3 general-purpose development board, based on ESP32-S3-WROOM-1 or ESP32-S3-WROOM-1U,It has all the ESP32-S3 pins exposed and is easy to connect and use.")
|
||||||
|
(tags "ESP32-S3")
|
||||||
|
(property "Sheetfile" "FabReader1.5.kicad_sch")
|
||||||
|
(property "Sheetname" "")
|
||||||
|
(property "ki_description" "ESP32-S3-DevKitC")
|
||||||
|
(path "/909ab781-801f-471f-885c-d4cd8f32f686")
|
||||||
|
(attr through_hole)
|
||||||
|
(fp_text reference "U101" (at 12.7 -2.1 90) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp de004ae2-bf19-49f8-b756-783fe991910f)
|
||||||
|
)
|
||||||
|
(fp_text value "ESP32-S3-DevKitC" (at 11.42632 29.46128) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp d320f3df-50b8-4547-b0e4-ff77b652ede6)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO13" (at 1.27 45.72 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 04394d8b-72bb-41f3-b632-dc6d3bb42b67)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO48" (at 21.59 38.1 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp 0c18521e-8f87-4ca7-b8d4-1750c2a6f565)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO16" (at 1.27 20.32 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 146abe8a-758c-4ccc-91b5-a4038bdc30e0)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO2" (at 21.59 10.16 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp 1902b6b9-6aee-411c-87f8-e18c15c2a3f9)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO4" (at 1.27 7.62 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 201b1d7e-7cb2-4bcc-b7ae-cf80451e80eb)
|
||||||
|
)
|
||||||
|
(fp_text user "3V3" (at 1.27 2.54 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 21065de7-759a-4310-87ba-407903875241)
|
||||||
|
)
|
||||||
|
(fp_text user "EN/RESET" (at 8.88632 5.07728 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp 2a349457-7c37-49d6-9dad-7ecb47f13bbd)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO12" (at 1.27 43.18 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 2ab39729-9a3f-4df6-a8a9-d59a85bc7e92)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO20" (at 21.59 45.72 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp 3fffd393-93ce-49bc-b93d-246c0c9d438c)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO40/MTDO" (at 21.59 17.78 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp 40e69db2-1a64-4679-b8ae-08f51ecce364)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO37" (at 21.59 25.4 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp 4657fae3-0daa-4544-95c0-48c3dba1f02d)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO6" (at 1.27 12.7 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 4f1b6fca-f5f5-4680-92ea-9e7c278eb700)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO46" (at 1.27 33.02 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 534e53af-a9bf-46e5-bfa2-23f5cb72d332)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO39/MTCK" (at 21.59 20.32 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp 58ef421a-9316-4cea-9913-367102c2e066)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO18" (at 1.27 25.4 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 5ccf322b-ee2f-4c3a-9350-0a6a598890d1)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO8" (at 1.27 27.94 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 65ce5cd7-f875-43ce-bef5-0cda869a3604)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO10" (at 1.27 38.1 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 662fa032-7e81-482a-b401-6b2ce483e0b5)
|
||||||
|
)
|
||||||
|
(fp_text user "GND" (at 21.59 0 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp 6dbe4dc3-cfbd-4804-95a8-cf2a44591aaf)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO17" (at 1.27 22.86 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 6dfb32a6-b3ab-4980-a63e-b3f1e7d56151)
|
||||||
|
)
|
||||||
|
(fp_text user "GND" (at 1.52032 53.33728 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 739c3b30-3b6e-4bc1-a481-68a4c82989de)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO35" (at 21.59 30.48 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp 7be9a432-292d-47ce-b527-85681a79ad7c)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO14" (at 1.27 48.26 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 872335e7-4dcd-4b13-a817-c5ecea040ca7)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO9" (at 1.27 35.56 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 88d5a85d-db33-4214-84a6-3d4a5f13bb79)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO5" (at 1.27 10.16 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 8d3bc27d-190e-479e-8979-f536d467544c)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO15" (at 1.27 17.78 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 99661758-7e4f-4174-b914-d3978097e23c)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO43/U0TXD" (at 21.59 2.54 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp 9b938fea-4c4d-487d-af0e-df511d277525)
|
||||||
|
)
|
||||||
|
(fp_text user "3V3" (at 1.27 0 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp 9c84bd45-343a-42db-807d-25d4ebf1d312)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO36" (at 21.59 27.94 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp a8298d17-4b21-49fa-a166-3cc6a9e9ebd0)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO7" (at 1.27 15.24 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp acae28bc-f892-497a-83e7-830891cb6c5e)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO42/MTMS" (at 21.59 12.7 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp b8275eac-579b-49fb-8fba-3f76ce4510b9)
|
||||||
|
)
|
||||||
|
(fp_text user "GND" (at 21.59 50.8 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp bc6430a0-f3e9-4384-bd50-fff570617bc6)
|
||||||
|
)
|
||||||
|
(fp_text user "GND" (at 21.59 53.34 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp bc9f2e8e-f74d-4239-95f3-2e940cb9cbc6)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO0" (at 21.59 33.02 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp c36b75c4-1473-43f7-9134-03d54eecab27)
|
||||||
|
)
|
||||||
|
(fp_text user "5V" (at 1.52032 50.79728 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp d1ba406c-8019-4e2e-a601-655ca68b3a3b)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO47" (at 21.59 40.64 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp db87c118-3ef3-4502-9627-a44dd93c1e92)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO21" (at 21.59 43.18 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp dfe8e411-51ba-44e0-9c26-ced59eac9c49)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO1" (at 21.59 7.62 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp e120c1bc-d0f4-4d93-b67c-22ad7a834475)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO38" (at 21.59 22.86 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp eacff7bb-4bd2-4264-b45b-045a4d35eb9e)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO44/U0RXD" (at 21.59 5.08 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp ec81e333-6c76-460d-8a75-980eecea85de)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO45" (at 21.59 35.56 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp efa4e20c-1091-4483-8954-9040e7030d27)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO3" (at 1.27 30.48 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp f05bdc54-770f-45ef-9ffe-2e17538d01c0)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO19" (at 21.59 48.26 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp f1f6ae14-beff-456a-879f-203be434c375)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO11" (at 1.27 40.64 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify left))
|
||||||
|
(tstamp faa5cda0-dfa7-48d6-bf58-5dfc145b6746)
|
||||||
|
)
|
||||||
|
(fp_text user "GPIO41/MTDI" (at 21.59 15.24 90 unlocked) (layer "F.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify right))
|
||||||
|
(tstamp fd4a362d-a543-4f08-9964-989b3e983511)
|
||||||
|
)
|
||||||
|
(fp_text user "REF**" (at -0.00368 -0.00272 90) (layer "F.Fab")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)))
|
||||||
|
(tstamp 040a0e99-214f-4713-a87e-0149e2808cdf)
|
||||||
|
)
|
||||||
|
(fp_line (start -1.5 62.79728) (end 24.359999 62.79728)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 293bf5d6-d921-4569-90cb-5b7c38d0537b))
|
||||||
|
(fp_line (start -1.499999 -1.1) (end -1.5 62.79728)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp ab73bdf2-d2ec-4b7b-a88e-f93b7e1a2ce1))
|
||||||
|
(fp_line (start 2.46012 -7.01312) (end 20.44332 -7.01312)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp d25ed1c4-672d-4bb4-ae7d-e5dfb1bd8c08))
|
||||||
|
(fp_line (start 2.46012 -1.12032) (end 2.46012 -7.01312)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 5a67d15f-4b5b-42ac-b2a1-fd37dd272cc4))
|
||||||
|
(fp_line (start 20.44332 -7.01312) (end 20.44332 -1.12032)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 0e3fb334-b0c8-4b84-b130-574f8617a19e))
|
||||||
|
(fp_line (start 24.359999 62.79728) (end 24.36 -1.1)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 068414f1-a937-470d-a54e-57543ddc1cc1))
|
||||||
|
(fp_line (start 24.36 -1.1) (end -1.499999 -1.1)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 06569907-9f75-45b0-9351-0d1181b5a887))
|
||||||
|
(fp_line (start -1.25 -0.85) (end 24.11 -0.85)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 14804da3-505b-4a1d-8b74-2ee18f0201dd))
|
||||||
|
(fp_line (start -1.25 62.54728) (end -1.25 -0.85)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp d232ee07-86b0-4dbd-846b-134e0e1a8a2e))
|
||||||
|
(fp_line (start 24.11 -0.85) (end 24.11 62.54728)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 7caeb416-59b0-4009-9017-c56b136aee8f))
|
||||||
|
(fp_line (start 24.11 62.54728) (end -1.25 62.54728)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 27243339-6cab-47a1-84c1-4d41bd5490b7))
|
||||||
|
(pad "1" thru_hole rect (at 0 0) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 4 "+3V3") (pinfunction "3V3") (pintype "power_in") (tstamp 3983f0ec-d49f-427b-8a73-4a322c192fc0))
|
||||||
|
(pad "2" thru_hole oval (at 0 2.54) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 31 "unconnected-(U101-3V3-Pad2)") (pinfunction "3V3") (pintype "power_in") (tstamp 6ab4f172-b197-4250-934b-de82d96436aa))
|
||||||
|
(pad "3" thru_hole oval (at 0 5.08) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 32 "unconnected-(U101-CHIP_PU-Pad3)") (pinfunction "CHIP_PU") (pintype "input") (tstamp 9b681110-b0d4-4bfd-8dc1-a326a987770f))
|
||||||
|
(pad "4" thru_hole oval (at 0 7.62) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 23 "NFC_SS_N") (pinfunction "GPIO4/ADC1_CH3") (pintype "bidirectional") (tstamp 48bd2580-c09a-45a6-a268-6ab00ff2132a))
|
||||||
|
(pad "5" thru_hole oval (at 0 10.16) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 33 "SCLK") (pinfunction "GPIO5/ADC1_CH4") (pintype "bidirectional") (tstamp 8d3906e6-a085-4e0a-9b86-83a322070c22))
|
||||||
|
(pad "6" thru_hole oval (at 0 12.7) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 24 "MOSI") (pinfunction "GPIO6/ADC1_CH5") (pintype "bidirectional") (tstamp fca6b445-85f2-4cae-8e18-015ba5ed40e7))
|
||||||
|
(pad "7" thru_hole oval (at 0 15.24) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 25 "MISO") (pinfunction "GPIO7/ADC1_CH6") (pintype "bidirectional") (tstamp a4c0f518-4056-4a84-b6f0-f5f22f31fd09))
|
||||||
|
(pad "8" thru_hole oval (at 0 17.78) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 7 "NFC_IRQ") (pinfunction "GPIO15/ADC2_CH4/32K_P") (pintype "bidirectional") (tstamp c22d3b1a-af78-458a-b72f-4f9b11b572fa))
|
||||||
|
(pad "9" thru_hole oval (at 0 20.32) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 34 "unconnected-(U101-GPIO16{slash}ADC2_CH5{slash}32K_N-Pad9)") (pinfunction "GPIO16/ADC2_CH5/32K_N") (pintype "bidirectional") (tstamp a03ffd42-a2ad-46dc-a825-3ec10885aa55))
|
||||||
|
(pad "10" thru_hole oval (at 0 22.86) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 35 "unconnected-(U101-GPIO17{slash}ADC2_CH6-Pad10)") (pinfunction "GPIO17/ADC2_CH6") (pintype "bidirectional") (tstamp 6bb1c7d1-3d68-4f76-a9e7-8eb3d2a074b6))
|
||||||
|
(pad "11" thru_hole oval (at 0 25.4) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 36 "unconnected-(U101-GPIO18{slash}ADC2_CH7-Pad11)") (pinfunction "GPIO18/ADC2_CH7") (pintype "bidirectional") (tstamp 34e3b6cb-a736-4a5b-a666-2558e3d90ab8))
|
||||||
|
(pad "12" thru_hole oval (at 0 27.94) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 37 "unconnected-(U101-GPIO8{slash}ADC1_CH7-Pad12)") (pinfunction "GPIO8/ADC1_CH7") (pintype "bidirectional") (tstamp 53fe93b8-2e87-42ed-bd52-aa3272436e83))
|
||||||
|
(pad "13" thru_hole oval (at 0 30.48) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 38 "unconnected-(U101-GPIO3{slash}ADC1_CH2-Pad13)") (pinfunction "GPIO3/ADC1_CH2") (pintype "bidirectional") (tstamp 548c01f7-0a08-43f7-9f7c-6a2202eb0010))
|
||||||
|
(pad "14" thru_hole oval (at 0 33.02) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 39 "unconnected-(U101-GPIO46-Pad14)") (pinfunction "GPIO46") (pintype "bidirectional") (tstamp 80af1227-06c3-4afb-8174-01a0885d663c))
|
||||||
|
(pad "15" thru_hole oval (at 0 35.56) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 40 "unconnected-(U101-GPIO9{slash}ADC1_CH8-Pad15)") (pinfunction "GPIO9/ADC1_CH8") (pintype "bidirectional") (tstamp 69739b71-6548-4eef-a27d-a94bf13181d0))
|
||||||
|
(pad "16" thru_hole oval (at 0 38.1) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 41 "unconnected-(U101-GPIO10{slash}ADC1_CH9-Pad16)") (pinfunction "GPIO10/ADC1_CH9") (pintype "bidirectional") (tstamp 938afc70-cca4-41cc-b8f1-bd01ba40abed))
|
||||||
|
(pad "17" thru_hole oval (at 0 40.64) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 42 "unconnected-(U101-GPIO11{slash}ADC2_CH0-Pad17)") (pinfunction "GPIO11/ADC2_CH0") (pintype "bidirectional") (tstamp 66a11d4f-8519-43c1-b317-fff013e69ee8))
|
||||||
|
(pad "18" thru_hole oval (at 0 43.18) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 43 "unconnected-(U101-GPIO12{slash}ADC2_CH1-Pad18)") (pinfunction "GPIO12/ADC2_CH1") (pintype "bidirectional") (tstamp bce910e3-f0fd-415d-ba27-7d37b7706667))
|
||||||
|
(pad "19" thru_hole oval (at 0 45.72) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 44 "unconnected-(U101-GPIO13{slash}ADC2_CH2-Pad19)") (pinfunction "GPIO13/ADC2_CH2") (pintype "bidirectional") (tstamp d5b062e8-c0df-4dc0-8e12-ee46bdb5a468))
|
||||||
|
(pad "20" thru_hole oval (at -0.00368 48.25728) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 45 "unconnected-(U101-GPIO14{slash}ADC2_CH3-Pad20)") (pinfunction "GPIO14/ADC2_CH3") (pintype "bidirectional") (tstamp a3ce15bf-d058-471d-b820-d395a36295af))
|
||||||
|
(pad "21" thru_hole oval (at -0.00368 50.79728) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 46 "unconnected-(U101-5V-Pad21)") (pinfunction "5V") (pintype "power_in") (tstamp e7734c99-601e-4684-9d5f-5e75a406cbde))
|
||||||
|
(pad "22" thru_hole oval (at -0.00368 53.33728) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 47 "unconnected-(U101-GND-Pad22)") (pinfunction "GND") (pintype "power_in") (tstamp 3e7c69bf-4c2b-4e97-b6db-cb2d23f4b825))
|
||||||
|
(pad "23" thru_hole oval (at 22.86 53.34) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 48 "unconnected-(U101-GND-Pad23)") (pinfunction "GND") (pintype "power_in") (tstamp 5780e459-2907-45c6-be93-97bb365f24a7))
|
||||||
|
(pad "24" thru_hole oval (at 22.86 50.8) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 49 "unconnected-(U101-GND-Pad24)") (pinfunction "GND") (pintype "power_in") (tstamp d4810fed-4369-404a-ae44-c68185cad385))
|
||||||
|
(pad "25" thru_hole oval (at 22.86 48.26) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 50 "unconnected-(U101-GPIO19{slash}USB_D--Pad25)") (pinfunction "GPIO19/USB_D-") (pintype "bidirectional") (tstamp 80a848ec-f83c-4eee-99a4-710d6a4d9e43))
|
||||||
|
(pad "26" thru_hole oval (at 22.86 45.72) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 51 "unconnected-(U101-GPIO20{slash}USB_D+-Pad26)") (pinfunction "GPIO20/USB_D+") (pintype "bidirectional") (tstamp c6f0fe9f-ae3e-4ec4-81c1-f9fd89835ed1))
|
||||||
|
(pad "27" thru_hole oval (at 22.86 43.18) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 52 "unconnected-(U101-GPIO21-Pad27)") (pinfunction "GPIO21") (pintype "bidirectional") (tstamp 620c74c6-9fb9-4b7f-aa2b-b2aab27f47a3))
|
||||||
|
(pad "28" thru_hole oval (at 22.86 40.64) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 53 "unconnected-(U101-GPIO47-Pad28)") (pinfunction "GPIO47") (pintype "bidirectional") (tstamp 2c29c72f-5558-4d4e-909b-ac9cd9fc5f59))
|
||||||
|
(pad "29" thru_hole oval (at 22.86 38.1) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 54 "unconnected-(U101-GPIO48-Pad29)") (pinfunction "GPIO48") (pintype "bidirectional") (tstamp faf254bf-4566-45e2-865d-fd08d5796b24))
|
||||||
|
(pad "30" thru_hole oval (at 22.86 35.56) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 55 "unconnected-(U101-GPIO45-Pad30)") (pinfunction "GPIO45") (pintype "bidirectional") (tstamp a0c35926-d843-482d-bcd0-9d49dbfef033))
|
||||||
|
(pad "31" thru_hole oval (at 22.86 33.02) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 56 "unconnected-(U101-GPIO0-Pad31)") (pinfunction "GPIO0") (pintype "bidirectional") (tstamp 9bc67f25-0a4c-43f6-a78d-1c427c520862))
|
||||||
|
(pad "32" thru_hole oval (at 22.86 30.48) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 57 "unconnected-(U101-GPIO35-Pad32)") (pinfunction "GPIO35") (pintype "bidirectional") (tstamp 7a3335a3-21f5-4018-9705-d017ed87b282))
|
||||||
|
(pad "33" thru_hole oval (at 22.86 27.94) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 58 "unconnected-(U101-GPIO36-Pad33)") (pinfunction "GPIO36") (pintype "bidirectional") (tstamp e7f86be6-4b53-4dfc-babb-71fd29957820))
|
||||||
|
(pad "34" thru_hole oval (at 22.86 25.4) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 59 "unconnected-(U101-GPIO37-Pad34)") (pinfunction "GPIO37") (pintype "bidirectional") (tstamp 8fdf7b74-29db-44af-84ce-e23c3065968f))
|
||||||
|
(pad "35" thru_hole oval (at 22.86 22.86) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 60 "DISP_SS_N") (pinfunction "GPIO38") (pintype "bidirectional") (tstamp 42f83590-67e9-4878-a9f6-6c054140e273))
|
||||||
|
(pad "36" thru_hole oval (at 22.86 20.32) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 61 "DISP_DC") (pinfunction "GPIO39/MTCK") (pintype "bidirectional") (tstamp 5c615c0e-ffa2-44e4-8da9-8f017a101550))
|
||||||
|
(pad "37" thru_hole oval (at 22.86 17.78) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 62 "DISP_RST") (pinfunction "GPIO40/MTDO") (pintype "bidirectional") (tstamp bec8ae96-d042-4841-8a07-b5dd60e57ecc))
|
||||||
|
(pad "38" thru_hole oval (at 22.86 15.24) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 63 "DISP_BUSY_N") (pinfunction "GPIO41/MTDI") (pintype "bidirectional") (tstamp 8af1c0ba-d8d6-4d21-ade3-1663e68a1f7c))
|
||||||
|
(pad "39" thru_hole oval (at 22.86 12.7) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 64 "unconnected-(U101-GPIO42{slash}MTMS-Pad39)") (pinfunction "GPIO42/MTMS") (pintype "bidirectional") (tstamp 35611290-5667-444b-94da-5d148d7ff67e))
|
||||||
|
(pad "40" thru_hole oval (at 22.86 10.16) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 65 "unconnected-(U101-GPIO2{slash}ADC1_CH1-Pad40)") (pinfunction "GPIO2/ADC1_CH1") (pintype "bidirectional") (tstamp c8e679fd-ca71-4af1-a790-107370a232fd))
|
||||||
|
(pad "41" thru_hole oval (at 22.86 7.62) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 66 "unconnected-(U101-GPIO1{slash}ADC1_CH0-Pad41)") (pinfunction "GPIO1/ADC1_CH0") (pintype "bidirectional") (tstamp 28b731ef-6650-4455-9651-68d3afa8c3b6))
|
||||||
|
(pad "42" thru_hole oval (at 22.86 5.08) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 67 "unconnected-(U101-GPIO44{slash}U0RXD-Pad42)") (pinfunction "GPIO44/U0RXD") (pintype "bidirectional") (tstamp f5c1cd6f-eda8-40ab-86bd-efc5e6175736))
|
||||||
|
(pad "43" thru_hole oval (at 22.86 2.54) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 68 "unconnected-(U101-GPIO43{slash}U0TXD-Pad43)") (pinfunction "GPIO43/U0TXD") (pintype "bidirectional") (tstamp f739f380-2c97-4e79-a83a-07d15fc6482b))
|
||||||
|
(pad "44" thru_hole oval (at 22.86 0) (size 1.2 2) (drill 0.8) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 5 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 96d254b3-f6df-4b1e-ab2e-90a5cd4120ac))
|
||||||
|
)
|
||||||
|
|
||||||
|
(footprint "Module:Arduino_UNO_R3" (layer "B.Cu")
|
||||||
|
(tstamp 58ebb7f6-50a4-47fe-9e35-0d127ac126d5)
|
||||||
|
(at 101.12 102.075 -90)
|
||||||
|
(descr "Arduino UNO R3, http://www.mouser.com/pdfdocs/Gravitech_Arduino_Nano3_0.pdf")
|
||||||
|
(tags "Arduino UNO R3")
|
||||||
|
(property "Sheetfile" "FabReader1.5.kicad_sch")
|
||||||
|
(property "Sheetname" "")
|
||||||
|
(property "ki_description" "Arduino UNO Microcontroller Module, release 3")
|
||||||
|
(property "ki_keywords" "Arduino UNO R3 Microcontroller Module Atmel AVR USB")
|
||||||
|
(path "/e0d1991e-11e0-4525-84ea-6941cfa604df")
|
||||||
|
(attr through_hole)
|
||||||
|
(fp_text reference "A101" (at 1.27 3.81 90) (layer "B.SilkS")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
|
||||||
|
(tstamp ed404032-097f-4817-baf6-072d0c15416d)
|
||||||
|
)
|
||||||
|
(fp_text value "Arduino_UNO_R3" (at 0 -22.13 90) (layer "B.Fab")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
|
||||||
|
(tstamp baa90914-f4b5-4946-8371-38d1dde2ead6)
|
||||||
|
)
|
||||||
|
(fp_text user "${REFERENCE}" (at 0 -20.32 90) (layer "B.Fab")
|
||||||
|
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
|
||||||
|
(tstamp 64ee84c3-873f-47ff-912f-5550502cfc08)
|
||||||
|
)
|
||||||
|
(fp_line (start -34.42 -41.4) (end -28.07 -41.4)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp b26e026c-6dea-4ffb-a526-a4ee2c39632f))
|
||||||
|
(fp_line (start -34.42 -29.72) (end -34.42 -41.4)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp d26ab123-9008-4e12-a0b9-6e38bddf95fd))
|
||||||
|
(fp_line (start -29.97 -9.65) (end -28.07 -9.65)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp 7a75d219-04b2-4bf2-82a7-0fef7a75d183))
|
||||||
|
(fp_line (start -29.97 -0.51) (end -29.97 -9.65)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp 2f792b82-a665-4631-a86b-8dce7ae8d66e))
|
||||||
|
(fp_line (start -28.07 -50.93) (end 36.58 -50.93)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp de42df93-a05c-44ae-b6d0-a0d5f228898f))
|
||||||
|
(fp_line (start -28.07 -41.4) (end -28.07 -50.93)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp 73574a20-e08e-4ca5-b392-1463e295fda9))
|
||||||
|
(fp_line (start -28.07 -29.72) (end -34.42 -29.72)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp d10ff3fa-9954-4885-97eb-cc698dc12b03))
|
||||||
|
(fp_line (start -28.07 -9.65) (end -28.07 -29.72)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp 92d154c8-079a-465d-b942-cee9d27e11ee))
|
||||||
|
(fp_line (start -28.07 -0.51) (end -29.97 -0.51)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp a8651104-1b8b-4a34-b55a-178562bb5f51))
|
||||||
|
(fp_line (start -28.07 2.67) (end -28.07 -0.51)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp 8d637ccb-6c0a-4408-8f1d-6c900e50f6fb))
|
||||||
|
(fp_line (start 36.58 -50.93) (end 38.23 -49.28)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp b23f4057-b49b-4694-955a-954e2fd150e0))
|
||||||
|
(fp_line (start 38.23 -49.28) (end 38.23 -37.85)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp e21b58b0-650e-4ec8-a013-0cf06df7d5a7))
|
||||||
|
(fp_line (start 38.23 -37.85) (end 40.77 -35.31)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp 06f51e56-0f99-412e-84d6-409b956d1d1c))
|
||||||
|
(fp_line (start 38.23 0) (end 38.23 2.67)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp 6307eea6-d96e-436a-bb3c-c98649cce7d7))
|
||||||
|
(fp_line (start 38.23 2.67) (end -28.07 2.67)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp f8508139-3f50-4eb1-97e4-dc4d13c72123))
|
||||||
|
(fp_line (start 40.77 -35.31) (end 40.77 -2.54)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp 7864072b-ed5b-4038-a2be-c16255cc20e0))
|
||||||
|
(fp_line (start 40.77 -2.54) (end 38.23 0)
|
||||||
|
(stroke (width 0.12) (type solid)) (layer "B.SilkS") (tstamp ad213429-6c02-41fc-8de8-4c535362ad4c))
|
||||||
|
(fp_line (start -34.54 -41.53) (end -34.54 -29.59)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp e0c9ed37-430d-426d-a3d4-0961f67c679a))
|
||||||
|
(fp_line (start -34.54 -29.59) (end -28.19 -29.59)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp e200aa54-9997-47b1-9e86-59fa358227f8))
|
||||||
|
(fp_line (start -30.1 -9.78) (end -30.1 -0.38)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp 9864bf76-3124-472b-badc-4c47530a187b))
|
||||||
|
(fp_line (start -30.1 -0.38) (end -28.19 -0.38)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp 72fb73b2-0786-4597-afe6-78aabc7ad03e))
|
||||||
|
(fp_line (start -28.19 -51.05) (end -28.19 -41.53)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp c69af99e-ebff-4bff-944c-ac7f7f99d58f))
|
||||||
|
(fp_line (start -28.19 -41.53) (end -34.54 -41.53)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp b8bb6621-3d01-4a1c-a004-f0bd7f6730e9))
|
||||||
|
(fp_line (start -28.19 -29.59) (end -28.19 -9.78)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp b75e3193-c61f-4ff8-b9a0-c6e038969fa6))
|
||||||
|
(fp_line (start -28.19 -9.78) (end -30.1 -9.78)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp b417070e-4f40-4310-a7d4-4d38f1ec0046))
|
||||||
|
(fp_line (start -28.19 -0.38) (end -28.19 2.79)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp f10da927-3a27-4222-8dbb-2fe128ba18e5))
|
||||||
|
(fp_line (start -28.19 2.79) (end 38.35 2.79)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp 180f3ed7-8bdf-4352-88cc-3487debe6d0a))
|
||||||
|
(fp_line (start 36.58 -51.05) (end -28.19 -51.05)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp b61584d1-c77f-487f-b53b-a0fd8f598cb7))
|
||||||
|
(fp_line (start 38.35 -49.28) (end 36.58 -51.05)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp cade55e0-6752-4e96-8f21-207e8ffb042d))
|
||||||
|
(fp_line (start 38.35 -37.85) (end 38.35 -49.28)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp 185f9fcc-3057-4686-9d2c-6a2a80073ba8))
|
||||||
|
(fp_line (start 38.35 0) (end 40.89 -2.54)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp 8c1d190e-b323-4723-a249-4e1974c469fb))
|
||||||
|
(fp_line (start 38.35 2.79) (end 38.35 0)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp a330532b-9fd3-466e-b97f-db60e5bc2f72))
|
||||||
|
(fp_line (start 40.89 -35.31) (end 38.35 -37.85)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp 43a23aff-92e4-456a-85dd-02eb13a24280))
|
||||||
|
(fp_line (start 40.89 -2.54) (end 40.89 -35.31)
|
||||||
|
(stroke (width 0.05) (type solid)) (layer "B.CrtYd") (tstamp 5aa4f625-9819-4e74-8b9d-b6dabf742ae6))
|
||||||
|
(fp_line (start -34.29 -41.27) (end -34.29 -29.84)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp 167bc0f3-144a-4436-b8db-1a2c7919e490))
|
||||||
|
(fp_line (start -34.29 -29.84) (end -18.41 -29.84)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp e6381050-f80a-443e-b7dd-54588b16e4bd))
|
||||||
|
(fp_line (start -29.84 -9.53) (end -29.84 -0.64)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp a10245bf-e8d7-408a-ad56-e77f5a02806b))
|
||||||
|
(fp_line (start -29.84 -0.64) (end -16.51 -0.64)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp 8408749c-b44a-4174-b2ac-a2bb956354c1))
|
||||||
|
(fp_line (start -27.94 -50.8) (end -27.94 2.54)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp 708ef474-4e55-4685-8a23-14a6f3c91f87))
|
||||||
|
(fp_line (start -27.94 2.54) (end 38.1 2.54)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp 41761804-e84e-4374-b6cb-0bfefbe96cab))
|
||||||
|
(fp_line (start -18.41 -41.27) (end -34.29 -41.27)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp 6055765d-dc4d-4b8f-aa14-1cc00f84b5ad))
|
||||||
|
(fp_line (start -18.41 -29.84) (end -18.41 -41.27)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp ae481494-20cb-4b48-a719-51bdb9ab0a98))
|
||||||
|
(fp_line (start -16.51 -9.53) (end -29.84 -9.53)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp 6b1c889d-e2e1-4459-aff8-a99db5b6333e))
|
||||||
|
(fp_line (start -16.51 -0.64) (end -16.51 -9.53)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp b03f57f4-9cf1-4e85-80d7-e0ff4d083d23))
|
||||||
|
(fp_line (start 36.58 -50.8) (end -27.94 -50.8)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp d3a99e71-da3a-4e2a-8e3a-e0f7753c862c))
|
||||||
|
(fp_line (start 38.1 -49.28) (end 36.58 -50.8)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp e49797b4-fcd7-478c-b5d0-bc59dc7533c4))
|
||||||
|
(fp_line (start 38.1 -37.85) (end 38.1 -49.28)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp cd573a44-6115-4073-b0cc-fc0d67bc69f9))
|
||||||
|
(fp_line (start 38.1 0) (end 40.64 -2.54)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp e457cc5f-77f7-43ac-916d-fbaed61e95b1))
|
||||||
|
(fp_line (start 38.1 2.54) (end 38.1 0)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp ae948fd2-fde1-4ae9-9d26-94b54c873cea))
|
||||||
|
(fp_line (start 40.64 -35.31) (end 38.1 -37.85)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp a3d33813-fda8-4ed9-bc8f-5ec4ae78faf3))
|
||||||
|
(fp_line (start 40.64 -2.54) (end 40.64 -35.31)
|
||||||
|
(stroke (width 0.1) (type solid)) (layer "B.Fab") (tstamp 49e48392-fb84-4d84-a664-93314d8fd7b9))
|
||||||
|
(pad "1" thru_hole rect (at 0 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 1 "unconnected-(A101-NC-Pad1)") (pinfunction "NC") (pintype "no_connect") (tstamp f7515c24-5205-417e-a753-8358959a8f9a))
|
||||||
|
(pad "2" thru_hole oval (at 2.54 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 2 "unconnected-(A101-IOREF-Pad2)") (pinfunction "IOREF") (pintype "output") (tstamp 02958a5e-2866-4500-9fff-c69a46b00b0e))
|
||||||
|
(pad "3" thru_hole oval (at 5.08 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 3 "unconnected-(A101-~{RESET}-Pad3)") (pinfunction "~{RESET}") (pintype "input") (tstamp 7ce639d9-ccab-4247-8186-2063f3d134eb))
|
||||||
|
(pad "4" thru_hole oval (at 7.62 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 4 "+3V3") (pinfunction "3V3") (pintype "power_out") (tstamp e8516082-aaa3-4868-ad46-e289f389753b))
|
||||||
|
(pad "5" thru_hole oval (at 10.16 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 4 "+3V3") (pinfunction "+5V") (pintype "power_out") (tstamp 46537b62-8a6e-4f22-9ffa-51016803e8eb))
|
||||||
|
(pad "6" thru_hole oval (at 12.7 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 5 "GND") (pinfunction "GND") (pintype "power_in") (tstamp 1dd19657-4f80-4a8f-b2fd-f590f5b21508))
|
||||||
|
(pad "7" thru_hole oval (at 15.24 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 5 "GND") (pinfunction "GND") (pintype "power_in") (tstamp b903a468-6690-4bf7-8f7e-cbc84eada7f9))
|
||||||
|
(pad "8" thru_hole oval (at 17.78 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 6 "unconnected-(A101-VIN-Pad8)") (pinfunction "VIN") (pintype "power_in") (tstamp 3ca81f87-2b1f-403a-a66d-652496fb42ad))
|
||||||
|
(pad "9" thru_hole oval (at 22.86 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 7 "NFC_IRQ") (pinfunction "A0") (pintype "bidirectional") (tstamp c20b3c00-c949-4a0c-9ee1-92669b2964a3))
|
||||||
|
(pad "10" thru_hole oval (at 25.4 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 8 "unconnected-(A101-A1-Pad10)") (pinfunction "A1") (pintype "bidirectional") (tstamp 97dfb801-c455-4933-b5df-de3d472470cd))
|
||||||
|
(pad "11" thru_hole oval (at 27.94 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 9 "unconnected-(A101-A2-Pad11)") (pinfunction "A2") (pintype "bidirectional") (tstamp 9f778251-a8bd-4ebd-9a27-42abf8ddf83f))
|
||||||
|
(pad "12" thru_hole oval (at 30.48 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 10 "unconnected-(A101-A3-Pad12)") (pinfunction "A3") (pintype "bidirectional") (tstamp 2c20b29f-50f6-4f92-a764-d5737ce5ac84))
|
||||||
|
(pad "13" thru_hole oval (at 33.02 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 11 "unconnected-(A101-SDA{slash}A4-Pad13)") (pinfunction "SDA/A4") (pintype "bidirectional") (tstamp ef18ff6e-73d0-4360-bb5a-b0e248708d69))
|
||||||
|
(pad "14" thru_hole oval (at 35.56 0 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 12 "unconnected-(A101-SCL{slash}A5-Pad14)") (pinfunction "SCL/A5") (pintype "bidirectional") (tstamp 6a9ba62c-38a8-4329-896a-50a2d63d2ace))
|
||||||
|
(pad "15" thru_hole oval (at 35.56 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 13 "unconnected-(A101-D0{slash}RX-Pad15)") (pinfunction "D0/RX") (pintype "bidirectional") (tstamp af50edd6-4f73-4249-b734-68faca22444b))
|
||||||
|
(pad "16" thru_hole oval (at 33.02 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 14 "unconnected-(A101-D1{slash}TX-Pad16)") (pinfunction "D1/TX") (pintype "bidirectional") (tstamp fa1c538a-3c05-498c-b1f4-613b326b5cbd))
|
||||||
|
(pad "17" thru_hole oval (at 30.48 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 15 "unconnected-(A101-D2-Pad17)") (pinfunction "D2") (pintype "bidirectional") (tstamp 549e7a60-492c-4e55-8bce-e588dfff13a7))
|
||||||
|
(pad "18" thru_hole oval (at 27.94 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 16 "unconnected-(A101-D3-Pad18)") (pinfunction "D3") (pintype "bidirectional") (tstamp f9960bd5-e318-4c3d-9a26-ece8d8c8b7b3))
|
||||||
|
(pad "19" thru_hole oval (at 25.4 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 17 "unconnected-(A101-D4-Pad19)") (pinfunction "D4") (pintype "bidirectional") (tstamp ef33024a-17d4-4625-b55c-927870a054b9))
|
||||||
|
(pad "20" thru_hole oval (at 22.86 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 18 "unconnected-(A101-D5-Pad20)") (pinfunction "D5") (pintype "bidirectional") (tstamp 6152aa72-bcf5-47e8-96a3-e9bbcb5d6ca2))
|
||||||
|
(pad "21" thru_hole oval (at 20.32 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 19 "unconnected-(A101-D6-Pad21)") (pinfunction "D6") (pintype "bidirectional") (tstamp e1e51b6f-9dc8-493b-aa4a-cba2f77dcbe6))
|
||||||
|
(pad "22" thru_hole oval (at 17.78 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 20 "unconnected-(A101-D7-Pad22)") (pinfunction "D7") (pintype "bidirectional") (tstamp dba8039c-1d79-425c-817e-b7135b245c4d))
|
||||||
|
(pad "23" thru_hole oval (at 13.72 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 21 "unconnected-(A101-D8-Pad23)") (pinfunction "D8") (pintype "bidirectional") (tstamp 320f1ada-cf1e-40de-b46f-521df4f6fe3f))
|
||||||
|
(pad "24" thru_hole oval (at 11.18 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 22 "unconnected-(A101-D9-Pad24)") (pinfunction "D9") (pintype "bidirectional") (tstamp e16a80d2-c045-4c3f-a4f4-5c474a2d057c))
|
||||||
|
(pad "25" thru_hole oval (at 8.64 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 23 "NFC_SS_N") (pinfunction "D10") (pintype "bidirectional") (tstamp 42e0ed44-6d38-4b77-b082-21809496d82a))
|
||||||
|
(pad "26" thru_hole oval (at 6.1 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 24 "MOSI") (pinfunction "D11") (pintype "bidirectional") (tstamp 29db1bc0-d438-4573-b91e-e9cacba8ff07))
|
||||||
|
(pad "27" thru_hole oval (at 3.56 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 25 "MISO") (pinfunction "D12") (pintype "bidirectional") (tstamp 37afb7d3-0abe-4bee-8f61-e2f496da6dbd))
|
||||||
|
(pad "28" thru_hole oval (at 1.02 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 26 "SLCK") (pinfunction "D13") (pintype "bidirectional") (tstamp ae5675b8-97ad-4dda-814b-12ec388ba04f))
|
||||||
|
(pad "29" thru_hole oval (at -1.52 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 27 "unconnected-(A101-GND-Pad29)") (pinfunction "GND") (pintype "power_in") (tstamp 818e6f9b-c699-4612-a539-df191d2280ca))
|
||||||
|
(pad "30" thru_hole oval (at -4.06 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 28 "unconnected-(A101-AREF-Pad30)") (pinfunction "AREF") (pintype "input") (tstamp 8f4b0cc9-4a63-4732-9296-e767d0cfd3d6))
|
||||||
|
(pad "31" thru_hole oval (at -6.6 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 29 "unconnected-(A101-SDA{slash}A4-Pad31)") (pinfunction "SDA/A4") (pintype "bidirectional") (tstamp 427a3679-e179-4350-85f0-5e97788f4d33))
|
||||||
|
(pad "32" thru_hole oval (at -9.14 -48.26 180) (size 1.6 1.6) (drill 1) (layers "*.Cu" "*.Mask")
|
||||||
|
(net 30 "unconnected-(A101-SCL{slash}A5-Pad32)") (pinfunction "SCL/A5") (pintype "bidirectional") (tstamp 2eb9e03a-00f9-438a-a479-01cafc21d1f9))
|
||||||
|
(model "${KICAD6_3DMODEL_DIR}/Module.3dshapes/Arduino_UNO_R3.wrl"
|
||||||
|
(offset (xyz 0 0 0))
|
||||||
|
(scale (xyz 1 1 1))
|
||||||
|
(rotate (xyz 0 0 0))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(gr_rect (start 97.5 47.5) (end 155 142.5)
|
||||||
|
(stroke (width 0.1) (type default)) (fill none) (layer "Edge.Cuts") (tstamp 9c2832e1-46bf-4e26-9969-d6f5ebf74e8a))
|
||||||
|
|
||||||
|
(segment (start 101.12 112.235) (end 101.12 109.695) (width 0.25) (layer "F.Cu") (net 4) (tstamp ca6a8ee1-e648-4d54-ad98-9ef48f7d1441))
|
||||||
|
(segment (start 101.12 109.695) (end 101.12 108.5699) (width 0.25) (layer "B.Cu") (net 4) (tstamp 017a10bc-f4be-4f97-959f-74295adf3c50))
|
||||||
|
(segment (start 106.1777 80.5749) (end 106.67 80.5749) (width 0.25) (layer "B.Cu") (net 4) (tstamp 19f96c7b-41b1-4dc5-8112-055e7b2b4594))
|
||||||
|
(segment (start 106.67 81.75) (end 106.67 80.5749) (width 0.25) (layer "B.Cu") (net 4) (tstamp 274f4ef7-434e-46c6-90b4-fb570165386b))
|
||||||
|
(segment (start 99.3579 72.43) (end 99.3579 73.7551) (width 0.25) (layer "B.Cu") (net 4) (tstamp 2c918506-920b-4966-89a9-0b35d06ef97b))
|
||||||
|
(segment (start 106.67 103.3012) (end 106.67 81.75) (width 0.25) (layer "B.Cu") (net 4) (tstamp 44e3c3dd-03d0-4818-9e87-9f69337bd05d))
|
||||||
|
(segment (start 101.4013 108.5699) (end 106.67 103.3012) (width 0.25) (layer "B.Cu") (net 4) (tstamp 74e9843c-dce0-4439-b61e-739e08eb6968))
|
||||||
|
(segment (start 101.12 108.5699) (end 101.4013 108.5699) (width 0.25) (layer "B.Cu") (net 4) (tstamp 8feb133f-88f6-4545-8f04-723c328957db))
|
||||||
|
(segment (start 99.3579 73.7551) (end 106.1777 80.5749) (width 0.25) (layer "B.Cu") (net 4) (tstamp bcc924bc-561b-463b-a38e-3e2767f45119))
|
||||||
|
(segment (start 108.293 59.8302) (end 108.293 79.6579) (width 0.25) (layer "F.Cu") (net 5) (tstamp 011a37b5-8aa9-4311-b247-f7349c224a6c))
|
||||||
|
(segment (start 108.293 79.6579) (end 109.21 80.5749) (width 0.25) (layer "F.Cu") (net 5) (tstamp 2912662c-c99f-4708-882a-0166bf2fe8b4))
|
||||||
|
(segment (start 101.12 117.315) (end 101.12 115.339) (width 0.25) (layer "F.Cu") (net 5) (tstamp 4a685c5c-6953-477d-879f-9877685ce9ca))
|
||||||
|
(segment (start 99.3579 50.8951) (end 108.293 59.8302) (width 0.25) (layer "F.Cu") (net 5) (tstamp 4e6a2a00-86d0-4eea-91fa-313c99c1a384))
|
||||||
|
(segment (start 109.21 81.75) (end 109.21 107.249) (width 0.25) (layer "F.Cu") (net 5) (tstamp 853d193e-3d35-476e-905a-9550c35005d7))
|
||||||
|
(segment (start 109.21 107.249) (end 101.12 115.339) (width 0.25) (layer "F.Cu") (net 5) (tstamp 8f2dd1b3-f15f-423a-bfe5-7916f19f3671))
|
||||||
|
(segment (start 109.21 81.75) (end 109.21 80.5749) (width 0.25) (layer "F.Cu") (net 5) (tstamp a8914edf-76dd-4e9a-80a9-b3c4197022c2))
|
||||||
|
(segment (start 99.3579 49.57) (end 99.3579 50.8951) (width 0.25) (layer "F.Cu") (net 5) (tstamp be14ac45-c23f-43bc-b813-580a25aa06c3))
|
||||||
|
(segment (start 101.12 115.339) (end 101.12 114.775) (width 0.25) (layer "F.Cu") (net 5) (tstamp cb767cc1-3e8e-41db-8d66-4da16f74ed91))
|
||||||
|
(segment (start 117.138 72.9268) (end 117.138 73.0925) (width 0.25) (layer "F.Cu") (net 7) (tstamp 0e93b4ce-3a4e-4392-becd-03feb49c9020))
|
||||||
|
(segment (start 101.12 124.935) (end 101.12 123.8099) (width 0.25) (layer "F.Cu") (net 7) (tstamp 14d6c065-0415-44cc-bb3f-30a30b9c5f55))
|
||||||
|
(segment (start 117.138 72.6784) (end 117.138 72.9268) (width 0.25) (layer "F.Cu") (net 7) (tstamp 20a2ac93-9f4d-4211-be4f-c58d92cb093f))
|
||||||
|
(segment (start 113.02 111.9099) (end 101.12 123.8099) (width 0.25) (layer "F.Cu") (net 7) (tstamp 5ab0954e-f631-4f32-bb04-ab1135dc6fcc))
|
||||||
|
(segment (start 113.02 77.0448) (end 113.02 111.9099) (width 0.25) (layer "F.Cu") (net 7) (tstamp 636d2c56-06e0-4e0c-8baf-f6e5a488f8ad))
|
||||||
|
(segment (start 117.138 72.43) (end 117.138 72.6784) (width 0.25) (layer "F.Cu") (net 7) (tstamp 7dd65012-7675-4588-ae26-016fe79e3402))
|
||||||
|
(segment (start 117.138 72.6784) (end 117.1379 72.6783) (width 0.25) (layer "F.Cu") (net 7) (tstamp ccbc45f4-a414-482d-84c6-a08d76131d1d))
|
||||||
|
(segment (start 117.1379 72.6783) (end 117.1379 72.43) (width 0.25) (layer "F.Cu") (net 7) (tstamp dd4be416-901b-4bd5-b04e-00f559ff216d))
|
||||||
|
(segment (start 117.138 72.9268) (end 113.02 77.0448) (width 0.25) (layer "F.Cu") (net 7) (tstamp ed0a0912-7665-4a30-b4ed-b56b21d4d52e))
|
||||||
|
(segment (start 110.48 82.1735) (end 139.0215 110.715) (width 0.25) (layer "B.Cu") (net 23) (tstamp 0e53285a-48ee-482d-96b5-27b99bdef2aa))
|
||||||
|
(segment (start 106.9779 72.43) (end 106.9779 73.7551) (width 0.25) (layer "B.Cu") (net 23) (tstamp 0f6dc039-4e1f-4917-9cd0-0be4c4f5e338))
|
||||||
|
(segment (start 106.9779 73.7551) (end 110.48 77.2572) (width 0.25) (layer "B.Cu") (net 23) (tstamp 11846f8e-fb67-4a78-a351-6d99cbd79d17))
|
||||||
|
(segment (start 110.48 77.2572) (end 110.48 82.1735) (width 0.25) (layer "B.Cu") (net 23) (tstamp 3e7f3a01-4c2a-474b-a2d3-2915fd115aef))
|
||||||
|
(segment (start 139.0215 110.715) (end 149.38 110.715) (width 0.25) (layer "B.Cu") (net 23) (tstamp 8f45d093-1ea8-4921-9b67-4b89a00a0f96))
|
||||||
|
(segment (start 112.058 72.9268) (end 111.75 73.2348) (width 0.25) (layer "F.Cu") (net 24) (tstamp 32351642-0e65-40e7-abea-ba505c2531d8))
|
||||||
|
(segment (start 112.058 72.6784) (end 112.0579 72.6783) (width 0.25) (layer "F.Cu") (net 24) (tstamp 5a675906-a63d-48c9-904f-232850e1f1c0))
|
||||||
|
(segment (start 112.058 72.43) (end 112.058 72.6784) (width 0.25) (layer "F.Cu") (net 24) (tstamp 7a4d2cd8-3cc2-48d4-9c9c-e1d6364fa4ea))
|
||||||
|
(segment (start 111.75 73.2348) (end 111.75 81.75) (width 0.25) (layer "F.Cu") (net 24) (tstamp 9c433596-0a0a-437f-a326-4260e4d07805))
|
||||||
|
(segment (start 112.0579 72.6783) (end 112.0579 72.43) (width 0.25) (layer "F.Cu") (net 24) (tstamp eb285bb3-c05d-4d71-9300-c74162eeb9cc))
|
||||||
|
(segment (start 112.058 72.9268) (end 112.058 73.0925) (width 0.25) (layer "F.Cu") (net 24) (tstamp edce02e9-c9ab-47c8-9171-8362fd0135f1))
|
||||||
|
(segment (start 112.058 72.6784) (end 112.058 72.9268) (width 0.25) (layer "F.Cu") (net 24) (tstamp efbb5f75-cc27-4d58-9cfd-4d49aac88341))
|
||||||
|
(segment (start 138.9829 108.175) (end 112.9251 82.1172) (width 0.25) (layer "B.Cu") (net 24) (tstamp ad7fee84-2aca-44ae-81a6-6d36bd06853d))
|
||||||
|
(segment (start 112.9251 82.1172) (end 112.9251 81.75) (width 0.25) (layer "B.Cu") (net 24) (tstamp b6dc97a7-24a3-4619-b9b8-98dcbf3a1f25))
|
||||||
|
(segment (start 149.38 108.175) (end 138.9829 108.175) (width 0.25) (layer "B.Cu") (net 24) (tstamp b9a51de7-05ea-4850-9238-3afb465a4a51))
|
||||||
|
(segment (start 111.75 81.75) (end 112.9251 81.75) (width 0.25) (layer "B.Cu") (net 24) (tstamp df5bf64e-f0ec-4bc1-a64a-815c4f402444))
|
||||||
|
(segment (start 147.9652 103.3283) (end 149.1468 104.5099) (width 0.25) (layer "B.Cu") (net 25) (tstamp 280f4207-2e67-475f-89fa-444d6b005518))
|
||||||
|
(segment (start 147.9652 103.0495) (end 147.9652 103.3283) (width 0.25) (layer "B.Cu") (net 25) (tstamp 2f991188-b66e-4f75-b2ec-7283122c53f4))
|
||||||
|
(segment (start 149.1468 104.5099) (end 149.38 104.5099) (width 0.25) (layer "B.Cu") (net 25) (tstamp 49a73e9e-b104-457d-9ef5-b9abbfc7c55b))
|
||||||
|
(segment (start 121.7703 76.8546) (end 147.9652 103.0495) (width 0.25) (layer "B.Cu") (net 25) (tstamp 71a801e6-d398-4d22-9a1d-3c8e19e61451))
|
||||||
|
(segment (start 114.598 72.7612) (end 114.5979 72.7611) (width 0.25) (layer "B.Cu") (net 25) (tstamp 88543663-2418-4652-a3ae-c62cf843f3d5))
|
||||||
|
(segment (start 114.598 72.9268) (end 118.5258 76.8546) (width 0.25) (layer "B.Cu") (net 25) (tstamp a71c21d9-bed6-431d-af94-acb44f15b87f))
|
||||||
|
(segment (start 149.38 105.635) (end 149.38 104.5099) (width 0.25) (layer "B.Cu") (net 25) (tstamp abc3791b-b035-4ca9-83f7-e8975f405ee7))
|
||||||
|
(segment (start 114.598 72.43) (end 114.598 72.7612) (width 0.25) (layer "B.Cu") (net 25) (tstamp cf07f871-cc07-46cc-a0bb-6cf52b9aa7d3))
|
||||||
|
(segment (start 118.5258 76.8546) (end 121.7703 76.8546) (width 0.25) (layer "B.Cu") (net 25) (tstamp dc236160-aae5-43c1-9e39-c7ee23c59b3a))
|
||||||
|
(segment (start 114.598 72.7612) (end 114.598 72.9268) (width 0.25) (layer "B.Cu") (net 25) (tstamp dff7e56d-c900-420e-945d-1c84cc15dc21))
|
||||||
|
(segment (start 114.5979 72.7611) (end 114.5979 72.43) (width 0.25) (layer "B.Cu") (net 25) (tstamp e39bd297-9c25-466e-a327-b75a406df031))
|
||||||
|
(segment (start 114.598 72.9268) (end 114.598 73.0925) (width 0.25) (layer "B.Cu") (net 25) (tstamp fc683484-f5d3-4197-9d5c-857dc018aa4f))
|
||||||
|
(segment (start 109.5179 72.7611) (end 109.5179 72.43) (width 0.25) (layer "F.Cu") (net 33) (tstamp 0aad2763-71f8-41c4-846a-72f99c4b2d53))
|
||||||
|
(segment (start 109.518 72.43) (end 109.518 72.7612) (width 0.25) (layer "F.Cu") (net 33) (tstamp 1d1300ea-923d-45fc-8e3c-0b1bcc3fdaff))
|
||||||
|
(segment (start 109.518 72.7612) (end 109.518 73.0925) (width 0.25) (layer "F.Cu") (net 33) (tstamp 599f701b-48e2-46fe-a533-5c21ac928f16))
|
||||||
|
(segment (start 109.518 72.7612) (end 109.5179 72.7611) (width 0.25) (layer "F.Cu") (net 33) (tstamp 9cd0a9b1-66b8-4449-af29-d2d3ef9d4ca2))
|
||||||
|
(segment (start 109.5179 72.43) (end 109.5179 73.7551) (width 0.25) (layer "B.Cu") (net 33) (tstamp 09d65eb0-00ca-45ff-b0f2-6826bbf35d3b))
|
||||||
|
(segment (start 114.29 78.5272) (end 114.29 81.75) (width 0.25) (layer "B.Cu") (net 33) (tstamp eff24abd-691d-460d-a846-71d453a68f49))
|
||||||
|
(segment (start 109.5179 73.7551) (end 114.29 78.5272) (width 0.25) (layer "B.Cu") (net 33) (tstamp fc9a7b57-e419-4912-87cb-c0b201d1d5f0))
|
||||||
|
(segment (start 119.678 50.2325) (end 118.734 51.1765) (width 0.25) (layer "F.Cu") (net 61) (tstamp 0f83361d-84a4-485f-ad2b-53374f9de415))
|
||||||
|
(segment (start 118.734 51.1765) (end 118.734 79.9389) (width 0.25) (layer "F.Cu") (net 61) (tstamp 45168cd7-f582-4188-9919-1ab6fe0c713a))
|
||||||
|
(segment (start 118.734 79.9389) (end 119.37 80.5749) (width 0.25) (layer "F.Cu") (net 61) (tstamp 559c3311-c8a9-4a93-a706-30e2d8f9535d))
|
||||||
|
(segment (start 119.37 81.75) (end 119.37 80.5749) (width 0.25) (layer "F.Cu") (net 61) (tstamp 60652391-c8ab-4eab-977b-cfbbb0faae15))
|
||||||
|
(segment (start 119.6779 49.9011) (end 119.6779 49.57) (width 0.25) (layer "F.Cu") (net 61) (tstamp 69dc0562-05e1-4438-8606-93d6ea7afeb5))
|
||||||
|
(segment (start 119.678 49.9012) (end 119.6779 49.9011) (width 0.25) (layer "F.Cu") (net 61) (tstamp d0d6a5dc-68de-4f6e-aa16-901e98e739fc))
|
||||||
|
(segment (start 119.678 49.9012) (end 119.678 50.2325) (width 0.25) (layer "F.Cu") (net 61) (tstamp dfe40f43-9305-4506-a6bd-5c231a6a939a))
|
||||||
|
(segment (start 119.678 49.57) (end 119.678 49.9012) (width 0.25) (layer "F.Cu") (net 61) (tstamp f2d6ca74-2b1e-45df-9f4d-ffc392801b59))
|
||||||
|
(segment (start 117.138 49.9012) (end 117.1379 49.9011) (width 0.25) (layer "F.Cu") (net 62) (tstamp 081f30a8-f3cd-49bb-97ab-15c9ea7fe1ec))
|
||||||
|
(segment (start 117.1379 49.9011) (end 117.1379 49.57) (width 0.25) (layer "F.Cu") (net 62) (tstamp 6024b5a1-c2e3-46d2-beef-58a1ef820795))
|
||||||
|
(segment (start 117.138 49.57) (end 117.138 49.9012) (width 0.25) (layer "F.Cu") (net 62) (tstamp db80e180-2d0d-4c2f-8d98-7310af8cdbac))
|
||||||
|
(segment (start 117.138 49.9012) (end 117.138 50.2325) (width 0.25) (layer "F.Cu") (net 62) (tstamp ec51607d-9b89-47fc-bd79-0d576c3a50c1))
|
||||||
|
(segment (start 113.629 54.404) (end 113.629 73.211) (width 0.25) (layer "B.Cu") (net 62) (tstamp 264cfc34-f657-4ee3-a9da-e59de5e438ed))
|
||||||
|
(segment (start 117.1379 50.8951) (end 113.629 54.404) (width 0.25) (layer "B.Cu") (net 62) (tstamp 26bc4d37-c145-45a2-b7a3-49e1cd6ad69d))
|
||||||
|
(segment (start 117.1379 49.57) (end 117.1379 50.8951) (width 0.25) (layer "B.Cu") (net 62) (tstamp 6d50df22-57e0-48ad-8622-f05a4e9d0543))
|
||||||
|
(segment (start 120.9929 80.5749) (end 121.91 80.5749) (width 0.25) (layer "B.Cu") (net 62) (tstamp 7ef4682b-70ed-4884-9045-bd01faeffef5))
|
||||||
|
(segment (start 121.91 81.75) (end 121.91 80.5749) (width 0.25) (layer "B.Cu") (net 62) (tstamp aa447414-897e-4428-8f6c-97b3135c9cbc))
|
||||||
|
(segment (start 113.629 73.211) (end 120.9929 80.5749) (width 0.25) (layer "B.Cu") (net 62) (tstamp df74588a-719c-4e0d-ae9e-9ef06f56650e))
|
||||||
|
(segment (start 114.5979 49.57) (end 114.5979 48.2449) (width 0.25) (layer "F.Cu") (net 63) (tstamp 1579fc24-37dc-4162-8e93-6a1942ff927a))
|
||||||
|
(segment (start 120.0712 48.2449) (end 120.6031 48.7768) (width 0.25) (layer "F.Cu") (net 63) (tstamp 1bb95300-40a9-482e-a30b-9b18554c881d))
|
||||||
|
(segment (start 120.6031 76.728) (end 124.45 80.5749) (width 0.25) (layer "F.Cu") (net 63) (tstamp 30dcf49b-f43a-4420-9a8d-a10da24e1af4))
|
||||||
|
(segment (start 124.45 81.75) (end 124.45 80.5749) (width 0.25) (layer "F.Cu") (net 63) (tstamp 6f6236cc-42da-4302-ba4f-b586e8bddc4c))
|
||||||
|
(segment (start 114.5979 48.2449) (end 120.0712 48.2449) (width 0.25) (layer "F.Cu") (net 63) (tstamp a3d15880-fbee-4cb5-b5bb-193a809a74d4))
|
||||||
|
(segment (start 120.6031 48.7768) (end 120.6031 76.728) (width 0.25) (layer "F.Cu") (net 63) (tstamp cc519b60-ae27-4b32-b4d5-f01ab9c142bc))
|
||||||
|
(segment (start 114.598 49.9012) (end 114.5979 49.9011) (width 0.25) (layer "B.Cu") (net 63) (tstamp 05955416-3701-47cb-84fc-a78b3d2949d7))
|
||||||
|
(segment (start 114.5979 49.9011) (end 114.5979 49.57) (width 0.25) (layer "B.Cu") (net 63) (tstamp 574145ec-5168-4ae6-a466-cce54a4ef355))
|
||||||
|
(segment (start 114.598 49.9012) (end 114.598 50.2325) (width 0.25) (layer "B.Cu") (net 63) (tstamp 8eb60459-8258-47e6-99a0-b8b4cb767188))
|
||||||
|
(segment (start 114.598 49.57) (end 114.598 49.9012) (width 0.25) (layer "B.Cu") (net 63) (tstamp ef611d4b-def1-4724-98be-3f3b78d0e645))
|
||||||
|
|
||||||
|
)
|
487
Hardware/FabReader1.5/FabReader1.5.kicad_pro
Normal file
487
Hardware/FabReader1.5/FabReader1.5.kicad_pro
Normal file
@ -0,0 +1,487 @@
|
|||||||
|
{
|
||||||
|
"board": {
|
||||||
|
"3dviewports": [],
|
||||||
|
"design_settings": {
|
||||||
|
"defaults": {
|
||||||
|
"board_outline_line_width": 0.09999999999999999,
|
||||||
|
"copper_line_width": 0.19999999999999998,
|
||||||
|
"copper_text_italic": false,
|
||||||
|
"copper_text_size_h": 1.5,
|
||||||
|
"copper_text_size_v": 1.5,
|
||||||
|
"copper_text_thickness": 0.3,
|
||||||
|
"copper_text_upright": false,
|
||||||
|
"courtyard_line_width": 0.049999999999999996,
|
||||||
|
"dimension_precision": 4,
|
||||||
|
"dimension_units": 3,
|
||||||
|
"dimensions": {
|
||||||
|
"arrow_length": 1270000,
|
||||||
|
"extension_offset": 500000,
|
||||||
|
"keep_text_aligned": true,
|
||||||
|
"suppress_zeroes": false,
|
||||||
|
"text_position": 0,
|
||||||
|
"units_format": 1
|
||||||
|
},
|
||||||
|
"fab_line_width": 0.09999999999999999,
|
||||||
|
"fab_text_italic": false,
|
||||||
|
"fab_text_size_h": 1.0,
|
||||||
|
"fab_text_size_v": 1.0,
|
||||||
|
"fab_text_thickness": 0.15,
|
||||||
|
"fab_text_upright": false,
|
||||||
|
"other_line_width": 0.15,
|
||||||
|
"other_text_italic": false,
|
||||||
|
"other_text_size_h": 1.0,
|
||||||
|
"other_text_size_v": 1.0,
|
||||||
|
"other_text_thickness": 0.15,
|
||||||
|
"other_text_upright": false,
|
||||||
|
"pads": {
|
||||||
|
"drill": 0.762,
|
||||||
|
"height": 1.524,
|
||||||
|
"width": 1.524
|
||||||
|
},
|
||||||
|
"silk_line_width": 0.15,
|
||||||
|
"silk_text_italic": false,
|
||||||
|
"silk_text_size_h": 1.0,
|
||||||
|
"silk_text_size_v": 1.0,
|
||||||
|
"silk_text_thickness": 0.15,
|
||||||
|
"silk_text_upright": false,
|
||||||
|
"zones": {
|
||||||
|
"min_clearance": 0.5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"diff_pair_dimensions": [],
|
||||||
|
"drc_exclusions": [],
|
||||||
|
"meta": {
|
||||||
|
"version": 2
|
||||||
|
},
|
||||||
|
"rule_severities": {
|
||||||
|
"annular_width": "error",
|
||||||
|
"clearance": "error",
|
||||||
|
"connection_width": "warning",
|
||||||
|
"copper_edge_clearance": "error",
|
||||||
|
"copper_sliver": "warning",
|
||||||
|
"courtyards_overlap": "error",
|
||||||
|
"diff_pair_gap_out_of_range": "error",
|
||||||
|
"diff_pair_uncoupled_length_too_long": "error",
|
||||||
|
"drill_out_of_range": "error",
|
||||||
|
"duplicate_footprints": "warning",
|
||||||
|
"extra_footprint": "warning",
|
||||||
|
"footprint": "error",
|
||||||
|
"footprint_type_mismatch": "ignore",
|
||||||
|
"hole_clearance": "error",
|
||||||
|
"hole_near_hole": "error",
|
||||||
|
"invalid_outline": "error",
|
||||||
|
"isolated_copper": "warning",
|
||||||
|
"item_on_disabled_layer": "error",
|
||||||
|
"items_not_allowed": "error",
|
||||||
|
"length_out_of_range": "error",
|
||||||
|
"lib_footprint_issues": "warning",
|
||||||
|
"lib_footprint_mismatch": "warning",
|
||||||
|
"malformed_courtyard": "error",
|
||||||
|
"microvia_drill_out_of_range": "error",
|
||||||
|
"missing_courtyard": "ignore",
|
||||||
|
"missing_footprint": "warning",
|
||||||
|
"net_conflict": "warning",
|
||||||
|
"npth_inside_courtyard": "ignore",
|
||||||
|
"padstack": "warning",
|
||||||
|
"pth_inside_courtyard": "ignore",
|
||||||
|
"shorting_items": "error",
|
||||||
|
"silk_edge_clearance": "warning",
|
||||||
|
"silk_over_copper": "warning",
|
||||||
|
"silk_overlap": "warning",
|
||||||
|
"skew_out_of_range": "error",
|
||||||
|
"solder_mask_bridge": "error",
|
||||||
|
"starved_thermal": "error",
|
||||||
|
"text_height": "warning",
|
||||||
|
"text_thickness": "warning",
|
||||||
|
"through_hole_pad_without_hole": "error",
|
||||||
|
"too_many_vias": "error",
|
||||||
|
"track_dangling": "warning",
|
||||||
|
"track_width": "error",
|
||||||
|
"tracks_crossing": "error",
|
||||||
|
"unconnected_items": "error",
|
||||||
|
"unresolved_variable": "error",
|
||||||
|
"via_dangling": "warning",
|
||||||
|
"zones_intersect": "error"
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"max_error": 0.005,
|
||||||
|
"min_clearance": 0.0,
|
||||||
|
"min_connection": 0.0,
|
||||||
|
"min_copper_edge_clearance": 0.0,
|
||||||
|
"min_hole_clearance": 0.25,
|
||||||
|
"min_hole_to_hole": 0.25,
|
||||||
|
"min_microvia_diameter": 0.19999999999999998,
|
||||||
|
"min_microvia_drill": 0.09999999999999999,
|
||||||
|
"min_resolved_spokes": 2,
|
||||||
|
"min_silk_clearance": 0.0,
|
||||||
|
"min_text_height": 0.7999999999999999,
|
||||||
|
"min_text_thickness": 0.08,
|
||||||
|
"min_through_hole_diameter": 0.3,
|
||||||
|
"min_track_width": 0.0,
|
||||||
|
"min_via_annular_width": 0.09999999999999999,
|
||||||
|
"min_via_diameter": 0.5,
|
||||||
|
"solder_mask_clearance": 0.0,
|
||||||
|
"solder_mask_min_width": 0.0,
|
||||||
|
"solder_mask_to_copper_clearance": 0.0,
|
||||||
|
"use_height_for_length_calcs": true
|
||||||
|
},
|
||||||
|
"teardrop_options": [
|
||||||
|
{
|
||||||
|
"td_allow_use_two_tracks": true,
|
||||||
|
"td_curve_segcount": 5,
|
||||||
|
"td_on_pad_in_zone": false,
|
||||||
|
"td_onpadsmd": true,
|
||||||
|
"td_onroundshapesonly": false,
|
||||||
|
"td_ontrackend": false,
|
||||||
|
"td_onviapad": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"teardrop_parameters": [
|
||||||
|
{
|
||||||
|
"td_curve_segcount": 0,
|
||||||
|
"td_height_ratio": 1.0,
|
||||||
|
"td_length_ratio": 0.5,
|
||||||
|
"td_maxheight": 2.0,
|
||||||
|
"td_maxlen": 1.0,
|
||||||
|
"td_target_name": "td_round_shape",
|
||||||
|
"td_width_to_size_filter_ratio": 0.9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"td_curve_segcount": 0,
|
||||||
|
"td_height_ratio": 1.0,
|
||||||
|
"td_length_ratio": 0.5,
|
||||||
|
"td_maxheight": 2.0,
|
||||||
|
"td_maxlen": 1.0,
|
||||||
|
"td_target_name": "td_rect_shape",
|
||||||
|
"td_width_to_size_filter_ratio": 0.9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"td_curve_segcount": 0,
|
||||||
|
"td_height_ratio": 1.0,
|
||||||
|
"td_length_ratio": 0.5,
|
||||||
|
"td_maxheight": 2.0,
|
||||||
|
"td_maxlen": 1.0,
|
||||||
|
"td_target_name": "td_track_end",
|
||||||
|
"td_width_to_size_filter_ratio": 0.9
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"track_widths": [],
|
||||||
|
"via_dimensions": [],
|
||||||
|
"zones_allow_external_fillets": false
|
||||||
|
},
|
||||||
|
"layer_presets": [],
|
||||||
|
"viewports": []
|
||||||
|
},
|
||||||
|
"boards": [],
|
||||||
|
"cvpcb": {
|
||||||
|
"equivalence_files": []
|
||||||
|
},
|
||||||
|
"erc": {
|
||||||
|
"erc_exclusions": [],
|
||||||
|
"meta": {
|
||||||
|
"version": 0
|
||||||
|
},
|
||||||
|
"pin_map": [
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"rule_severities": {
|
||||||
|
"bus_definition_conflict": "error",
|
||||||
|
"bus_entry_needed": "error",
|
||||||
|
"bus_to_bus_conflict": "error",
|
||||||
|
"bus_to_net_conflict": "error",
|
||||||
|
"conflicting_netclasses": "error",
|
||||||
|
"different_unit_footprint": "error",
|
||||||
|
"different_unit_net": "error",
|
||||||
|
"duplicate_reference": "error",
|
||||||
|
"duplicate_sheet_names": "error",
|
||||||
|
"endpoint_off_grid": "warning",
|
||||||
|
"extra_units": "error",
|
||||||
|
"global_label_dangling": "warning",
|
||||||
|
"hier_label_mismatch": "error",
|
||||||
|
"label_dangling": "error",
|
||||||
|
"lib_symbol_issues": "warning",
|
||||||
|
"missing_bidi_pin": "warning",
|
||||||
|
"missing_input_pin": "warning",
|
||||||
|
"missing_power_pin": "error",
|
||||||
|
"missing_unit": "warning",
|
||||||
|
"multiple_net_names": "warning",
|
||||||
|
"net_not_bus_member": "warning",
|
||||||
|
"no_connect_connected": "warning",
|
||||||
|
"no_connect_dangling": "warning",
|
||||||
|
"pin_not_connected": "error",
|
||||||
|
"pin_not_driven": "error",
|
||||||
|
"pin_to_pin": "warning",
|
||||||
|
"power_pin_not_driven": "error",
|
||||||
|
"similar_labels": "warning",
|
||||||
|
"simulation_model_issue": "error",
|
||||||
|
"unannotated": "error",
|
||||||
|
"unit_value_mismatch": "error",
|
||||||
|
"unresolved_variable": "error",
|
||||||
|
"wire_dangling": "error"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libraries": {
|
||||||
|
"pinned_footprint_libs": [],
|
||||||
|
"pinned_symbol_libs": []
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
"filename": "FabReader1.5.kicad_pro",
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"net_settings": {
|
||||||
|
"classes": [
|
||||||
|
{
|
||||||
|
"bus_width": 12,
|
||||||
|
"clearance": 0.2,
|
||||||
|
"diff_pair_gap": 0.25,
|
||||||
|
"diff_pair_via_gap": 0.25,
|
||||||
|
"diff_pair_width": 0.2,
|
||||||
|
"line_style": 0,
|
||||||
|
"microvia_diameter": 0.3,
|
||||||
|
"microvia_drill": 0.1,
|
||||||
|
"name": "Default",
|
||||||
|
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||||
|
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||||
|
"track_width": 0.25,
|
||||||
|
"via_diameter": 0.8,
|
||||||
|
"via_drill": 0.4,
|
||||||
|
"wire_width": 6
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"meta": {
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"net_colors": null,
|
||||||
|
"netclass_assignments": null,
|
||||||
|
"netclass_patterns": []
|
||||||
|
},
|
||||||
|
"pcbnew": {
|
||||||
|
"last_paths": {
|
||||||
|
"gencad": "",
|
||||||
|
"idf": "",
|
||||||
|
"netlist": "",
|
||||||
|
"specctra_dsn": "",
|
||||||
|
"step": "",
|
||||||
|
"vrml": ""
|
||||||
|
},
|
||||||
|
"page_layout_descr_file": ""
|
||||||
|
},
|
||||||
|
"schematic": {
|
||||||
|
"annotate_start_num": 0,
|
||||||
|
"drawing": {
|
||||||
|
"dashed_lines_dash_length_ratio": 12.0,
|
||||||
|
"dashed_lines_gap_length_ratio": 3.0,
|
||||||
|
"default_line_thickness": 6.0,
|
||||||
|
"default_text_size": 50.0,
|
||||||
|
"field_names": [],
|
||||||
|
"intersheets_ref_own_page": false,
|
||||||
|
"intersheets_ref_prefix": "",
|
||||||
|
"intersheets_ref_short": false,
|
||||||
|
"intersheets_ref_show": false,
|
||||||
|
"intersheets_ref_suffix": "",
|
||||||
|
"junction_size_choice": 3,
|
||||||
|
"label_size_ratio": 0.375,
|
||||||
|
"pin_symbol_size": 25.0,
|
||||||
|
"text_offset_ratio": 0.15
|
||||||
|
},
|
||||||
|
"legacy_lib_dir": "",
|
||||||
|
"legacy_lib_list": [],
|
||||||
|
"meta": {
|
||||||
|
"version": 1
|
||||||
|
},
|
||||||
|
"net_format_name": "",
|
||||||
|
"ngspice": {
|
||||||
|
"fix_include_paths": true,
|
||||||
|
"fix_passive_vals": false,
|
||||||
|
"meta": {
|
||||||
|
"version": 0
|
||||||
|
},
|
||||||
|
"model_mode": 0,
|
||||||
|
"workbook_filename": ""
|
||||||
|
},
|
||||||
|
"page_layout_descr_file": "",
|
||||||
|
"plot_directory": "",
|
||||||
|
"spice_adjust_passive_values": false,
|
||||||
|
"spice_current_sheet_as_root": false,
|
||||||
|
"spice_external_command": "spice \"%I\"",
|
||||||
|
"spice_model_current_sheet_as_root": true,
|
||||||
|
"spice_save_all_currents": false,
|
||||||
|
"spice_save_all_voltages": false,
|
||||||
|
"subpart_first_id": 65,
|
||||||
|
"subpart_id_separator": 0
|
||||||
|
},
|
||||||
|
"sheets": [
|
||||||
|
[
|
||||||
|
"b8993a80-a27f-4add-baf4-93b99ccacbe5",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"text_variables": {}
|
||||||
|
}
|
1146
Hardware/FabReader1.5/FabReader1.5.kicad_sch
Normal file
1146
Hardware/FabReader1.5/FabReader1.5.kicad_sch
Normal file
File diff suppressed because it is too large
Load Diff
1
Hardware/FabReader1.5/Library/espressif
Submodule
1
Hardware/FabReader1.5/Library/espressif
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit a8a536c45a1680eb1021adc9496e52a1cd2595b4
|
4
Hardware/FabReader1.5/fp-lib-table
Normal file
4
Hardware/FabReader1.5/fp-lib-table
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
(fp_lib_table
|
||||||
|
(version 7)
|
||||||
|
(lib (name "Espressif")(type "KiCad")(uri "${KIPRJMOD}/Library/espressif/footprints/Espressif.pretty")(options "")(descr ""))
|
||||||
|
)
|
1
Hardware/FabReader1.5/kicad-libraries
Submodule
1
Hardware/FabReader1.5/kicad-libraries
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit a8a536c45a1680eb1021adc9496e52a1cd2595b4
|
4
Hardware/FabReader1.5/sym-lib-table
Normal file
4
Hardware/FabReader1.5/sym-lib-table
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
(sym_lib_table
|
||||||
|
(version 7)
|
||||||
|
(lib (name "Espressif")(type "KiCad")(uri "${KIPRJMOD}/Library/espressif/libraries/Espressif.kicad_sym")(options "")(descr ""))
|
||||||
|
)
|
@ -3,10 +3,12 @@
|
|||||||
"active_layer": 36,
|
"active_layer": 36,
|
||||||
"active_layer_preset": "",
|
"active_layer_preset": "",
|
||||||
"auto_track_width": true,
|
"auto_track_width": true,
|
||||||
|
"hidden_netclasses": [],
|
||||||
"hidden_nets": [],
|
"hidden_nets": [],
|
||||||
"high_contrast_mode": 0,
|
"high_contrast_mode": 0,
|
||||||
"net_color_mode": 1,
|
"net_color_mode": 1,
|
||||||
"opacity": {
|
"opacity": {
|
||||||
|
"images": 0.6,
|
||||||
"pads": 1.0,
|
"pads": 1.0,
|
||||||
"tracks": 1.0,
|
"tracks": 1.0,
|
||||||
"vias": 1.0,
|
"vias": 1.0,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"board": {
|
"board": {
|
||||||
|
"3dviewports": [],
|
||||||
"design_settings": {
|
"design_settings": {
|
||||||
"defaults": {
|
"defaults": {
|
||||||
"board_outline_line_width": 0.09999999999999999,
|
"board_outline_line_width": 0.09999999999999999,
|
||||||
@ -206,7 +207,8 @@
|
|||||||
"zones_allow_external_fillets": false,
|
"zones_allow_external_fillets": false,
|
||||||
"zones_use_no_outline": true
|
"zones_use_no_outline": true
|
||||||
},
|
},
|
||||||
"layer_presets": []
|
"layer_presets": [],
|
||||||
|
"viewports": []
|
||||||
},
|
},
|
||||||
"boards": [],
|
"boards": [],
|
||||||
"cvpcb": {
|
"cvpcb": {
|
||||||
@ -390,18 +392,23 @@
|
|||||||
"rule_severities": {
|
"rule_severities": {
|
||||||
"bus_definition_conflict": "error",
|
"bus_definition_conflict": "error",
|
||||||
"bus_entry_needed": "error",
|
"bus_entry_needed": "error",
|
||||||
"bus_label_syntax": "error",
|
|
||||||
"bus_to_bus_conflict": "error",
|
"bus_to_bus_conflict": "error",
|
||||||
"bus_to_net_conflict": "error",
|
"bus_to_net_conflict": "error",
|
||||||
|
"conflicting_netclasses": "error",
|
||||||
"different_unit_footprint": "error",
|
"different_unit_footprint": "error",
|
||||||
"different_unit_net": "error",
|
"different_unit_net": "error",
|
||||||
"duplicate_reference": "error",
|
"duplicate_reference": "error",
|
||||||
"duplicate_sheet_names": "error",
|
"duplicate_sheet_names": "error",
|
||||||
|
"endpoint_off_grid": "warning",
|
||||||
"extra_units": "error",
|
"extra_units": "error",
|
||||||
"global_label_dangling": "warning",
|
"global_label_dangling": "warning",
|
||||||
"hier_label_mismatch": "error",
|
"hier_label_mismatch": "error",
|
||||||
"label_dangling": "error",
|
"label_dangling": "error",
|
||||||
"lib_symbol_issues": "warning",
|
"lib_symbol_issues": "warning",
|
||||||
|
"missing_bidi_pin": "warning",
|
||||||
|
"missing_input_pin": "warning",
|
||||||
|
"missing_power_pin": "error",
|
||||||
|
"missing_unit": "warning",
|
||||||
"multiple_net_names": "warning",
|
"multiple_net_names": "warning",
|
||||||
"net_not_bus_member": "warning",
|
"net_not_bus_member": "warning",
|
||||||
"no_connect_connected": "warning",
|
"no_connect_connected": "warning",
|
||||||
@ -411,6 +418,7 @@
|
|||||||
"pin_to_pin": "warning",
|
"pin_to_pin": "warning",
|
||||||
"power_pin_not_driven": "error",
|
"power_pin_not_driven": "error",
|
||||||
"similar_labels": "warning",
|
"similar_labels": "warning",
|
||||||
|
"simulation_model_issue": "error",
|
||||||
"unannotated": "error",
|
"unannotated": "error",
|
||||||
"unit_value_mismatch": "error",
|
"unit_value_mismatch": "error",
|
||||||
"unresolved_variable": "error",
|
"unresolved_variable": "error",
|
||||||
@ -428,7 +436,7 @@
|
|||||||
"net_settings": {
|
"net_settings": {
|
||||||
"classes": [
|
"classes": [
|
||||||
{
|
{
|
||||||
"bus_width": 12.0,
|
"bus_width": 12,
|
||||||
"clearance": 0.2,
|
"clearance": 0.2,
|
||||||
"diff_pair_gap": 0.25,
|
"diff_pair_gap": 0.25,
|
||||||
"diff_pair_via_gap": 0.25,
|
"diff_pair_via_gap": 0.25,
|
||||||
@ -442,10 +450,10 @@
|
|||||||
"track_width": 0.25,
|
"track_width": 0.25,
|
||||||
"via_diameter": 0.4,
|
"via_diameter": 0.4,
|
||||||
"via_drill": 0.2,
|
"via_drill": 0.2,
|
||||||
"wire_width": 6.0
|
"wire_width": 6
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"bus_width": 12.0,
|
"bus_width": 12,
|
||||||
"clearance": 0.2,
|
"clearance": 0.2,
|
||||||
"diff_pair_gap": 0.25,
|
"diff_pair_gap": 0.25,
|
||||||
"diff_pair_via_gap": 0.25,
|
"diff_pair_via_gap": 0.25,
|
||||||
@ -454,19 +462,20 @@
|
|||||||
"microvia_diameter": 0.3,
|
"microvia_diameter": 0.3,
|
||||||
"microvia_drill": 0.1,
|
"microvia_drill": 0.1,
|
||||||
"name": "Matching Network",
|
"name": "Matching Network",
|
||||||
"nets": [],
|
|
||||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||||
"track_width": 0.6,
|
"track_width": 0.6,
|
||||||
"via_diameter": 0.4,
|
"via_diameter": 0.4,
|
||||||
"via_drill": 0.2,
|
"via_drill": 0.2,
|
||||||
"wire_width": 6.0
|
"wire_width": 6
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"meta": {
|
"meta": {
|
||||||
"version": 2
|
"version": 3
|
||||||
},
|
},
|
||||||
"net_colors": null
|
"net_colors": null,
|
||||||
|
"netclass_assignments": null,
|
||||||
|
"netclass_patterns": []
|
||||||
},
|
},
|
||||||
"pcbnew": {
|
"pcbnew": {
|
||||||
"last_paths": {
|
"last_paths": {
|
||||||
@ -482,6 +491,8 @@
|
|||||||
"schematic": {
|
"schematic": {
|
||||||
"annotate_start_num": 0,
|
"annotate_start_num": 0,
|
||||||
"drawing": {
|
"drawing": {
|
||||||
|
"dashed_lines_dash_length_ratio": 12.0,
|
||||||
|
"dashed_lines_gap_length_ratio": 3.0,
|
||||||
"default_line_thickness": 6.0,
|
"default_line_thickness": 6.0,
|
||||||
"default_text_size": 50.0,
|
"default_text_size": 50.0,
|
||||||
"field_names": [],
|
"field_names": [],
|
||||||
@ -513,7 +524,11 @@
|
|||||||
"page_layout_descr_file": "",
|
"page_layout_descr_file": "",
|
||||||
"plot_directory": "",
|
"plot_directory": "",
|
||||||
"spice_adjust_passive_values": false,
|
"spice_adjust_passive_values": false,
|
||||||
|
"spice_current_sheet_as_root": false,
|
||||||
"spice_external_command": "spice \"%I\"",
|
"spice_external_command": "spice \"%I\"",
|
||||||
|
"spice_model_current_sheet_as_root": true,
|
||||||
|
"spice_save_all_currents": false,
|
||||||
|
"spice_save_all_voltages": false,
|
||||||
"subpart_first_id": 65,
|
"subpart_first_id": 65,
|
||||||
"subpart_id_separator": 0
|
"subpart_id_separator": 0
|
||||||
},
|
},
|
||||||
|
102
Software/fab-reader2-c/.gitignore
vendored
102
Software/fab-reader2-c/.gitignore
vendored
@ -1,102 +0,0 @@
|
|||||||
.config
|
|
||||||
*.o
|
|
||||||
*.pyc
|
|
||||||
|
|
||||||
# gtags
|
|
||||||
GTAGS
|
|
||||||
GRTAGS
|
|
||||||
GPATH
|
|
||||||
|
|
||||||
# emacs
|
|
||||||
.dir-locals.el
|
|
||||||
|
|
||||||
# emacs temp file suffixes
|
|
||||||
*~
|
|
||||||
.#*
|
|
||||||
\#*#
|
|
||||||
|
|
||||||
# eclipse setting
|
|
||||||
.settings
|
|
||||||
|
|
||||||
# MacOS directory files
|
|
||||||
.DS_Store
|
|
||||||
|
|
||||||
# cache dir
|
|
||||||
.cache/
|
|
||||||
|
|
||||||
# Components Unit Test Apps files
|
|
||||||
components/**/build/
|
|
||||||
components/**/build_*_*/
|
|
||||||
components/**/sdkconfig
|
|
||||||
components/**/sdkconfig.old
|
|
||||||
|
|
||||||
# Example project files
|
|
||||||
examples/**/build/
|
|
||||||
examples/**/build_esp*_*/
|
|
||||||
examples/**/sdkconfig
|
|
||||||
examples/**/sdkconfig.old
|
|
||||||
|
|
||||||
# Doc build artifacts
|
|
||||||
docs/_build/
|
|
||||||
docs/doxygen_sqlite3.db
|
|
||||||
|
|
||||||
# Downloaded font files
|
|
||||||
docs/_static/DejaVuSans.ttf
|
|
||||||
docs/_static/NotoSansSC-Regular.otf
|
|
||||||
|
|
||||||
# Unit test app files
|
|
||||||
tools/unit-test-app/sdkconfig
|
|
||||||
tools/unit-test-app/sdkconfig.old
|
|
||||||
tools/unit-test-app/build
|
|
||||||
tools/unit-test-app/build_*_*/
|
|
||||||
tools/unit-test-app/output
|
|
||||||
tools/unit-test-app/test_configs
|
|
||||||
|
|
||||||
# Unit Test CMake compile log folder
|
|
||||||
log_ut_cmake
|
|
||||||
|
|
||||||
# test application build files
|
|
||||||
tools/test_apps/**/build/
|
|
||||||
tools/test_apps/**/build_*_*/
|
|
||||||
tools/test_apps/**/sdkconfig
|
|
||||||
tools/test_apps/**/sdkconfig.old
|
|
||||||
|
|
||||||
# IDF monitor test
|
|
||||||
tools/test_idf_monitor/outputs
|
|
||||||
|
|
||||||
TEST_LOGS
|
|
||||||
|
|
||||||
# gcov coverage reports
|
|
||||||
*.gcda
|
|
||||||
*.gcno
|
|
||||||
coverage.info
|
|
||||||
coverage_report/
|
|
||||||
|
|
||||||
test_multi_heap_host
|
|
||||||
|
|
||||||
# VS Code Settings
|
|
||||||
.vscode/
|
|
||||||
|
|
||||||
# VIM files
|
|
||||||
*.swp
|
|
||||||
*.swo
|
|
||||||
|
|
||||||
# Clion IDE CMake build & config
|
|
||||||
.idea/
|
|
||||||
cmake-build-*/
|
|
||||||
|
|
||||||
# Results for the checking of the Python coding style and static analysis
|
|
||||||
.mypy_cache
|
|
||||||
flake8_output.txt
|
|
||||||
|
|
||||||
# ESP-IDF default build directory name
|
|
||||||
build
|
|
||||||
|
|
||||||
# lock files for examples and components
|
|
||||||
dependencies.lock
|
|
||||||
|
|
||||||
# managed_components for examples
|
|
||||||
managed_components
|
|
||||||
|
|
||||||
# pytest log
|
|
||||||
pytest_embedded_log/
|
|
@ -1,3 +0,0 @@
|
|||||||
idf_component_register(SRCS "fab-reader2.c" "pollingtagdetect.c"
|
|
||||||
INCLUDE_DIRS "."
|
|
||||||
REQUIRES "rfal")
|
|
@ -1,102 +0,0 @@
|
|||||||
#include <sys/cdefs.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <esp_err.h>
|
|
||||||
|
|
||||||
#include "platform.h"
|
|
||||||
#include "st25R3911_interrupt.h"
|
|
||||||
|
|
||||||
#include "pollingtagdetect.h"
|
|
||||||
|
|
||||||
#define SPI_CLK 5
|
|
||||||
#define SPI_MOSI 6
|
|
||||||
#define SPI_MISO 7
|
|
||||||
|
|
||||||
#define ESP_INTR_FLAG_DEFAULT 0
|
|
||||||
|
|
||||||
portMUX_TYPE CommProtectLock = portMUX_INITIALIZER_UNLOCKED;
|
|
||||||
|
|
||||||
static void gpio_isr_handler(void *arg) {
|
|
||||||
st25r3911Isr();
|
|
||||||
}
|
|
||||||
|
|
||||||
esp_err_t init_gpio(void) {
|
|
||||||
gpio_config_t io_conf = {};
|
|
||||||
//disable interrupt
|
|
||||||
io_conf.intr_type = GPIO_INTR_DISABLE;
|
|
||||||
//set as output mode
|
|
||||||
io_conf.mode = GPIO_MODE_INPUT_OUTPUT;
|
|
||||||
//bit mask of the pins that you want to set,e.g.GPIO18/19
|
|
||||||
io_conf.pin_bit_mask = (1ULL << ST25R391X_SS_PIN);
|
|
||||||
//disable pull-down mode
|
|
||||||
io_conf.pull_down_en = 0;
|
|
||||||
//disable pull-up mode
|
|
||||||
io_conf.pull_up_en = 0;
|
|
||||||
//configure GPIO with the given settings
|
|
||||||
esp_err_t ret = gpio_config(&io_conf);
|
|
||||||
ESP_ERROR_CHECK(ret);
|
|
||||||
|
|
||||||
|
|
||||||
//interrupt of rising edge
|
|
||||||
io_conf.intr_type = GPIO_INTR_POSEDGE;
|
|
||||||
//bit mask of the pins, use GPIO4/5 here
|
|
||||||
io_conf.pin_bit_mask = (1ULL << ST25R391X_INT_PIN);
|
|
||||||
//set as input mode
|
|
||||||
io_conf.mode = GPIO_MODE_INPUT;
|
|
||||||
//enable pull-up mode
|
|
||||||
// io_conf.pull_up_en = 1;
|
|
||||||
ret = gpio_config(&io_conf);
|
|
||||||
ESP_ERROR_CHECK(ret);
|
|
||||||
|
|
||||||
|
|
||||||
ret = gpio_install_isr_service(ESP_INTR_FLAG_DEFAULT);
|
|
||||||
ESP_ERROR_CHECK(ret);
|
|
||||||
//hook isr handler for specific gpio pin
|
|
||||||
ret = gpio_isr_handler_add(ST25R391X_INT_PIN, gpio_isr_handler, NULL);
|
|
||||||
ESP_ERROR_CHECK(ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
esp_err_t init_spi(void) {
|
|
||||||
spi_bus_config_t buscfg = {
|
|
||||||
.miso_io_num=SPI_MISO,
|
|
||||||
.mosi_io_num=SPI_MOSI,
|
|
||||||
.sclk_io_num=SPI_CLK,
|
|
||||||
.quadwp_io_num=-1,
|
|
||||||
.quadhd_io_num=-1,
|
|
||||||
};
|
|
||||||
esp_err_t ret = spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_CH_AUTO);
|
|
||||||
ESP_ERROR_CHECK(ret);
|
|
||||||
|
|
||||||
spi_device_interface_config_t devcfg = {
|
|
||||||
.clock_speed_hz=SPI_MASTER_FREQ_8M, //Clock out at 4 MHz
|
|
||||||
.mode=1, //SPI mode 1
|
|
||||||
.spics_io_num=-1, //CS pin
|
|
||||||
.queue_size=1, //We want to be able to queue 7 transactions at a time
|
|
||||||
};
|
|
||||||
|
|
||||||
spi_device_handle_t spi;
|
|
||||||
ret = spi_bus_add_device(SPI2_HOST, &devcfg, &spi);
|
|
||||||
ESP_ERROR_CHECK(ret);
|
|
||||||
st25r3911_spi_init(spi);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
_Noreturn static void cycle_task(void *arg) {
|
|
||||||
while (1) {
|
|
||||||
TagDetectCycle();
|
|
||||||
// ESP_LOGI("cycle_task", "running tag detect cycle_task");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void app_main(void) {
|
|
||||||
ESP_ERROR_CHECK(init_gpio());
|
|
||||||
ESP_LOGI("main", "init_gpio done");
|
|
||||||
ESP_ERROR_CHECK(init_spi());
|
|
||||||
ESP_LOGI("main", "init_spi done");
|
|
||||||
ESP_ERROR_CHECK(TagDetectInit());
|
|
||||||
ESP_LOGI("main", "TagDetectInit done");
|
|
||||||
xTaskCreate(cycle_task, "cycle_task", 4096, NULL, tskIDLE_PRIORITY, NULL);
|
|
||||||
ESP_LOGI("main", "cycle_task sheduled");
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
//
|
|
||||||
// Created by Kai Jan Kriegel on 17.10.22.
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef FAB_READER2_C_POLLINGTAGDETECT_H
|
|
||||||
#define FAB_READER2_C_POLLINGTAGDETECT_H
|
|
||||||
|
|
||||||
#include "esp_err.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
esp_err_t TagDetectInit(void);
|
|
||||||
void TagDetectCycle(void);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif //FAB_READER2_C_POLLINGTAGDETECT_H
|
|
@ -1,34 +0,0 @@
|
|||||||
[build]
|
|
||||||
# Uncomment the relevant target for your chip here (ESP32, ESP32-S2, ESP32-S3 or ESP32-C3)
|
|
||||||
#target = "xtensa-esp32-espidf"
|
|
||||||
target = "xtensa-esp32s2-espidf"
|
|
||||||
#target = "xtensa-esp32s3-espidf"
|
|
||||||
#target = "riscv32imc-esp-espidf"
|
|
||||||
|
|
||||||
[target.xtensa-esp32-espidf]
|
|
||||||
linker = "ldproxy"
|
|
||||||
|
|
||||||
[target.xtensa-esp32s2-espidf]
|
|
||||||
linker = "ldproxy"
|
|
||||||
|
|
||||||
[target.xtensa-esp32s3-espidf]
|
|
||||||
linker = "ldproxy"
|
|
||||||
|
|
||||||
[target.riscv32imc-esp-espidf]
|
|
||||||
linker = "ldproxy"
|
|
||||||
|
|
||||||
# Future - necessary for the experimental "native build" of esp-idf-sys with ESP32C3
|
|
||||||
# See also https://github.com/ivmarkov/embuild/issues/16
|
|
||||||
rustflags = ["-C", "default-linker-libraries"]
|
|
||||||
|
|
||||||
[unstable]
|
|
||||||
|
|
||||||
build-std = ["std", "panic_abort"]
|
|
||||||
#build-std-features = ["panic_immediate_abort"] # Required for older ESP-IDF versions without a realpath implementation
|
|
||||||
|
|
||||||
[env]
|
|
||||||
# Note: these variables are not used when using pio builder
|
|
||||||
# Enables the esp-idf-sys "native" build feature (`cargo build --features native`) to build against ESP-IDF stable (v4.4)
|
|
||||||
ESP_IDF_VERSION = { value = "branch:release/v4.4" }
|
|
||||||
# Enables the esp-idf-sys "native" build feature (`cargo build --features native`) to build against ESP-IDF master (mainline)
|
|
||||||
#ESP_IDF_VERSION = { value = "master" }
|
|
200
Software/fab-reader2/.gitignore
vendored
200
Software/fab-reader2/.gitignore
vendored
@ -1,136 +1,102 @@
|
|||||||
# Created by https://www.toptal.com/developers/gitignore/api/rust,
|
.config
|
||||||
# Edit at https://www.toptal.com/developers/gitignore?templates=rust,
|
*.o
|
||||||
|
*.pyc
|
||||||
|
|
||||||
.embuild
|
# gtags
|
||||||
|
GTAGS
|
||||||
|
GRTAGS
|
||||||
|
GPATH
|
||||||
|
|
||||||
### Rust ###
|
# emacs
|
||||||
# Generated by Cargo
|
.dir-locals.el
|
||||||
# will have compiled files and executables
|
|
||||||
debug/
|
|
||||||
target/
|
|
||||||
|
|
||||||
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
# emacs temp file suffixes
|
||||||
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
|
*~
|
||||||
Cargo.lock
|
.#*
|
||||||
|
\#*#
|
||||||
|
|
||||||
# These are backup files generated by rustfmt
|
# eclipse setting
|
||||||
**/*.rs.bk
|
.settings
|
||||||
|
|
||||||
# MSVC Windows builds of rustc generate these, which store debugging information
|
# MacOS directory files
|
||||||
*.pdb
|
.DS_Store
|
||||||
|
|
||||||
### CLion ###
|
# cache dir
|
||||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
.cache/
|
||||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
|
||||||
|
|
||||||
# User-specific stuff
|
# Components Unit Test Apps files
|
||||||
.idea/**/workspace.xml
|
components/**/build/
|
||||||
.idea/**/tasks.xml
|
components/**/build_*_*/
|
||||||
.idea/**/usage.statistics.xml
|
components/**/sdkconfig
|
||||||
.idea/**/dictionaries
|
components/**/sdkconfig.old
|
||||||
.idea/**/shelf
|
|
||||||
|
|
||||||
# AWS User-specific
|
# Example project files
|
||||||
.idea/**/aws.xml
|
examples/**/build/
|
||||||
|
examples/**/build_esp*_*/
|
||||||
|
examples/**/sdkconfig
|
||||||
|
examples/**/sdkconfig.old
|
||||||
|
|
||||||
# Generated files
|
# Doc build artifacts
|
||||||
.idea/**/contentModel.xml
|
docs/_build/
|
||||||
|
docs/doxygen_sqlite3.db
|
||||||
|
|
||||||
# Sensitive or high-churn files
|
# Downloaded font files
|
||||||
.idea/**/dataSources/
|
docs/_static/DejaVuSans.ttf
|
||||||
.idea/**/dataSources.ids
|
docs/_static/NotoSansSC-Regular.otf
|
||||||
.idea/**/dataSources.local.xml
|
|
||||||
.idea/**/sqlDataSources.xml
|
|
||||||
.idea/**/dynamic.xml
|
|
||||||
.idea/**/uiDesigner.xml
|
|
||||||
.idea/**/dbnavigator.xml
|
|
||||||
|
|
||||||
# Gradle
|
# Unit test app files
|
||||||
.idea/**/gradle.xml
|
tools/unit-test-app/sdkconfig
|
||||||
.idea/**/libraries
|
tools/unit-test-app/sdkconfig.old
|
||||||
|
tools/unit-test-app/build
|
||||||
|
tools/unit-test-app/build_*_*/
|
||||||
|
tools/unit-test-app/output
|
||||||
|
tools/unit-test-app/test_configs
|
||||||
|
|
||||||
# Gradle and Maven with auto-import
|
# Unit Test CMake compile log folder
|
||||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
log_ut_cmake
|
||||||
# since they will be recreated, and may cause churn. Uncomment if using
|
|
||||||
# auto-import.
|
|
||||||
# .idea/artifacts
|
|
||||||
# .idea/compiler.xml
|
|
||||||
# .idea/jarRepositories.xml
|
|
||||||
# .idea/modules.xml
|
|
||||||
# .idea/*.iml
|
|
||||||
# .idea/modules
|
|
||||||
# *.iml
|
|
||||||
# *.ipr
|
|
||||||
|
|
||||||
# CMake
|
# test application build files
|
||||||
|
tools/test_apps/**/build/
|
||||||
|
tools/test_apps/**/build_*_*/
|
||||||
|
tools/test_apps/**/sdkconfig
|
||||||
|
tools/test_apps/**/sdkconfig.old
|
||||||
|
|
||||||
|
# IDF monitor test
|
||||||
|
tools/test_idf_monitor/outputs
|
||||||
|
|
||||||
|
TEST_LOGS
|
||||||
|
|
||||||
|
# gcov coverage reports
|
||||||
|
*.gcda
|
||||||
|
*.gcno
|
||||||
|
coverage.info
|
||||||
|
coverage_report/
|
||||||
|
|
||||||
|
test_multi_heap_host
|
||||||
|
|
||||||
|
# VS Code Settings
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
# VIM files
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
|
||||||
|
# Clion IDE CMake build & config
|
||||||
|
.idea/
|
||||||
cmake-build-*/
|
cmake-build-*/
|
||||||
|
|
||||||
# Mongo Explorer plugin
|
# Results for the checking of the Python coding style and static analysis
|
||||||
.idea/**/mongoSettings.xml
|
.mypy_cache
|
||||||
|
flake8_output.txt
|
||||||
|
|
||||||
# File-based project format
|
# ESP-IDF default build directory name
|
||||||
*.iws
|
build
|
||||||
|
|
||||||
# IntelliJ
|
# lock files for examples and components
|
||||||
out/
|
dependencies.lock
|
||||||
|
|
||||||
# mpeltonen/sbt-idea plugin
|
# managed_components for examples
|
||||||
.idea_modules/
|
managed_components
|
||||||
|
|
||||||
# JIRA plugin
|
|
||||||
atlassian-ide-plugin.xml
|
|
||||||
|
|
||||||
# Cursive Clojure plugin
|
|
||||||
.idea/replstate.xml
|
|
||||||
|
|
||||||
# SonarLint plugin
|
|
||||||
.idea/sonarlint/
|
|
||||||
|
|
||||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
||||||
com_crashlytics_export_strings.xml
|
|
||||||
crashlytics.properties
|
|
||||||
crashlytics-build.properties
|
|
||||||
fabric.properties
|
|
||||||
|
|
||||||
# Editor-based Rest Client
|
|
||||||
.idea/httpRequests
|
|
||||||
|
|
||||||
# Android studio 3.1+ serialized cache file
|
|
||||||
.idea/caches/build_file_checksums.ser
|
|
||||||
|
|
||||||
### CLion Patch ###
|
|
||||||
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
|
||||||
|
|
||||||
# *.iml
|
|
||||||
# modules.xml
|
|
||||||
# .idea/misc.xml
|
|
||||||
# *.ipr
|
|
||||||
|
|
||||||
# Sonarlint plugin
|
|
||||||
# https://plugins.jetbrains.com/plugin/7973-sonarlint
|
|
||||||
.idea/**/sonarlint/
|
|
||||||
|
|
||||||
# SonarQube Plugin
|
|
||||||
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
|
|
||||||
.idea/**/sonarIssues.xml
|
|
||||||
|
|
||||||
# Markdown Navigator plugin
|
|
||||||
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
|
|
||||||
.idea/**/markdown-navigator.xml
|
|
||||||
.idea/**/markdown-navigator-enh.xml
|
|
||||||
.idea/**/markdown-navigator/
|
|
||||||
|
|
||||||
# Cache file creation bug
|
|
||||||
# See https://youtrack.jetbrains.com/issue/JBR-2257
|
|
||||||
.idea/$CACHE_FILE$
|
|
||||||
|
|
||||||
# CodeStream plugin
|
|
||||||
# https://plugins.jetbrains.com/plugin/12206-codestream
|
|
||||||
.idea/codestream.xml
|
|
||||||
|
|
||||||
# Azure Toolkit for IntelliJ plugin
|
|
||||||
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
|
|
||||||
.idea/**/azureSettings.xml
|
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/clion
|
|
||||||
|
|
||||||
|
# pytest log
|
||||||
|
pytest_embedded_log/
|
||||||
|
68
Software/fab-reader2/.idea/fab-reader2.iml
generated
68
Software/fab-reader2/.idea/fab-reader2.iml
generated
@ -1,68 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module type="CPP_MODULE" version="4">
|
|
||||||
<component name="NewModuleRootManager">
|
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/embuild-9babbe67d2de4cbb" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/esp-idf-hal-68ae0d133e5a15be" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/esp-idf-hal-084bb28e9b6c5ea2" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/esp-idf-hal-47239b837d6ee894" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/esp-idf-hal-d12f38a36c6dfa35" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/esp-idf-svc-0047515e1899fdea" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/esp-idf-svc-ac315d2068ecf2bb" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/esp-idf-svc-dac2ab2f7b625b2c" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/esp-idf-sys-d183c7eca7ed1a96" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/esp-idf-sys-e0d1d1de09069f90" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/st25r3911b-0c006852892ebb71" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/st25r3911b-7fd53852c298ea00" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/st25r3911b-36b1c9630302c449" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/st25r3911b-80caa978a2ace45f" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/st25r3911b-293e42dd82b8f118" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/st25r3911b-01000ab60afd70cf" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/st25r3911b-e41e0690f31a6581" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/.fingerprint/st25r3911b-f1248137c4480368" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/anyhow-247076dbefdfb5f5/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/bindgen-a4720f05c1bce4c1/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/camino-38596ff78b5f2926/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/clang-sys-1b5b6e7680455c2d/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/crossbeam-utils-42cb18efc987abae/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/esp-idf-sys-e0d1d1de09069f90/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/heapless-db1bcbd514183453/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/indexmap-fbf31b69644e6a3a/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/libc-c1e1babbe4657158/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/log-d1d90fd0e922ca60/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/memchr-0265f24ac6ac8a06/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/memchr-a757d9e29a769773/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/proc-macro2-fb6f0bb184afc9b2/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/quote-8a129efb5a996e0c/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/rustversion-86403bc93d70ebeb/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/semver-1c933769456fe334/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/serde-9aa38470cfeaa2af/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/serde-726883488d19b36f/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/serde_derive-960c6ae76ae42418/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/serde_json-938c959b32527ac2/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/serde_json-57631392421907e3/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/syn-183e5df62932bef4/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/thiserror-d55ed1f3d201e311/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/esp-idf-hal-47239b837d6ee894" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/esp-idf-hal-47239b837d6ee894/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/esp-idf-hal-d12f38a36c6dfa35" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/esp-idf-hal-d12f38a36c6dfa35/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/esp-idf-svc-0047515e1899fdea" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/esp-idf-svc-0047515e1899fdea/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/st25r3911b-0c006852892ebb71" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/build/st25r3911b-0c006852892ebb71/out" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/st25r3911b/target/debug/examples" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/.embuild" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/.embuild/espressif/python_env/idf4.4_py3.7_env/bin" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/.embuild/espressif/python_env/idf4.4_py3.7_env/include" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/.embuild/espressif/python_env/idf4.4_py3.7_env/lib" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/.embuild/espressif/tools/riscv32-esp-elf/esp-2021r2-patch5-8.4.0/riscv32-esp-elf/riscv32-esp-elf/include/c++/8.4.0/debug" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/.embuild/espressif/tools/xtensa-esp32s2-elf/esp-2021r2-patch5-8.4.0/xtensa-esp32s2-elf/xtensa-esp32s2-elf/include/c++/8.4.0/debug" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
@ -7,5 +7,3 @@ cmake_minimum_required(VERSION 3.5)
|
|||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
project(fab-reader2-c)
|
project(fab-reader2-c)
|
||||||
|
|
||||||
set(COMPONENTS main)
|
|
||||||
#list(SET COMPONENTS "mqtt")
|
|
@ -1,31 +0,0 @@
|
|||||||
[package]
|
|
||||||
name = "fab-reader2"
|
|
||||||
version = "0.1.0"
|
|
||||||
authors = ["Kai Jan Kriegel <kai@kjkriegel.de>"]
|
|
||||||
edition = "2021"
|
|
||||||
resolver = "2"
|
|
||||||
|
|
||||||
[profile.release]
|
|
||||||
opt-level = "s"
|
|
||||||
|
|
||||||
[profile.dev]
|
|
||||||
debug = true # Symbols are nice and they don't increase the size on Flash
|
|
||||||
opt-level = "z"
|
|
||||||
|
|
||||||
[features]
|
|
||||||
pio = ["esp-idf-sys/pio"]
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
esp-idf-sys = { version = "0.31.6", features = ["binstart"] }
|
|
||||||
esp-idf-hal = "0.38.1"
|
|
||||||
anyhow = "1.0.58"
|
|
||||||
embedded-hal = { version ="0.2.7", features = ["unproven"] }
|
|
||||||
embedded-svc = "0.22.1"
|
|
||||||
pervasive_epd = { path = "pervasive_epd" }
|
|
||||||
embedded-graphics = "0.7.1"
|
|
||||||
st25r3911b = { path = "st25r3911b" }
|
|
||||||
|
|
||||||
|
|
||||||
[build-dependencies]
|
|
||||||
embuild = "0.29"
|
|
||||||
anyhow = "1"
|
|
@ -1,5 +0,0 @@
|
|||||||
// Necessary because of this issue: https://github.com/rust-lang/cargo/issues/9641
|
|
||||||
fn main() -> anyhow::Result<()> {
|
|
||||||
embuild::build::CfgArgs::output_propagated("ESP_IDF")?;
|
|
||||||
embuild::build::LinkArgs::output_propagated("ESP_IDF")
|
|
||||||
}
|
|
2
Software/fab-reader2/components/epd_266/CMakeLists.txt
Normal file
2
Software/fab-reader2/components/epd_266/CMakeLists.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
idf_component_register(SRCS "EPD_2in66.c" "Config/DEV_Config.c"
|
||||||
|
INCLUDE_DIRS "include" "include/Config")
|
70
Software/fab-reader2/components/epd_266/Config/DEV_Config.c
Normal file
70
Software/fab-reader2/components/epd_266/Config/DEV_Config.c
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* | File : DEV_Config.c
|
||||||
|
* | Author : Waveshare team
|
||||||
|
* | Function : Hardware underlying interface
|
||||||
|
* | Info :
|
||||||
|
* Used to shield the underlying layers of each master
|
||||||
|
* and enhance portability
|
||||||
|
*----------------
|
||||||
|
* | This version: V2.0
|
||||||
|
* | Date : 2018-10-30
|
||||||
|
* | Info :
|
||||||
|
# ******************************************************************************
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documnetation 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
|
||||||
|
# furished 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 OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
# THE SOFTWARE.
|
||||||
|
#
|
||||||
|
******************************************************************************/
|
||||||
|
#include "DEV_Config.h"
|
||||||
|
#include <esp_err.h>
|
||||||
|
#include <driver/spi_master.h>
|
||||||
|
#include <memory.h>
|
||||||
|
|
||||||
|
spi_device_handle_t pSpi;
|
||||||
|
|
||||||
|
void DEV_SPI_Init(spi_device_handle_t spi) {
|
||||||
|
pSpi = spi;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DEV_SPI_WriteByte(UBYTE value)
|
||||||
|
{
|
||||||
|
spi_transaction_t t;
|
||||||
|
memset(&t, 0, sizeof(t));
|
||||||
|
t.length = 8;
|
||||||
|
t.tx_buffer = &value;
|
||||||
|
|
||||||
|
ESP_ERROR_CHECK(spi_device_polling_transmit(pSpi, &t));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int DEV_Module_Init(void)
|
||||||
|
{
|
||||||
|
DEV_Digital_Write(EPD_DC_PIN, 0);
|
||||||
|
DEV_Digital_Write(EPD_CS_PIN, 0);
|
||||||
|
DEV_Digital_Write(EPD_RST_PIN, 1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DEV_Module_Exit(void)
|
||||||
|
{
|
||||||
|
DEV_Digital_Write(EPD_DC_PIN, 0);
|
||||||
|
DEV_Digital_Write(EPD_CS_PIN, 0);
|
||||||
|
|
||||||
|
//close 5V
|
||||||
|
DEV_Digital_Write(EPD_RST_PIN, 0);
|
||||||
|
}
|
||||||
|
|
259
Software/fab-reader2/components/epd_266/EPD_2in66.c
Normal file
259
Software/fab-reader2/components/epd_266/EPD_2in66.c
Normal file
@ -0,0 +1,259 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* | File : EPD_2in66.c
|
||||||
|
* | Author : Waveshare team
|
||||||
|
* | Function : 2.66inch e-paper
|
||||||
|
* | Info :
|
||||||
|
*----------------
|
||||||
|
* | This version: V1.0
|
||||||
|
* | Date : 2020-07-29
|
||||||
|
* | Info :
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documnetation 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
|
||||||
|
# furished 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 OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
# THE SOFTWARE.
|
||||||
|
#
|
||||||
|
******************************************************************************/
|
||||||
|
#include "EPD_2in66.h"
|
||||||
|
#include "Debug.h"
|
||||||
|
|
||||||
|
const unsigned char WF_PARTIAL[159] ={
|
||||||
|
0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x0A,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,
|
||||||
|
0x00,0x00,0x00,0x22,0x17,0x41,0xB0,0x32,0x36,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function : Software reset
|
||||||
|
parameter:
|
||||||
|
******************************************************************************/
|
||||||
|
static void EPD_2IN66_Reset(void)
|
||||||
|
{
|
||||||
|
DEV_Digital_Write(EPD_RST_PIN, 1);
|
||||||
|
DEV_Delay_ms(200);
|
||||||
|
DEV_Digital_Write(EPD_RST_PIN, 0);
|
||||||
|
DEV_Delay_ms(2);
|
||||||
|
DEV_Digital_Write(EPD_RST_PIN, 1);
|
||||||
|
DEV_Delay_ms(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function : send command
|
||||||
|
parameter:
|
||||||
|
Reg : Command register
|
||||||
|
******************************************************************************/
|
||||||
|
static void EPD_2IN66_SendCommand(UBYTE Reg)
|
||||||
|
{
|
||||||
|
DEV_Digital_Write(EPD_DC_PIN, 0);
|
||||||
|
DEV_Digital_Write(EPD_CS_PIN, 0);
|
||||||
|
DEV_SPI_WriteByte(Reg);
|
||||||
|
DEV_Digital_Write(EPD_CS_PIN, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function : send data
|
||||||
|
parameter:
|
||||||
|
Data : Write data
|
||||||
|
******************************************************************************/
|
||||||
|
static void EPD_2IN66_SendData(UBYTE Data)
|
||||||
|
{
|
||||||
|
DEV_Digital_Write(EPD_DC_PIN, 1);
|
||||||
|
DEV_Digital_Write(EPD_CS_PIN, 0);
|
||||||
|
DEV_SPI_WriteByte(Data);
|
||||||
|
DEV_Digital_Write(EPD_CS_PIN, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function : Wait until the busy_pin goes LOW
|
||||||
|
parameter:
|
||||||
|
******************************************************************************/
|
||||||
|
void EPD_2IN66_ReadBusy(void)
|
||||||
|
{
|
||||||
|
Debug("e-Paper busy\r\n");
|
||||||
|
DEV_Delay_ms(100);
|
||||||
|
while(DEV_Digital_Read(EPD_BUSY_PIN) == 1) { //LOW: idle, HIGH: busy
|
||||||
|
DEV_Delay_ms(100);
|
||||||
|
}
|
||||||
|
DEV_Delay_ms(100);
|
||||||
|
Debug("e-Paper busy release\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function : Turn On Display
|
||||||
|
parameter:
|
||||||
|
******************************************************************************/
|
||||||
|
static void EPD_2IN66_TurnOnDisplay(void)
|
||||||
|
{
|
||||||
|
EPD_2IN66_SendCommand(0x20);
|
||||||
|
EPD_2IN66_ReadBusy();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function : Send LUT
|
||||||
|
parameter:
|
||||||
|
******************************************************************************/
|
||||||
|
static void EPD_2IN66_SetLUA(void)
|
||||||
|
{
|
||||||
|
UWORD count;
|
||||||
|
EPD_2IN66_SendCommand(0x32);
|
||||||
|
for(count=0;count<153;count++){
|
||||||
|
EPD_2IN66_SendData(WF_PARTIAL[count]);
|
||||||
|
}
|
||||||
|
EPD_2IN66_ReadBusy();
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function : Initialize the e-Paper register
|
||||||
|
parameter:
|
||||||
|
******************************************************************************/
|
||||||
|
void EPD_2IN66_Init(void)
|
||||||
|
{
|
||||||
|
EPD_2IN66_Reset();
|
||||||
|
EPD_2IN66_ReadBusy();
|
||||||
|
EPD_2IN66_SendCommand(0x12);//soft reset
|
||||||
|
EPD_2IN66_ReadBusy();
|
||||||
|
/* Y increment, X increment */
|
||||||
|
EPD_2IN66_SendCommand(0x11);
|
||||||
|
EPD_2IN66_SendData(0x03);
|
||||||
|
/* Set RamX-address Start/End position */
|
||||||
|
EPD_2IN66_SendCommand(0x44);
|
||||||
|
EPD_2IN66_SendData(0x01);
|
||||||
|
EPD_2IN66_SendData((EPD_2IN66_WIDTH % 8 == 0)? (EPD_2IN66_WIDTH / 8 ): (EPD_2IN66_WIDTH / 8 + 1) );
|
||||||
|
/* Set RamY-address Start/End position */
|
||||||
|
EPD_2IN66_SendCommand(0x45);
|
||||||
|
EPD_2IN66_SendData(0);
|
||||||
|
EPD_2IN66_SendData(0);
|
||||||
|
EPD_2IN66_SendData((EPD_2IN66_HEIGHT&0xff));
|
||||||
|
EPD_2IN66_SendData((EPD_2IN66_HEIGHT&0x100)>>8);
|
||||||
|
|
||||||
|
|
||||||
|
EPD_2IN66_ReadBusy();
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function : Initialize the e-Paper register(Partial display)
|
||||||
|
parameter:
|
||||||
|
******************************************************************************/
|
||||||
|
void EPD_2IN66_Init_Partial(void)
|
||||||
|
{
|
||||||
|
EPD_2IN66_Reset();
|
||||||
|
EPD_2IN66_ReadBusy();
|
||||||
|
EPD_2IN66_SendCommand(0x12);//soft reset
|
||||||
|
EPD_2IN66_ReadBusy();
|
||||||
|
|
||||||
|
EPD_2IN66_SetLUA();
|
||||||
|
EPD_2IN66_SendCommand(0x37);
|
||||||
|
EPD_2IN66_SendData(0x00);
|
||||||
|
EPD_2IN66_SendData(0x00);
|
||||||
|
EPD_2IN66_SendData(0x00);
|
||||||
|
EPD_2IN66_SendData(0x00);
|
||||||
|
EPD_2IN66_SendData(0x00);
|
||||||
|
EPD_2IN66_SendData(0x40);
|
||||||
|
EPD_2IN66_SendData(0x00);
|
||||||
|
EPD_2IN66_SendData(0x00);
|
||||||
|
EPD_2IN66_SendData(0x00);
|
||||||
|
EPD_2IN66_SendData(0x00);
|
||||||
|
|
||||||
|
/* Y increment, X increment */
|
||||||
|
EPD_2IN66_SendCommand(0x11);
|
||||||
|
EPD_2IN66_SendData(0x03);
|
||||||
|
/* Set RamX-address Start/End position */
|
||||||
|
EPD_2IN66_SendCommand(0x44);
|
||||||
|
EPD_2IN66_SendData(0x01);
|
||||||
|
EPD_2IN66_SendData((EPD_2IN66_WIDTH % 8 == 0)? (EPD_2IN66_WIDTH / 8 ): (EPD_2IN66_WIDTH / 8 + 1) );
|
||||||
|
/* Set RamY-address Start/End position */
|
||||||
|
EPD_2IN66_SendCommand(0x45);
|
||||||
|
EPD_2IN66_SendData(0);
|
||||||
|
EPD_2IN66_SendData(0);
|
||||||
|
EPD_2IN66_SendData((EPD_2IN66_HEIGHT&0xff));
|
||||||
|
EPD_2IN66_SendData((EPD_2IN66_HEIGHT&0x100)>>8);
|
||||||
|
|
||||||
|
EPD_2IN66_SendCommand(0x3C);
|
||||||
|
EPD_2IN66_SendData(0x80);
|
||||||
|
|
||||||
|
EPD_2IN66_SendCommand(0x22);
|
||||||
|
EPD_2IN66_SendData(0xcf);
|
||||||
|
EPD_2IN66_SendCommand(0x20);
|
||||||
|
EPD_2IN66_ReadBusy();
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function : Clear screen
|
||||||
|
parameter:
|
||||||
|
******************************************************************************/
|
||||||
|
void EPD_2IN66_Clear(void)
|
||||||
|
{
|
||||||
|
UWORD Width, Height;
|
||||||
|
Width = (EPD_2IN66_WIDTH % 8 == 0)? (EPD_2IN66_WIDTH / 8 ): (EPD_2IN66_WIDTH / 8 + 1);
|
||||||
|
Height = EPD_2IN66_HEIGHT;
|
||||||
|
EPD_2IN66_SendCommand(0x24);
|
||||||
|
for (UWORD j = 0; j <=Height; j++) {
|
||||||
|
for (UWORD i = 0; i < Width; i++) {
|
||||||
|
EPD_2IN66_SendData(0xff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EPD_2IN66_TurnOnDisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function : Sends the image buffer in RAM to e-Paper and displays
|
||||||
|
parameter:
|
||||||
|
******************************************************************************/
|
||||||
|
void EPD_2IN66_Display(UBYTE *Image)
|
||||||
|
{
|
||||||
|
UWORD Width, Height;
|
||||||
|
Width = (EPD_2IN66_WIDTH % 8 == 0)? (EPD_2IN66_WIDTH / 8 ): (EPD_2IN66_WIDTH / 8 + 1);
|
||||||
|
Height = EPD_2IN66_HEIGHT;
|
||||||
|
|
||||||
|
UDOUBLE Addr = 0;
|
||||||
|
|
||||||
|
// UDOUBLE Offset = ImageName;
|
||||||
|
EPD_2IN66_SendCommand(0x24);
|
||||||
|
for (UWORD j = 0; j <Height; j++) {
|
||||||
|
for (UWORD i = 0; i <Width; i++) {
|
||||||
|
Addr = i + j * Width;
|
||||||
|
EPD_2IN66_SendData(Image[Addr]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EPD_2IN66_TurnOnDisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function : Enter sleep mode
|
||||||
|
parameter:
|
||||||
|
******************************************************************************/
|
||||||
|
void EPD_2IN66_Sleep(void)
|
||||||
|
{
|
||||||
|
EPD_2IN66_SendCommand(0x10);
|
||||||
|
EPD_2IN66_SendData(0x01);
|
||||||
|
//EPD_2IN66_ReadBusy();
|
||||||
|
}
|
@ -0,0 +1,94 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* | File : DEV_Config.h
|
||||||
|
* | Author : Waveshare team
|
||||||
|
* | Function : Hardware underlying interface
|
||||||
|
* | Info :
|
||||||
|
* Used to shield the underlying layers of each master
|
||||||
|
* and enhance portability
|
||||||
|
*----------------
|
||||||
|
* | This version: V2.0
|
||||||
|
* | Date : 2018-10-30
|
||||||
|
* | Info :
|
||||||
|
* 1.add:
|
||||||
|
* UBYTE\UWORD\UDOUBLE
|
||||||
|
* 2.Change:
|
||||||
|
* EPD_RST -> EPD_RST_PIN
|
||||||
|
* EPD_DC -> EPD_DC_PIN
|
||||||
|
* EPD_CS -> EPD_CS_PIN
|
||||||
|
* EPD_BUSY -> EPD_BUSY_PIN
|
||||||
|
* 3.Remote:
|
||||||
|
* EPD_RST_1\EPD_RST_0
|
||||||
|
* EPD_DC_1\EPD_DC_0
|
||||||
|
* EPD_CS_1\EPD_CS_0
|
||||||
|
* EPD_BUSY_1\EPD_BUSY_0
|
||||||
|
* 3.add:
|
||||||
|
* #define DEV_Digital_Write(_pin, _value) bcm2835_gpio_write(_pin, _value)
|
||||||
|
* #define DEV_Digital_Read(_pin) bcm2835_gpio_lev(_pin)
|
||||||
|
* #define DEV_SPI_WriteByte(__value) bcm2835_spi_transfer(__value)
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documnetation 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
|
||||||
|
# furished 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 OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
# THE SOFTWARE.
|
||||||
|
#
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef _DEV_CONFIG_H_
|
||||||
|
#define _DEV_CONFIG_H_
|
||||||
|
|
||||||
|
#include "esp_err.h"
|
||||||
|
#include "driver/gpio.h"
|
||||||
|
#include <freertos/FreeRTOS.h>
|
||||||
|
#include <freertos/task.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <driver/spi_master.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* data
|
||||||
|
**/
|
||||||
|
#define UBYTE uint8_t
|
||||||
|
#define UWORD uint16_t
|
||||||
|
#define UDOUBLE uint32_t
|
||||||
|
|
||||||
|
/**
|
||||||
|
* e-Paper GPIO
|
||||||
|
**/
|
||||||
|
#define EPD_RST_PIN 40
|
||||||
|
#define EPD_DC_PIN 39
|
||||||
|
#define EPD_CS_PIN 38
|
||||||
|
#define EPD_BUSY_PIN 41
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GPIO read and write
|
||||||
|
**/
|
||||||
|
#define DEV_Digital_Write(_pin, _value) ESP_ERROR_CHECK(gpio_set_level(_pin, _value))
|
||||||
|
#define DEV_Digital_Read(_pin) gpio_get_level(_pin)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* delay x ms
|
||||||
|
**/
|
||||||
|
#define DEV_Delay_ms(__xms) vTaskDelay(pdMS_TO_TICKS(__xms))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SPI
|
||||||
|
**/
|
||||||
|
void DEV_SPI_Init(spi_device_handle_t spi);
|
||||||
|
|
||||||
|
void DEV_SPI_WriteByte(UBYTE value);
|
||||||
|
|
||||||
|
int DEV_Module_Init(void);
|
||||||
|
void DEV_Module_Exit(void);
|
||||||
|
#endif
|
@ -0,0 +1,26 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* | File : Debug.h
|
||||||
|
* | Author : Waveshare team
|
||||||
|
* | Function : debug with printf
|
||||||
|
* | Info :
|
||||||
|
* Image scanning
|
||||||
|
* Please use progressive scanning to generate images or fonts
|
||||||
|
*----------------
|
||||||
|
* | This version: V1.0
|
||||||
|
* | Date : 2018-01-11
|
||||||
|
* | Info : Basic version
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef __DEBUG_H
|
||||||
|
#define __DEBUG_H
|
||||||
|
|
||||||
|
#include <esp_log.h>
|
||||||
|
|
||||||
|
#define DEBUG 1
|
||||||
|
#if DEBUG
|
||||||
|
#define Debug(...) ESP_LOGD("EPD", __VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define Debug(__info,...)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
46
Software/fab-reader2/components/epd_266/include/EPD_2in66.h
Normal file
46
Software/fab-reader2/components/epd_266/include/EPD_2in66.h
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* | File : EPD_2in66.h
|
||||||
|
* | Author : Waveshare team
|
||||||
|
* | Function : 2.66inch e-paper
|
||||||
|
* | Info :
|
||||||
|
*----------------
|
||||||
|
* | This version: V1.0
|
||||||
|
* | Date : 2020-07-29
|
||||||
|
* | Info :
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documnetation 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
|
||||||
|
# furished 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 OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
# THE SOFTWARE.
|
||||||
|
#
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef __EPD_2IN66_H_
|
||||||
|
#define __EPD_2IN66_H_
|
||||||
|
|
||||||
|
#include "DEV_Config.h"
|
||||||
|
|
||||||
|
// Display resolution
|
||||||
|
#define EPD_2IN66_WIDTH 152
|
||||||
|
#define EPD_2IN66_HEIGHT 296
|
||||||
|
|
||||||
|
|
||||||
|
void EPD_2IN66_Init(void);
|
||||||
|
void EPD_2IN66_Init_Partial(void);
|
||||||
|
void EPD_2IN66_Clear(void);
|
||||||
|
void EPD_2IN66_Display(UBYTE *Image);
|
||||||
|
void EPD_2IN66_Sleep(void);
|
||||||
|
|
||||||
|
#endif
|
3
Software/fab-reader2/components/epd_gfx/CMakeLists.txt
Normal file
3
Software/fab-reader2/components/epd_gfx/CMakeLists.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
idf_component_register(SRCS "GUI/GUI_Paint.c" "Fonts/font8.c" "Fonts/font12.c" "Fonts/font16.c" "Fonts/font20.c" "Fonts/font24.c"
|
||||||
|
INCLUDE_DIRS "include/GUI" "include/Fonts"
|
||||||
|
REQUIRES "epd_266")
|
1384
Software/fab-reader2/components/epd_gfx/Fonts/font12.c
Normal file
1384
Software/fab-reader2/components/epd_gfx/Fonts/font12.c
Normal file
File diff suppressed because it is too large
Load Diff
1764
Software/fab-reader2/components/epd_gfx/Fonts/font16.c
Normal file
1764
Software/fab-reader2/components/epd_gfx/Fonts/font16.c
Normal file
File diff suppressed because it is too large
Load Diff
2142
Software/fab-reader2/components/epd_gfx/Fonts/font20.c
Normal file
2142
Software/fab-reader2/components/epd_gfx/Fonts/font20.c
Normal file
File diff suppressed because it is too large
Load Diff
2520
Software/fab-reader2/components/epd_gfx/Fonts/font24.c
Normal file
2520
Software/fab-reader2/components/epd_gfx/Fonts/font24.c
Normal file
File diff suppressed because it is too large
Load Diff
1004
Software/fab-reader2/components/epd_gfx/Fonts/font8.c
Normal file
1004
Software/fab-reader2/components/epd_gfx/Fonts/font8.c
Normal file
File diff suppressed because it is too large
Load Diff
890
Software/fab-reader2/components/epd_gfx/GUI/GUI_Paint.c
Normal file
890
Software/fab-reader2/components/epd_gfx/GUI/GUI_Paint.c
Normal file
@ -0,0 +1,890 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* | File : GUI_Paint.c
|
||||||
|
* | Author : Waveshare electronics
|
||||||
|
* | Function : Achieve drawing: draw points, lines, boxes, circles and
|
||||||
|
* their size, solid dotted line, solid rectangle hollow
|
||||||
|
* rectangle, solid circle hollow circle.
|
||||||
|
* | Info :
|
||||||
|
* Achieve display characters: Display a single character, string, number
|
||||||
|
* Achieve time display: adaptive size display time minutes and seconds
|
||||||
|
*----------------
|
||||||
|
* | This version: V3.1
|
||||||
|
* | Date : 2020-07-08
|
||||||
|
* | Info :
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* V3.1(2020-07-08):
|
||||||
|
* 1.Change: Paint_SetScale(UBYTE scale)
|
||||||
|
* Add scale 7 for 5.65f e-Parper
|
||||||
|
* 2.Change: Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color)
|
||||||
|
* Add the branch for scale 7
|
||||||
|
* 3.Change: Paint_Clear(UWORD Color)
|
||||||
|
* Add the branch for scale 7
|
||||||
|
*
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* V3.0(2019-04-18):
|
||||||
|
* 1.Change:
|
||||||
|
* Paint_DrawPoint(..., DOT_STYLE DOT_STYLE)
|
||||||
|
* => Paint_DrawPoint(..., DOT_STYLE Dot_Style)
|
||||||
|
* Paint_DrawLine(..., LINE_STYLE Line_Style, DOT_PIXEL Dot_Pixel)
|
||||||
|
* => Paint_DrawLine(..., DOT_PIXEL Line_width, LINE_STYLE Line_Style)
|
||||||
|
* Paint_DrawRectangle(..., DRAW_FILL Filled, DOT_PIXEL Dot_Pixel)
|
||||||
|
* => Paint_DrawRectangle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
|
||||||
|
* Paint_DrawCircle(..., DRAW_FILL Draw_Fill, DOT_PIXEL Dot_Pixel)
|
||||||
|
* => Paint_DrawCircle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Filll)
|
||||||
|
*
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* V2.0(2018-11-15):
|
||||||
|
* 1.add: Paint_NewImage()
|
||||||
|
* Create an image's properties
|
||||||
|
* 2.add: Paint_SelectImage()
|
||||||
|
* Select the picture to be drawn
|
||||||
|
* 3.add: Paint_SetRotate()
|
||||||
|
* Set the direction of the cache
|
||||||
|
* 4.add: Paint_RotateImage()
|
||||||
|
* Can flip the picture, Support 0-360 degrees,
|
||||||
|
* but only 90.180.270 rotation is better
|
||||||
|
* 4.add: Paint_SetMirroring()
|
||||||
|
* Can Mirroring the picture, horizontal, vertical, origin
|
||||||
|
* 5.add: Paint_DrawString_CN()
|
||||||
|
* Can display Chinese(GB1312)
|
||||||
|
*
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* V1.0(2018-07-17):
|
||||||
|
* Create library
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documnetation 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
|
||||||
|
* furished 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 OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#include "GUI_Paint.h"
|
||||||
|
#include "DEV_Config.h"
|
||||||
|
#include "Debug.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h> //memset()
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
PAINT Paint;
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Create Image
|
||||||
|
parameter:
|
||||||
|
image : Pointer to the image cache
|
||||||
|
width : The width of the picture
|
||||||
|
Height : The height of the picture
|
||||||
|
Color : Whether the picture is inverted
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_NewImage(UBYTE *image, UWORD Width, UWORD Height, UWORD Rotate, UWORD Color)
|
||||||
|
{
|
||||||
|
Paint.Image = NULL;
|
||||||
|
Paint.Image = image;
|
||||||
|
|
||||||
|
Paint.WidthMemory = Width;
|
||||||
|
Paint.HeightMemory = Height;
|
||||||
|
Paint.Color = Color;
|
||||||
|
Paint.Scale = 2;
|
||||||
|
|
||||||
|
Paint.WidthByte = (Width % 8 == 0)? (Width / 8 ): (Width / 8 + 1);
|
||||||
|
Paint.HeightByte = Height;
|
||||||
|
// printf("WidthByte = %d, HeightByte = %d\r\n", Paint.WidthByte, Paint.HeightByte);
|
||||||
|
// printf(" EPD_WIDTH / 8 = %d\r\n", 122 / 8);
|
||||||
|
|
||||||
|
Paint.Rotate = Rotate;
|
||||||
|
Paint.Mirror = MIRROR_NONE;
|
||||||
|
|
||||||
|
if(Rotate == ROTATE_0 || Rotate == ROTATE_180) {
|
||||||
|
Paint.Width = Width;
|
||||||
|
Paint.Height = Height;
|
||||||
|
} else {
|
||||||
|
Paint.Width = Height;
|
||||||
|
Paint.Height = Width;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Select Image
|
||||||
|
parameter:
|
||||||
|
image : Pointer to the image cache
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_SelectImage(UBYTE *image)
|
||||||
|
{
|
||||||
|
Paint.Image = image;
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Select Image Rotate
|
||||||
|
parameter:
|
||||||
|
Rotate : 0,90,180,270
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_SetRotate(UWORD Rotate)
|
||||||
|
{
|
||||||
|
if(Rotate == ROTATE_0 || Rotate == ROTATE_90 || Rotate == ROTATE_180 || Rotate == ROTATE_270) {
|
||||||
|
Debug("Set image Rotate %d\r\n", Rotate);
|
||||||
|
Paint.Rotate = Rotate;
|
||||||
|
} else {
|
||||||
|
Debug("rotate = 0, 90, 180, 270\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Paint_SetScale(UBYTE scale)
|
||||||
|
{
|
||||||
|
if(scale == 2){
|
||||||
|
Paint.Scale = scale;
|
||||||
|
Paint.WidthByte = (Paint.WidthMemory % 8 == 0)? (Paint.WidthMemory / 8 ): (Paint.WidthMemory / 8 + 1);
|
||||||
|
}else if(scale == 4){
|
||||||
|
Paint.Scale = scale;
|
||||||
|
Paint.WidthByte = (Paint.WidthMemory % 4 == 0)? (Paint.WidthMemory / 4 ): (Paint.WidthMemory / 4 + 1);
|
||||||
|
}else if(scale == 7){//Only applicable with 5in65 e-Paper
|
||||||
|
Paint.Scale = scale;
|
||||||
|
Paint.WidthByte = (Paint.WidthMemory % 2 == 0)? (Paint.WidthMemory / 2 ): (Paint.WidthMemory / 2 + 1);;
|
||||||
|
}else{
|
||||||
|
Debug("Set Scale Input parameter error\r\n");
|
||||||
|
Debug("Scale Only support: 2 4 7\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/******************************************************************************
|
||||||
|
function: Select Image mirror
|
||||||
|
parameter:
|
||||||
|
mirror :Not mirror,Horizontal mirror,Vertical mirror,Origin mirror
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_SetMirroring(UBYTE mirror)
|
||||||
|
{
|
||||||
|
if(mirror == MIRROR_NONE || mirror == MIRROR_HORIZONTAL ||
|
||||||
|
mirror == MIRROR_VERTICAL || mirror == MIRROR_ORIGIN) {
|
||||||
|
Debug("mirror image x:%s, y:%s\r\n",(mirror & 0x01)? "mirror":"none", ((mirror >> 1) & 0x01)? "mirror":"none");
|
||||||
|
Paint.Mirror = mirror;
|
||||||
|
} else {
|
||||||
|
Debug("mirror should be MIRROR_NONE, MIRROR_HORIZONTAL, \
|
||||||
|
MIRROR_VERTICAL or MIRROR_ORIGIN\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Draw Pixels
|
||||||
|
parameter:
|
||||||
|
Xpoint : At point X
|
||||||
|
Ypoint : At point Y
|
||||||
|
Color : Painted colors
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color)
|
||||||
|
{
|
||||||
|
if(Xpoint > Paint.Width || Ypoint > Paint.Height){
|
||||||
|
Debug("Exceeding display boundaries\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UWORD X, Y;
|
||||||
|
|
||||||
|
switch(Paint.Rotate) {
|
||||||
|
case 0:
|
||||||
|
X = Xpoint;
|
||||||
|
Y = Ypoint;
|
||||||
|
break;
|
||||||
|
case 90:
|
||||||
|
X = Paint.WidthMemory - Ypoint - 1;
|
||||||
|
Y = Xpoint;
|
||||||
|
break;
|
||||||
|
case 180:
|
||||||
|
X = Paint.WidthMemory - Xpoint - 1;
|
||||||
|
Y = Paint.HeightMemory - Ypoint - 1;
|
||||||
|
break;
|
||||||
|
case 270:
|
||||||
|
X = Ypoint;
|
||||||
|
Y = Paint.HeightMemory - Xpoint - 1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(Paint.Mirror) {
|
||||||
|
case MIRROR_NONE:
|
||||||
|
break;
|
||||||
|
case MIRROR_HORIZONTAL:
|
||||||
|
X = Paint.WidthMemory - X - 1;
|
||||||
|
break;
|
||||||
|
case MIRROR_VERTICAL:
|
||||||
|
Y = Paint.HeightMemory - Y - 1;
|
||||||
|
break;
|
||||||
|
case MIRROR_ORIGIN:
|
||||||
|
X = Paint.WidthMemory - X - 1;
|
||||||
|
Y = Paint.HeightMemory - Y - 1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(X > Paint.WidthMemory || Y > Paint.HeightMemory){
|
||||||
|
Debug("Exceeding display boundaries\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Paint.Scale == 2){
|
||||||
|
UDOUBLE Addr = X / 8 + Y * Paint.WidthByte;
|
||||||
|
UBYTE Rdata = Paint.Image[Addr];
|
||||||
|
if(Color == BLACK)
|
||||||
|
Paint.Image[Addr] = Rdata & ~(0x80 >> (X % 8));
|
||||||
|
else
|
||||||
|
Paint.Image[Addr] = Rdata | (0x80 >> (X % 8));
|
||||||
|
}else if(Paint.Scale == 4){
|
||||||
|
UDOUBLE Addr = X / 4 + Y * Paint.WidthByte;
|
||||||
|
Color = Color % 4;//Guaranteed color scale is 4 --- 0~3
|
||||||
|
UBYTE Rdata = Paint.Image[Addr];
|
||||||
|
|
||||||
|
Rdata = Rdata & (~(0xC0 >> ((X % 4)*2)));
|
||||||
|
Paint.Image[Addr] = Rdata | ((Color << 6) >> ((X % 4)*2));
|
||||||
|
}else if(Paint.Scale == 7){
|
||||||
|
UDOUBLE Addr = X / 2 + Y * Paint.WidthByte;
|
||||||
|
UBYTE Rdata = Paint.Image[Addr];
|
||||||
|
Rdata = Rdata & (~(0xF0 >> ((X % 2)*4)));//Clear first, then set value
|
||||||
|
Paint.Image[Addr] = Rdata | ((Color << 4) >> ((X % 2)*4));
|
||||||
|
//printf("Add = %d ,data = %d\r\n",Addr,Rdata);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Clear the color of the picture
|
||||||
|
parameter:
|
||||||
|
Color : Painted colors
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_Clear(UWORD Color)
|
||||||
|
{
|
||||||
|
if(Paint.Scale == 2) {
|
||||||
|
for (UWORD Y = 0; Y < Paint.HeightByte; Y++) {
|
||||||
|
for (UWORD X = 0; X < Paint.WidthByte; X++ ) {//8 pixel = 1 byte
|
||||||
|
UDOUBLE Addr = X + Y*Paint.WidthByte;
|
||||||
|
Paint.Image[Addr] = Color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else if(Paint.Scale == 4) {
|
||||||
|
for (UWORD Y = 0; Y < Paint.HeightByte; Y++) {
|
||||||
|
for (UWORD X = 0; X < Paint.WidthByte; X++ ) {
|
||||||
|
UDOUBLE Addr = X + Y*Paint.WidthByte;
|
||||||
|
Paint.Image[Addr] = (Color<<6)|(Color<<4)|(Color<<2)|Color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else if(Paint.Scale == 7) {
|
||||||
|
for (UWORD Y = 0; Y < Paint.HeightByte; Y++) {
|
||||||
|
for (UWORD X = 0; X < Paint.WidthByte; X++ ) {
|
||||||
|
UDOUBLE Addr = X + Y*Paint.WidthByte;
|
||||||
|
Paint.Image[Addr] = (Color<<4)|Color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Clear the color of a window
|
||||||
|
parameter:
|
||||||
|
Xstart : x starting point
|
||||||
|
Ystart : Y starting point
|
||||||
|
Xend : x end point
|
||||||
|
Yend : y end point
|
||||||
|
Color : Painted colors
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color)
|
||||||
|
{
|
||||||
|
UWORD X, Y;
|
||||||
|
for (Y = Ystart; Y < Yend; Y++) {
|
||||||
|
for (X = Xstart; X < Xend; X++) {//8 pixel = 1 byte
|
||||||
|
Paint_SetPixel(X, Y, Color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Draw Point(Xpoint, Ypoint) Fill the color
|
||||||
|
parameter:
|
||||||
|
Xpoint : The Xpoint coordinate of the point
|
||||||
|
Ypoint : The Ypoint coordinate of the point
|
||||||
|
Color : Painted color
|
||||||
|
Dot_Pixel : point size
|
||||||
|
Dot_Style : point Style
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color,
|
||||||
|
DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_Style)
|
||||||
|
{
|
||||||
|
if (Xpoint > Paint.Width || Ypoint > Paint.Height) {
|
||||||
|
Debug("Paint_DrawPoint Input exceeds the normal display range\r\n");
|
||||||
|
printf("Xpoint = %d , Paint.Width = %d \r\n ",Xpoint,Paint.Width);
|
||||||
|
printf("Ypoint = %d , Paint.Height = %d \r\n ",Ypoint,Paint.Height);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int16_t XDir_Num , YDir_Num;
|
||||||
|
if (Dot_Style == DOT_FILL_AROUND) {
|
||||||
|
for (XDir_Num = 0; XDir_Num < 2 * Dot_Pixel - 1; XDir_Num++) {
|
||||||
|
for (YDir_Num = 0; YDir_Num < 2 * Dot_Pixel - 1; YDir_Num++) {
|
||||||
|
if(Xpoint + XDir_Num - Dot_Pixel < 0 || Ypoint + YDir_Num - Dot_Pixel < 0)
|
||||||
|
break;
|
||||||
|
// printf("x = %d, y = %d\r\n", Xpoint + XDir_Num - Dot_Pixel, Ypoint + YDir_Num - Dot_Pixel);
|
||||||
|
Paint_SetPixel(Xpoint + XDir_Num - Dot_Pixel, Ypoint + YDir_Num - Dot_Pixel, Color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (XDir_Num = 0; XDir_Num < Dot_Pixel; XDir_Num++) {
|
||||||
|
for (YDir_Num = 0; YDir_Num < Dot_Pixel; YDir_Num++) {
|
||||||
|
Paint_SetPixel(Xpoint + XDir_Num - 1, Ypoint + YDir_Num - 1, Color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Draw a line of arbitrary slope
|
||||||
|
parameter:
|
||||||
|
Xstart :Starting Xpoint point coordinates
|
||||||
|
Ystart :Starting Xpoint point coordinates
|
||||||
|
Xend :End point Xpoint coordinate
|
||||||
|
Yend :End point Ypoint coordinate
|
||||||
|
Color :The color of the line segment
|
||||||
|
Line_width : Line width
|
||||||
|
Line_Style: Solid and dotted lines
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend,
|
||||||
|
UWORD Color, DOT_PIXEL Line_width, LINE_STYLE Line_Style)
|
||||||
|
{
|
||||||
|
if (Xstart > Paint.Width || Ystart > Paint.Height ||
|
||||||
|
Xend > Paint.Width || Yend > Paint.Height) {
|
||||||
|
Debug("Paint_DrawLine Input exceeds the normal display range\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
UWORD Xpoint = Xstart;
|
||||||
|
UWORD Ypoint = Ystart;
|
||||||
|
int dx = (int)Xend - (int)Xstart >= 0 ? Xend - Xstart : Xstart - Xend;
|
||||||
|
int dy = (int)Yend - (int)Ystart <= 0 ? Yend - Ystart : Ystart - Yend;
|
||||||
|
|
||||||
|
// Increment direction, 1 is positive, -1 is counter;
|
||||||
|
int XAddway = Xstart < Xend ? 1 : -1;
|
||||||
|
int YAddway = Ystart < Yend ? 1 : -1;
|
||||||
|
|
||||||
|
//Cumulative error
|
||||||
|
int Esp = dx + dy;
|
||||||
|
char Dotted_Len = 0;
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
Dotted_Len++;
|
||||||
|
//Painted dotted line, 2 point is really virtual
|
||||||
|
if (Line_Style == LINE_STYLE_DOTTED && Dotted_Len % 3 == 0) {
|
||||||
|
//Debug("LINE_DOTTED\r\n");
|
||||||
|
Paint_DrawPoint(Xpoint, Ypoint, IMAGE_BACKGROUND, Line_width, DOT_STYLE_DFT);
|
||||||
|
Dotted_Len = 0;
|
||||||
|
} else {
|
||||||
|
Paint_DrawPoint(Xpoint, Ypoint, Color, Line_width, DOT_STYLE_DFT);
|
||||||
|
}
|
||||||
|
if (2 * Esp >= dy) {
|
||||||
|
if (Xpoint == Xend)
|
||||||
|
break;
|
||||||
|
Esp += dy;
|
||||||
|
Xpoint += XAddway;
|
||||||
|
}
|
||||||
|
if (2 * Esp <= dx) {
|
||||||
|
if (Ypoint == Yend)
|
||||||
|
break;
|
||||||
|
Esp += dx;
|
||||||
|
Ypoint += YAddway;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Draw a rectangle
|
||||||
|
parameter:
|
||||||
|
Xstart :Rectangular Starting Xpoint point coordinates
|
||||||
|
Ystart :Rectangular Starting Xpoint point coordinates
|
||||||
|
Xend :Rectangular End point Xpoint coordinate
|
||||||
|
Yend :Rectangular End point Ypoint coordinate
|
||||||
|
Color :The color of the Rectangular segment
|
||||||
|
Line_width: Line width
|
||||||
|
Draw_Fill : Whether to fill the inside of the rectangle
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend,
|
||||||
|
UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
|
||||||
|
{
|
||||||
|
if (Xstart > Paint.Width || Ystart > Paint.Height ||
|
||||||
|
Xend > Paint.Width || Yend > Paint.Height) {
|
||||||
|
Debug("Input exceeds the normal display range\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Draw_Fill) {
|
||||||
|
UWORD Ypoint;
|
||||||
|
for(Ypoint = Ystart; Ypoint < Yend; Ypoint++) {
|
||||||
|
Paint_DrawLine(Xstart, Ypoint, Xend, Ypoint, Color , Line_width, LINE_STYLE_SOLID);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Paint_DrawLine(Xstart, Ystart, Xend, Ystart, Color, Line_width, LINE_STYLE_SOLID);
|
||||||
|
Paint_DrawLine(Xstart, Ystart, Xstart, Yend, Color, Line_width, LINE_STYLE_SOLID);
|
||||||
|
Paint_DrawLine(Xend, Yend, Xend, Ystart, Color, Line_width, LINE_STYLE_SOLID);
|
||||||
|
Paint_DrawLine(Xend, Yend, Xstart, Yend, Color, Line_width, LINE_STYLE_SOLID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Use the 8-point method to draw a circle of the
|
||||||
|
specified size at the specified position->
|
||||||
|
parameter:
|
||||||
|
X_Center :Center X coordinate
|
||||||
|
Y_Center :Center Y coordinate
|
||||||
|
Radius :circle Radius
|
||||||
|
Color :The color of the :circle segment
|
||||||
|
Line_width: Line width
|
||||||
|
Draw_Fill : Whether to fill the inside of the Circle
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius,
|
||||||
|
UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
|
||||||
|
{
|
||||||
|
if (X_Center > Paint.Width || Y_Center >= Paint.Height) {
|
||||||
|
Debug("Paint_DrawCircle Input exceeds the normal display range\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Draw a circle from(0, R) as a starting point
|
||||||
|
int16_t XCurrent, YCurrent;
|
||||||
|
XCurrent = 0;
|
||||||
|
YCurrent = Radius;
|
||||||
|
|
||||||
|
//Cumulative error,judge the next point of the logo
|
||||||
|
int16_t Esp = 3 - (Radius << 1 );
|
||||||
|
|
||||||
|
int16_t sCountY;
|
||||||
|
if (Draw_Fill == DRAW_FILL_FULL) {
|
||||||
|
while (XCurrent <= YCurrent ) { //Realistic circles
|
||||||
|
for (sCountY = XCurrent; sCountY <= YCurrent; sCountY ++ ) {
|
||||||
|
Paint_DrawPoint(X_Center + XCurrent, Y_Center + sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//1
|
||||||
|
Paint_DrawPoint(X_Center - XCurrent, Y_Center + sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//2
|
||||||
|
Paint_DrawPoint(X_Center - sCountY, Y_Center + XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//3
|
||||||
|
Paint_DrawPoint(X_Center - sCountY, Y_Center - XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//4
|
||||||
|
Paint_DrawPoint(X_Center - XCurrent, Y_Center - sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//5
|
||||||
|
Paint_DrawPoint(X_Center + XCurrent, Y_Center - sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//6
|
||||||
|
Paint_DrawPoint(X_Center + sCountY, Y_Center - XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//7
|
||||||
|
Paint_DrawPoint(X_Center + sCountY, Y_Center + XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);
|
||||||
|
}
|
||||||
|
if (Esp < 0 )
|
||||||
|
Esp += 4 * XCurrent + 6;
|
||||||
|
else {
|
||||||
|
Esp += 10 + 4 * (XCurrent - YCurrent );
|
||||||
|
YCurrent --;
|
||||||
|
}
|
||||||
|
XCurrent ++;
|
||||||
|
}
|
||||||
|
} else { //Draw a hollow circle
|
||||||
|
while (XCurrent <= YCurrent ) {
|
||||||
|
Paint_DrawPoint(X_Center + XCurrent, Y_Center + YCurrent, Color, Line_width, DOT_STYLE_DFT);//1
|
||||||
|
Paint_DrawPoint(X_Center - XCurrent, Y_Center + YCurrent, Color, Line_width, DOT_STYLE_DFT);//2
|
||||||
|
Paint_DrawPoint(X_Center - YCurrent, Y_Center + XCurrent, Color, Line_width, DOT_STYLE_DFT);//3
|
||||||
|
Paint_DrawPoint(X_Center - YCurrent, Y_Center - XCurrent, Color, Line_width, DOT_STYLE_DFT);//4
|
||||||
|
Paint_DrawPoint(X_Center - XCurrent, Y_Center - YCurrent, Color, Line_width, DOT_STYLE_DFT);//5
|
||||||
|
Paint_DrawPoint(X_Center + XCurrent, Y_Center - YCurrent, Color, Line_width, DOT_STYLE_DFT);//6
|
||||||
|
Paint_DrawPoint(X_Center + YCurrent, Y_Center - XCurrent, Color, Line_width, DOT_STYLE_DFT);//7
|
||||||
|
Paint_DrawPoint(X_Center + YCurrent, Y_Center + XCurrent, Color, Line_width, DOT_STYLE_DFT);//0
|
||||||
|
|
||||||
|
if (Esp < 0 )
|
||||||
|
Esp += 4 * XCurrent + 6;
|
||||||
|
else {
|
||||||
|
Esp += 10 + 4 * (XCurrent - YCurrent );
|
||||||
|
YCurrent --;
|
||||||
|
}
|
||||||
|
XCurrent ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Show English characters
|
||||||
|
parameter:
|
||||||
|
Xpoint :X coordinate
|
||||||
|
Ypoint :Y coordinate
|
||||||
|
Acsii_Char :To display the English characters
|
||||||
|
Font :A structure pointer that displays a character size
|
||||||
|
Color_Foreground : Select the foreground color
|
||||||
|
Color_Background : Select the background color
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_DrawChar(UWORD Xpoint, UWORD Ypoint, const char Acsii_Char,
|
||||||
|
sFONT* Font, UWORD Color_Foreground, UWORD Color_Background)
|
||||||
|
{
|
||||||
|
UWORD Page, Column;
|
||||||
|
|
||||||
|
if (Xpoint > Paint.Width || Ypoint > Paint.Height) {
|
||||||
|
Debug("Paint_DrawChar Input exceeds the normal display range\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t Char_Offset = (Acsii_Char - ' ') * Font->Height * (Font->Width / 8 + (Font->Width % 8 ? 1 : 0));
|
||||||
|
const unsigned char *ptr = &Font->table[Char_Offset];
|
||||||
|
|
||||||
|
for (Page = 0; Page < Font->Height; Page ++ ) {
|
||||||
|
for (Column = 0; Column < Font->Width; Column ++ ) {
|
||||||
|
|
||||||
|
//To determine whether the font background color and screen background color is consistent
|
||||||
|
if (FONT_BACKGROUND == Color_Background) { //this process is to speed up the scan
|
||||||
|
if (*ptr & (0x80 >> (Column % 8)))
|
||||||
|
Paint_SetPixel(Xpoint + Column, Ypoint + Page, Color_Foreground);
|
||||||
|
// Paint_DrawPoint(Xpoint + Column, Ypoint + Page, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
|
||||||
|
} else {
|
||||||
|
if (*ptr & (0x80 >> (Column % 8))) {
|
||||||
|
Paint_SetPixel(Xpoint + Column, Ypoint + Page, Color_Foreground);
|
||||||
|
// Paint_DrawPoint(Xpoint + Column, Ypoint + Page, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
|
||||||
|
} else {
|
||||||
|
Paint_SetPixel(Xpoint + Column, Ypoint + Page, Color_Background);
|
||||||
|
// Paint_DrawPoint(Xpoint + Column, Ypoint + Page, Color_Background, DOT_PIXEL_DFT, DOT_STYLE_DFT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//One pixel is 8 bits
|
||||||
|
if (Column % 8 == 7)
|
||||||
|
ptr++;
|
||||||
|
}// Write a line
|
||||||
|
if (Font->Width % 8 != 0)
|
||||||
|
ptr++;
|
||||||
|
}// Write all
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Display the string
|
||||||
|
parameter:
|
||||||
|
Xstart :X coordinate
|
||||||
|
Ystart :Y coordinate
|
||||||
|
pString :The first address of the English string to be displayed
|
||||||
|
Font :A structure pointer that displays a character size
|
||||||
|
Color_Foreground : Select the foreground color
|
||||||
|
Color_Background : Select the background color
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString,
|
||||||
|
sFONT* Font, UWORD Color_Foreground, UWORD Color_Background)
|
||||||
|
{
|
||||||
|
UWORD Xpoint = Xstart;
|
||||||
|
UWORD Ypoint = Ystart;
|
||||||
|
|
||||||
|
if (Xstart > Paint.Width || Ystart > Paint.Height) {
|
||||||
|
Debug("Paint_DrawString_EN Input exceeds the normal display range\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (* pString != '\0') {
|
||||||
|
//if X direction filled , reposition to(Xstart,Ypoint),Ypoint is Y direction plus the Height of the character
|
||||||
|
if ((Xpoint + Font->Width ) > Paint.Width ) {
|
||||||
|
Xpoint = Xstart;
|
||||||
|
Ypoint += Font->Height;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the Y direction is full, reposition to(Xstart, Ystart)
|
||||||
|
if ((Ypoint + Font->Height ) > Paint.Height ) {
|
||||||
|
Xpoint = Xstart;
|
||||||
|
Ypoint = Ystart;
|
||||||
|
}
|
||||||
|
Paint_DrawChar(Xpoint, Ypoint, * pString, Font, Color_Background, Color_Foreground);
|
||||||
|
|
||||||
|
//The next character of the address
|
||||||
|
pString ++;
|
||||||
|
|
||||||
|
//The next word of the abscissa increases the font of the broadband
|
||||||
|
Xpoint += Font->Width;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Display the string
|
||||||
|
parameter:
|
||||||
|
Xstart :X coordinate
|
||||||
|
Ystart :Y coordinate
|
||||||
|
pString :The first address of the Chinese string and English
|
||||||
|
string to be displayed
|
||||||
|
Font :A structure pointer that displays a character size
|
||||||
|
Color_Foreground : Select the foreground color
|
||||||
|
Color_Background : Select the background color
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font,
|
||||||
|
UWORD Color_Foreground, UWORD Color_Background)
|
||||||
|
{
|
||||||
|
const char* p_text = pString;
|
||||||
|
int x = Xstart, y = Ystart;
|
||||||
|
int i, j,Num;
|
||||||
|
|
||||||
|
/* Send the string character by character on EPD */
|
||||||
|
while (*p_text != 0) {
|
||||||
|
if(*p_text <= 0x7F) { //ASCII < 126
|
||||||
|
for(Num = 0; Num < font->size; Num++) {
|
||||||
|
if(*p_text== font->table[Num].index[0]) {
|
||||||
|
const char* ptr = &font->table[Num].matrix[0];
|
||||||
|
|
||||||
|
for (j = 0; j < font->Height; j++) {
|
||||||
|
for (i = 0; i < font->Width; i++) {
|
||||||
|
if (FONT_BACKGROUND == Color_Background) { //this process is to speed up the scan
|
||||||
|
if (*ptr & (0x80 >> (i % 8))) {
|
||||||
|
Paint_SetPixel(x + i, y + j, Color_Foreground);
|
||||||
|
// Paint_DrawPoint(x + i, y + j, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (*ptr & (0x80 >> (i % 8))) {
|
||||||
|
Paint_SetPixel(x + i, y + j, Color_Foreground);
|
||||||
|
// Paint_DrawPoint(x + i, y + j, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
|
||||||
|
} else {
|
||||||
|
Paint_SetPixel(x + i, y + j, Color_Background);
|
||||||
|
// Paint_DrawPoint(x + i, y + j, Color_Background, DOT_PIXEL_DFT, DOT_STYLE_DFT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (i % 8 == 7) {
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (font->Width % 8 != 0) {
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Point on the next character */
|
||||||
|
p_text += 1;
|
||||||
|
/* Decrement the column position by 16 */
|
||||||
|
x += font->ASCII_Width;
|
||||||
|
} else { //Chinese
|
||||||
|
for(Num = 0; Num < font->size; Num++) {
|
||||||
|
if((*p_text== font->table[Num].index[0]) && (*(p_text+1) == font->table[Num].index[1])) {
|
||||||
|
const char* ptr = &font->table[Num].matrix[0];
|
||||||
|
|
||||||
|
for (j = 0; j < font->Height; j++) {
|
||||||
|
for (i = 0; i < font->Width; i++) {
|
||||||
|
if (FONT_BACKGROUND == Color_Background) { //this process is to speed up the scan
|
||||||
|
if (*ptr & (0x80 >> (i % 8))) {
|
||||||
|
Paint_SetPixel(x + i, y + j, Color_Foreground);
|
||||||
|
// Paint_DrawPoint(x + i, y + j, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (*ptr & (0x80 >> (i % 8))) {
|
||||||
|
Paint_SetPixel(x + i, y + j, Color_Foreground);
|
||||||
|
// Paint_DrawPoint(x + i, y + j, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
|
||||||
|
} else {
|
||||||
|
Paint_SetPixel(x + i, y + j, Color_Background);
|
||||||
|
// Paint_DrawPoint(x + i, y + j, Color_Background, DOT_PIXEL_DFT, DOT_STYLE_DFT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (i % 8 == 7) {
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (font->Width % 8 != 0) {
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Point on the next character */
|
||||||
|
p_text += 2;
|
||||||
|
/* Decrement the column position by 16 */
|
||||||
|
x += font->Width;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Display nummber
|
||||||
|
parameter:
|
||||||
|
Xstart :X coordinate
|
||||||
|
Ystart : Y coordinate
|
||||||
|
Nummber : The number displayed
|
||||||
|
Font :A structure pointer that displays a character size
|
||||||
|
Color_Foreground : Select the foreground color
|
||||||
|
Color_Background : Select the background color
|
||||||
|
******************************************************************************/
|
||||||
|
#define ARRAY_LEN 255
|
||||||
|
void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, int32_t Nummber,
|
||||||
|
sFONT* Font, UWORD Color_Foreground, UWORD Color_Background)
|
||||||
|
{
|
||||||
|
|
||||||
|
int16_t Num_Bit = 0, Str_Bit = 0;
|
||||||
|
uint8_t Str_Array[ARRAY_LEN] = {0}, Num_Array[ARRAY_LEN] = {0};
|
||||||
|
uint8_t *pStr = Str_Array;
|
||||||
|
|
||||||
|
if (Xpoint > Paint.Width || Ypoint > Paint.Height) {
|
||||||
|
Debug("Paint_DisNum Input exceeds the normal display range\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Converts a number to a string
|
||||||
|
do {
|
||||||
|
Num_Array[Num_Bit] = Nummber % 10 + '0';
|
||||||
|
Num_Bit++;
|
||||||
|
Nummber /= 10;
|
||||||
|
} while(Nummber);
|
||||||
|
|
||||||
|
|
||||||
|
//The string is inverted
|
||||||
|
while (Num_Bit > 0) {
|
||||||
|
Str_Array[Str_Bit] = Num_Array[Num_Bit - 1];
|
||||||
|
Str_Bit ++;
|
||||||
|
Num_Bit --;
|
||||||
|
}
|
||||||
|
|
||||||
|
//show
|
||||||
|
Paint_DrawString_EN(Xpoint, Ypoint, (const char*)pStr, Font, Color_Background, Color_Foreground);
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Display nummber (Able to display decimals)
|
||||||
|
parameter:
|
||||||
|
Xstart :X coordinate
|
||||||
|
Ystart : Y coordinate
|
||||||
|
Nummber : The number displayed
|
||||||
|
Font :A structure pointer that displays a character size
|
||||||
|
Digit : Fractional width
|
||||||
|
Color_Foreground : Select the foreground color
|
||||||
|
Color_Background : Select the background color
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_DrawNumDecimals(UWORD Xpoint, UWORD Ypoint, double Nummber,
|
||||||
|
sFONT* Font, UWORD Digit, UWORD Color_Foreground, UWORD Color_Background)
|
||||||
|
{
|
||||||
|
int16_t Num_Bit = 0, Str_Bit = 0;
|
||||||
|
uint8_t Str_Array[ARRAY_LEN] = {0}, Num_Array[ARRAY_LEN] = {0};
|
||||||
|
uint8_t *pStr = Str_Array;
|
||||||
|
int temp = Nummber;
|
||||||
|
float decimals;
|
||||||
|
uint8_t i;
|
||||||
|
if (Xpoint > Paint.Width || Ypoint > Paint.Height) {
|
||||||
|
Debug("Paint_DisNum Input exceeds the normal display range\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Digit > 0) {
|
||||||
|
decimals = Nummber - temp;
|
||||||
|
for(i=Digit; i > 0; i--) {
|
||||||
|
decimals*=10;
|
||||||
|
}
|
||||||
|
temp = decimals;
|
||||||
|
//Converts a number to a string
|
||||||
|
for(i=Digit; i>0; i--) {
|
||||||
|
Num_Array[Num_Bit] = temp % 10 + '0';
|
||||||
|
Num_Bit++;
|
||||||
|
temp /= 10;
|
||||||
|
}
|
||||||
|
Num_Array[Num_Bit] = '.';
|
||||||
|
Num_Bit++;
|
||||||
|
}
|
||||||
|
|
||||||
|
temp = Nummber;
|
||||||
|
//Converts a number to a string
|
||||||
|
do {
|
||||||
|
Num_Array[Num_Bit] = temp % 10 + '0';
|
||||||
|
Num_Bit++;
|
||||||
|
temp /= 10;
|
||||||
|
} while(temp);
|
||||||
|
|
||||||
|
//The string is inverted
|
||||||
|
while (Num_Bit > 0) {
|
||||||
|
Str_Array[Str_Bit] = Num_Array[Num_Bit - 1];
|
||||||
|
Str_Bit ++;
|
||||||
|
Num_Bit --;
|
||||||
|
}
|
||||||
|
|
||||||
|
//show
|
||||||
|
Paint_DrawString_EN(Xpoint, Ypoint, (const char*)pStr, Font, Color_Background, Color_Foreground);
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Display time
|
||||||
|
parameter:
|
||||||
|
Xstart :X coordinate
|
||||||
|
Ystart : Y coordinate
|
||||||
|
pTime : Time-related structures
|
||||||
|
Font :A structure pointer that displays a character size
|
||||||
|
Color_Foreground : Select the foreground color
|
||||||
|
Color_Background : Select the background color
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font,
|
||||||
|
UWORD Color_Foreground, UWORD Color_Background)
|
||||||
|
{
|
||||||
|
uint8_t value[10] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
|
||||||
|
|
||||||
|
UWORD Dx = Font->Width;
|
||||||
|
|
||||||
|
//Write data into the cache
|
||||||
|
Paint_DrawChar(Xstart , Ystart, value[pTime->Hour / 10], Font, Color_Background, Color_Foreground);
|
||||||
|
Paint_DrawChar(Xstart + Dx , Ystart, value[pTime->Hour % 10], Font, Color_Background, Color_Foreground);
|
||||||
|
Paint_DrawChar(Xstart + Dx + Dx / 4 + Dx / 2 , Ystart, ':' , Font, Color_Background, Color_Foreground);
|
||||||
|
Paint_DrawChar(Xstart + Dx * 2 + Dx / 2 , Ystart, value[pTime->Min / 10] , Font, Color_Background, Color_Foreground);
|
||||||
|
Paint_DrawChar(Xstart + Dx * 3 + Dx / 2 , Ystart, value[pTime->Min % 10] , Font, Color_Background, Color_Foreground);
|
||||||
|
Paint_DrawChar(Xstart + Dx * 4 + Dx / 2 - Dx / 4, Ystart, ':' , Font, Color_Background, Color_Foreground);
|
||||||
|
Paint_DrawChar(Xstart + Dx * 5 , Ystart, value[pTime->Sec / 10] , Font, Color_Background, Color_Foreground);
|
||||||
|
Paint_DrawChar(Xstart + Dx * 6 , Ystart, value[pTime->Sec % 10] , Font, Color_Background, Color_Foreground);
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: Display monochrome bitmap
|
||||||
|
parameter:
|
||||||
|
image_buffer :A picture data converted to a bitmap
|
||||||
|
info:
|
||||||
|
Use a computer to convert the image into a corresponding array,
|
||||||
|
and then embed the array directly into Imagedata.cpp as a .c file.
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_DrawBitMap(const unsigned char* image_buffer)
|
||||||
|
{
|
||||||
|
UWORD x, y;
|
||||||
|
UDOUBLE Addr = 0;
|
||||||
|
|
||||||
|
for (y = 0; y < Paint.HeightByte; y++) {
|
||||||
|
for (x = 0; x < Paint.WidthByte; x++) {//8 pixel = 1 byte
|
||||||
|
Addr = x + y * Paint.WidthByte;
|
||||||
|
Paint.Image[Addr] = (unsigned char)image_buffer[Addr];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
function: paste monochrome bitmap to a frame buff
|
||||||
|
parameter:
|
||||||
|
image_buffer :A picture data converted to a bitmap
|
||||||
|
xStart: The starting x coordinate
|
||||||
|
yStart: The starting y coordinate
|
||||||
|
imageWidth: Original image width
|
||||||
|
imageHeight: Original image height
|
||||||
|
flipColor: Whether the color is reversed
|
||||||
|
info:
|
||||||
|
Use this function to paste image data into a buffer
|
||||||
|
******************************************************************************/
|
||||||
|
void Paint_DrawBitMap_Paste(const unsigned char* image_buffer, UWORD xStart, UWORD yStart, UWORD imageWidth, UWORD imageHeight, UBYTE flipColor)
|
||||||
|
{
|
||||||
|
UBYTE color, srcImage;
|
||||||
|
UWORD x, y;
|
||||||
|
UWORD width = (imageWidth%8==0 ? imageWidth/8 : imageWidth/8+1);
|
||||||
|
|
||||||
|
for (y = 0; y < imageHeight; y++) {
|
||||||
|
for (x = 0; x < imageWidth; x++) {
|
||||||
|
srcImage = image_buffer[y*width + x/8];
|
||||||
|
if(flipColor)
|
||||||
|
color = (((srcImage<<(x%8) & 0x80) == 0) ? 1 : 0);
|
||||||
|
else
|
||||||
|
color = (((srcImage<<(x%8) & 0x80) == 0) ? 0 : 1);
|
||||||
|
Paint_SetPixel(x+xStart, y+yStart, color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Paint_DrawBitMap_Block(const unsigned char* image_buffer, UBYTE Region)
|
||||||
|
{
|
||||||
|
UWORD x, y;
|
||||||
|
UDOUBLE Addr = 0;
|
||||||
|
for (y = 0; y < Paint.HeightByte; y++) {
|
||||||
|
for (x = 0; x < Paint.WidthByte; x++) {//8 pixel = 1 byte
|
||||||
|
Addr = x + y * Paint.WidthByte ;
|
||||||
|
Paint.Image[Addr] = \
|
||||||
|
(unsigned char)image_buffer[Addr+ (Paint.HeightByte)*Paint.WidthByte*(Region - 1)];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,95 @@
|
|||||||
|
/**
|
||||||
|
******************************************************************************
|
||||||
|
* @file fonts.h
|
||||||
|
* @author MCD Application Team
|
||||||
|
* @version V1.0.0
|
||||||
|
* @date 18-February-2014
|
||||||
|
* @brief Header for fonts.c file
|
||||||
|
******************************************************************************
|
||||||
|
* @attention
|
||||||
|
*
|
||||||
|
* <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
|
||||||
|
*
|
||||||
|
* 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 STMicroelectronics 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 AND CONTRIBUTORS "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 OR CONTRIBUTORS 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.
|
||||||
|
*
|
||||||
|
******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||||
|
#ifndef __FONTS_H
|
||||||
|
#define __FONTS_H
|
||||||
|
|
||||||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CEA2><EFBFBD>ź<EFBFBD>24 (32x41) */
|
||||||
|
#define MAX_HEIGHT_FONT 41
|
||||||
|
#define MAX_WIDTH_FONT 32
|
||||||
|
#define OFFSET_BITMAP
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
//ASCII
|
||||||
|
typedef struct _tFont
|
||||||
|
{
|
||||||
|
const uint8_t *table;
|
||||||
|
uint16_t Width;
|
||||||
|
uint16_t Height;
|
||||||
|
|
||||||
|
} sFONT;
|
||||||
|
|
||||||
|
|
||||||
|
//GB2312
|
||||||
|
typedef struct // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ݽṹ
|
||||||
|
{
|
||||||
|
unsigned char index[2]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
const char matrix[MAX_HEIGHT_FONT*MAX_WIDTH_FONT/8]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}CH_CN;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
const CH_CN *table;
|
||||||
|
uint16_t size;
|
||||||
|
uint16_t ASCII_Width;
|
||||||
|
uint16_t Width;
|
||||||
|
uint16_t Height;
|
||||||
|
|
||||||
|
}cFONT;
|
||||||
|
|
||||||
|
extern sFONT Font24;
|
||||||
|
extern sFONT Font20;
|
||||||
|
extern sFONT Font16;
|
||||||
|
extern sFONT Font12;
|
||||||
|
extern sFONT Font8;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __FONTS_H */
|
||||||
|
|
||||||
|
|
||||||
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
218
Software/fab-reader2/components/epd_gfx/include/GUI/GUI_Paint.h
Normal file
218
Software/fab-reader2/components/epd_gfx/include/GUI/GUI_Paint.h
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* | File : GUI_Paint.h
|
||||||
|
* | Author : Waveshare electronics
|
||||||
|
* | Function : Achieve drawing: draw points, lines, boxes, circles and
|
||||||
|
* their size, solid dotted line, solid rectangle hollow
|
||||||
|
* rectangle, solid circle hollow circle.
|
||||||
|
* | Info :
|
||||||
|
* Achieve display characters: Display a single character, string, number
|
||||||
|
* Achieve time display: adaptive size display time minutes and seconds
|
||||||
|
*----------------
|
||||||
|
* | This version: V3.0
|
||||||
|
* | Date : 2019-04-18
|
||||||
|
* | Info :
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* V3.0(2019-04-18):
|
||||||
|
* 1.Change:
|
||||||
|
* Paint_DrawPoint(..., DOT_STYLE DOT_STYLE)
|
||||||
|
* => Paint_DrawPoint(..., DOT_STYLE Dot_Style)
|
||||||
|
* Paint_DrawLine(..., LINE_STYLE Line_Style, DOT_PIXEL Dot_Pixel)
|
||||||
|
* => Paint_DrawLine(..., DOT_PIXEL Line_width, LINE_STYLE Line_Style)
|
||||||
|
* Paint_DrawRectangle(..., DRAW_FILL Filled, DOT_PIXEL Dot_Pixel)
|
||||||
|
* => Paint_DrawRectangle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
|
||||||
|
* Paint_DrawCircle(..., DRAW_FILL Draw_Fill, DOT_PIXEL Dot_Pixel)
|
||||||
|
* => Paint_DrawCircle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Filll)
|
||||||
|
*
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* V2.0(2018-11-15):
|
||||||
|
* 1.add: Paint_NewImage()
|
||||||
|
* Create an image's properties
|
||||||
|
* 2.add: Paint_SelectImage()
|
||||||
|
* Select the picture to be drawn
|
||||||
|
* 3.add: Paint_SetRotate()
|
||||||
|
* Set the direction of the cache
|
||||||
|
* 4.add: Paint_RotateImage()
|
||||||
|
* Can flip the picture, Support 0-360 degrees,
|
||||||
|
* but only 90.180.270 rotation is better
|
||||||
|
* 4.add: Paint_SetMirroring()
|
||||||
|
* Can Mirroring the picture, horizontal, vertical, origin
|
||||||
|
* 5.add: Paint_DrawString_CN()
|
||||||
|
* Can display Chinese(GB1312)
|
||||||
|
*
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* V1.0(2018-07-17):
|
||||||
|
* Create library
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documnetation 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
|
||||||
|
* furished 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 OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef __GUI_PAINT_H
|
||||||
|
#define __GUI_PAINT_H
|
||||||
|
|
||||||
|
#include "DEV_Config.h"
|
||||||
|
#include "../Fonts/fonts.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Image attributes
|
||||||
|
**/
|
||||||
|
typedef struct {
|
||||||
|
UBYTE *Image;
|
||||||
|
UWORD Width;
|
||||||
|
UWORD Height;
|
||||||
|
UWORD WidthMemory;
|
||||||
|
UWORD HeightMemory;
|
||||||
|
UWORD Color;
|
||||||
|
UWORD Rotate;
|
||||||
|
UWORD Mirror;
|
||||||
|
UWORD WidthByte;
|
||||||
|
UWORD HeightByte;
|
||||||
|
UWORD Scale;
|
||||||
|
} PAINT;
|
||||||
|
extern PAINT Paint;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display rotate
|
||||||
|
**/
|
||||||
|
#define ROTATE_0 0
|
||||||
|
#define ROTATE_90 90
|
||||||
|
#define ROTATE_180 180
|
||||||
|
#define ROTATE_270 270
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display Flip
|
||||||
|
**/
|
||||||
|
typedef enum {
|
||||||
|
MIRROR_NONE = 0x00,
|
||||||
|
MIRROR_HORIZONTAL = 0x01,
|
||||||
|
MIRROR_VERTICAL = 0x02,
|
||||||
|
MIRROR_ORIGIN = 0x03,
|
||||||
|
} MIRROR_IMAGE;
|
||||||
|
#define MIRROR_IMAGE_DFT MIRROR_NONE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* image color
|
||||||
|
**/
|
||||||
|
#define WHITE 0xFF
|
||||||
|
#define BLACK 0x00
|
||||||
|
#define RED BLACK
|
||||||
|
|
||||||
|
#define IMAGE_BACKGROUND WHITE
|
||||||
|
#define FONT_FOREGROUND BLACK
|
||||||
|
#define FONT_BACKGROUND WHITE
|
||||||
|
|
||||||
|
#define TRUE 1
|
||||||
|
#define FALSE 0
|
||||||
|
|
||||||
|
//4 Gray level
|
||||||
|
#define GRAY1 0x03 //Blackest
|
||||||
|
#define GRAY2 0x02
|
||||||
|
#define GRAY3 0x01 //gray
|
||||||
|
#define GRAY4 0x00 //white
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The size of the point
|
||||||
|
**/
|
||||||
|
typedef enum {
|
||||||
|
DOT_PIXEL_1X1 = 1, // 1 x 1
|
||||||
|
DOT_PIXEL_2X2 , // 2 X 2
|
||||||
|
DOT_PIXEL_3X3 , // 3 X 3
|
||||||
|
DOT_PIXEL_4X4 , // 4 X 4
|
||||||
|
DOT_PIXEL_5X5 , // 5 X 5
|
||||||
|
DOT_PIXEL_6X6 , // 6 X 6
|
||||||
|
DOT_PIXEL_7X7 , // 7 X 7
|
||||||
|
DOT_PIXEL_8X8 , // 8 X 8
|
||||||
|
} DOT_PIXEL;
|
||||||
|
#define DOT_PIXEL_DFT DOT_PIXEL_1X1 //Default dot pilex
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Point size fill style
|
||||||
|
**/
|
||||||
|
typedef enum {
|
||||||
|
DOT_FILL_AROUND = 1, // dot pixel 1 x 1
|
||||||
|
DOT_FILL_RIGHTUP , // dot pixel 2 X 2
|
||||||
|
} DOT_STYLE;
|
||||||
|
#define DOT_STYLE_DFT DOT_FILL_AROUND //Default dot pilex
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Line style, solid or dashed
|
||||||
|
**/
|
||||||
|
typedef enum {
|
||||||
|
LINE_STYLE_SOLID = 0,
|
||||||
|
LINE_STYLE_DOTTED,
|
||||||
|
} LINE_STYLE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the graphic is filled
|
||||||
|
**/
|
||||||
|
typedef enum {
|
||||||
|
DRAW_FILL_EMPTY = 0,
|
||||||
|
DRAW_FILL_FULL,
|
||||||
|
} DRAW_FILL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom structure of a time attribute
|
||||||
|
**/
|
||||||
|
typedef struct {
|
||||||
|
UWORD Year; //0000
|
||||||
|
UBYTE Month; //1 - 12
|
||||||
|
UBYTE Day; //1 - 30
|
||||||
|
UBYTE Hour; //0 - 23
|
||||||
|
UBYTE Min; //0 - 59
|
||||||
|
UBYTE Sec; //0 - 59
|
||||||
|
} PAINT_TIME;
|
||||||
|
extern PAINT_TIME sPaint_time;
|
||||||
|
|
||||||
|
//init and Clear
|
||||||
|
void Paint_NewImage(UBYTE *image, UWORD Width, UWORD Height, UWORD Rotate, UWORD Color);
|
||||||
|
void Paint_SelectImage(UBYTE *image);
|
||||||
|
void Paint_SetRotate(UWORD Rotate);
|
||||||
|
void Paint_SetMirroring(UBYTE mirror);
|
||||||
|
void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color);
|
||||||
|
void Paint_SetScale(UBYTE scale);
|
||||||
|
|
||||||
|
void Paint_Clear(UWORD Color);
|
||||||
|
void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color);
|
||||||
|
|
||||||
|
//Drawing
|
||||||
|
void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color, DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_FillWay);
|
||||||
|
void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, LINE_STYLE Line_Style);
|
||||||
|
void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill);
|
||||||
|
void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill);
|
||||||
|
|
||||||
|
//Display string
|
||||||
|
void Paint_DrawChar(UWORD Xstart, UWORD Ystart, const char Acsii_Char, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background);
|
||||||
|
void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background);
|
||||||
|
void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font, UWORD Color_Foreground, UWORD Color_Background);
|
||||||
|
void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, int32_t Nummber, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background);
|
||||||
|
void Paint_DrawNumDecimals(UWORD Xpoint, UWORD Ypoint, double Nummber, sFONT* Font, UWORD Digit, UWORD Color_Foreground, UWORD Color_Background); // Able to display decimals
|
||||||
|
void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background);
|
||||||
|
|
||||||
|
//pic
|
||||||
|
void Paint_DrawBitMap(const unsigned char* image_buffer);
|
||||||
|
void Paint_DrawBitMap_Paste(const unsigned char* image_buffer, UWORD Xstart, UWORD Ystart, UWORD imageWidth, UWORD imageHeight, UBYTE flipColor);
|
||||||
|
//void Paint_DrawBitMap_Half(const unsigned char* image_buffer, UBYTE Region);
|
||||||
|
//void Paint_DrawBitMap_OneQuarter(const unsigned char* image_buffer, UBYTE Region);
|
||||||
|
//void Paint_DrawBitMap_OneEighth(const unsigned char* image_buffer, UBYTE Region);
|
||||||
|
void Paint_DrawBitMap_Block(const unsigned char* image_buffer, UBYTE Region);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,2 +1,3 @@
|
|||||||
idf_component_register(SRCS "st25r3911.c" "st25r3911_com.c" "st25r3911_interrupt.c" "timer.c" "st25r3911_spi.c" "utils.c"
|
idf_component_register(SRCS "st25r3911.c" "st25r3911_com.c" "st25r3911_interrupt.c" "timer.c" "st25r3911_spi.c" "utils.c"
|
||||||
INCLUDE_DIRS "." REQUIRES driver)
|
INCLUDE_DIRS "."
|
||||||
|
REQUIRES "driver")
|
@ -56,7 +56,7 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
#include <driver/gpio.h>
|
#include <driver/gpio.h>
|
@ -108,9 +108,6 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
@ -240,10 +237,6 @@ extern void st25r3911IRQCallbackSet(void (*cb)(void));
|
|||||||
*/
|
*/
|
||||||
extern void st25r3911IRQCallbackRestore(void);
|
extern void st25r3911IRQCallbackRestore(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* ST25R3911_ISR_H */
|
#endif /* ST25R3911_ISR_H */
|
||||||
|
|
||||||
/**
|
/**
|
@ -8,16 +8,8 @@
|
|||||||
#include <esp_err.h>
|
#include <esp_err.h>
|
||||||
#include <driver/spi_master.h>
|
#include <driver/spi_master.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void st25r3911_spi_init(spi_device_handle_t spi);
|
void st25r3911_spi_init(spi_device_handle_t spi);
|
||||||
|
|
||||||
esp_err_t st25r3911_spiTxRx(const uint8_t *txData, uint8_t *rxData, uint16_t length);
|
esp_err_t st25r3911_spiTxRx(const uint8_t *txData, uint8_t *rxData, uint16_t length);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif //FAB_READER2_C_ST25R3911_SPI_H
|
#endif //FAB_READER2_C_ST25R3911_SPI_H
|
4
Software/fab-reader2/main/CMakeLists.txt
Normal file
4
Software/fab-reader2/main/CMakeLists.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
idf_component_register(SRCS "fab-reader2.c" "nfc/pollingtagdetect.c" "epd/qrurn.c" "epd/FabAccess_Icon_NoHeader.c" "epd/EPD_2in66_test.c" "epd/epd.c" "epd/EPD_2in66_test.c" "ota/ota.c"
|
||||||
|
INCLUDE_DIRS "." "nfc" "epd" "ota"
|
||||||
|
REQUIRES "rfal" "epd_266" "epd_gfx"
|
||||||
|
PRIV_REQUIRES "driver nvs_flash mqtt")
|
50
Software/fab-reader2/main/Kconfig.projbuild
Normal file
50
Software/fab-reader2/main/Kconfig.projbuild
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
menu "FabReader Configuration"
|
||||||
|
|
||||||
|
config WIFI_SSID
|
||||||
|
string "WiFi SSID"
|
||||||
|
default "myssid"
|
||||||
|
help
|
||||||
|
SSID (network name) for the example to connect to.
|
||||||
|
|
||||||
|
config WIFI_PASSWORD
|
||||||
|
string "WiFi Password"
|
||||||
|
default "mypassword"
|
||||||
|
help
|
||||||
|
WiFi password (WPA or WPA2) for the example to use.
|
||||||
|
|
||||||
|
choice WIFI_SCAN_METHOD
|
||||||
|
prompt "scan method"
|
||||||
|
default WIFI_FAST_SCAN
|
||||||
|
help
|
||||||
|
scan method for the esp32 to use
|
||||||
|
|
||||||
|
config WIFI_FAST_SCAN
|
||||||
|
bool "fast"
|
||||||
|
config WIFI_ALL_CHANNEL_SCAN
|
||||||
|
bool "all"
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config BROKER_URI
|
||||||
|
string "Broker URL"
|
||||||
|
default "mqtts://mqtt.eclipseprojects.io:8883"
|
||||||
|
help
|
||||||
|
URL of an mqtt broker which this example connects to.
|
||||||
|
|
||||||
|
config BROKER_CERTIFICATE_OVERRIDE
|
||||||
|
string "Broker certificate override"
|
||||||
|
default ""
|
||||||
|
help
|
||||||
|
Please leave empty if broker certificate included from a textfile; otherwise fill in a base64 part of PEM
|
||||||
|
format certificate
|
||||||
|
|
||||||
|
config BROKER_CERTIFICATE_OVERRIDDEN
|
||||||
|
bool
|
||||||
|
default y if BROKER_CERTIFICATE_OVERRIDE != ""
|
||||||
|
|
||||||
|
config FABREADER2_ID
|
||||||
|
int "FabReader2 ID"
|
||||||
|
default 1
|
||||||
|
help
|
||||||
|
Numerical ID of the FabReader2 device
|
||||||
|
|
||||||
|
endmenu
|
160
Software/fab-reader2/main/epd/EPD_2in66_test.c
Normal file
160
Software/fab-reader2/main/epd/EPD_2in66_test.c
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* | File : EPD_2IN66_test.c
|
||||||
|
* | Author : Waveshare team
|
||||||
|
* | Function : 2.66inch e-paper test demo
|
||||||
|
* | Info :
|
||||||
|
*----------------
|
||||||
|
* | This version: V1.0
|
||||||
|
* | Date : 2020-07-29
|
||||||
|
* | Info :
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documnetation 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
|
||||||
|
# furished 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 OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
# THE SOFTWARE.
|
||||||
|
#
|
||||||
|
******************************************************************************/
|
||||||
|
#include "epd.h"
|
||||||
|
#include "EPD_2in66.h"
|
||||||
|
|
||||||
|
int EPD_test(void)
|
||||||
|
{
|
||||||
|
printf("EPD_2IN66_test Demo\r\n");
|
||||||
|
if(DEV_Module_Init()!=0){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("e-Paper Init and Clear...\r\n");
|
||||||
|
EPD_2IN66_Init();
|
||||||
|
// EPD_2IN66_Clear();
|
||||||
|
// DEV_Delay_ms(500);
|
||||||
|
|
||||||
|
//Create a new image cache
|
||||||
|
UBYTE *BlackImage;
|
||||||
|
/* you have to edit the startup_stm32fxxx.s file and set a big enough heap size */
|
||||||
|
UWORD Imagesize = ((EPD_2IN66_WIDTH % 8 == 0)? (EPD_2IN66_WIDTH / 8 ): (EPD_2IN66_WIDTH / 8 + 1)) * EPD_2IN66_HEIGHT;
|
||||||
|
if((BlackImage = (UBYTE *)malloc(Imagesize)) == NULL) {
|
||||||
|
printf("Failed to apply for black memory...\r\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
printf("Paint_NewImage\r\n");
|
||||||
|
Paint_NewImage(BlackImage, EPD_2IN66_WIDTH, EPD_2IN66_HEIGHT, 270, WHITE);
|
||||||
|
|
||||||
|
Paint_SelectImage(BlackImage);
|
||||||
|
Paint_Clear(WHITE);
|
||||||
|
Paint_DrawString_EN(10, 10, "Welcome to FabAccess", &Font16, WHITE, BLACK);
|
||||||
|
Paint_DrawBitMap_Paste(gImage_FabAccess_Icon_NoHeader, 20, 40, 100, 98, TRUE);
|
||||||
|
Paint_DrawBitMap_Paste(gImage_qrurn, 130, 40, 100, 100, TRUE);
|
||||||
|
EPD_2IN66_Display(BlackImage);
|
||||||
|
|
||||||
|
|
||||||
|
#if 0 //show image for array
|
||||||
|
printf("show image for array\r\n");
|
||||||
|
Paint_SelectImage(BlackImage);
|
||||||
|
Paint_Clear(WHITE);
|
||||||
|
Paint_DrawBitMap(gImage_2in66);
|
||||||
|
Paint_DrawBitMap_Paste(gImage_100X50, 10, 10, 100, 50, TRUE);
|
||||||
|
EPD_2IN66_Display(BlackImage);
|
||||||
|
DEV_Delay_ms(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0 // Drawing on the image
|
||||||
|
//1.Select Image
|
||||||
|
Paint_SelectImage(BlackImage);
|
||||||
|
Paint_Clear(WHITE);
|
||||||
|
|
||||||
|
// 2.Drawing on the image
|
||||||
|
printf("Drawing:BlackImage\r\n");
|
||||||
|
Paint_DrawPoint(10, 80, BLACK, DOT_PIXEL_1X1, DOT_STYLE_DFT);
|
||||||
|
Paint_DrawPoint(10, 90, BLACK, DOT_PIXEL_2X2, DOT_STYLE_DFT);
|
||||||
|
Paint_DrawPoint(10, 100, BLACK, DOT_PIXEL_3X3, DOT_STYLE_DFT);
|
||||||
|
|
||||||
|
Paint_DrawLine(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
|
||||||
|
Paint_DrawLine(70, 70, 20, 120, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
|
||||||
|
|
||||||
|
Paint_DrawRectangle(20, 70, 70, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
|
||||||
|
Paint_DrawRectangle(80, 70, 130, 120, BLACK, DOT_PIXEL_1X1, DRAW_FILL_FULL);
|
||||||
|
|
||||||
|
Paint_DrawCircle(45, 95, 20, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
|
||||||
|
Paint_DrawCircle(105, 95, 20, WHITE, DOT_PIXEL_1X1, DRAW_FILL_FULL);
|
||||||
|
|
||||||
|
Paint_DrawLine(85, 95, 125, 95, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
|
||||||
|
Paint_DrawLine(105, 75, 105, 115, BLACK, DOT_PIXEL_1X1, LINE_STYLE_DOTTED);
|
||||||
|
|
||||||
|
Paint_DrawString_EN(10, 0, "waveshare", &Font16, BLACK, WHITE);
|
||||||
|
Paint_DrawString_EN(10, 20, "hello world", &Font12, WHITE, BLACK);
|
||||||
|
|
||||||
|
Paint_DrawNum(10, 33, 123456789, &Font12, BLACK, WHITE);
|
||||||
|
Paint_DrawNum(10, 50, 987654321, &Font16, WHITE, BLACK);
|
||||||
|
|
||||||
|
EPD_2IN66_Display(BlackImage);
|
||||||
|
DEV_Delay_ms(10000);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0 //partial refresh, show time
|
||||||
|
printf("EPD_2IN66_DisplayPart\r\n");
|
||||||
|
EPD_2IN66_Init_Partial();
|
||||||
|
|
||||||
|
Paint_SelectImage(BlackImage);
|
||||||
|
|
||||||
|
PAINT_TIME sPaint_time; //time struct
|
||||||
|
sPaint_time.Hour = 12;
|
||||||
|
sPaint_time.Min = 34;
|
||||||
|
sPaint_time.Sec = 56;
|
||||||
|
|
||||||
|
for (uint8_t i = 100; i > 0; i--) {
|
||||||
|
sPaint_time.Sec = sPaint_time.Sec + 1;
|
||||||
|
if (sPaint_time.Sec == 60) {
|
||||||
|
sPaint_time.Min = sPaint_time.Min + 1;
|
||||||
|
sPaint_time.Sec = 0;
|
||||||
|
if (sPaint_time.Min == 60) {
|
||||||
|
sPaint_time.Hour = sPaint_time.Hour + 1;
|
||||||
|
sPaint_time.Min = 0;
|
||||||
|
if (sPaint_time.Hour == 24) {
|
||||||
|
sPaint_time.Hour = 0;
|
||||||
|
sPaint_time.Min = 0;
|
||||||
|
sPaint_time.Sec = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Paint_ClearWindows(180, 100, 296, 152, WHITE);
|
||||||
|
Paint_DrawTime(180, 110, &sPaint_time, &Font20, WHITE, BLACK);
|
||||||
|
|
||||||
|
printf("Part refresh...\r\n");
|
||||||
|
EPD_2IN66_Display(BlackImage);
|
||||||
|
|
||||||
|
DEV_Delay_ms(500);
|
||||||
|
}
|
||||||
|
EPD_2IN66_Clear();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// printf("Clear...\r\n");
|
||||||
|
// EPD_2IN66_Init();
|
||||||
|
// EPD_2IN66_Clear();
|
||||||
|
|
||||||
|
printf("Goto Sleep...\r\n");
|
||||||
|
EPD_2IN66_Sleep();
|
||||||
|
|
||||||
|
free(BlackImage);
|
||||||
|
BlackImage = NULL;
|
||||||
|
// close 5V
|
||||||
|
printf("close 5V, Module enters 0 power consumption ...\r\n");
|
||||||
|
DEV_Module_Exit();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
81
Software/fab-reader2/main/epd/FabAccess_Icon_NoHeader.c
Normal file
81
Software/fab-reader2/main/epd/FabAccess_Icon_NoHeader.c
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
const unsigned char gImage_FabAccess_Icon_NoHeader[1274] = { /* 0X00,0X01,0X64,0X00,0X62,0X00, */
|
||||||
|
0X00,0X00,0X7F,0XC0,0X00,0X00,0X00,0X00,0X00,0X3F,0XE0,0X00,0X00,0X00,0X03,0XFF,
|
||||||
|
0XF8,0X00,0X00,0X00,0X00,0X01,0XFF,0XFC,0X00,0X00,0X00,0X1F,0XFF,0XFF,0X00,0X00,
|
||||||
|
0X00,0X00,0X0F,0XFF,0XFF,0X80,0X00,0X00,0X3F,0XFF,0XFF,0X80,0X00,0X00,0X00,0X1F,
|
||||||
|
0XFF,0XFF,0XC0,0X00,0X00,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XF0,
|
||||||
|
0X00,0X01,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X00,0XFF,0XFF,0XFF,0XF8,0X00,0X03,0XFF,
|
||||||
|
0XFF,0XFF,0XF8,0X00,0X00,0X01,0XFF,0XFF,0XFF,0XFC,0X00,0X07,0XFF,0XE0,0XFF,0XFC,
|
||||||
|
0XFF,0XFF,0XF3,0XFF,0XF0,0X7F,0XFE,0X00,0X0F,0XFF,0X80,0X3F,0XFE,0X7F,0XFF,0XE7,
|
||||||
|
0XFF,0XC0,0X1F,0XFF,0X00,0X0F,0XFF,0X00,0X1F,0XFE,0X7F,0XFF,0XE7,0XFF,0X80,0X0F,
|
||||||
|
0XFF,0X00,0X1F,0XFE,0X01,0X8F,0XFF,0X3F,0XFF,0XCF,0XFF,0X18,0X07,0XFF,0X80,0X3F,
|
||||||
|
0XFE,0X07,0XCF,0XFF,0X00,0X00,0X1F,0XFF,0X3E,0X07,0XFF,0XC0,0X3F,0XFE,0X0F,0XEF,
|
||||||
|
0XFF,0X80,0X00,0X1F,0XFF,0X7F,0X07,0XFF,0XC0,0X7F,0XFC,0X0F,0X87,0XFF,0X80,0X00,
|
||||||
|
0X1F,0XFE,0X1F,0X03,0XFF,0XC0,0X7F,0XFC,0X0F,0X07,0XFF,0XC0,0X00,0X3F,0XFE,0X0F,
|
||||||
|
0X03,0XFF,0XE0,0X7F,0XFC,0X0F,0XEF,0XFF,0XC0,0X00,0X3F,0XFF,0X7F,0X03,0XFF,0XE0,
|
||||||
|
0X7F,0XFE,0X07,0XC0,0XFF,0XC0,0X00,0X3F,0XF8,0X3E,0X07,0XFF,0XE0,0XFF,0XFE,0X03,
|
||||||
|
0XC0,0X00,0X60,0X00,0X60,0X00,0X3C,0X07,0XFF,0XF0,0XFF,0XFF,0X00,0X00,0X00,0X0F,
|
||||||
|
0XFF,0X00,0X00,0X00,0X0F,0XFF,0XF0,0XFF,0XFF,0X80,0X38,0X00,0X07,0XFE,0X00,0X01,
|
||||||
|
0XC0,0X1F,0XFF,0XF0,0XFF,0XFF,0XC0,0X7F,0XF0,0X07,0XFE,0X00,0XFF,0XE0,0X3F,0XFF,
|
||||||
|
0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0XFF,
|
||||||
|
0XFF,0XFF,0XFF,0XE0,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,
|
||||||
|
0XE0,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X7F,
|
||||||
|
0XFF,0XFF,0XFF,0XFF,0XF0,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X78,0X00,0X00,0X00,
|
||||||
|
0X00,0XF0,0X7F,0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X78,0X00,0X00,0X00,0X00,0XF0,0X7F,
|
||||||
|
0XFF,0XFF,0XFF,0XFF,0XC0,0X00,0X78,0X00,0X00,0X00,0X00,0XF0,0X7F,0XFF,0XFF,0XFF,
|
||||||
|
0XFF,0XC0,0X00,0X78,0X00,0X00,0X00,0X00,0XF0,0X3F,0XFF,0XFF,0XFF,0XFF,0X80,0X00,
|
||||||
|
0X78,0X00,0X00,0X00,0X00,0XF0,0X3F,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0X78,0X00,0X00,
|
||||||
|
0X00,0X00,0XF0,0X1F,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0XF0,
|
||||||
|
0X1F,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0XF0,0X0F,0XFF,0XFF,
|
||||||
|
0XFF,0XFE,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0XF0,0X07,0XFF,0XFF,0XFF,0XFC,0X00,
|
||||||
|
0X00,0X78,0X00,0X7F,0XF0,0X00,0XF0,0X03,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X78,0X01,
|
||||||
|
0XFF,0XFC,0X00,0XF0,0X01,0XFF,0XFF,0XFF,0XF0,0X00,0X00,0X78,0X07,0XFF,0XFF,0X00,
|
||||||
|
0XF0,0X00,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X78,0X1F,0XF0,0X7F,0XC0,0XF0,0X00,0X7F,
|
||||||
|
0XFF,0XFF,0XC0,0X00,0X00,0X78,0X3F,0X80,0X07,0XE0,0XF0,0X00,0X1F,0XFF,0XFF,0X00,
|
||||||
|
0X00,0X00,0X78,0X3E,0X1F,0XC3,0XF0,0XF0,0X00,0X0F,0XFF,0XFC,0X00,0X00,0X00,0X78,
|
||||||
|
0X78,0XFF,0XF8,0XF0,0XF0,0X00,0X03,0XFF,0XF8,0X00,0X00,0X00,0X78,0X31,0XFF,0XFC,
|
||||||
|
0X60,0XF0,0X00,0X03,0XFF,0XF8,0X00,0X00,0X00,0X78,0X03,0XFF,0XFE,0X00,0XF0,0X00,
|
||||||
|
0X03,0XFF,0XF8,0X00,0X00,0X00,0X78,0X07,0XE0,0X1F,0X00,0XF0,0X00,0X03,0XFF,0XF8,
|
||||||
|
0X00,0X00,0X00,0X78,0X07,0X87,0X0F,0X00,0XF0,0X00,0X03,0XFF,0XF8,0X00,0X00,0X00,
|
||||||
|
0X78,0X03,0X3F,0XE6,0X00,0XF0,0X00,0X03,0XC7,0XF8,0X00,0X00,0X00,0X78,0X00,0X7F,
|
||||||
|
0XF0,0X00,0XF0,0X00,0X03,0XC7,0XF8,0X00,0X00,0X00,0X78,0X00,0X7F,0XF0,0X00,0XF0,
|
||||||
|
0X00,0X03,0XC7,0XF8,0X00,0X00,0X00,0X78,0X00,0X70,0X70,0X00,0XF0,0X00,0X03,0XC7,
|
||||||
|
0XF8,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0XF0,0X00,0X03,0XC7,0XF8,0X00,0X00,
|
||||||
|
0X00,0X78,0X00,0X07,0X00,0X00,0XF0,0X00,0X03,0XC7,0XF0,0X00,0X00,0X00,0X78,0X00,
|
||||||
|
0X07,0X00,0X00,0XF0,0X00,0X03,0XC7,0XE0,0X00,0X00,0X00,0X78,0X00,0X07,0X00,0X00,
|
||||||
|
0XF0,0X00,0X03,0XC7,0XE0,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0XF0,0X00,0X03,
|
||||||
|
0XC7,0XE0,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0XF0,0X00,0X03,0XC7,0XE0,0X00,
|
||||||
|
0X00,0X00,0X78,0X00,0X00,0X00,0X00,0XF0,0X00,0X03,0XC7,0XF0,0X00,0X00,0X00,0X78,
|
||||||
|
0X00,0X00,0X00,0X00,0XF0,0X00,0X03,0XC7,0XF0,0X00,0X00,0X00,0X78,0X00,0X00,0X00,
|
||||||
|
0X00,0XF0,0X00,0X03,0XC7,0XF8,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0XF0,0X00,
|
||||||
|
0X03,0XC7,0XF8,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,0XF0,0X00,0X03,0XC7,0XF8,
|
||||||
|
0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X03,0XC7,0XF0,0X00,0X00,0X00,
|
||||||
|
0X7F,0XFF,0XFF,0XFF,0XFF,0XF0,0X00,0X03,0XC7,0XE0,0X00,0X00,0X00,0X7F,0XFF,0XFF,
|
||||||
|
0XFF,0XFF,0XF0,0X00,0X03,0XC7,0XC0,0X00,0X00,0X00,0X7F,0XFF,0XFF,0XFF,0XFF,0XF0,
|
||||||
|
0X00,0X03,0XC7,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0X80,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X03,0XC7,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,
|
||||||
|
0XC7,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0XF0,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0XF0,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X03,0XC7,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X03,0XC7,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0XF8,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0XF8,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X03,0XC7,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X03,0XC7,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,
|
||||||
|
0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0XE0,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0XE0,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X03,0XC7,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,
|
||||||
|
0XC7,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XC7,0XF8,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XD7,0XF8,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X03,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X03,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XF0,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XE0,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0X80,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X3F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X1C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X08,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,};
|
43
Software/fab-reader2/main/epd/ImageData.h
Normal file
43
Software/fab-reader2/main/epd/ImageData.h
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* | File : ImageData.h
|
||||||
|
* | Author : Waveshare team
|
||||||
|
* | Function :
|
||||||
|
*----------------
|
||||||
|
* | This version: V1.0
|
||||||
|
* | Date : 2018-10-23
|
||||||
|
* | Info :
|
||||||
|
*
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documnetation 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
|
||||||
|
# furished 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 OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
# THE SOFTWARE.
|
||||||
|
#
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _IMAGEDATA_H_
|
||||||
|
#define _IMAGEDATA_H_
|
||||||
|
|
||||||
|
// FabAccess_Icon.c
|
||||||
|
|
||||||
|
extern const unsigned char gImage_FabAccess_Icon_NoHeader[];
|
||||||
|
extern const unsigned char gImage_qrurn[];
|
||||||
|
|
||||||
|
#endif
|
||||||
|
/* FILE END */
|
||||||
|
|
||||||
|
|
215
Software/fab-reader2/main/epd/epd.c
Normal file
215
Software/fab-reader2/main/epd/epd.c
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
//
|
||||||
|
// Created by Kai Jan Kriegel on 03.02.23.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "epd.h"
|
||||||
|
#include "EPD_2in66.h"
|
||||||
|
#include "platform.h"
|
||||||
|
#include <esp_err.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
display_t epd_display;
|
||||||
|
|
||||||
|
|
||||||
|
esp_err_t epd_init(display_t display) {
|
||||||
|
if (DEV_Module_Init() != 0) {
|
||||||
|
return ESP_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
EPD_2IN66_Init();
|
||||||
|
|
||||||
|
epd_display = display;
|
||||||
|
|
||||||
|
UWORD Imagesize =
|
||||||
|
((EPD_2IN66_WIDTH % 8 == 0) ? (EPD_2IN66_WIDTH / 8) : (EPD_2IN66_WIDTH / 8 + 1)) * EPD_2IN66_HEIGHT;
|
||||||
|
if ((epd_display.canvas = (UBYTE *) malloc(Imagesize)) == NULL) {
|
||||||
|
ESP_LOGE("EPD", "Failed to allocate epd canvas memory");
|
||||||
|
return ESP_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Paint_NewImage(epd_display.canvas, EPD_2IN66_WIDTH, EPD_2IN66_HEIGHT, 270, WHITE);
|
||||||
|
|
||||||
|
// Initialise the display
|
||||||
|
Paint_SelectImage(epd_display.canvas);
|
||||||
|
Paint_Clear(WHITE);
|
||||||
|
char readerid[DISPLAY_BUFFER_SIZE];
|
||||||
|
snprintf(readerid, DISPLAY_BUFFER_SIZE, "Reader ID: %05d", epd_display.reader_info.reader_id);
|
||||||
|
char batterlevel[DISPLAY_BUFFER_SIZE];
|
||||||
|
snprintf(batterlevel, DISPLAY_BUFFER_SIZE, "Battery: %d%%", epd_display.reader_info.battery_level);
|
||||||
|
//Draw border
|
||||||
|
Paint_DrawRectangle(1, 1, EPD_2IN66_HEIGHT - 1, EPD_2IN66_WIDTH, BLACK, DOT_PIXEL_1X1, DRAW_FILL_EMPTY);
|
||||||
|
// Draw reader id
|
||||||
|
Paint_DrawString_EN(17, 2, readerid, &Font12, WHITE, BLACK);
|
||||||
|
// draw divider
|
||||||
|
Paint_DrawLine(EPD_2IN66_HEIGHT / 2, 1, EPD_2IN66_HEIGHT / 2, 15, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
|
||||||
|
// Draw battery level
|
||||||
|
Paint_DrawString_EN(175, 2, batterlevel, &Font12, WHITE, BLACK);
|
||||||
|
// Draw header horizontal divider
|
||||||
|
Paint_DrawLine(1, 15, EPD_2IN66_HEIGHT, 15, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
|
||||||
|
// draw vertical button divider
|
||||||
|
ESP_LOGD("EPD", "Drawing vertical button divider");
|
||||||
|
Paint_DrawLine(40, 15, 40, EPD_2IN66_WIDTH, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
|
||||||
|
Paint_DrawLine(EPD_2IN66_HEIGHT - 40, 15, EPD_2IN66_HEIGHT - 40, EPD_2IN66_WIDTH, BLACK, DOT_PIXEL_1X1,
|
||||||
|
LINE_STYLE_SOLID);
|
||||||
|
// Draw horizontal button divider
|
||||||
|
ESP_LOGD("EPD", "Drawing horizontal button divider");
|
||||||
|
Paint_DrawLine(1, ((EPD_2IN66_WIDTH - 15) / 2) + 15, 40, ((EPD_2IN66_WIDTH - 15) / 2) + 15, BLACK, DOT_PIXEL_1X1,
|
||||||
|
LINE_STYLE_SOLID);
|
||||||
|
Paint_DrawLine(EPD_2IN66_HEIGHT - 40, ((EPD_2IN66_WIDTH - 15) / 2) + 15, EPD_2IN66_HEIGHT,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) + 15, BLACK, DOT_PIXEL_1X1, LINE_STYLE_SOLID);
|
||||||
|
|
||||||
|
// Draw buttons
|
||||||
|
ESP_LOGD("EPD", "Drawing buttons");
|
||||||
|
Paint_DrawString_EN(12, ((EPD_2IN66_WIDTH - 15) / 2) - 20 - (Font24.Height / 2), epd_display.buttons.btn0, &Font24, WHITE, BLACK);
|
||||||
|
Paint_DrawString_EN(12, ((EPD_2IN66_WIDTH - 15) / 2) + 40, epd_display.buttons.btn1, &Font24, WHITE, BLACK);
|
||||||
|
Paint_DrawString_EN(EPD_2IN66_HEIGHT - 12 - Font24.Width, ((EPD_2IN66_WIDTH - 15) / 2) - 20 - (Font24.Height / 2), epd_display.buttons.btn2, &Font24, WHITE, BLACK);
|
||||||
|
Paint_DrawString_EN(EPD_2IN66_HEIGHT - 12 - Font24.Width, ((EPD_2IN66_WIDTH - 15) / 2) + 40, epd_display.buttons.btn3, &Font24, WHITE, BLACK);
|
||||||
|
|
||||||
|
// Draw machine name
|
||||||
|
ESP_LOGD("EPD", "Drawing machine name");
|
||||||
|
Paint_DrawString_EN(42, 20, epd_display.machine_name, &Font16, WHITE, BLACK);
|
||||||
|
|
||||||
|
// Draw machine state
|
||||||
|
ESP_LOGD("EPD", "Drawing machine state");
|
||||||
|
Paint_DrawString_EN(60, ((EPD_2IN66_WIDTH - 15) / 2) + 15 - (Font24.Height / 2), epd_display.state, &Font24, WHITE,
|
||||||
|
BLACK);
|
||||||
|
|
||||||
|
// Draw QR code
|
||||||
|
ESP_LOGD("EPD", "Drawing QR code");
|
||||||
|
Paint_DrawBitMap_Paste(gImage_qrurn, EPD_2IN66_HEIGHT - 142,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) - 35, 100, 100, TRUE);
|
||||||
|
|
||||||
|
ESP_LOGI("EPD", "Displaying initial layout");
|
||||||
|
EPD_2IN66_Display(epd_display.canvas);
|
||||||
|
ESP_LOGD("EPD", "Sleeping");
|
||||||
|
EPD_2IN66_Sleep();
|
||||||
|
DEV_Module_Exit();
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void epd_clear() {
|
||||||
|
EPD_2IN66_Init();
|
||||||
|
EPD_2IN66_Clear();
|
||||||
|
EPD_2IN66_Sleep();
|
||||||
|
}
|
||||||
|
|
||||||
|
void epd_update_reader_info(reader_info_t reader_info) {
|
||||||
|
if (memcmp(&epd_display.reader_info, &reader_info, sizeof(reader_info_t)) != 0) {
|
||||||
|
memcpy(&epd_display.reader_info, &reader_info, sizeof(reader_info_t));
|
||||||
|
DEV_Module_Init();
|
||||||
|
EPD_2IN66_Init();
|
||||||
|
EPD_2IN66_Init_Partial();
|
||||||
|
Paint_SelectImage(epd_display.canvas);
|
||||||
|
|
||||||
|
char readerid[DISPLAY_BUFFER_SIZE];
|
||||||
|
snprintf(readerid, DISPLAY_BUFFER_SIZE, "%05d", epd_display.reader_info.reader_id);
|
||||||
|
char batterlevel[DISPLAY_BUFFER_SIZE];
|
||||||
|
snprintf(batterlevel, DISPLAY_BUFFER_SIZE, "%d%%", epd_display.reader_info.battery_level);
|
||||||
|
Paint_ClearWindows(94, 2, 129, 14, WHITE);
|
||||||
|
Paint_DrawString_EN(94, 2, readerid, &Font12, WHITE, BLACK);
|
||||||
|
// blank out battery level
|
||||||
|
Paint_ClearWindows(238, 2, 266, 14, WHITE);
|
||||||
|
// Draw battery level
|
||||||
|
Paint_DrawString_EN(238, 2, batterlevel, &Font12, WHITE, BLACK);
|
||||||
|
EPD_2IN66_Display(epd_display.canvas);
|
||||||
|
EPD_2IN66_Sleep();
|
||||||
|
DEV_Module_Exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void epd_update_state(char* state) {
|
||||||
|
if (strcmp(epd_display.state, state) != 0) {
|
||||||
|
ESP_LOGI("EPD", "Updating state to %s", state);
|
||||||
|
strncpy(epd_display.state, state, DISPLAY_BUFFER_SIZE);
|
||||||
|
DEV_Module_Init();
|
||||||
|
EPD_2IN66_Init();
|
||||||
|
EPD_2IN66_Init_Partial();
|
||||||
|
Paint_SelectImage(epd_display.canvas);
|
||||||
|
Paint_ClearWindows(60, ((EPD_2IN66_WIDTH - 15) / 2) + 15 - (Font24.Height / 2), EPD_2IN66_HEIGHT - 142,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) + 15 - (Font24.Height / 2) + Font24.Height, WHITE);
|
||||||
|
Paint_DrawString_EN(60, ((EPD_2IN66_WIDTH - 15) / 2) + 15 - (Font24.Height / 2), epd_display.state, &Font24,
|
||||||
|
WHITE,
|
||||||
|
BLACK);
|
||||||
|
EPD_2IN66_Display(epd_display.canvas);
|
||||||
|
EPD_2IN66_Sleep();
|
||||||
|
DEV_Module_Exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void epd_update_buttons(buttons_t* buttons) {
|
||||||
|
DEV_Module_Init();
|
||||||
|
EPD_2IN66_Init();
|
||||||
|
EPD_2IN66_Init_Partial();
|
||||||
|
if (strcmp(epd_display.buttons.btn0, buttons->btn0) != 0) {
|
||||||
|
strncpy(epd_display.buttons.btn0, buttons->btn0, DISPLAY_BUFFER_SIZE);
|
||||||
|
Paint_SelectImage(epd_display.canvas);
|
||||||
|
Paint_ClearWindows(12, ((EPD_2IN66_WIDTH - 15) / 2) - 20 - (Font24.Height / 2), 12 + Font24.Width,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) - 20 - (Font24.Height / 2) + Font24.Height, WHITE);
|
||||||
|
Paint_DrawString_EN(12, ((EPD_2IN66_WIDTH - 15) / 2) - 20 - (Font24.Height / 2), epd_display.buttons.btn0, &Font24,
|
||||||
|
WHITE, BLACK);
|
||||||
|
EPD_2IN66_Display(epd_display.canvas);
|
||||||
|
}
|
||||||
|
if (strcmp(epd_display.buttons.btn1, buttons->btn1) != 0) {
|
||||||
|
strncpy(epd_display.buttons.btn1, buttons->btn1, DISPLAY_BUFFER_SIZE);
|
||||||
|
Paint_SelectImage(epd_display.canvas);
|
||||||
|
Paint_ClearWindows(12, ((EPD_2IN66_WIDTH - 15) / 2) + 40, 12 + Font24.Width,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) + 40 + Font24.Height, WHITE);
|
||||||
|
Paint_DrawString_EN(12, ((EPD_2IN66_WIDTH - 15) / 2) + 40, epd_display.buttons.btn1, &Font24, WHITE, BLACK);
|
||||||
|
EPD_2IN66_Display(epd_display.canvas);
|
||||||
|
}
|
||||||
|
if (strcmp(epd_display.buttons.btn2, buttons->btn2) != 0) {
|
||||||
|
strncpy(epd_display.buttons.btn2, buttons->btn2, DISPLAY_BUFFER_SIZE);
|
||||||
|
Paint_SelectImage(epd_display.canvas);
|
||||||
|
Paint_ClearWindows(EPD_2IN66_HEIGHT - 12 - Font24.Width,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) - 20 - (Font24.Height / 2), EPD_2IN66_HEIGHT - 12,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) - 20 - (Font24.Height / 2) + Font24.Height, WHITE);
|
||||||
|
Paint_DrawString_EN(EPD_2IN66_HEIGHT - 12 - Font24.Width,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) - 20 - (Font24.Height / 2), epd_display.buttons.btn2, &Font24,
|
||||||
|
WHITE, BLACK);
|
||||||
|
EPD_2IN66_Display(epd_display.canvas);
|
||||||
|
}
|
||||||
|
if (strcmp(epd_display.buttons.btn3, buttons->btn3) != 0) {
|
||||||
|
strncpy(epd_display.buttons.btn3, buttons->btn3, DISPLAY_BUFFER_SIZE);
|
||||||
|
Paint_SelectImage(epd_display.canvas);
|
||||||
|
Paint_ClearWindows(EPD_2IN66_HEIGHT - 12 - Font24.Width,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) + 40, EPD_2IN66_HEIGHT - 12,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) + 40 + Font24.Height, WHITE);
|
||||||
|
Paint_DrawString_EN(EPD_2IN66_HEIGHT - 12 - Font24.Width,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) + 40, epd_display.buttons.btn3, &Font24, WHITE, BLACK);
|
||||||
|
EPD_2IN66_Display(epd_display.canvas);
|
||||||
|
}
|
||||||
|
EPD_2IN66_Sleep();
|
||||||
|
DEV_Module_Exit();
|
||||||
|
}
|
||||||
|
void epd_update_machine_name(char* machine_name) {
|
||||||
|
if (strcmp(epd_display.machine_name, machine_name) != 0) {
|
||||||
|
strncpy(epd_display.machine_name, machine_name, DISPLAY_BUFFER_SIZE);
|
||||||
|
DEV_Module_Init();
|
||||||
|
EPD_2IN66_Init();
|
||||||
|
EPD_2IN66_Init_Partial();
|
||||||
|
Paint_SelectImage(epd_display.canvas);
|
||||||
|
Paint_ClearWindows(42, 20, 251,
|
||||||
|
20 + Font16.Height, WHITE);
|
||||||
|
Paint_DrawString_EN(42, 20, epd_display.machine_name, &Font16, WHITE, BLACK);
|
||||||
|
EPD_2IN66_Display(epd_display.canvas);
|
||||||
|
EPD_2IN66_Sleep();
|
||||||
|
DEV_Module_Exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void epd_update_image(UBYTE* image) {
|
||||||
|
if (memcmp(epd_display.image, image, DISPLAY_BUFFER_SIZE) != 0) {
|
||||||
|
memcpy(epd_display.image, image, DISPLAY_BUFFER_SIZE);
|
||||||
|
DEV_Module_Init();
|
||||||
|
EPD_2IN66_Init();
|
||||||
|
EPD_2IN66_Init_Partial();
|
||||||
|
Paint_SelectImage(epd_display.canvas);
|
||||||
|
Paint_ClearWindows(EPD_2IN66_HEIGHT - 142,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) - 35,
|
||||||
|
EPD_2IN66_HEIGHT - 142 + 100,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) - 35 + 100, WHITE);
|
||||||
|
Paint_DrawBitMap_Paste(epd_display.image, EPD_2IN66_HEIGHT - 142,
|
||||||
|
((EPD_2IN66_WIDTH - 15) / 2) - 35, 100, 100, TRUE);
|
||||||
|
EPD_2IN66_Display(epd_display.canvas);
|
||||||
|
EPD_2IN66_Sleep();
|
||||||
|
DEV_Module_Exit();
|
||||||
|
}
|
||||||
|
}
|
73
Software/fab-reader2/main/epd/epd.h
Normal file
73
Software/fab-reader2/main/epd/epd.h
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* | File : EPD_Test.h
|
||||||
|
* | Author : Waveshare team
|
||||||
|
* | Function : e-Paper test Demo
|
||||||
|
* | Info :
|
||||||
|
*----------------
|
||||||
|
* | This version: V1.0
|
||||||
|
* | Date : 2019-06-11
|
||||||
|
* | Info :
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documnetation 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
|
||||||
|
# furished 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 OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
# THE SOFTWARE.
|
||||||
|
#
|
||||||
|
******************************************************************************/
|
||||||
|
#ifndef _EPD_TEST_H_
|
||||||
|
#define _EPD_TEST_H_
|
||||||
|
|
||||||
|
#include "DEV_Config.h"
|
||||||
|
#include "GUI_Paint.h"
|
||||||
|
#include "imagedata.h"
|
||||||
|
#include "Debug.h"
|
||||||
|
#include <stdlib.h> // malloc() free()
|
||||||
|
|
||||||
|
#define DISPLAY_BUFFER_SIZE 30
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int reader_id;
|
||||||
|
int battery_level;
|
||||||
|
} reader_info_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char btn0[DISPLAY_BUFFER_SIZE];
|
||||||
|
char btn1[DISPLAY_BUFFER_SIZE];
|
||||||
|
char btn2[DISPLAY_BUFFER_SIZE];
|
||||||
|
char btn3[DISPLAY_BUFFER_SIZE];
|
||||||
|
} buttons_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
UBYTE* canvas;
|
||||||
|
reader_info_t reader_info;
|
||||||
|
char state[DISPLAY_BUFFER_SIZE];
|
||||||
|
buttons_t buttons;
|
||||||
|
char machine_name[DISPLAY_BUFFER_SIZE];
|
||||||
|
UBYTE *image;
|
||||||
|
} display_t;
|
||||||
|
|
||||||
|
esp_err_t epd_init(display_t display);
|
||||||
|
esp_err_t epd_deinit();
|
||||||
|
void epd_clear();
|
||||||
|
void epd_update_reader_info(reader_info_t reader_info);
|
||||||
|
void epd_update_state(char* state);
|
||||||
|
void epd_update_buttons(buttons_t* buttons);
|
||||||
|
void epd_update_machine_name(char* machine_name);
|
||||||
|
void epd_update_image(UBYTE* image);
|
||||||
|
|
||||||
|
int EPD_test();
|
||||||
|
|
||||||
|
#endif
|
83
Software/fab-reader2/main/epd/qrurn.c
Normal file
83
Software/fab-reader2/main/epd/qrurn.c
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
const unsigned char gImage_qrurn[1300] = { /* 0X00,0X01,0X64,0X00,0X64,0X00, */
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X1F,0XFF,0XFC,0X63,0X9F,0XFC,0X03,0X83,0XFF,0XFF,0X80,0X00,0X00,0X1F,0XFF,0XFC,
|
||||||
|
0X63,0X9F,0XFC,0X03,0X83,0XFF,0XFF,0X80,0X00,0X00,0X1F,0XFF,0XFC,0X63,0X9F,0XFC,
|
||||||
|
0X03,0X83,0XFF,0XFF,0X80,0X00,0X00,0X1C,0X00,0X1C,0X1F,0XFF,0X83,0X9C,0X63,0X80,
|
||||||
|
0X03,0X80,0X00,0X00,0X1C,0X00,0X1C,0X1F,0XFF,0X83,0X9C,0X63,0X80,0X03,0X80,0X00,
|
||||||
|
0X00,0X1C,0X00,0X1C,0X1F,0XFF,0X83,0X9C,0X63,0X80,0X03,0X80,0X00,0X00,0X1C,0X7F,
|
||||||
|
0X9C,0X7F,0X80,0X03,0X80,0X63,0X9F,0XE3,0X80,0X00,0X00,0X1C,0X7F,0X9C,0X7F,0X80,
|
||||||
|
0X03,0X80,0X63,0X9F,0XE3,0X80,0X00,0X00,0X1C,0X7F,0X9C,0X7F,0X9C,0X7C,0X00,0X03,
|
||||||
|
0X9F,0XE3,0X80,0X00,0X00,0X1C,0X7F,0X9C,0X7F,0X9C,0X7C,0X00,0X03,0X9F,0XE3,0X80,
|
||||||
|
0X00,0X00,0X1C,0X7F,0X9C,0X7F,0X9C,0X7C,0X00,0X03,0X9F,0XE3,0X80,0X00,0X00,0X1C,
|
||||||
|
0X7F,0X9C,0X60,0X7C,0X63,0XFF,0XE3,0X9F,0XE3,0X80,0X00,0X00,0X1C,0X7F,0X9C,0X60,
|
||||||
|
0X7C,0X63,0XFF,0XE3,0X9F,0XE3,0X80,0X00,0X00,0X1C,0X7F,0X9C,0X60,0X7C,0X63,0XFF,
|
||||||
|
0XE3,0X9F,0XE3,0X80,0X00,0X00,0X1C,0X00,0X1C,0X03,0XE3,0X9F,0XE3,0XE3,0X80,0X03,
|
||||||
|
0X80,0X00,0X00,0X1C,0X00,0X1C,0X03,0XE3,0X9F,0XE3,0XE3,0X80,0X03,0X80,0X00,0X00,
|
||||||
|
0X1F,0XFF,0XFC,0X63,0X9C,0X63,0X9C,0X63,0XFF,0XFF,0X80,0X00,0X00,0X1F,0XFF,0XFC,
|
||||||
|
0X63,0X9C,0X63,0X9C,0X63,0XFF,0XFF,0X80,0X00,0X00,0X1F,0XFF,0XFC,0X63,0X9C,0X63,
|
||||||
|
0X9C,0X63,0XFF,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X03,0X9C,0X1F,0X9F,0X80,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X9C,0X1F,0X9F,0X80,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X03,0X9C,0X1F,0X9F,0X80,0X00,0X00,0X00,0X00,0X00,0X1F,0XFC,
|
||||||
|
0X1C,0X63,0XFF,0X9F,0XE3,0XFC,0X1F,0XE3,0X80,0X00,0X00,0X1F,0XFC,0X1C,0X63,0XFF,
|
||||||
|
0X9F,0XE3,0XFC,0X1F,0XE3,0X80,0X00,0X00,0X1C,0X7C,0X60,0X63,0X9F,0XFC,0X1C,0X60,
|
||||||
|
0X7F,0X9F,0X80,0X00,0X00,0X1C,0X7C,0X60,0X63,0X9F,0XFC,0X1C,0X60,0X7F,0X9F,0X80,
|
||||||
|
0X00,0X00,0X1C,0X7C,0X60,0X63,0X9F,0XFC,0X1C,0X60,0X7F,0X9F,0X80,0X00,0X00,0X1F,
|
||||||
|
0X9F,0XFF,0X9F,0XFF,0X80,0X7C,0X1C,0X7C,0X00,0X00,0X00,0X00,0X1F,0X9F,0XFF,0X9F,
|
||||||
|
0XFF,0X80,0X7C,0X1C,0X7C,0X00,0X00,0X00,0X00,0X1F,0X9F,0XFF,0X9F,0XFF,0X80,0X7C,
|
||||||
|
0X1C,0X7C,0X00,0X00,0X00,0X00,0X1F,0X83,0XE0,0X7F,0X80,0X03,0XE0,0X7C,0X60,0X7C,
|
||||||
|
0X00,0X00,0X00,0X1F,0X83,0XE0,0X7F,0X80,0X03,0XE0,0X7C,0X60,0X7C,0X00,0X00,0X00,
|
||||||
|
0X1C,0X63,0XFF,0XFF,0X9C,0X7F,0X80,0X7C,0X60,0X60,0X00,0X00,0X00,0X1C,0X63,0XFF,
|
||||||
|
0XFF,0X9C,0X7F,0X80,0X7C,0X60,0X60,0X00,0X00,0X00,0X1C,0X63,0XFF,0XFF,0X9C,0X7F,
|
||||||
|
0X80,0X7C,0X60,0X60,0X00,0X00,0X00,0X1F,0XFC,0X60,0X1C,0X7C,0X60,0X7F,0X9F,0XE0,
|
||||||
|
0X7C,0X00,0X00,0X00,0X1F,0XFC,0X60,0X1C,0X7C,0X60,0X7F,0X9F,0XE0,0X7C,0X00,0X00,
|
||||||
|
0X00,0X1F,0XFC,0X60,0X1C,0X7C,0X60,0X7F,0X9F,0XE0,0X7C,0X00,0X00,0X00,0X1C,0X00,
|
||||||
|
0X1C,0X00,0X63,0X80,0X7C,0X1F,0X9C,0X7F,0X80,0X00,0X00,0X1C,0X00,0X1C,0X00,0X63,
|
||||||
|
0X80,0X7C,0X1F,0X9C,0X7F,0X80,0X00,0X00,0X03,0X80,0X63,0X83,0XE0,0X60,0X1F,0XE3,
|
||||||
|
0XFC,0X63,0X80,0X00,0X00,0X03,0X80,0X63,0X83,0XE0,0X60,0X1F,0XE3,0XFC,0X63,0X80,
|
||||||
|
0X00,0X00,0X03,0X80,0X63,0X83,0XE0,0X60,0X1F,0XE3,0XFC,0X63,0X80,0X00,0X00,0X1F,
|
||||||
|
0XFC,0X1C,0X00,0X1C,0X63,0XE0,0X00,0X1C,0X1C,0X00,0X00,0X00,0X1F,0XFC,0X1C,0X00,
|
||||||
|
0X1C,0X63,0XE0,0X00,0X1C,0X1C,0X00,0X00,0X00,0X1F,0XFC,0X1C,0X00,0X1C,0X63,0XE0,
|
||||||
|
0X00,0X1C,0X1C,0X00,0X00,0X00,0X03,0XE3,0XE0,0X1F,0X80,0X63,0X9C,0X1C,0X00,0X03,
|
||||||
|
0X80,0X00,0X00,0X03,0XE3,0XE0,0X1F,0X80,0X63,0X9C,0X1C,0X00,0X03,0X80,0X00,0X00,
|
||||||
|
0X1C,0X00,0X1C,0X1C,0X03,0XFC,0X60,0X7C,0X00,0X7C,0X00,0X00,0X00,0X1C,0X00,0X1C,
|
||||||
|
0X1C,0X03,0XFC,0X60,0X7C,0X00,0X7C,0X00,0X00,0X00,0X1C,0X00,0X1C,0X1C,0X03,0XFC,
|
||||||
|
0X60,0X7C,0X00,0X7C,0X00,0X00,0X00,0X00,0X1C,0X63,0X80,0X63,0XE3,0XE3,0X9F,0X83,
|
||||||
|
0XE3,0X80,0X00,0X00,0X00,0X1C,0X63,0X80,0X63,0XE3,0XE3,0X9F,0X83,0XE3,0X80,0X00,
|
||||||
|
0X00,0X00,0X1C,0X63,0X80,0X63,0XE3,0XE3,0X9F,0X83,0XE3,0X80,0X00,0X00,0X03,0XE3,
|
||||||
|
0X9F,0X9F,0X83,0XE0,0X63,0XFF,0XFF,0XE3,0X80,0X00,0X00,0X03,0XE3,0X9F,0X9F,0X83,
|
||||||
|
0XE0,0X63,0XFF,0XFF,0XE3,0X80,0X00,0X00,0X00,0X00,0X00,0X63,0X80,0X1F,0X83,0XE0,
|
||||||
|
0X1F,0X9C,0X00,0X00,0X00,0X00,0X00,0X00,0X63,0X80,0X1F,0X83,0XE0,0X1F,0X9C,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X63,0X80,0X1F,0X83,0XE0,0X1F,0X9C,0X00,0X00,0X00,0X1F,
|
||||||
|
0XFF,0XFC,0X03,0X80,0X60,0X1C,0X63,0X9C,0X1C,0X00,0X00,0X00,0X1F,0XFF,0XFC,0X03,
|
||||||
|
0X80,0X60,0X1C,0X63,0X9C,0X1C,0X00,0X00,0X00,0X1F,0XFF,0XFC,0X03,0X80,0X60,0X1C,
|
||||||
|
0X63,0X9C,0X1C,0X00,0X00,0X00,0X1C,0X00,0X1C,0X00,0X7F,0XFC,0X60,0X60,0X1F,0X80,
|
||||||
|
0X00,0X00,0X00,0X1C,0X00,0X1C,0X00,0X7F,0XFC,0X60,0X60,0X1F,0X80,0X00,0X00,0X00,
|
||||||
|
0X1C,0X7F,0X9C,0X1C,0X60,0X1C,0X1C,0X7F,0XFF,0X9F,0X80,0X00,0X00,0X1C,0X7F,0X9C,
|
||||||
|
0X1C,0X60,0X1C,0X1C,0X7F,0XFF,0X9F,0X80,0X00,0X00,0X1C,0X7F,0X9C,0X1C,0X60,0X1C,
|
||||||
|
0X1C,0X7F,0XFF,0X9F,0X80,0X00,0X00,0X1C,0X7F,0X9C,0X63,0XE3,0X9F,0XE0,0X03,0X83,
|
||||||
|
0XFC,0X00,0X00,0X00,0X1C,0X7F,0X9C,0X63,0XE3,0X9F,0XE0,0X03,0X83,0XFC,0X00,0X00,
|
||||||
|
0X00,0X1C,0X7F,0X9C,0X63,0XE3,0X9F,0XE0,0X03,0X83,0XFC,0X00,0X00,0X00,0X1C,0X7F,
|
||||||
|
0X9C,0X7C,0X1C,0X7F,0XFC,0X00,0X03,0XE3,0X80,0X00,0X00,0X1C,0X7F,0X9C,0X7C,0X1C,
|
||||||
|
0X7F,0XFC,0X00,0X03,0XE3,0X80,0X00,0X00,0X1C,0X00,0X1C,0X60,0X1F,0X83,0XFC,0X60,
|
||||||
|
0X00,0X03,0X80,0X00,0X00,0X1C,0X00,0X1C,0X60,0X1F,0X83,0XFC,0X60,0X00,0X03,0X80,
|
||||||
|
0X00,0X00,0X1C,0X00,0X1C,0X60,0X1F,0X83,0XFC,0X60,0X00,0X03,0X80,0X00,0X00,0X1F,
|
||||||
|
0XFF,0XFC,0X60,0X60,0X03,0XE0,0X7F,0X80,0X1C,0X00,0X00,0X00,0X1F,0XFF,0XFC,0X60,
|
||||||
|
0X60,0X03,0XE0,0X7F,0X80,0X1C,0X00,0X00,0X00,0X1F,0XFF,0XFC,0X60,0X60,0X03,0XE0,
|
||||||
|
0X7F,0X80,0X1C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
|
||||||
|
0X00,0X00,0X00,0X00,};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user