mirror of
				https://github.com/zapta/simple_stepper_motor_analyzer.git
				synced 2025-10-29 22:59:32 -07:00 
			
		
		
		
	Initial set of files.
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								docs/getting-started-with-pico.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/getting-started-with-pico.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								docs/pico-datasheet.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/pico-datasheet.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								docs/pico-product-brief.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/pico-product-brief.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								docs/pinout.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/pinout.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								docs/raspberry-pi-pico-c-sdk.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/raspberry-pi-pico-c-sdk.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								docs/rp2040-datasheet.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/rp2040-datasheet.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								docs/schematic.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/schematic.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								kicad/JLCPCB/gerbers.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								kicad/JLCPCB/gerbers.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										11
									
								
								kicad/JLCPCB/stepper_analyzer-top-pos.csv
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								kicad/JLCPCB/stepper_analyzer-top-pos.csv
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| Designator,Val,Package,Mid X,Mid Y,Rotation,Layer | ||||
| C1,100nf,SMD 0805,87.16,46.468,0,top | ||||
| C2,100nf,SMD 0805,52.226,46.849,0,top | ||||
| C4,10u,EIA-3216-18,43.415,46.5655,90,top | ||||
| FPC1,"FPC connector 40pins,  0.5mm,  TOP contacts",FH12-40S-0.5SH_1x40-1MP_P0.50mm_Horizontal_flipped,50.3,28.9,90,top | ||||
| FPC2,"FPC connector, 6 pins, 0.5mm, BOTTOM contacts",FH12-6S-0.5SH_1x06-1MP_P0.50mm_Horizontal,72.68,35.93,90,top | ||||
| Q1,SI2301,SOT-23,43.669,15.81,90,top | ||||
| R4,8.2 Ohm,SMD 0805,54.718,12.605,90,top | ||||
| R5,8.2 Ohm,SMD 0805,51.543,12.593,90,top | ||||
| R6,8.2 Ohm,SMD 0805,48.44,12.602,90,top | ||||
| R7,3.3K,SMD 0805,43.645,11.303,0,top | ||||
| 
 | 
							
								
								
									
										8
									
								
								kicad/JLCPCB/stepper_analyzer_bom.csv
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								kicad/JLCPCB/stepper_analyzer_bom.csv
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| Comment,Designator,Footprint,LCSC Part Number | ||||
| 100nf,"C1,C2",SMD 0805,C49678  | ||||
| 10u,C4,EIA-3216-18,C7171  | ||||
| "FPC connector 40pins,  0.5mm,  TOP contacts",FPC1,FH12-40S-0.5SH_1x40-1MP_P0.50mm_Horizontal_flipped,C11097 | ||||
| "FPC connector, 6 pins, 0.5mm, BOTTOM contacts",FPC2,FH12-6S-0.5SH_1x06-1MP_P0.50mm_Horizontal,C262262 | ||||
| SI2301,Q1,SOT-23,C10487 | ||||
| 8.2 Ohm,"R4,R5,R6",SMD 0805,C25330 | ||||
| 3.3K,R7,SMD 0805,C26010 | ||||
| 
 | 
							
								
								
									
										69
									
								
								kicad/TODO.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								kicad/TODO.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,69 @@ | ||||
|  | ||||
|  | ||||
|  | ||||
| * Delete junk kicad and model files. | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| ----- Done | ||||
|  | ||||
| * Verify drill size of Molex pins | ||||
|  | ||||
| * Add a way to configure current range. E.g. via resistor. | ||||
|  | ||||
| * Increase horizontal clerance for the four screws. (extend the PCB). | ||||
|  | ||||
| * Reduce diameter of vias in ground pads of the pico | ||||
|  | ||||
| * Update instruction silk messages on the PCB (e.g. tape thickness) | ||||
|  | ||||
| * Verify sufficient clearance at the sides of the TFT, for buttons and LEDs. | ||||
|  | ||||
| * Make the LED footprint compatible with 0603 and 0805 LEDs. | ||||
|  | ||||
| * Clearer mark for pin 1 of the current sensors. E.g. a dot. | ||||
|  | ||||
| * Change the order of FPC 6 pins, to match the flat cable | ||||
|  | ||||
| * Add F-Silk marks with the stepper connector pin lables (A1, A2, ...) | ||||
|  | ||||
| * Move the Molex connector to be at 50 mill relative pitch | ||||
|  | ||||
| * Finalize BOM. | ||||
|  | ||||
| * Finalize the choice of connectors | ||||
|  | ||||
| * Smaller holes for the MOLEX connectors? | ||||
|  | ||||
| * MOSFET footprint too small? | ||||
|  | ||||
| * Smaller holes for the ground pads of the Pico? | ||||
|  | ||||
| * Move the BOOTSEL pad closer to the Pico's switch. | ||||
|  | ||||
| * Remove SWD pads from the PCB | ||||
|  | ||||
| * Diode footprint too small ? | ||||
|  | ||||
| * Lower profile switches | ||||
|  | ||||
| * Move the Molex connectors slightly out? | ||||
|  | ||||
| * Move LED 1,2 test points to the front of the board. | ||||
|  | ||||
| * Add duplicate leds on the front of the board. | ||||
|  | ||||
| * Review through holes | ||||
|  | ||||
| * Add a silkscreen text below the Pico to place Kapton tape here. | ||||
|  | ||||
| * Is the pullup resistor of the BOOT switch required?   | ||||
|  | ||||
| * Add mechanical dimensions. | ||||
|  | ||||
| * Add duplicate BOOT, RESET button on the front side (?) | ||||
|  | ||||
| * Add silkscreen marking for TFT position. | ||||
|  | ||||
| * Change the Pico pin silkscreen labels to reflect the function of the pin in the analyzer design. | ||||
							
								
								
									
										83399
									
								
								kicad/fp-info-cache
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83399
									
								
								kicad/fp-info-cache
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3
									
								
								kicad/fp-lib-table
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								kicad/fp-lib-table
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| (fp_lib_table | ||||
|   (lib (name stepper_motor_analyzer)(type KiCad)(uri ${KIPRJMOD}/stepper_motor_analyzer.pretty)(options "")(descr "")) | ||||
| ) | ||||
							
								
								
									
										53113
									
								
								kicad/models/FH12-40S-0.5SH.stp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53113
									
								
								kicad/models/FH12-40S-0.5SH.stp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										13456
									
								
								kicad/models/FPC 6-PIN SMD.stp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13456
									
								
								kicad/models/FPC 6-PIN SMD.stp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3338
									
								
								kicad/models/FPC_6pins_1mm.wrl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3338
									
								
								kicad/models/FPC_6pins_1mm.wrl
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										12991
									
								
								kicad/models/KMR211GLFS.step
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12991
									
								
								kicad/models/KMR211GLFS.step
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										12603
									
								
								kicad/models/KMR211GLFS.stp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12603
									
								
								kicad/models/KMR211GLFS.stp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								kicad/models/Peça2.SLDPRT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								kicad/models/Peça2.SLDPRT
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										516765
									
								
								kicad/models/Pico.wrl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										516765
									
								
								kicad/models/Pico.wrl
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3101
									
								
								kicad/models/kf2510_4p_right_angle.step
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3101
									
								
								kicad/models/kf2510_4p_right_angle.step
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										68812
									
								
								kicad/models/molex_fpc_40_05_5051104091.step
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68812
									
								
								kicad/models/molex_fpc_40_05_5051104091.step
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										65445
									
								
								kicad/models/molex_fpc_40_512964033.stp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65445
									
								
								kicad/models/molex_fpc_40_512964033.stp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										14495
									
								
								kicad/models/molex_fpc_6_05_527450633.step
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14495
									
								
								kicad/models/molex_fpc_6_05_527450633.step
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3035
									
								
								kicad/models/molex_kk_4pins_right_angle_022053041.stp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3035
									
								
								kicad/models/molex_kk_4pins_right_angle_022053041.stp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										72696
									
								
								kicad/models/pico.step
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72696
									
								
								kicad/models/pico.step
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										238
									
								
								kicad/models/unit_cube.step
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										238
									
								
								kicad/models/unit_cube.step
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,238 @@ | ||||
| ISO-10303-21; | ||||
| HEADER; | ||||
| /* Generated by software containing ST-Developer | ||||
|  * from STEP Tools, Inc. (www.steptools.com)  | ||||
|  */ | ||||
| /* OPTION: using custom renumber hook */ | ||||
|  | ||||
| FILE_DESCRIPTION( | ||||
| /* description */ ('STEP AP214'), | ||||
| /* implementation_level */ '2;1'); | ||||
|  | ||||
| FILE_NAME( | ||||
| /* name */ '60a03a028e9f040c3fb02603', | ||||
| /* time_stamp */ '2021-05-15T21:15:46+00:00', | ||||
| /* author */ (''), | ||||
| /* organization */ (''), | ||||
| /* preprocessor_version */ 'ST-DEVELOPER v18.1', | ||||
| /* originating_system */ '  ', | ||||
| /* authorisation */ '  '); | ||||
|  | ||||
| FILE_SCHEMA (('AUTOMOTIVE_DESIGN {1 0 10303 214 3 1 1}')); | ||||
| ENDSEC; | ||||
|  | ||||
| DATA; | ||||
| #10=PROPERTY_DEFINITION_REPRESENTATION(#14,#12); | ||||
| #11=PROPERTY_DEFINITION_REPRESENTATION(#15,#13); | ||||
| #12=REPRESENTATION('',(#16),#185); | ||||
| #13=REPRESENTATION('',(#17),#185); | ||||
| #14=PROPERTY_DEFINITION('pmi validation property','',#190); | ||||
| #15=PROPERTY_DEFINITION('pmi validation property','',#190); | ||||
| #16=VALUE_REPRESENTATION_ITEM('number of annotations',COUNT_MEASURE(0.)); | ||||
| #17=VALUE_REPRESENTATION_ITEM('number of views',COUNT_MEASURE(0.)); | ||||
| #18=SHAPE_REPRESENTATION_RELATIONSHIP('','',#123,#19); | ||||
| #19=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#121),#185); | ||||
| #20=ORIENTED_EDGE('',*,*,#44,.F.); | ||||
| #21=ORIENTED_EDGE('',*,*,#45,.F.); | ||||
| #22=ORIENTED_EDGE('',*,*,#46,.T.); | ||||
| #23=ORIENTED_EDGE('',*,*,#47,.T.); | ||||
| #24=ORIENTED_EDGE('',*,*,#48,.T.); | ||||
| #25=ORIENTED_EDGE('',*,*,#49,.F.); | ||||
| #26=ORIENTED_EDGE('',*,*,#50,.F.); | ||||
| #27=ORIENTED_EDGE('',*,*,#45,.T.); | ||||
| #28=ORIENTED_EDGE('',*,*,#51,.T.); | ||||
| #29=ORIENTED_EDGE('',*,*,#52,.F.); | ||||
| #30=ORIENTED_EDGE('',*,*,#53,.F.); | ||||
| #31=ORIENTED_EDGE('',*,*,#49,.T.); | ||||
| #32=ORIENTED_EDGE('',*,*,#54,.F.); | ||||
| #33=ORIENTED_EDGE('',*,*,#47,.F.); | ||||
| #34=ORIENTED_EDGE('',*,*,#55,.T.); | ||||
| #35=ORIENTED_EDGE('',*,*,#52,.T.); | ||||
| #36=ORIENTED_EDGE('',*,*,#46,.F.); | ||||
| #37=ORIENTED_EDGE('',*,*,#50,.T.); | ||||
| #38=ORIENTED_EDGE('',*,*,#53,.T.); | ||||
| #39=ORIENTED_EDGE('',*,*,#55,.F.); | ||||
| #40=ORIENTED_EDGE('',*,*,#44,.T.); | ||||
| #41=ORIENTED_EDGE('',*,*,#54,.T.); | ||||
| #42=ORIENTED_EDGE('',*,*,#51,.F.); | ||||
| #43=ORIENTED_EDGE('',*,*,#48,.F.); | ||||
| #44=EDGE_CURVE('',#56,#57,#64,.T.); | ||||
| #45=EDGE_CURVE('',#58,#56,#65,.T.); | ||||
| #46=EDGE_CURVE('',#58,#59,#66,.T.); | ||||
| #47=EDGE_CURVE('',#59,#57,#67,.T.); | ||||
| #48=EDGE_CURVE('',#56,#60,#68,.T.); | ||||
| #49=EDGE_CURVE('',#61,#60,#69,.T.); | ||||
| #50=EDGE_CURVE('',#58,#61,#70,.T.); | ||||
| #51=EDGE_CURVE('',#60,#62,#71,.T.); | ||||
| #52=EDGE_CURVE('',#63,#62,#72,.T.); | ||||
| #53=EDGE_CURVE('',#61,#63,#73,.T.); | ||||
| #54=EDGE_CURVE('',#57,#62,#74,.T.); | ||||
| #55=EDGE_CURVE('',#59,#63,#75,.T.); | ||||
| #56=VERTEX_POINT('',#160); | ||||
| #57=VERTEX_POINT('',#161); | ||||
| #58=VERTEX_POINT('',#163); | ||||
| #59=VERTEX_POINT('',#165); | ||||
| #60=VERTEX_POINT('',#169); | ||||
| #61=VERTEX_POINT('',#171); | ||||
| #62=VERTEX_POINT('',#175); | ||||
| #63=VERTEX_POINT('',#177); | ||||
| #64=LINE('',#159,#76); | ||||
| #65=LINE('',#162,#77); | ||||
| #66=LINE('',#164,#78); | ||||
| #67=LINE('',#166,#79); | ||||
| #68=LINE('',#168,#80); | ||||
| #69=LINE('',#170,#81); | ||||
| #70=LINE('',#172,#82); | ||||
| #71=LINE('',#174,#83); | ||||
| #72=LINE('',#176,#84); | ||||
| #73=LINE('',#178,#85); | ||||
| #74=LINE('',#180,#86); | ||||
| #75=LINE('',#181,#87); | ||||
| #76=VECTOR('',#135,1.); | ||||
| #77=VECTOR('',#136,1.); | ||||
| #78=VECTOR('',#137,1.); | ||||
| #79=VECTOR('',#138,1.); | ||||
| #80=VECTOR('',#141,1.); | ||||
| #81=VECTOR('',#142,1.); | ||||
| #82=VECTOR('',#143,1.); | ||||
| #83=VECTOR('',#146,1.); | ||||
| #84=VECTOR('',#147,1.); | ||||
| #85=VECTOR('',#148,1.); | ||||
| #86=VECTOR('',#151,1.); | ||||
| #87=VECTOR('',#152,1.); | ||||
| #88=EDGE_LOOP('',(#20,#21,#22,#23)); | ||||
| #89=EDGE_LOOP('',(#24,#25,#26,#27)); | ||||
| #90=EDGE_LOOP('',(#28,#29,#30,#31)); | ||||
| #91=EDGE_LOOP('',(#32,#33,#34,#35)); | ||||
| #92=EDGE_LOOP('',(#36,#37,#38,#39)); | ||||
| #93=EDGE_LOOP('',(#40,#41,#42,#43)); | ||||
| #94=FACE_BOUND('',#88,.T.); | ||||
| #95=FACE_BOUND('',#89,.T.); | ||||
| #96=FACE_BOUND('',#90,.T.); | ||||
| #97=FACE_BOUND('',#91,.T.); | ||||
| #98=FACE_BOUND('',#92,.T.); | ||||
| #99=FACE_BOUND('',#93,.T.); | ||||
| #100=PLANE('',#125); | ||||
| #101=PLANE('',#126); | ||||
| #102=PLANE('',#127); | ||||
| #103=PLANE('',#128); | ||||
| #104=PLANE('',#129); | ||||
| #105=PLANE('',#130); | ||||
| #106=ADVANCED_FACE('',(#94),#100,.T.); | ||||
| #107=ADVANCED_FACE('',(#95),#101,.F.); | ||||
| #108=ADVANCED_FACE('',(#96),#102,.F.); | ||||
| #109=ADVANCED_FACE('',(#97),#103,.T.); | ||||
| #110=ADVANCED_FACE('',(#98),#104,.T.); | ||||
| #111=ADVANCED_FACE('',(#99),#105,.F.); | ||||
| #112=CLOSED_SHELL('',(#106,#107,#108,#109,#110,#111)); | ||||
| #113=STYLED_ITEM('',(#114),#121); | ||||
| #114=PRESENTATION_STYLE_ASSIGNMENT((#115)); | ||||
| #115=SURFACE_STYLE_USAGE(.BOTH.,#116); | ||||
| #116=SURFACE_SIDE_STYLE('',(#117)); | ||||
| #117=SURFACE_STYLE_FILL_AREA(#118); | ||||
| #118=FILL_AREA_STYLE('',(#119)); | ||||
| #119=FILL_AREA_STYLE_COLOUR('',#120); | ||||
| #120=COLOUR_RGB('',0.6,0.6,0.6); | ||||
| #121=MANIFOLD_SOLID_BREP('Part 1',#112); | ||||
| #122=SHAPE_DEFINITION_REPRESENTATION(#190,#123); | ||||
| #123=SHAPE_REPRESENTATION('Part 1',(#124),#185); | ||||
| #124=AXIS2_PLACEMENT_3D('',#157,#131,#132); | ||||
| #125=AXIS2_PLACEMENT_3D('',#158,#133,#134); | ||||
| #126=AXIS2_PLACEMENT_3D('',#167,#139,#140); | ||||
| #127=AXIS2_PLACEMENT_3D('',#173,#144,#145); | ||||
| #128=AXIS2_PLACEMENT_3D('',#179,#149,#150); | ||||
| #129=AXIS2_PLACEMENT_3D('',#182,#153,#154); | ||||
| #130=AXIS2_PLACEMENT_3D('',#183,#155,#156); | ||||
| #131=DIRECTION('',(0.,0.,1.)); | ||||
| #132=DIRECTION('',(1.,0.,0.)); | ||||
| #133=DIRECTION('',(2.16840434497101E-16,-1.,0.)); | ||||
| #134=DIRECTION('',(1.,2.16840434497101E-16,0.)); | ||||
| #135=DIRECTION('',(-1.,-2.16840434497101E-16,0.)); | ||||
| #136=DIRECTION('',(0.,0.,-1.)); | ||||
| #137=DIRECTION('',(-1.,-2.16840434497101E-16,0.)); | ||||
| #138=DIRECTION('',(0.,0.,-1.)); | ||||
| #139=DIRECTION('',(-1.,0.,0.)); | ||||
| #140=DIRECTION('',(0.,0.,1.)); | ||||
| #141=DIRECTION('',(0.,1.,0.)); | ||||
| #142=DIRECTION('',(0.,0.,-1.)); | ||||
| #143=DIRECTION('',(0.,1.,0.)); | ||||
| #144=DIRECTION('',(2.16840434497101E-16,-1.,0.)); | ||||
| #145=DIRECTION('',(1.,2.16840434497101E-16,0.)); | ||||
| #146=DIRECTION('',(-1.,-2.16840434497101E-16,0.)); | ||||
| #147=DIRECTION('',(0.,0.,-1.)); | ||||
| #148=DIRECTION('',(-1.,-2.16840434497101E-16,0.)); | ||||
| #149=DIRECTION('',(-1.,0.,0.)); | ||||
| #150=DIRECTION('',(0.,0.,1.)); | ||||
| #151=DIRECTION('',(0.,1.,0.)); | ||||
| #152=DIRECTION('',(0.,1.,0.)); | ||||
| #153=DIRECTION('',(0.,0.,1.)); | ||||
| #154=DIRECTION('',(1.,0.,0.)); | ||||
| #155=DIRECTION('',(0.,0.,1.)); | ||||
| #156=DIRECTION('',(1.,0.,0.)); | ||||
| #157=CARTESIAN_POINT('',(0.,0.,0.)); | ||||
| #158=CARTESIAN_POINT('',(0.,-0.0005,0.001)); | ||||
| #159=CARTESIAN_POINT('',(0.,-0.0005,0.)); | ||||
| #160=CARTESIAN_POINT('',(0.0005,-0.0005,0.)); | ||||
| #161=CARTESIAN_POINT('',(-0.0005,-0.0005,0.)); | ||||
| #162=CARTESIAN_POINT('',(0.0005,-0.0005,0.001)); | ||||
| #163=CARTESIAN_POINT('',(0.0005,-0.0005,0.001)); | ||||
| #164=CARTESIAN_POINT('',(0.,-0.0005,0.001)); | ||||
| #165=CARTESIAN_POINT('',(-0.0005,-0.0005,0.001)); | ||||
| #166=CARTESIAN_POINT('',(-0.0005,-0.0005,0.001)); | ||||
| #167=CARTESIAN_POINT('',(0.0005,1.0842021724855E-19,0.001)); | ||||
| #168=CARTESIAN_POINT('',(0.0005,1.0842021724855E-19,0.)); | ||||
| #169=CARTESIAN_POINT('',(0.0005,0.0005,0.)); | ||||
| #170=CARTESIAN_POINT('',(0.0005,0.0005,0.001)); | ||||
| #171=CARTESIAN_POINT('',(0.0005,0.0005,0.001)); | ||||
| #172=CARTESIAN_POINT('',(0.0005,1.0842021724855E-19,0.001)); | ||||
| #173=CARTESIAN_POINT('',(0.,0.0005,0.001)); | ||||
| #174=CARTESIAN_POINT('',(0.,0.0005,0.)); | ||||
| #175=CARTESIAN_POINT('',(-0.0005,0.0005,0.)); | ||||
| #176=CARTESIAN_POINT('',(-0.0005,0.0005,0.001)); | ||||
| #177=CARTESIAN_POINT('',(-0.0005,0.0005,0.001)); | ||||
| #178=CARTESIAN_POINT('',(0.,0.0005,0.001)); | ||||
| #179=CARTESIAN_POINT('',(-0.0005,-1.0842021724855E-19,0.001)); | ||||
| #180=CARTESIAN_POINT('',(-0.0005,-1.0842021724855E-19,0.)); | ||||
| #181=CARTESIAN_POINT('',(-0.0005,-1.0842021724855E-19,0.001)); | ||||
| #182=CARTESIAN_POINT('',(0.,0.,0.001)); | ||||
| #183=CARTESIAN_POINT('',(0.,0.,0.)); | ||||
| #184=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#113), | ||||
| #185); | ||||
| #185=( | ||||
| GEOMETRIC_REPRESENTATION_CONTEXT(3) | ||||
| GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#186)) | ||||
| GLOBAL_UNIT_ASSIGNED_CONTEXT((#189,#188,#187)) | ||||
| REPRESENTATION_CONTEXT('Part 1','TOP_LEVEL_ASSEMBLY_PART') | ||||
| ); | ||||
| #186=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(5.E-6),#189, | ||||
| 'DISTANCE_ACCURACY_VALUE','Maximum Tolerance applied to model'); | ||||
| #187=( | ||||
| NAMED_UNIT(*) | ||||
| SI_UNIT($,.STERADIAN.) | ||||
| SOLID_ANGLE_UNIT() | ||||
| ); | ||||
| #188=( | ||||
| NAMED_UNIT(*) | ||||
| PLANE_ANGLE_UNIT() | ||||
| SI_UNIT($,.RADIAN.) | ||||
| ); | ||||
| #189=( | ||||
| LENGTH_UNIT() | ||||
| NAMED_UNIT(*) | ||||
| SI_UNIT($,.METRE.) | ||||
| ); | ||||
| #190=PRODUCT_DEFINITION_SHAPE('','',#191); | ||||
| #191=PRODUCT_DEFINITION('','',#193,#192); | ||||
| #192=PRODUCT_DEFINITION_CONTEXT('',#199,'design'); | ||||
| #193=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('','',#195, | ||||
|  .NOT_KNOWN.); | ||||
| #194=PRODUCT_RELATED_PRODUCT_CATEGORY('','',(#195)); | ||||
| #195=PRODUCT('Part 1','Part 1','Part 1',(#197)); | ||||
| #196=PRODUCT_CATEGORY('',''); | ||||
| #197=PRODUCT_CONTEXT('',#199,'mechanical'); | ||||
| #198=APPLICATION_PROTOCOL_DEFINITION('international standard', | ||||
| 'automotive_design',2010,#199); | ||||
| #199=APPLICATION_CONTEXT( | ||||
| 'core data for automotive mechanical design processes'); | ||||
| ENDSEC; | ||||
| END-ISO-10303-21; | ||||
							
								
								
									
										551
									
								
								kicad/stepper_analyzer-cache.lib
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										551
									
								
								kicad/stepper_analyzer-cache.lib
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,551 @@ | ||||
| EESchema-LIBRARY Version 2.4 | ||||
| #encoding utf-8 | ||||
| # | ||||
| # Connector_Conn_01x06_Female | ||||
| # | ||||
| DEF Connector_Conn_01x06_Female J 0 40 Y N 1 F N | ||||
| F0 "J" 0 300 50 H V C CNN | ||||
| F1 "Connector_Conn_01x06_Female" 0 -400 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  Connector*:*_1x??_* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| A 0 -300 20 901 -901 1 1 6 N 0 -280 0 -320 | ||||
| A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220 | ||||
| A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120 | ||||
| A 0 0 20 901 -901 1 1 6 N 0 20 0 -20 | ||||
| A 0 100 20 901 -901 1 1 6 N 0 120 0 80 | ||||
| A 0 200 20 901 -901 1 1 6 N 0 220 0 180 | ||||
| P 2 1 1 6 -50 -300 -20 -300 N | ||||
| P 2 1 1 6 -50 -200 -20 -200 N | ||||
| P 2 1 1 6 -50 -100 -20 -100 N | ||||
| P 2 1 1 6 -50 0 -20 0 N | ||||
| P 2 1 1 6 -50 100 -20 100 N | ||||
| P 2 1 1 6 -50 200 -20 200 N | ||||
| X Pin_1 1 -200 200 150 R 50 50 1 1 P | ||||
| X Pin_2 2 -200 100 150 R 50 50 1 1 P | ||||
| X Pin_3 3 -200 0 150 R 50 50 1 1 P | ||||
| X Pin_4 4 -200 -100 150 R 50 50 1 1 P | ||||
| X Pin_5 5 -200 -200 150 R 50 50 1 1 P | ||||
| X Pin_6 6 -200 -300 150 R 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Connector_Generic_Conn_01x01 | ||||
| # | ||||
| DEF Connector_Generic_Conn_01x01 J 0 40 Y N 1 F N | ||||
| F0 "J" 0 100 50 H V C CNN | ||||
| F1 "Connector_Generic_Conn_01x01" 0 -100 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  Connector*:*_1x??_* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| S -50 5 0 -5 1 1 6 N | ||||
| S -50 50 50 -50 1 1 10 f | ||||
| X Pin_1 1 -200 0 150 R 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Device_C | ||||
| # | ||||
| DEF Device_C C 0 10 N Y 1 F N | ||||
| F0 "C" 25 100 50 H V L CNN | ||||
| F1 "Device_C" 25 -100 50 H V L CNN | ||||
| F2 "" 38 -150 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  C_* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| P 2 0 1 20 -80 -30 80 -30 N | ||||
| P 2 0 1 20 -80 30 80 30 N | ||||
| X ~ 1 0 150 110 D 50 50 1 1 P | ||||
| X ~ 2 0 -150 110 U 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Device_CP1 | ||||
| # | ||||
| DEF Device_CP1 C 0 10 N N 1 F N | ||||
| F0 "C" 25 100 50 H V L CNN | ||||
| F1 "Device_CP1" 25 -100 50 H V L CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  CP_* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| A 0 -150 128 1287 513 0 1 20 N -80 -50 80 -50 | ||||
| P 2 0 1 20 -80 30 80 30 N | ||||
| P 2 0 1 0 -70 90 -30 90 N | ||||
| P 2 0 1 0 -50 70 -50 110 N | ||||
| X ~ 1 0 150 110 D 50 50 1 1 P | ||||
| X ~ 2 0 -150 130 U 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Device_D_Schottky | ||||
| # | ||||
| DEF Device_D_Schottky D 0 40 N N 1 F N | ||||
| F0 "D" 0 100 50 H V C CNN | ||||
| F1 "Device_D_Schottky" 0 -100 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  TO-???* | ||||
|  *_Diode_* | ||||
|  *SingleDiode* | ||||
|  D_* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| P 2 0 1 0 50 0 -50 0 N | ||||
| P 4 0 1 10 50 50 50 -50 -50 0 50 50 N | ||||
| P 6 0 1 10 -75 25 -75 50 -50 50 -50 -50 -25 -50 -25 -25 N | ||||
| X K 1 -150 0 100 R 50 50 1 1 P | ||||
| X A 2 150 0 100 L 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Device_R_US | ||||
| # | ||||
| DEF Device_R_US R 0 0 N Y 1 F N | ||||
| F0 "R" 100 0 50 V V C CNN | ||||
| F1 "Device_R_US" -100 0 50 V V C CNN | ||||
| F2 "" 40 -10 50 V I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  R_* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| P 2 0 1 0 0 -90 0 -100 N | ||||
| P 2 0 1 0 0 90 0 100 N | ||||
| P 5 0 1 0 0 -30 40 -45 0 -60 -40 -75 0 -90 N | ||||
| P 5 0 1 0 0 30 40 15 0 0 -40 -15 0 -30 N | ||||
| P 5 0 1 0 0 90 40 75 0 60 -40 45 0 30 N | ||||
| X ~ 1 0 150 50 D 50 50 1 1 P | ||||
| X ~ 2 0 -150 50 U 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Graphic_Logo_Open_Hardware_Small | ||||
| # | ||||
| DEF Graphic_Logo_Open_Hardware_Small #LOGO 0 40 Y Y 1 F N | ||||
| F0 "#LOGO" 0 275 50 H I C CNN | ||||
| F1 "Graphic_Logo_Open_Hardware_Small" 0 -225 50 H I C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| DRAW | ||||
| P 277 0 1 0 132 -171 130 -170 125 -167 118 -162 109 -156 100 -150 93 -146 88 -142 86 -141 85 -142 81 -144 75 -147 71 -149 66 -151 63 -151 63 -151 61 -147 58 -139 53 -130 49 -119 44 -107 38 -95 34 -83 29 -72 26 -64 24 -58 23 -55 23 -55 26 -52 31 -49 41 -40 51 -27 57 -13 60 3 58 18 52 32 42 45 30 54 16 60 0 62 -15 61 -29 55 -42 45 -48 39 -55 26 -60 12 -60 9 -59 -7 -55 -21 -47 -34 -36 -45 -34 -46 -29 -50 -25 -53 -23 -55 -42 -102 -45 -110 -51 -123 -55 -134 -59 -143 -62 -149 -63 -151 -63 -151 -65 -151 -68 -150 -75 -147 -79 -145 -84 -142 -87 -141 -89 -142 -93 -145 -100 -150 -109 -156 -117 -161 -124 -166 -130 -170 -132 -171 -133 -171 -135 -170 -139 -166 -146 -160 -155 -151 -156 -150 -164 -142 -170 -136 -174 -131 -175 -129 -175 -129 -174 -127 -170 -121 -166 -114 -160 -105 -144 -82 -153 -61 -155 -54 -159 -46 -161 -41 -162 -38 -165 -37 -170 -36 -179 -34 -189 -32 -199 -31 -207 -29 -214 -28 -217 -27 -217 -27 -218 -25 -218 -22 -218 -17 -219 -9 -219 3 -219 5 -218 16 -218 25 -218 30 -218 33 -218 33 -215 33 -209 35 -200 36 -190 38 -189 39 -179 41 -170 42 -164 44 -161 45 -161 45 -159 49 -156 56 -152 64 -149 72 -146 79 -144 85 -143 87 -143 87 -145 90 -148 95 -153 102 -160 111 -160 112 -166 121 -171 128 -174 133 -175 136 -175 136 -173 138 -169 143 -162 150 -155 158 -152 160 -144 169 -138 174 -134 177 -132 178 -132 178 -130 176 -124 172 -117 167 -108 161 -107 161 -98 155 -91 150 -86 146 -84 145 -83 145 -80 146 -73 148 -66 151 -58 155 -50 158 -45 160 -42 162 -42 162 -41 165 -40 171 -38 180 -36 191 -35 193 -33 203 -32 212 -31 218 -30 220 -28 221 -23 221 -16 221 -6 221 3 221 13 221 21 221 27 220 29 220 29 220 30 217 32 210 33 201 36 190 36 188 38 178 40 169 41 163 42 161 42 161 47 159 54 156 62 152 82 144 107 161 109 163 118 169 125 174 130 177 133 178 133 178 135 176 140 171 147 165 154 157 160 151 167 144 171 140 174 137 174 135 174 134 173 131 169 126 164 118 158 110 153 102 148 94 144 88 143 85 143 84 145 79 148 72 152 63 160 44 173 41 181 40 192 38 202 36 218 33 219 -26 216 -27 214 -27 208 -29 199 -30 189 -32 181 -34 172 -36 166 -37 163 -37 162 -38 160 -42 157 -49 154 -57 150 -65 147 -73 145 -79 144 -82 145 -84 149 -89 153 -97 159 -105 165 -114 170 -121 173 -126 175 -129 174 -131 171 -135 164 -141 155 -151 153 -152 145 -160 139 -166 134 -170 132 -171 F | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Mechanical_MountingHole | ||||
| # | ||||
| DEF Mechanical_MountingHole H 0 40 Y Y 1 F N | ||||
| F0 "H" 0 200 50 H V C CNN | ||||
| F1 "Mechanical_MountingHole" 0 125 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  MountingHole* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| C 0 0 50 0 1 50 N | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Transistor_FET_Si2371EDS | ||||
| # | ||||
| DEF Transistor_FET_Si2371EDS Q 0 20 Y N 1 F N | ||||
| F0 "Q" 200 75 50 H V L CNN | ||||
| F1 "Transistor_FET_Si2371EDS" 200 0 50 H V L CNN | ||||
| F2 "Package_TO_SOT_SMD:SOT-23" 200 -75 50 H I L CIN | ||||
| F3 "" 0 0 50 H I L CNN | ||||
| ALIAS VP0610T BSS84 NTR2101P BSS83P Si2319CDS IRLML6401 IRLML6402 DMG2301L AO3401A IRLML9301 IRLML5203 Si2371EDS TSM2301ACX FDN340P | ||||
| $FPLIST | ||||
|  SOT?23* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| C 65 0 110 0 1 10 N | ||||
| C 100 -70 10 0 1 0 F | ||||
| C 100 70 10 0 1 0 F | ||||
| P 2 0 1 0 10 0 -100 0 N | ||||
| P 2 0 1 10 10 75 10 -75 N | ||||
| P 2 0 1 10 30 -50 30 -90 N | ||||
| P 2 0 1 10 30 20 30 -20 N | ||||
| P 2 0 1 10 30 90 30 50 N | ||||
| P 2 0 1 0 100 100 100 70 N | ||||
| P 3 0 1 0 100 -100 100 0 30 0 N | ||||
| P 4 0 1 0 30 70 130 70 130 -70 30 -70 N | ||||
| P 4 0 1 0 90 0 50 15 50 -15 90 0 F | ||||
| P 4 0 1 0 110 -20 115 -15 145 -15 150 -10 N | ||||
| P 4 0 1 0 130 -15 115 10 145 10 130 -15 N | ||||
| X G 1 -200 0 100 R 50 50 1 1 I | ||||
| X S 2 100 -200 100 U 50 50 1 1 P | ||||
| X D 3 100 200 100 D 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # power_GND | ||||
| # | ||||
| DEF power_GND #PWR 0 0 Y Y 1 F P | ||||
| F0 "#PWR" 0 -250 50 H I C CNN | ||||
| F1 "power_GND" 0 -150 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| DRAW | ||||
| P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N | ||||
| X GND 1 0 0 0 D 50 50 1 1 W N | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # stepper_motor_analyzer_+3V3 | ||||
| # | ||||
| DEF stepper_motor_analyzer_+3V3 #PWR 0 0 Y Y 1 F P | ||||
| F0 "#PWR" 250 0 50 H I C CNN | ||||
| F1 "stepper_motor_analyzer_+3V3" 0 140 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| DRAW | ||||
| P 2 0 1 0 -30 50 0 100 N | ||||
| P 2 0 1 0 -30 50 30 50 N | ||||
| P 2 0 1 0 0 0 0 50 N | ||||
| P 2 0 1 0 0 100 30 50 N | ||||
| X +3V3 1 0 0 0 U 50 50 1 1 W N | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # stepper_motor_analyzer_ACS70331_soic8 | ||||
| # | ||||
| DEF stepper_motor_analyzer_ACS70331_soic8 U 0 20 Y Y 1 F N | ||||
| F0 "U" 400 250 50 H V L CNN | ||||
| F1 "stepper_motor_analyzer_ACS70331_soic8" 150 350 50 H V L CNN | ||||
| F2 "Sensor_Current:Allegro_QFN-12-10-1EP_3x3mm_P0.5mm" 400 -50 50 H I L CIN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  Allegro*QFN*EP*3x3mm*P0.5mm* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| S -500 300 300 -300 0 1 10 f | ||||
| P 2 0 1 0 -300 300 -300 -300 N | ||||
| X + 1 -600 200 100 R 50 50 1 1 P | ||||
| X + 2 -600 100 100 R 50 50 1 1 P | ||||
| X - 3 -600 -100 100 R 50 50 1 1 P | ||||
| X - 4 -600 -200 100 R 50 50 1 1 P | ||||
| X GND 5 -50 -400 100 U 50 50 1 1 W | ||||
| X NC 6 400 -100 100 L 50 50 1 1 N | ||||
| X VIOUT 7 400 100 100 L 50 50 1 1 O | ||||
| X VCC 8 -50 400 100 D 50 50 1 1 W | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # stepper_motor_analyzer_Connector_Conn_01x04_Male | ||||
| # | ||||
| DEF stepper_motor_analyzer_Connector_Conn_01x04_Male J 0 40 Y N 1 F N | ||||
| F0 "J" 0 200 50 H V C CNN | ||||
| F1 "stepper_motor_analyzer_Connector_Conn_01x04_Male" 0 -300 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  Connector*:*_1x??_* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| S 34 -195 0 -205 1 1 6 F | ||||
| S 34 -95 0 -105 1 1 6 F | ||||
| S 34 5 0 -5 1 1 6 F | ||||
| S 34 105 0 95 1 1 6 F | ||||
| P 2 1 1 6 50 -200 34 -200 N | ||||
| P 2 1 1 6 50 -100 34 -100 N | ||||
| P 2 1 1 6 50 0 34 0 N | ||||
| P 2 1 1 6 50 100 34 100 N | ||||
| X Pin_1 1 200 100 150 L 50 50 1 1 P | ||||
| X Pin_2 2 200 0 150 L 50 50 1 1 P | ||||
| X Pin_3 3 200 -100 150 L 50 50 1 1 P | ||||
| X Pin_4 4 200 -200 150 L 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # stepper_motor_analyzer_Connector_Conn_01x40_Female | ||||
| # | ||||
| DEF stepper_motor_analyzer_Connector_Conn_01x40_Female J 0 40 Y N 1 F N | ||||
| F0 "J" 0 2000 50 H V C CNN | ||||
| F1 "stepper_motor_analyzer_Connector_Conn_01x40_Female" 0 -2100 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  Connector*:*_1x??_* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| A 0 -2000 20 901 -901 1 1 6 N 0 -1980 0 -2020 | ||||
| A 0 -1900 20 901 -901 1 1 6 N 0 -1880 0 -1920 | ||||
| A 0 -1800 20 901 -901 1 1 6 N 0 -1780 0 -1820 | ||||
| A 0 -1700 20 901 -901 1 1 6 N 0 -1680 0 -1720 | ||||
| A 0 -1600 20 901 -901 1 1 6 N 0 -1580 0 -1620 | ||||
| A 0 -1500 20 901 -901 1 1 6 N 0 -1480 0 -1520 | ||||
| A 0 -1400 20 901 -901 1 1 6 N 0 -1380 0 -1420 | ||||
| A 0 -1300 20 901 -901 1 1 6 N 0 -1280 0 -1320 | ||||
| A 0 -1200 20 901 -901 1 1 6 N 0 -1180 0 -1220 | ||||
| A 0 -1100 20 901 -901 1 1 6 N 0 -1080 0 -1120 | ||||
| A 0 -1000 20 901 -901 1 1 6 N 0 -980 0 -1020 | ||||
| A 0 -900 20 901 -901 1 1 6 N 0 -880 0 -920 | ||||
| A 0 -800 20 901 -901 1 1 6 N 0 -780 0 -820 | ||||
| A 0 -700 20 901 -901 1 1 6 N 0 -680 0 -720 | ||||
| A 0 -600 20 901 -901 1 1 6 N 0 -580 0 -620 | ||||
| A 0 -500 20 901 -901 1 1 6 N 0 -480 0 -520 | ||||
| A 0 -400 20 901 -901 1 1 6 N 0 -380 0 -420 | ||||
| A 0 -300 20 901 -901 1 1 6 N 0 -280 0 -320 | ||||
| A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220 | ||||
| A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120 | ||||
| A 0 0 20 901 -901 1 1 6 N 0 20 0 -20 | ||||
| A 0 100 20 901 -901 1 1 6 N 0 120 0 80 | ||||
| A 0 200 20 901 -901 1 1 6 N 0 220 0 180 | ||||
| A 0 300 20 901 -901 1 1 6 N 0 320 0 280 | ||||
| A 0 400 20 901 -901 1 1 6 N 0 420 0 380 | ||||
| A 0 500 20 901 -901 1 1 6 N 0 520 0 480 | ||||
| A 0 600 20 901 -901 1 1 6 N 0 620 0 580 | ||||
| A 0 700 20 901 -901 1 1 6 N 0 720 0 680 | ||||
| A 0 800 20 901 -901 1 1 6 N 0 820 0 780 | ||||
| A 0 900 20 901 -901 1 1 6 N 0 920 0 880 | ||||
| A 0 1000 20 901 -901 1 1 6 N 0 1020 0 980 | ||||
| A 0 1100 20 901 -901 1 1 6 N 0 1120 0 1080 | ||||
| A 0 1200 20 901 -901 1 1 6 N 0 1220 0 1180 | ||||
| A 0 1300 20 901 -901 1 1 6 N 0 1320 0 1280 | ||||
| A 0 1400 20 901 -901 1 1 6 N 0 1420 0 1380 | ||||
| A 0 1500 20 901 -901 1 1 6 N 0 1520 0 1480 | ||||
| A 0 1600 20 901 -901 1 1 6 N 0 1620 0 1580 | ||||
| A 0 1700 20 901 -901 1 1 6 N 0 1720 0 1680 | ||||
| A 0 1800 20 901 -901 1 1 6 N 0 1820 0 1780 | ||||
| A 0 1900 20 901 -901 1 1 6 N 0 1920 0 1880 | ||||
| P 2 1 1 6 -50 -2000 -20 -2000 N | ||||
| P 2 1 1 6 -50 -1900 -20 -1900 N | ||||
| P 2 1 1 6 -50 -1800 -20 -1800 N | ||||
| P 2 1 1 6 -50 -1700 -20 -1700 N | ||||
| P 2 1 1 6 -50 -1600 -20 -1600 N | ||||
| P 2 1 1 6 -50 -1500 -20 -1500 N | ||||
| P 2 1 1 6 -50 -1400 -20 -1400 N | ||||
| P 2 1 1 6 -50 -1300 -20 -1300 N | ||||
| P 2 1 1 6 -50 -1200 -20 -1200 N | ||||
| P 2 1 1 6 -50 -1100 -20 -1100 N | ||||
| P 2 1 1 6 -50 -1000 -20 -1000 N | ||||
| P 2 1 1 6 -50 -900 -20 -900 N | ||||
| P 2 1 1 6 -50 -800 -20 -800 N | ||||
| P 2 1 1 6 -50 -700 -20 -700 N | ||||
| P 2 1 1 6 -50 -600 -20 -600 N | ||||
| P 2 1 1 6 -50 -500 -20 -500 N | ||||
| P 2 1 1 6 -50 -400 -20 -400 N | ||||
| P 2 1 1 6 -50 -300 -20 -300 N | ||||
| P 2 1 1 6 -50 -200 -20 -200 N | ||||
| P 2 1 1 6 -50 -100 -20 -100 N | ||||
| P 2 1 1 6 -50 0 -20 0 N | ||||
| P 2 1 1 6 -50 100 -20 100 N | ||||
| P 2 1 1 6 -50 200 -20 200 N | ||||
| P 2 1 1 6 -50 300 -20 300 N | ||||
| P 2 1 1 6 -50 400 -20 400 N | ||||
| P 2 1 1 6 -50 500 -20 500 N | ||||
| P 2 1 1 6 -50 600 -20 600 N | ||||
| P 2 1 1 6 -50 700 -20 700 N | ||||
| P 2 1 1 6 -50 800 -20 800 N | ||||
| P 2 1 1 6 -50 900 -20 900 N | ||||
| P 2 1 1 6 -50 1000 -20 1000 N | ||||
| P 2 1 1 6 -50 1100 -20 1100 N | ||||
| P 2 1 1 6 -50 1200 -20 1200 N | ||||
| P 2 1 1 6 -50 1300 -20 1300 N | ||||
| P 2 1 1 6 -50 1400 -20 1400 N | ||||
| P 2 1 1 6 -50 1500 -20 1500 N | ||||
| P 2 1 1 6 -50 1600 -20 1600 N | ||||
| P 2 1 1 6 -50 1700 -20 1700 N | ||||
| P 2 1 1 6 -50 1800 -20 1800 N | ||||
| P 2 1 1 6 -50 1900 -20 1900 N | ||||
| X Pin_1 1 -200 1900 150 R 50 50 1 1 P | ||||
| X Pin_10 10 -200 1000 150 R 50 50 1 1 P | ||||
| X Pin_11 11 -200 900 150 R 50 50 1 1 P | ||||
| X Pin_12 12 -200 800 150 R 50 50 1 1 P | ||||
| X Pin_13 13 -200 700 150 R 50 50 1 1 P | ||||
| X Pin_14 14 -200 600 150 R 50 50 1 1 P | ||||
| X Pin_15 15 -200 500 150 R 50 50 1 1 P | ||||
| X Pin_16 16 -200 400 150 R 50 50 1 1 P | ||||
| X Pin_17 17 -200 300 150 R 50 50 1 1 P | ||||
| X Pin_18 18 -200 200 150 R 50 50 1 1 P | ||||
| X Pin_19 19 -200 100 150 R 50 50 1 1 P | ||||
| X Pin_2 2 -200 1800 150 R 50 50 1 1 P | ||||
| X Pin_20 20 -200 0 150 R 50 50 1 1 P | ||||
| X Pin_21 21 -200 -100 150 R 50 50 1 1 P | ||||
| X Pin_22 22 -200 -200 150 R 50 50 1 1 P | ||||
| X Pin_23 23 -200 -300 150 R 50 50 1 1 P | ||||
| X Pin_24 24 -200 -400 150 R 50 50 1 1 P | ||||
| X Pin_25 25 -200 -500 150 R 50 50 1 1 P | ||||
| X Pin_26 26 -200 -600 150 R 50 50 1 1 P | ||||
| X Pin_27 27 -200 -700 150 R 50 50 1 1 P | ||||
| X Pin_28 28 -200 -800 150 R 50 50 1 1 P | ||||
| X Pin_29 29 -200 -900 150 R 50 50 1 1 P | ||||
| X Pin_3 3 -200 1700 150 R 50 50 1 1 P | ||||
| X Pin_30 30 -200 -1000 150 R 50 50 1 1 P | ||||
| X Pin_31 31 -200 -1100 150 R 50 50 1 1 P | ||||
| X Pin_32 32 -200 -1200 150 R 50 50 1 1 P | ||||
| X Pin_33 33 -200 -1300 150 R 50 50 1 1 P | ||||
| X Pin_34 34 -200 -1400 150 R 50 50 1 1 P | ||||
| X Pin_35 35 -200 -1500 150 R 50 50 1 1 P | ||||
| X Pin_36 36 -200 -1600 150 R 50 50 1 1 P | ||||
| X Pin_37 37 -200 -1700 150 R 50 50 1 1 P | ||||
| X Pin_38 38 -200 -1800 150 R 50 50 1 1 P | ||||
| X Pin_39 39 -200 -1900 150 R 50 50 1 1 P | ||||
| X Pin_4 4 -200 1600 150 R 50 50 1 1 P | ||||
| X Pin_40 40 -200 -2000 150 R 50 50 1 1 P | ||||
| X Pin_5 5 -200 1500 150 R 50 50 1 1 P | ||||
| X Pin_6 6 -200 1400 150 R 50 50 1 1 P | ||||
| X Pin_7 7 -200 1300 150 R 50 50 1 1 P | ||||
| X Pin_8 8 -200 1200 150 R 50 50 1 1 P | ||||
| X Pin_9 9 -200 1100 150 R 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # stepper_motor_analyzer_LED | ||||
| # | ||||
| DEF stepper_motor_analyzer_LED D 0 40 N N 1 F N | ||||
| F0 "D" 0 100 50 H V C CNN | ||||
| F1 "stepper_motor_analyzer_LED" 0 -100 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  LED* | ||||
|  LED_SMD:* | ||||
|  LED_THT:* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| P 2 0 1 8 -50 -50 -50 50 N | ||||
| P 2 0 1 0 -50 0 50 0 N | ||||
| P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N | ||||
| P 5 0 1 0 -120 -30 -180 -90 -150 -90 -180 -90 -180 -60 N | ||||
| P 5 0 1 0 -70 -30 -130 -90 -100 -90 -130 -90 -130 -60 N | ||||
| X K 1 -150 0 100 R 50 50 1 1 P | ||||
| X A 2 150 0 100 L 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # stepper_motor_analyzer_Motor | ||||
| # | ||||
| DEF stepper_motor_analyzer_Motor M 0 0 Y N 1 F N | ||||
| F0 "M" 50 400 50 H I L CNN | ||||
| F1 "stepper_motor_analyzer_Motor" -100 350 50 H I L TNN | ||||
| F2 "" 10 90 50 H I C CNN | ||||
| F3 "" 10 90 50 H I C CNN | ||||
| $FPLIST | ||||
|  PinHeader*P2.54mm*Vertical* | ||||
|  TerminalBlock* | ||||
|  Motor* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| A -75 -75 25 1 1799 0 1 0 N -50 -75 -100 -75 | ||||
| A -25 -75 25 1 1799 0 1 0 N 0 -75 -50 -75 | ||||
| A 25 -75 25 1 1799 0 1 0 N 50 -75 0 -75 | ||||
| A 75 -75 25 1 1799 0 1 0 N 100 -75 50 -75 | ||||
| A 175 25 25 901 -901 0 1 0 N 175 50 175 0 | ||||
| A 175 75 25 901 -901 0 1 0 N 175 100 175 50 | ||||
| A 175 125 25 901 -901 0 1 0 N 175 150 175 100 | ||||
| A 175 175 25 901 -901 0 1 0 N 175 200 175 150 | ||||
| C 0 100 128 0 1 10 N | ||||
| P 2 0 0 0 200 0 200 -100 N | ||||
| P 5 0 0 0 -50 30 -50 180 0 80 50 180 50 30 N | ||||
| P 2 0 1 0 -100 -100 -100 -75 N | ||||
| P 2 0 1 0 100 -100 100 -250 N | ||||
| P 2 0 1 0 100 -100 100 -75 N | ||||
| P 2 0 1 0 200 -100 200 -250 N | ||||
| P 2 0 1 0 200 0 175 0 N | ||||
| P 2 0 1 0 200 200 175 200 N | ||||
| P 3 0 1 0 300 -250 300 200 200 200 N | ||||
| P 4 0 1 0 0 -250 0 -150 -100 -150 -100 -100 N | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # stepper_motor_analyzer_Pico | ||||
| # | ||||
| DEF stepper_motor_analyzer_Pico U 0 40 Y Y 1 F N | ||||
| F0 "U" -550 1100 50 H V C CNN | ||||
| F1 "stepper_motor_analyzer_Pico" 0 750 50 H V C CNN | ||||
| F2 "RPi_Pico:RPi_Pico_SMD_TH" 0 0 50 V I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| DRAW | ||||
| T 0 0 850 50 0 0 0 "Raspberry Pi" Normal 0 C C | ||||
| S -600 1050 600 -1050 0 1 0 f | ||||
| X GP0 1 -700 950 100 R 50 50 1 1 O | ||||
| X GP7 10 -700 50 100 R 50 50 1 1 O | ||||
| X GP8 11 -700 -50 100 R 50 50 1 1 O | ||||
| X GP9 12 -700 -150 100 R 50 50 1 1 O | ||||
| X GND 13 -700 -250 100 R 50 50 1 1 W | ||||
| X GP10 14 -700 -350 100 R 50 50 1 1 O | ||||
| X GP11 15 -700 -450 100 R 50 50 1 1 O | ||||
| X GP12 16 -700 -550 100 R 50 50 1 1 O | ||||
| X GP13 17 -700 -650 100 R 50 50 1 1 O | ||||
| X GND 18 -700 -750 100 R 50 50 1 1 W | ||||
| X GP14 19 -700 -850 100 R 50 50 1 1 O | ||||
| X GP1 2 -700 850 100 R 50 50 1 1 O | ||||
| X GP15 20 -700 -950 100 R 50 50 1 1 O | ||||
| X GP16 21 700 -950 100 L 50 50 1 1 O | ||||
| X GP17 22 700 -850 100 L 50 50 1 1 O | ||||
| X GND 23 700 -750 100 L 50 50 1 1 W | ||||
| X GP18 24 700 -650 100 L 50 50 1 1 O | ||||
| X GP19 25 700 -550 100 L 50 50 1 1 O | ||||
| X GP20 26 700 -450 100 L 50 50 1 1 O | ||||
| X GP21 27 700 -350 100 L 50 50 1 1 O | ||||
| X GND 28 700 -250 100 L 50 50 1 1 W | ||||
| X GP22 29 700 -150 100 L 50 50 1 1 O | ||||
| X GND 3 -700 750 100 R 50 50 1 1 W | ||||
| X RUN 30 700 -50 100 L 50 50 1 1 I | ||||
| X ADC0 31 700 50 100 L 50 50 1 1 I | ||||
| X ADC1 32 700 150 100 L 50 50 1 1 I | ||||
| X AGND 33 700 250 100 L 50 50 1 1 W | ||||
| X GP28 34 700 350 100 L 50 50 1 1 O | ||||
| X ADC_VREF 35 700 450 100 L 50 50 1 1 U | ||||
| X 3V3 36 700 550 100 L 50 50 1 1 w | ||||
| X 3V3_EN 37 700 650 100 L 50 50 1 1 I | ||||
| X GND 38 700 750 100 L 50 50 1 1 w | ||||
| X VSYS 39 700 850 100 L 50 50 1 1 U | ||||
| X GP2 4 -700 650 100 R 50 50 1 1 O | ||||
| X VBUS 40 700 950 100 L 50 50 1 1 U | ||||
| X GP3 5 -700 550 100 R 50 50 1 1 O | ||||
| X SDA 6 -700 450 100 R 50 50 1 1 B | ||||
| X SCL 7 -700 350 100 R 50 50 1 1 O | ||||
| X GND 8 -700 250 100 R 50 50 1 1 W | ||||
| X GP6 9 -700 150 100 R 50 50 1 1 O | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # stepper_motor_analyzer_TestPoint | ||||
| # | ||||
| DEF stepper_motor_analyzer_TestPoint TP 0 30 N N 1 F N | ||||
| F0 "TP" 0 270 50 H V C CNN | ||||
| F1 "stepper_motor_analyzer_TestPoint" 0 200 50 H V C CNN | ||||
| F2 "" 200 0 50 H I C CNN | ||||
| F3 "" 200 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  Pin* | ||||
|  Test* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| C 0 130 30 0 1 0 N | ||||
| X 1 1 0 0 100 U 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # stepper_motor_analyzer_switch | ||||
| # | ||||
| DEF stepper_motor_analyzer_switch SW 0 40 N N 1 F N | ||||
| F0 "SW" 50 100 50 H V L CNN | ||||
| F1 "stepper_motor_analyzer_switch" 0 -60 50 H V C CNN | ||||
| F2 "" 0 200 50 H I C CNN | ||||
| F3 "" 0 200 50 H I C CNN | ||||
| DRAW | ||||
| C -80 0 20 0 1 0 N | ||||
| C 80 0 20 0 1 0 N | ||||
| P 2 0 1 0 0 50 0 120 N | ||||
| P 2 0 1 0 100 50 -100 50 N | ||||
| X 1 1 -200 0 100 R 50 50 0 1 P | ||||
| X 2 2 200 0 100 L 50 50 0 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| #End Library | ||||
							
								
								
									
										3
									
								
								kicad/stepper_analyzer-rescue.dcm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								kicad/stepper_analyzer-rescue.dcm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| EESchema-DOCLIB  Version 2.0 | ||||
| # | ||||
| #End Doc Library | ||||
							
								
								
									
										57
									
								
								kicad/stepper_analyzer-rescue.lib
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								kicad/stepper_analyzer-rescue.lib
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| EESchema-LIBRARY Version 2.4 | ||||
| #encoding utf-8 | ||||
| # | ||||
| # Pico-stepper_motor_analyzer | ||||
| # | ||||
| DEF Pico-stepper_motor_analyzer U 0 40 Y Y 1 F N | ||||
| F0 "U" -550 1100 50 H V C CNN | ||||
| F1 "Pico-stepper_motor_analyzer" 0 750 50 H V C CNN | ||||
| F2 "RPi_Pico:RPi_Pico_SMD_TH" 0 0 50 V I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| DRAW | ||||
| T 0 0 850 50 0 0 0 "Raspberry Pi" Normal 0 C C | ||||
| S -600 1050 600 -1050 0 1 0 f | ||||
| X GPIO0 1 -700 950 100 R 50 50 1 1 O | ||||
| X GPIO7 10 -700 50 100 R 50 50 1 1 O | ||||
| X GPIO8 11 -700 -50 100 R 50 50 1 1 O | ||||
| X GPIO9 12 -700 -150 100 R 50 50 1 1 O | ||||
| X GND 13 -700 -250 100 R 50 50 1 1 W | ||||
| X GPIO10 14 -700 -350 100 R 50 50 1 1 O | ||||
| X GPIO11 15 -700 -450 100 R 50 50 1 1 O | ||||
| X GPIO12 16 -700 -550 100 R 50 50 1 1 O | ||||
| X GPIO13 17 -700 -650 100 R 50 50 1 1 O | ||||
| X GND 18 -700 -750 100 R 50 50 1 1 W | ||||
| X GPIO14 19 -700 -850 100 R 50 50 1 1 O | ||||
| X GPIO1 2 -700 850 100 R 50 50 1 1 O | ||||
| X GPIO15 20 -700 -950 100 R 50 50 1 1 O | ||||
| X GPIO16 21 700 -950 100 L 50 50 1 1 O | ||||
| X GPIO17 22 700 -850 100 L 50 50 1 1 O | ||||
| X GND 23 700 -750 100 L 50 50 1 1 W | ||||
| X GPIO18 24 700 -650 100 L 50 50 1 1 O | ||||
| X GPIO19 25 700 -550 100 L 50 50 1 1 O | ||||
| X GPIO20 26 700 -450 100 L 50 50 1 1 O | ||||
| X GPIO21 27 700 -350 100 L 50 50 1 1 O | ||||
| X GND 28 700 -250 100 L 50 50 1 1 W | ||||
| X GPIO22 29 700 -150 100 L 50 50 1 1 O | ||||
| X GND 3 -700 750 100 R 50 50 1 1 W | ||||
| X RUN 30 700 -50 100 L 50 50 1 1 I | ||||
| X ADC0 31 700 50 100 L 50 50 1 1 I | ||||
| X ADC1 32 700 150 100 L 50 50 1 1 I | ||||
| X AGND 33 700 250 100 L 50 50 1 1 W | ||||
| X GPIO28 34 700 350 100 L 50 50 1 1 O | ||||
| X ADC_VREF 35 700 450 100 L 50 50 1 1 U | ||||
| X 3V3 36 700 550 100 L 50 50 1 1 w | ||||
| X 3V3_EN 37 700 650 100 L 50 50 1 1 I | ||||
| X GND 38 700 750 100 L 50 50 1 1 w | ||||
| X VSYS 39 700 850 100 L 50 50 1 1 U | ||||
| X GPIO2 4 -700 650 100 R 50 50 1 1 O | ||||
| X VBUS 40 700 950 100 L 50 50 1 1 U | ||||
| X GPIO3 5 -700 550 100 R 50 50 1 1 O | ||||
| X SDA 6 -700 450 100 R 50 50 1 1 B | ||||
| X SCL 7 -700 350 100 R 50 50 1 1 O | ||||
| X GND 8 -700 250 100 R 50 50 1 1 W | ||||
| X GPIO6 9 -700 150 100 R 50 50 1 1 O | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| #End Library | ||||
							
								
								
									
										2939
									
								
								kicad/stepper_analyzer.kicad_pcb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2939
									
								
								kicad/stepper_analyzer.kicad_pcb
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2939
									
								
								kicad/stepper_analyzer.kicad_pcb-bak
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2939
									
								
								kicad/stepper_analyzer.kicad_pcb-bak
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								kicad/stepper_analyzer.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								kicad/stepper_analyzer.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								kicad/stepper_analyzer.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								kicad/stepper_analyzer.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 733 KiB | 
							
								
								
									
										260
									
								
								kicad/stepper_analyzer.pro
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										260
									
								
								kicad/stepper_analyzer.pro
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,260 @@ | ||||
| update=5/21/2021 9:59:05 PM | ||||
| version=1 | ||||
| last_client=kicad | ||||
| [general] | ||||
| version=1 | ||||
| RootSch= | ||||
| BoardNm= | ||||
| [cvpcb] | ||||
| version=1 | ||||
| NetIExt=net | ||||
| [eeschema] | ||||
| version=1 | ||||
| LibDir= | ||||
| [eeschema/libraries] | ||||
| [schematic_editor] | ||||
| version=1 | ||||
| PageLayoutDescrFile= | ||||
| PlotDirectoryName= | ||||
| SubpartIdSeparator=0 | ||||
| SubpartFirstId=65 | ||||
| NetFmtName=Pcbnew | ||||
| SpiceAjustPassiveValues=0 | ||||
| LabSize=50 | ||||
| ERC_TestSimilarLabels=1 | ||||
| [pcbnew] | ||||
| version=1 | ||||
| PageLayoutDescrFile= | ||||
| LastNetListRead= | ||||
| CopperLayerCount=2 | ||||
| BoardThickness=1.6 | ||||
| AllowMicroVias=0 | ||||
| AllowBlindVias=0 | ||||
| RequireCourtyardDefinitions=0 | ||||
| ProhibitOverlappingCourtyards=1 | ||||
| MinTrackWidth=0.2032 | ||||
| MinViaDiameter=0.4064 | ||||
| MinViaDrill=0.3048 | ||||
| MinMicroViaDiameter=0.2032 | ||||
| MinMicroViaDrill=0.1016 | ||||
| MinHoleToHole=0.254 | ||||
| TrackWidth1=0.2032 | ||||
| TrackWidth2=0.2032 | ||||
| TrackWidth3=0.2286 | ||||
| TrackWidth4=0.3048 | ||||
| TrackWidth5=0.4064 | ||||
| TrackWidth6=0.508 | ||||
| TrackWidth7=0.6096 | ||||
| TrackWidth8=0.762 | ||||
| TrackWidth9=1.016 | ||||
| TrackWidth10=1.27 | ||||
| TrackWidth11=1.524 | ||||
| ViaDiameter1=0.7874 | ||||
| ViaDrill1=0.4064 | ||||
| ViaDiameter2=1.27 | ||||
| ViaDrill2=0.762 | ||||
| dPairWidth1=0.2032 | ||||
| dPairGap1=0.254 | ||||
| dPairViaGap1=0.25 | ||||
| SilkLineWidth=0.12 | ||||
| SilkTextSizeV=1 | ||||
| SilkTextSizeH=1 | ||||
| SilkTextSizeThickness=0.15 | ||||
| SilkTextItalic=0 | ||||
| SilkTextUpright=1 | ||||
| CopperLineWidth=0.2 | ||||
| CopperTextSizeV=1.5 | ||||
| CopperTextSizeH=1.5 | ||||
| CopperTextThickness=0.3 | ||||
| CopperTextItalic=0 | ||||
| CopperTextUpright=1 | ||||
| EdgeCutLineWidth=0.05 | ||||
| CourtyardLineWidth=0.05 | ||||
| OthersLineWidth=0.15 | ||||
| OthersTextSizeV=1 | ||||
| OthersTextSizeH=1 | ||||
| OthersTextSizeThickness=0.15 | ||||
| OthersTextItalic=0 | ||||
| OthersTextUpright=1 | ||||
| SolderMaskClearance=0 | ||||
| SolderMaskMinWidth=0 | ||||
| SolderPasteClearance=0 | ||||
| SolderPasteRatio=-0 | ||||
| [pcbnew/Layer.F.Cu] | ||||
| Name=F.Cu | ||||
| Type=0 | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.In1.Cu] | ||||
| Name=In1.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In2.Cu] | ||||
| Name=In2.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In3.Cu] | ||||
| Name=In3.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In4.Cu] | ||||
| Name=In4.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In5.Cu] | ||||
| Name=In5.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In6.Cu] | ||||
| Name=In6.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In7.Cu] | ||||
| Name=In7.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In8.Cu] | ||||
| Name=In8.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In9.Cu] | ||||
| Name=In9.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In10.Cu] | ||||
| Name=In10.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In11.Cu] | ||||
| Name=In11.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In12.Cu] | ||||
| Name=In12.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In13.Cu] | ||||
| Name=In13.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In14.Cu] | ||||
| Name=In14.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In15.Cu] | ||||
| Name=In15.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In16.Cu] | ||||
| Name=In16.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In17.Cu] | ||||
| Name=In17.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In18.Cu] | ||||
| Name=In18.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In19.Cu] | ||||
| Name=In19.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In20.Cu] | ||||
| Name=In20.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In21.Cu] | ||||
| Name=In21.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In22.Cu] | ||||
| Name=In22.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In23.Cu] | ||||
| Name=In23.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In24.Cu] | ||||
| Name=In24.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In25.Cu] | ||||
| Name=In25.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In26.Cu] | ||||
| Name=In26.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In27.Cu] | ||||
| Name=In27.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In28.Cu] | ||||
| Name=In28.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In29.Cu] | ||||
| Name=In29.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.In30.Cu] | ||||
| Name=In30.Cu | ||||
| Type=0 | ||||
| Enabled=0 | ||||
| [pcbnew/Layer.B.Cu] | ||||
| Name=B.Cu | ||||
| Type=0 | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.B.Adhes] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.F.Adhes] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.B.Paste] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.F.Paste] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.B.SilkS] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.F.SilkS] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.B.Mask] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.F.Mask] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.Dwgs.User] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.Cmts.User] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.Eco1.User] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.Eco2.User] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.Edge.Cuts] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.Margin] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.B.CrtYd] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.F.CrtYd] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.B.Fab] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.F.Fab] | ||||
| Enabled=1 | ||||
| [pcbnew/Layer.Rescue] | ||||
| Enabled=0 | ||||
| [pcbnew/Netclasses] | ||||
| [pcbnew/Netclasses/Default] | ||||
| Name=Default | ||||
| Clearance=0.127 | ||||
| TrackWidth=0.2032 | ||||
| ViaDiameter=0.7874 | ||||
| ViaDrill=0.4064 | ||||
| uViaDiameter=0.3048 | ||||
| uViaDrill=0.1016 | ||||
| dPairWidth=0.2032 | ||||
| dPairGap=0.254 | ||||
| dPairViaGap=0.25 | ||||
							
								
								
									
										1311
									
								
								kicad/stepper_analyzer.sch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1311
									
								
								kicad/stepper_analyzer.sch
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1311
									
								
								kicad/stepper_analyzer.sch-bak
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1311
									
								
								kicad/stepper_analyzer.sch-bak
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										535484
									
								
								kicad/stepper_analyzer.step
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										535484
									
								
								kicad/stepper_analyzer.step
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								kicad/stepper_analyzer_pcb.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								kicad/stepper_analyzer_pcb.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3
									
								
								kicad/stepper_motor_analyzer.bck
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								kicad/stepper_motor_analyzer.bck
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| EESchema-DOCLIB  Version 2.0 | ||||
| # | ||||
| #End Doc Library | ||||
							
								
								
									
										3
									
								
								kicad/stepper_motor_analyzer.dcm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								kicad/stepper_motor_analyzer.dcm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| EESchema-DOCLIB  Version 2.0 | ||||
| # | ||||
| #End Doc Library | ||||
							
								
								
									
										467
									
								
								kicad/stepper_motor_analyzer.lib
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										467
									
								
								kicad/stepper_motor_analyzer.lib
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,467 @@ | ||||
| EESchema-LIBRARY Version 2.4 | ||||
| #encoding utf-8 | ||||
| # | ||||
| # +3V3 | ||||
| # | ||||
| DEF +3V3 #PWR 0 0 Y Y 1 F P | ||||
| F0 "#PWR" 250 0 50 H I C CNN | ||||
| F1 "+3V3" 0 140 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| DRAW | ||||
| P 2 0 1 0 -30 50 0 100 N | ||||
| P 2 0 1 0 -30 50 30 50 N | ||||
| P 2 0 1 0 0 0 0 50 N | ||||
| P 2 0 1 0 0 100 30 50 N | ||||
| X +3V3 1 0 0 0 U 50 50 1 1 W N | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # ACS70331 | ||||
| # | ||||
| DEF ACS70331 U 0 20 Y Y 1 F N | ||||
| F0 "U" 400 250 50 H V L CNN | ||||
| F1 "ACS70331" 150 350 50 H V L CNN | ||||
| F2 "Sensor_Current:Allegro_QFN-12-10-1EP_3x3mm_P0.5mm" 400 -50 50 H I L CIN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  Allegro*QFN*EP*3x3mm*P0.5mm* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| S -500 300 300 -300 0 1 10 f | ||||
| P 2 0 1 0 -300 300 -300 -300 N | ||||
| X + 1 -600 150 100 R 50 50 1 1 P | ||||
| X VCC 10 -50 400 100 D 50 50 1 1 W | ||||
| X - 2 -600 -150 100 R 50 50 1 1 P | ||||
| X GND 3 -200 -400 100 U 50 50 1 1 W | ||||
| X NC 4 -100 -400 100 U 50 50 1 1 P | ||||
| X NC 5 400 -100 100 L 50 50 1 1 N | ||||
| X NC 6 0 -400 100 U 50 50 1 1 P | ||||
| X NC 7 100 -400 100 U 50 50 1 1 P | ||||
| X VIOUT 8 400 100 100 L 50 50 1 1 O | ||||
| X NC 9 200 -400 100 U 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # ACS70331_soic8 | ||||
| # | ||||
| DEF ACS70331_soic8 U 0 20 Y Y 1 F N | ||||
| F0 "U" 400 250 50 H V L CNN | ||||
| F1 "ACS70331_soic8" 150 350 50 H V L CNN | ||||
| F2 "Sensor_Current:Allegro_QFN-12-10-1EP_3x3mm_P0.5mm" 400 -50 50 H I L CIN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  Allegro*QFN*EP*3x3mm*P0.5mm* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| S -500 300 300 -300 0 1 10 f | ||||
| P 2 0 1 0 -300 300 -300 -300 N | ||||
| X + 1 -600 200 100 R 50 50 1 1 P | ||||
| X + 2 -600 100 100 R 50 50 1 1 P | ||||
| X - 3 -600 -100 100 R 50 50 1 1 P | ||||
| X - 4 -600 -200 100 R 50 50 1 1 P | ||||
| X GND 5 -50 -400 100 U 50 50 1 1 W | ||||
| X NC 6 400 -100 100 L 50 50 1 1 N | ||||
| X VIOUT 7 400 100 100 L 50 50 1 1 O | ||||
| X VCC 8 -50 400 100 D 50 50 1 1 W | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Connector_Conn_01x04_Male | ||||
| # | ||||
| DEF Connector_Conn_01x04_Male J 0 40 Y N 1 F N | ||||
| F0 "J" 0 200 50 H V C CNN | ||||
| F1 "Connector_Conn_01x04_Male" 0 -300 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  Connector*:*_1x??_* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| S 34 -195 0 -205 1 1 6 F | ||||
| S 34 -95 0 -105 1 1 6 F | ||||
| S 34 5 0 -5 1 1 6 F | ||||
| S 34 105 0 95 1 1 6 F | ||||
| P 2 1 1 6 50 -200 34 -200 N | ||||
| P 2 1 1 6 50 -100 34 -100 N | ||||
| P 2 1 1 6 50 0 34 0 N | ||||
| P 2 1 1 6 50 100 34 100 N | ||||
| X Pin_1 1 200 100 150 L 50 50 1 1 P | ||||
| X Pin_2 2 200 0 150 L 50 50 1 1 P | ||||
| X Pin_3 3 200 -100 150 L 50 50 1 1 P | ||||
| X Pin_4 4 200 -200 150 L 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Connector_Conn_01x40_Female | ||||
| # | ||||
| DEF Connector_Conn_01x40_Female J 0 40 Y N 1 F N | ||||
| F0 "J" 0 2000 50 H V C CNN | ||||
| F1 "Connector_Conn_01x40_Female" 0 -2100 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  Connector*:*_1x??_* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| A 0 -2000 20 901 -901 1 1 6 N 0 -1980 0 -2020 | ||||
| A 0 -1900 20 901 -901 1 1 6 N 0 -1880 0 -1920 | ||||
| A 0 -1800 20 901 -901 1 1 6 N 0 -1780 0 -1820 | ||||
| A 0 -1700 20 901 -901 1 1 6 N 0 -1680 0 -1720 | ||||
| A 0 -1600 20 901 -901 1 1 6 N 0 -1580 0 -1620 | ||||
| A 0 -1500 20 901 -901 1 1 6 N 0 -1480 0 -1520 | ||||
| A 0 -1400 20 901 -901 1 1 6 N 0 -1380 0 -1420 | ||||
| A 0 -1300 20 901 -901 1 1 6 N 0 -1280 0 -1320 | ||||
| A 0 -1200 20 901 -901 1 1 6 N 0 -1180 0 -1220 | ||||
| A 0 -1100 20 901 -901 1 1 6 N 0 -1080 0 -1120 | ||||
| A 0 -1000 20 901 -901 1 1 6 N 0 -980 0 -1020 | ||||
| A 0 -900 20 901 -901 1 1 6 N 0 -880 0 -920 | ||||
| A 0 -800 20 901 -901 1 1 6 N 0 -780 0 -820 | ||||
| A 0 -700 20 901 -901 1 1 6 N 0 -680 0 -720 | ||||
| A 0 -600 20 901 -901 1 1 6 N 0 -580 0 -620 | ||||
| A 0 -500 20 901 -901 1 1 6 N 0 -480 0 -520 | ||||
| A 0 -400 20 901 -901 1 1 6 N 0 -380 0 -420 | ||||
| A 0 -300 20 901 -901 1 1 6 N 0 -280 0 -320 | ||||
| A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220 | ||||
| A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120 | ||||
| A 0 0 20 901 -901 1 1 6 N 0 20 0 -20 | ||||
| A 0 100 20 901 -901 1 1 6 N 0 120 0 80 | ||||
| A 0 200 20 901 -901 1 1 6 N 0 220 0 180 | ||||
| A 0 300 20 901 -901 1 1 6 N 0 320 0 280 | ||||
| A 0 400 20 901 -901 1 1 6 N 0 420 0 380 | ||||
| A 0 500 20 901 -901 1 1 6 N 0 520 0 480 | ||||
| A 0 600 20 901 -901 1 1 6 N 0 620 0 580 | ||||
| A 0 700 20 901 -901 1 1 6 N 0 720 0 680 | ||||
| A 0 800 20 901 -901 1 1 6 N 0 820 0 780 | ||||
| A 0 900 20 901 -901 1 1 6 N 0 920 0 880 | ||||
| A 0 1000 20 901 -901 1 1 6 N 0 1020 0 980 | ||||
| A 0 1100 20 901 -901 1 1 6 N 0 1120 0 1080 | ||||
| A 0 1200 20 901 -901 1 1 6 N 0 1220 0 1180 | ||||
| A 0 1300 20 901 -901 1 1 6 N 0 1320 0 1280 | ||||
| A 0 1400 20 901 -901 1 1 6 N 0 1420 0 1380 | ||||
| A 0 1500 20 901 -901 1 1 6 N 0 1520 0 1480 | ||||
| A 0 1600 20 901 -901 1 1 6 N 0 1620 0 1580 | ||||
| A 0 1700 20 901 -901 1 1 6 N 0 1720 0 1680 | ||||
| A 0 1800 20 901 -901 1 1 6 N 0 1820 0 1780 | ||||
| A 0 1900 20 901 -901 1 1 6 N 0 1920 0 1880 | ||||
| P 2 1 1 6 -50 -2000 -20 -2000 N | ||||
| P 2 1 1 6 -50 -1900 -20 -1900 N | ||||
| P 2 1 1 6 -50 -1800 -20 -1800 N | ||||
| P 2 1 1 6 -50 -1700 -20 -1700 N | ||||
| P 2 1 1 6 -50 -1600 -20 -1600 N | ||||
| P 2 1 1 6 -50 -1500 -20 -1500 N | ||||
| P 2 1 1 6 -50 -1400 -20 -1400 N | ||||
| P 2 1 1 6 -50 -1300 -20 -1300 N | ||||
| P 2 1 1 6 -50 -1200 -20 -1200 N | ||||
| P 2 1 1 6 -50 -1100 -20 -1100 N | ||||
| P 2 1 1 6 -50 -1000 -20 -1000 N | ||||
| P 2 1 1 6 -50 -900 -20 -900 N | ||||
| P 2 1 1 6 -50 -800 -20 -800 N | ||||
| P 2 1 1 6 -50 -700 -20 -700 N | ||||
| P 2 1 1 6 -50 -600 -20 -600 N | ||||
| P 2 1 1 6 -50 -500 -20 -500 N | ||||
| P 2 1 1 6 -50 -400 -20 -400 N | ||||
| P 2 1 1 6 -50 -300 -20 -300 N | ||||
| P 2 1 1 6 -50 -200 -20 -200 N | ||||
| P 2 1 1 6 -50 -100 -20 -100 N | ||||
| P 2 1 1 6 -50 0 -20 0 N | ||||
| P 2 1 1 6 -50 100 -20 100 N | ||||
| P 2 1 1 6 -50 200 -20 200 N | ||||
| P 2 1 1 6 -50 300 -20 300 N | ||||
| P 2 1 1 6 -50 400 -20 400 N | ||||
| P 2 1 1 6 -50 500 -20 500 N | ||||
| P 2 1 1 6 -50 600 -20 600 N | ||||
| P 2 1 1 6 -50 700 -20 700 N | ||||
| P 2 1 1 6 -50 800 -20 800 N | ||||
| P 2 1 1 6 -50 900 -20 900 N | ||||
| P 2 1 1 6 -50 1000 -20 1000 N | ||||
| P 2 1 1 6 -50 1100 -20 1100 N | ||||
| P 2 1 1 6 -50 1200 -20 1200 N | ||||
| P 2 1 1 6 -50 1300 -20 1300 N | ||||
| P 2 1 1 6 -50 1400 -20 1400 N | ||||
| P 2 1 1 6 -50 1500 -20 1500 N | ||||
| P 2 1 1 6 -50 1600 -20 1600 N | ||||
| P 2 1 1 6 -50 1700 -20 1700 N | ||||
| P 2 1 1 6 -50 1800 -20 1800 N | ||||
| P 2 1 1 6 -50 1900 -20 1900 N | ||||
| X Pin_1 1 -200 1900 150 R 50 50 1 1 P | ||||
| X Pin_10 10 -200 1000 150 R 50 50 1 1 P | ||||
| X Pin_11 11 -200 900 150 R 50 50 1 1 P | ||||
| X Pin_12 12 -200 800 150 R 50 50 1 1 P | ||||
| X Pin_13 13 -200 700 150 R 50 50 1 1 P | ||||
| X Pin_14 14 -200 600 150 R 50 50 1 1 P | ||||
| X Pin_15 15 -200 500 150 R 50 50 1 1 P | ||||
| X Pin_16 16 -200 400 150 R 50 50 1 1 P | ||||
| X Pin_17 17 -200 300 150 R 50 50 1 1 P | ||||
| X Pin_18 18 -200 200 150 R 50 50 1 1 P | ||||
| X Pin_19 19 -200 100 150 R 50 50 1 1 P | ||||
| X Pin_2 2 -200 1800 150 R 50 50 1 1 P | ||||
| X Pin_20 20 -200 0 150 R 50 50 1 1 P | ||||
| X Pin_21 21 -200 -100 150 R 50 50 1 1 P | ||||
| X Pin_22 22 -200 -200 150 R 50 50 1 1 P | ||||
| X Pin_23 23 -200 -300 150 R 50 50 1 1 P | ||||
| X Pin_24 24 -200 -400 150 R 50 50 1 1 P | ||||
| X Pin_25 25 -200 -500 150 R 50 50 1 1 P | ||||
| X Pin_26 26 -200 -600 150 R 50 50 1 1 P | ||||
| X Pin_27 27 -200 -700 150 R 50 50 1 1 P | ||||
| X Pin_28 28 -200 -800 150 R 50 50 1 1 P | ||||
| X Pin_29 29 -200 -900 150 R 50 50 1 1 P | ||||
| X Pin_3 3 -200 1700 150 R 50 50 1 1 P | ||||
| X Pin_30 30 -200 -1000 150 R 50 50 1 1 P | ||||
| X Pin_31 31 -200 -1100 150 R 50 50 1 1 P | ||||
| X Pin_32 32 -200 -1200 150 R 50 50 1 1 P | ||||
| X Pin_33 33 -200 -1300 150 R 50 50 1 1 P | ||||
| X Pin_34 34 -200 -1400 150 R 50 50 1 1 P | ||||
| X Pin_35 35 -200 -1500 150 R 50 50 1 1 P | ||||
| X Pin_36 36 -200 -1600 150 R 50 50 1 1 P | ||||
| X Pin_37 37 -200 -1700 150 R 50 50 1 1 P | ||||
| X Pin_38 38 -200 -1800 150 R 50 50 1 1 P | ||||
| X Pin_39 39 -200 -1900 150 R 50 50 1 1 P | ||||
| X Pin_4 4 -200 1600 150 R 50 50 1 1 P | ||||
| X Pin_40 40 -200 -2000 150 R 50 50 1 1 P | ||||
| X Pin_5 5 -200 1500 150 R 50 50 1 1 P | ||||
| X Pin_6 6 -200 1400 150 R 50 50 1 1 P | ||||
| X Pin_7 7 -200 1300 150 R 50 50 1 1 P | ||||
| X Pin_8 8 -200 1200 150 R 50 50 1 1 P | ||||
| X Pin_9 9 -200 1100 150 R 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Device_C_Small | ||||
| # | ||||
| DEF Device_C_Small C 0 10 N N 1 F N | ||||
| F0 "C" 10 70 50 H V L CNN | ||||
| F1 "Device_C_Small" 10 -80 50 H V L CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  C_* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| P 2 0 1 13 -60 -20 60 -20 N | ||||
| P 2 0 1 12 -60 20 60 20 N | ||||
| X ~ 1 0 100 80 D 50 50 1 1 P | ||||
| X ~ 2 0 -100 80 U 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Device_R_Small_US | ||||
| # | ||||
| DEF Device_R_Small_US R 0 10 N N 1 F N | ||||
| F0 "R" 30 20 50 H V L CNN | ||||
| F1 "Device_R_Small_US" 30 -40 50 H V L CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  R_* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| P 5 1 1 0 0 0 40 -15 0 -30 -40 -45 0 -60 N | ||||
| P 5 1 1 0 0 60 40 45 0 30 -40 15 0 0 N | ||||
| X ~ 1 0 100 40 D 50 50 1 1 P | ||||
| X ~ 2 0 -100 40 U 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # LED | ||||
| # | ||||
| DEF LED D 0 40 N N 1 F N | ||||
| F0 "D" 0 100 50 H V C CNN | ||||
| F1 "LED" 0 -100 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  LED* | ||||
|  LED_SMD:* | ||||
|  LED_THT:* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| P 2 0 1 8 -50 -50 -50 50 N | ||||
| P 2 0 1 0 -50 0 50 0 N | ||||
| P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N | ||||
| P 5 0 1 0 -120 -30 -180 -90 -150 -90 -180 -90 -180 -60 N | ||||
| P 5 0 1 0 -70 -30 -130 -90 -100 -90 -130 -90 -130 -60 N | ||||
| X K 1 -150 0 100 R 50 50 1 1 P | ||||
| X A 2 150 0 100 L 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Motor | ||||
| # | ||||
| DEF Motor M 0 0 Y N 1 F N | ||||
| F0 "M" 50 400 50 H I L CNN | ||||
| F1 "Motor" -100 350 50 H I L TNN | ||||
| F2 "" 10 90 50 H I C CNN | ||||
| F3 "" 10 90 50 H I C CNN | ||||
| $FPLIST | ||||
|  PinHeader*P2.54mm*Vertical* | ||||
|  TerminalBlock* | ||||
|  Motor* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| A -75 -75 25 1 1799 0 1 0 N -50 -75 -100 -75 | ||||
| A -25 -75 25 1 1799 0 1 0 N 0 -75 -50 -75 | ||||
| A 25 -75 25 1 1799 0 1 0 N 50 -75 0 -75 | ||||
| A 75 -75 25 1 1799 0 1 0 N 100 -75 50 -75 | ||||
| A 175 25 25 901 -901 0 1 0 N 175 50 175 0 | ||||
| A 175 75 25 901 -901 0 1 0 N 175 100 175 50 | ||||
| A 175 125 25 901 -901 0 1 0 N 175 150 175 100 | ||||
| A 175 175 25 901 -901 0 1 0 N 175 200 175 150 | ||||
| C 0 100 128 0 1 10 N | ||||
| P 2 0 0 0 200 0 200 -100 N | ||||
| P 5 0 0 0 -50 30 -50 180 0 80 50 180 50 30 N | ||||
| P 2 0 1 0 -100 -100 -100 -75 N | ||||
| P 2 0 1 0 100 -100 100 -250 N | ||||
| P 2 0 1 0 100 -100 100 -75 N | ||||
| P 2 0 1 0 200 -100 200 -250 N | ||||
| P 2 0 1 0 200 0 175 0 N | ||||
| P 2 0 1 0 200 200 175 200 N | ||||
| P 3 0 1 0 300 -250 300 200 200 200 N | ||||
| P 4 0 1 0 0 -250 0 -150 -100 -150 -100 -100 N | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # Pico | ||||
| # | ||||
| DEF Pico U 0 40 Y Y 1 F N | ||||
| F0 "U" -550 1100 50 H V C CNN | ||||
| F1 "Pico" 0 750 50 H V C CNN | ||||
| F2 "RPi_Pico:RPi_Pico_SMD_TH" 0 0 50 V I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| DRAW | ||||
| T 0 0 850 50 0 0 0 "Raspberry Pi" Normal 0 C C | ||||
| S -600 1050 600 -1050 0 1 0 f | ||||
| X GP0 1 -700 950 100 R 50 50 1 1 O | ||||
| X GP7 10 -700 50 100 R 50 50 1 1 O | ||||
| X GP8 11 -700 -50 100 R 50 50 1 1 O | ||||
| X GP9 12 -700 -150 100 R 50 50 1 1 O | ||||
| X GND 13 -700 -250 100 R 50 50 1 1 W | ||||
| X GP10 14 -700 -350 100 R 50 50 1 1 O | ||||
| X GP11 15 -700 -450 100 R 50 50 1 1 O | ||||
| X GP12 16 -700 -550 100 R 50 50 1 1 O | ||||
| X GP13 17 -700 -650 100 R 50 50 1 1 O | ||||
| X GND 18 -700 -750 100 R 50 50 1 1 W | ||||
| X GP14 19 -700 -850 100 R 50 50 1 1 O | ||||
| X GP1 2 -700 850 100 R 50 50 1 1 O | ||||
| X GP15 20 -700 -950 100 R 50 50 1 1 O | ||||
| X GP16 21 700 -950 100 L 50 50 1 1 O | ||||
| X GP17 22 700 -850 100 L 50 50 1 1 O | ||||
| X GND 23 700 -750 100 L 50 50 1 1 W | ||||
| X GP18 24 700 -650 100 L 50 50 1 1 O | ||||
| X GP19 25 700 -550 100 L 50 50 1 1 O | ||||
| X GP20 26 700 -450 100 L 50 50 1 1 O | ||||
| X GP21 27 700 -350 100 L 50 50 1 1 O | ||||
| X GND 28 700 -250 100 L 50 50 1 1 W | ||||
| X GP22 29 700 -150 100 L 50 50 1 1 O | ||||
| X GND 3 -700 750 100 R 50 50 1 1 W | ||||
| X RUN 30 700 -50 100 L 50 50 1 1 I | ||||
| X ADC0 31 700 50 100 L 50 50 1 1 I | ||||
| X ADC1 32 700 150 100 L 50 50 1 1 I | ||||
| X AGND 33 700 250 100 L 50 50 1 1 W | ||||
| X GP28 34 700 350 100 L 50 50 1 1 O | ||||
| X ADC_VREF 35 700 450 100 L 50 50 1 1 U | ||||
| X 3V3 36 700 550 100 L 50 50 1 1 w | ||||
| X 3V3_EN 37 700 650 100 L 50 50 1 1 I | ||||
| X GND 38 700 750 100 L 50 50 1 1 w | ||||
| X VSYS 39 700 850 100 L 50 50 1 1 U | ||||
| X GP2 4 -700 650 100 R 50 50 1 1 O | ||||
| X VBUS 40 700 950 100 L 50 50 1 1 U | ||||
| X GP3 5 -700 550 100 R 50 50 1 1 O | ||||
| X SDA 6 -700 450 100 R 50 50 1 1 B | ||||
| X SCL 7 -700 350 100 R 50 50 1 1 O | ||||
| X GND 8 -700 250 100 R 50 50 1 1 W | ||||
| X GP6 9 -700 150 100 R 50 50 1 1 O | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # TestPoint | ||||
| # | ||||
| DEF TestPoint TP 0 30 N N 1 F N | ||||
| F0 "TP" 0 270 50 H V C CNN | ||||
| F1 "TestPoint" 0 200 50 H V C CNN | ||||
| F2 "" 200 0 50 H I C CNN | ||||
| F3 "" 200 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  Pin* | ||||
|  Test* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| C 0 130 30 0 1 0 N | ||||
| X 1 1 0 0 100 U 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # local_3V3D | ||||
| # | ||||
| DEF local_3V3D #PWR 0 0 Y Y 1 F P | ||||
| F0 "#PWR" 0 -150 50 H I C CNN | ||||
| F1 "local_3V3D" 0 140 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| DRAW | ||||
| P 2 0 1 0 -30 50 0 100 N | ||||
| P 2 0 1 0 -30 50 30 50 N | ||||
| P 2 0 1 0 0 0 0 50 N | ||||
| P 2 0 1 0 0 100 30 50 N | ||||
| X +3V3D 1 0 0 0 U 50 50 1 1 W N | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # local_ACS70331 | ||||
| # | ||||
| DEF local_ACS70331 U 0 20 Y Y 1 F N | ||||
| F0 "U" 400 250 50 H V L CNN | ||||
| F1 "local_ACS70331" 150 350 50 H V L CNN | ||||
| F2 "Sensor_Current:Allegro_QFN-12-10-1EP_3x3mm_P0.5mm" 400 -50 50 H I L CIN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| $FPLIST | ||||
|  Allegro*QFN*EP*3x3mm*P0.5mm* | ||||
| $ENDFPLIST | ||||
| DRAW | ||||
| S -500 300 300 -300 0 1 10 f | ||||
| P 2 0 1 0 -300 300 -300 -300 N | ||||
| X + 1 -600 150 100 R 50 50 1 1 P | ||||
| X VCC 10 -50 400 100 D 50 50 1 1 W | ||||
| X - 2 -600 -150 100 R 50 50 1 1 P | ||||
| X GND 3 -200 -400 100 U 50 50 1 1 W | ||||
| X NC 4 -100 -400 100 U 50 50 1 1 P | ||||
| X NC 5 400 -100 100 L 50 50 1 1 N | ||||
| X NC 6 0 -400 100 U 50 50 1 1 P | ||||
| X NC 7 100 -400 100 U 50 50 1 1 P | ||||
| X VIOUT 8 400 100 100 L 50 50 1 1 O | ||||
| X NC 9 200 -400 100 U 50 50 1 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # local_GND | ||||
| # | ||||
| DEF local_GND #PWR 0 0 Y Y 1 F P | ||||
| F0 "#PWR" 0 -250 50 H I C CNN | ||||
| F1 "local_GND" 0 -125 50 H V C CNN | ||||
| F2 "" 0 0 50 H I C CNN | ||||
| F3 "" 0 0 50 H I C CNN | ||||
| DRAW | ||||
| S -50 -60 50 -80 0 1 10 F | ||||
| P 2 0 1 0 0 0 0 -60 N | ||||
| X GNDD 1 0 0 0 D 50 50 1 1 W N | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| # switch | ||||
| # | ||||
| DEF switch SW 0 40 N N 1 F N | ||||
| F0 "SW" 50 100 50 H V L CNN | ||||
| F1 "switch" 0 -60 50 H V C CNN | ||||
| F2 "" 0 200 50 H I C CNN | ||||
| F3 "" 0 200 50 H I C CNN | ||||
| DRAW | ||||
| C -80 0 20 0 1 0 N | ||||
| C 80 0 20 0 1 0 N | ||||
| P 2 0 1 0 0 50 0 120 N | ||||
| P 2 0 1 0 100 50 -100 50 N | ||||
| X 1 1 -200 0 100 R 50 50 0 1 P | ||||
| X 2 2 200 0 100 L 50 50 0 1 P | ||||
| ENDDRAW | ||||
| ENDDEF | ||||
| # | ||||
| #End Library | ||||
| @@ -0,0 +1,52 @@ | ||||
| (module Allegro_QFN-12-10-1EP_3x3mm_P0.5mm (layer F.Cu) (tedit 5DB900DB) | ||||
|   (descr "Allegro Microsystems 12-Lead (10-Lead Populated) Quad Flat Pack, 3x3mm Body, 0.5mm Pitch (http://www.allegromicro.com/~/media/Files/Datasheets/ACS711-Datasheet.ashx)") | ||||
|   (tags "Allegro QFN 0.5") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -2.8) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value Allegro_QFN-12-10-1EP_3x3mm_P0.5mm (at 0 2.8) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start -2.11 -2.13) (end -2.11 2.13) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.11 -2.13) (end -2.11 -2.13) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.11 2.13) (end 2.11 -2.13) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -2.11 2.13) (end 2.11 2.13) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.42 -0.5) (end -0.42 -1.5) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.42 1.5) (end -1.42 -0.5) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1.58 1.5) (end -1.42 1.5) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1.58 -1.5) (end 1.58 1.5) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.42 -1.5) (end 1.58 -1.5) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1.7 -1.62) (end 1.7 -1.25) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1.7 1.25) (end 1.7 1.62) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.54 1.25) (end -1.54 1.62) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.54 -1.62) (end -1.54 -1.25) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.54 -1.62) (end -0.25 -1.62) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.54 1.62) (end -0.25 1.62) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1.7 -1.62) (end 1.2 -1.62) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1.7 1.62) (end 1.2 1.62) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.54 -1.25) (end -1.8 -1.25) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_circle (center -2.667 -1.524) (end -2.447 -1.524) (layer F.SilkS) (width 0.4)) | ||||
|   (fp_text user %R (at 0 0) (layer F.Fab) | ||||
|     (effects (font (size 0.7 0.7) (thickness 0.1))) | ||||
|   ) | ||||
|   (pad 10 smd roundrect (at 0.23 -1.85) (size 0.3 1.65) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 9 smd roundrect (at 0.73 -1.85) (size 0.3 1.65) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 3 smd roundrect (at 0.23 1.85) (size 0.3 1.65) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 4 smd roundrect (at 0.73 1.85) (size 0.3 1.65) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 5 smd roundrect (at 1.83 0.75) (size 1.65 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 6 smd roundrect (at 1.83 0.25) (size 1.65 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 7 smd roundrect (at 1.83 -0.25) (size 1.65 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 8 smd roundrect (at 1.83 -0.75) (size 1.65 0.3) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 1 smd rect (at -1.72 -0.5) (size 1.87 0.8) (layers F.Cu F.Paste F.Mask Eco1.User)) | ||||
|   (pad 1 smd rect (at -0.685 -0.4) (size 0.2 0.6) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 1 smd rect (at -0.785 -0.7 45) (size 0.2828 0.2828) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at -1.72 0.5) (size 1.87 0.8) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at -0.685 0.4) (size 0.2 0.6) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at -0.785 0.7 45) (size 0.2828 0.2828) (layers F.Cu F.Paste F.Mask)) | ||||
|   (model ${KISYS3DMOD}/Sensor_Current.3dshapes/Allegro_QFN-12-10-1EP_3x3mm_P0.5mm.wrl | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,31 @@ | ||||
| (module C_0805_2012Metric_Pad1.15x1.40mm_HandSolder (layer F.Cu) (tedit 5B36C52B) | ||||
|   (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") | ||||
|   (tags "capacitor handsolder") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -1.65) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value C_0805_2012Metric_Pad1.15x1.40mm_HandSolder (at 0 1.65) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -0.261252 0.71) (end 0.261252 0.71) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -0.261252 -0.71) (end 0.261252 -0.71) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1 0.6) (end -1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1 -0.6) (end 1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 -0.6) (end 1 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 0.6) (end -1 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 0) (layer F.Fab) | ||||
|     (effects (font (size 0.5 0.5) (thickness 0.08))) | ||||
|   ) | ||||
|   (pad 1 smd roundrect (at -1.025 0) (size 1.15 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.217391)) | ||||
|   (pad 2 smd roundrect (at 1.025 0) (size 1.15 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.217391)) | ||||
|   (model ${KISYS3DMOD}/Capacitor_SMD.3dshapes/C_0805_2012Metric.wrl | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,26 @@ | ||||
| (module C_0805_2012Metric_Pad1.15x1.40mm_HandSolder_no_3d (layer F.Cu) (tedit 60B3138C) | ||||
|   (descr "Capacitor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") | ||||
|   (tags "capacitor handsolder") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -1.65) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value C_0805_2012Metric_Pad1.15x1.40mm_HandSolder_no_3d (at 0 1.65) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start -1 0.6) (end -1 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 -0.6) (end 1 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1 -0.6) (end 1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1 0.6) (end -1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.261252 -0.71) (end 0.261252 -0.71) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -0.261252 0.71) (end 0.261252 0.71) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_text user %R (at 0 0) (layer F.Fab) | ||||
|     (effects (font (size 0.5 0.5) (thickness 0.08))) | ||||
|   ) | ||||
|   (pad 1 smd roundrect (at -1.025 0) (size 1.15 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.217391)) | ||||
|   (pad 2 smd roundrect (at 1.025 0) (size 1.15 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.217391)) | ||||
| ) | ||||
							
								
								
									
										38
									
								
								kicad/stepper_motor_analyzer.pretty/D_SMA.kicad_mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								kicad/stepper_motor_analyzer.pretty/D_SMA.kicad_mod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| (module D_SMA (layer F.Cu) (tedit 586432E5) | ||||
|   (descr "Diode SMA (DO-214AC)") | ||||
|   (tags "Diode SMA (DO-214AC)") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value D_SMA (at 0 2.6) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start -3.4 -1.65) (end 2 -1.65) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.4 1.65) (end 2 1.65) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -0.64944 0.00102) (end 0.50118 -0.79908) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.64944 0.00102) (end 0.50118 0.75032) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0.50118 0.75032) (end 0.50118 -0.79908) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.64944 -0.79908) (end -0.64944 0.80112) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0.50118 0.00102) (end 1.4994 0.00102) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.64944 0.00102) (end -1.55114 0.00102) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3.5 1.75) (end -3.5 -1.75) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 3.5 1.75) (end -3.5 1.75) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 3.5 -1.75) (end 3.5 1.75) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -3.5 -1.75) (end 3.5 -1.75) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.3 -1.5) (end -2.3 -1.5) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.3 -1.5) (end 2.3 1.5) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.3 1.5) (end -2.3 -1.5) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.3 1.5) (end -2.3 1.5) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3.4 -1.65) (end -3.4 1.65) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_text user %R (at 0 -2.5) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 smd rect (at -2 0) (size 2.5 1.8) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at 2 0) (size 2.5 1.8) (layers F.Cu F.Paste F.Mask)) | ||||
|   (model ${KISYS3DMOD}/Diode_SMD.3dshapes/D_SMA.wrl | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,34 @@ | ||||
| (module D_SOD-123_no_3d (layer F.Cu) (tedit 60B31398) | ||||
|   (descr SOD-123) | ||||
|   (tags SOD-123) | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -2) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value D_SOD-123_no_3d (at 0 2.1) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start -2.25 -1) (end -2.25 1) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 0.25 0) (end 0.75 0) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0.25 0.4) (end -0.35 0) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0.25 -0.4) (end 0.25 0.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.35 0) (end 0.25 -0.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.35 0) (end -0.35 0.55) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.35 0) (end -0.35 -0.55) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.75 0) (end -0.35 0) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.4 0.9) (end -1.4 -0.9) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1.4 0.9) (end -1.4 0.9) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1.4 -0.9) (end 1.4 0.9) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.4 -0.9) (end 1.4 -0.9) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.35 -1.15) (end 2.35 -1.15) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.35 -1.15) (end 2.35 1.15) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.35 1.15) (end -2.35 1.15) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -2.35 -1.15) (end -2.35 1.15) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -2.25 1) (end 1.65 1) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -2.25 -1) (end 1.65 -1) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_text user %R (at 0 -2) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 smd rect (at -1.65 0) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at 1.65 0) (size 0.9 1.2) (layers F.Cu F.Paste F.Mask)) | ||||
| ) | ||||
| @@ -0,0 +1,38 @@ | ||||
| (module D_SOD-323_HandSoldering (layer F.Cu) (tedit 609F639D) | ||||
|   (descr SOD-323) | ||||
|   (tags SOD-323) | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -1.85) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value D_SOD-323_HandSoldering (at 0.1 1.9) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start -1.9 -0.85) (end -1.9 0.85) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 0.2 0) (end 0.45 0) (layer F.SilkS) (width 0.1)) | ||||
|   (fp_line (start 0.2 0.35) (end -0.3 0) (layer F.SilkS) (width 0.1)) | ||||
|   (fp_line (start 0.2 -0.35) (end 0.2 0.35) (layer F.SilkS) (width 0.1)) | ||||
|   (fp_line (start -0.3 0) (end 0.2 -0.35) (layer F.SilkS) (width 0.1)) | ||||
|   (fp_line (start -0.3 0) (end -0.5 0) (layer F.SilkS) (width 0.1)) | ||||
|   (fp_line (start -0.3 -0.35) (end -0.3 0.35) (layer F.SilkS) (width 0.1)) | ||||
|   (fp_line (start -0.9 0.7) (end -0.9 -0.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0.9 0.7) (end -0.9 0.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0.9 -0.7) (end 0.9 0.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.9 -0.7) (end 0.9 -0.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2 -0.95) (end 2 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2 -0.95) (end 2 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -2 0.95) (end 2 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -2 -0.95) (end -2 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.9 0.85) (end 1.25 0.85) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.9 -0.85) (end 1.25 -0.85) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_text user %R (at 0 -1.85) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 smd rect (at -1.25 0) (size 1 1) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at 1.25 0) (size 1 1) (layers F.Cu F.Paste F.Mask)) | ||||
|   (model ${KISYS3DMOD}/Diode_SMD.3dshapes/D_SOD-323.wrl | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,86 @@ | ||||
| (module Hirose_FH12-40S-0.5SH_1x40-1MP_P0.50mm_Horizontal_flipped (layer F.Cu) (tedit 60A9D366) | ||||
|   (descr "Hirose FH12, FFC/FPC connector, FH12-40S-0.5SH, 40 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator") | ||||
|   (tags "connector Hirose FH12 horizontal") | ||||
|   (attr smd) | ||||
|   (fp_text reference FPC1 (at 0 -3.7) (layer B.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) | ||||
|   ) | ||||
|   (fp_text value FPC_40P_0.5mm (at 0 5.6) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 13.05 -3) (end -13.05 -3) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 13.05 4.9) (end 13.05 -3) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -13.05 4.9) (end 13.05 4.9) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -13.05 -3) (end -13.05 4.9) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 11.65 4.5) (end 11.65 2.76) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -11.65 4.5) (end 11.65 4.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -11.65 2.76) (end -11.65 4.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 11.65 -1.3) (end 11.65 0.04) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.16 -1.3) (end 11.65 -1.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -11.65 -1.3) (end -11.65 0.04) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.16 -1.3) (end -11.65 -1.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 11.45 4.4) (end 0 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 11.45 3.7) (end 11.45 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 10.95 3.7) (end 11.45 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 10.95 3.4) (end 10.95 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 11.55 3.4) (end 10.95 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 11.55 -1.2) (end 11.55 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0 -1.2) (end 11.55 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -11.45 4.4) (end 0 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -11.45 3.7) (end -11.45 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -10.95 3.7) (end -11.45 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -10.95 3.4) (end -10.95 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -11.55 3.4) (end -10.95 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -11.55 -1.2) (end -11.55 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0 -1.2) (end -11.55 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 3.7) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 smd rect (at 9.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at 9.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 3 smd rect (at 8.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 4 smd rect (at 8.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 5 smd rect (at 7.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 6 smd rect (at 7.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 7 smd rect (at 6.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 8 smd rect (at 6.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 9 smd rect (at 5.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 10 smd rect (at 5.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 11 smd rect (at 4.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 12 smd rect (at 4.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 13 smd rect (at 3.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 14 smd rect (at 3.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 15 smd rect (at 2.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 16 smd rect (at 2.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 17 smd rect (at 1.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 18 smd rect (at 1.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 19 smd rect (at 0.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 20 smd rect (at 0.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 21 smd rect (at -0.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 22 smd rect (at -0.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 23 smd rect (at -1.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 24 smd rect (at -1.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 25 smd rect (at -2.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 26 smd rect (at -2.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 27 smd rect (at -3.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 28 smd rect (at -3.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 29 smd rect (at -4.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 30 smd rect (at -4.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 31 smd rect (at -5.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 32 smd rect (at -5.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 33 smd rect (at -6.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 34 smd rect (at -6.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 35 smd rect (at -7.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 36 smd rect (at -7.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 37 smd rect (at -8.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 38 smd rect (at -8.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 39 smd rect (at -9.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 40 smd rect (at -9.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad MP smd rect (at -11.65 1.4) (size 1.8 2.2) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad MP smd rect (at 11.65 1.4) (size 1.8 2.2) (layers F.Cu F.Paste F.Mask)) | ||||
|   (model ${KIPRJMOD}/models/molex_fpc_40_05_5051104091.step | ||||
|     (offset (xyz 0 0.5 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz -90 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,55 @@ | ||||
| (module Hirose_FH12-6S-0.5SH_1x06-1MP_P0.50mm_Horizontal (layer F.Cu) (tedit 60ADD83F) | ||||
|   (descr "Hirose FH12, FFC/FPC connector, FH12-6S-0.5SH, 6 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator") | ||||
|   (tags "connector Hirose FH12 horizontal") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -3.7) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value Hirose_FH12-6S-0.5SH_1x06-1MP_P0.50mm_Horizontal (at 0 5.6) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 4.55 -3) (end -4.55 -3) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 4.55 4.9) (end 4.55 -3) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -4.55 4.9) (end 4.55 4.9) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -4.55 -3) (end -4.55 4.9) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.25 -0.492893) (end -0.75 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.75 -1.2) (end -1.25 -0.492893) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.66 -1.3) (end -1.66 -2.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 3.15 4.5) (end 3.15 2.76) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.15 4.5) (end 3.15 4.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.15 2.76) (end -3.15 4.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 3.15 -1.3) (end 3.15 0.04) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1.66 -1.3) (end 3.15 -1.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.15 -1.3) (end -3.15 0.04) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.66 -1.3) (end -3.15 -1.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 2.95 4.4) (end 0 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.95 3.7) (end 2.95 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.45 3.7) (end 2.95 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.45 3.4) (end 2.45 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 3.05 3.4) (end 2.45 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 3.05 -1.2) (end 3.05 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0 -1.2) (end 3.05 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.95 4.4) (end 0 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.95 3.7) (end -2.95 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.45 3.7) (end -2.95 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.45 3.4) (end -2.45 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3.05 3.4) (end -2.45 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3.05 -1.2) (end -3.05 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0 -1.2) (end -3.05 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 3.7) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad MP smd rect (at 3.15 1.4) (size 1.8 2.2) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad MP smd rect (at -3.15 1.4) (size 1.8 2.2) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 1 smd rect (at -1.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at -0.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 3 smd rect (at -0.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 4 smd rect (at 0.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 5 smd rect (at 0.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 6 smd rect (at 1.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (model ${KIPRJMOD}/models/molex_fpc_6_05_527450633.step | ||||
|     (offset (xyz 0 0.6 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz -90 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,54 @@ | ||||
| (module Hirose_FH12-6S-0.5SH_1x06-1MP_P0.50mm_Horizontal_flippped (layer F.Cu) (tedit 60A9D71D) | ||||
|   (descr "Hirose FH12, FFC/FPC connector, FH12-6S-0.5SH, 6 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator") | ||||
|   (tags "connector Hirose FH12 horizontal") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -3.7) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value Hirose_FH12-6S-0.5SH_1x06-1MP_P0.50mm_Horizontal_flippped (at 0 5.6) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 4.55 -3) (end -4.55 -3) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 4.55 4.9) (end 4.55 -3) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -4.55 4.9) (end 4.55 4.9) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -4.55 -3) (end -4.55 4.9) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.25 -0.492893) (end -0.75 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.75 -1.2) (end -1.25 -0.492893) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 3.15 4.5) (end 3.15 2.76) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.15 4.5) (end 3.15 4.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.15 2.76) (end -3.15 4.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 3.15 -1.3) (end 3.15 0.04) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1.66 -1.3) (end 3.15 -1.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.15 -1.3) (end -3.15 0.04) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.66 -1.3) (end -3.15 -1.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 2.95 4.4) (end 0 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.95 3.7) (end 2.95 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.45 3.7) (end 2.95 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.45 3.4) (end 2.45 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 3.05 3.4) (end 2.45 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 3.05 -1.2) (end 3.05 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0 -1.2) (end 3.05 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.95 4.4) (end 0 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.95 3.7) (end -2.95 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.45 3.7) (end -2.95 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.45 3.4) (end -2.45 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3.05 3.4) (end -2.45 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3.05 -1.2) (end -3.05 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0 -1.2) (end -3.05 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 3.7) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad MP smd rect (at 3.15 1.4) (size 1.8 2.2) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad MP smd rect (at -3.15 1.4) (size 1.8 2.2) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 6 smd rect (at -1.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 5 smd rect (at -0.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 4 smd rect (at -0.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 3 smd rect (at 0.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at 0.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 1 smd rect (at 1.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (model ${KIPRJMOD}/models/molex_fpc_6_05_527450633.step | ||||
|     (offset (xyz 0 0.8 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz -90 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,55 @@ | ||||
| (module JUSHUO-AFC01-S06FCC-00_6p_05mm (layer F.Cu) (tedit 60B460CA) | ||||
|   (descr "Hirose FH12, FFC/FPC connector, FH12-6S-0.5SH, 6 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator") | ||||
|   (tags "connector Hirose FH12 horizontal") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -3.7) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value JUSHUO-AFC01-S06FCC-00_6p_05mm (at 0 5.6) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 4.55 -3) (end -4.55 -3) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 4.55 4.9) (end 4.55 -3) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -4.55 4.9) (end 4.55 4.9) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -4.55 -3) (end -4.55 4.9) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.25 -0.492893) (end -0.75 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.75 -1.2) (end -1.25 -0.492893) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.66 -1.3) (end -1.66 -2.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 3.15 4.5) (end 3.15 2.76) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.15 4.5) (end 3.15 4.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.15 2.76) (end -3.15 4.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 3.15 -1.3) (end 3.15 0.04) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1.66 -1.3) (end 3.15 -1.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.15 -1.3) (end -3.15 0.04) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.66 -1.3) (end -3.15 -1.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 2.95 4.4) (end 0 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.95 3.7) (end 2.95 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.45 3.7) (end 2.95 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.45 3.4) (end 2.45 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 3.05 3.4) (end 2.45 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 3.05 -1.2) (end 3.05 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0 -1.2) (end 3.05 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.95 4.4) (end 0 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.95 3.7) (end -2.95 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.45 3.7) (end -2.95 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.45 3.4) (end -2.45 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3.05 3.4) (end -2.45 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3.05 -1.2) (end -3.05 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0 -1.2) (end -3.05 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 3.7) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad MP smd rect (at 3.15 0.65) (size 1.8 2.2) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad MP smd rect (at -3.15 0.65) (size 1.8 2.2) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 1 smd rect (at -1.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at -0.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 3 smd rect (at -0.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 4 smd rect (at 0.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 5 smd rect (at 0.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 6 smd rect (at 1.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (model ${KIPRJMOD}/models/molex_fpc_6_05_527450633.step | ||||
|     (offset (xyz 0 0.6 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz -90 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,86 @@ | ||||
| (module JUSHUO-AFC07-S40ECC-00_40P_05mm_flipped (layer F.Cu) (tedit 60B45BC0) | ||||
|   (descr "Hirose FH12, FFC/FPC connector, FH12-40S-0.5SH, 40 Pins per row (https://www.hirose.com/product/en/products/FH12/FH12-24S-0.5SH(55)/), generated with kicad-footprint-generator") | ||||
|   (tags "connector Hirose FH12 horizontal") | ||||
|   (attr smd) | ||||
|   (fp_text reference FPC1 (at 0 -3.7) (layer B.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) | ||||
|   ) | ||||
|   (fp_text value FPC_40P_0.5mm (at 0 5.6) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 13.05 -3) (end -13.05 -3) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 13.05 4.9) (end 13.05 -3) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -13.05 4.9) (end 13.05 4.9) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -13.05 -3) (end -13.05 4.9) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 11.65 4.5) (end 11.65 2.76) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -11.65 4.5) (end 11.65 4.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -11.65 2.76) (end -11.65 4.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 11.65 -1.3) (end 11.65 0.04) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.16 -1.3) (end 11.65 -1.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -11.65 -1.3) (end -11.65 0.04) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.16 -1.3) (end -11.65 -1.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 11.45 4.4) (end 0 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 11.45 3.7) (end 11.45 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 10.95 3.7) (end 11.45 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 10.95 3.4) (end 10.95 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 11.55 3.4) (end 10.95 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 11.55 -1.2) (end 11.55 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0 -1.2) (end 11.55 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -11.45 4.4) (end 0 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -11.45 3.7) (end -11.45 4.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -10.95 3.7) (end -11.45 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -10.95 3.4) (end -10.95 3.7) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -11.55 3.4) (end -10.95 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -11.55 -1.2) (end -11.55 3.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0 -1.2) (end -11.55 -1.2) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 3.7) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 smd rect (at 9.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at 9.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 3 smd rect (at 8.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 4 smd rect (at 8.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 5 smd rect (at 7.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 6 smd rect (at 7.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 7 smd rect (at 6.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 8 smd rect (at 6.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 9 smd rect (at 5.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 10 smd rect (at 5.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 11 smd rect (at 4.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 12 smd rect (at 4.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 13 smd rect (at 3.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 14 smd rect (at 3.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 15 smd rect (at 2.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 16 smd rect (at 2.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 17 smd rect (at 1.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 18 smd rect (at 1.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 19 smd rect (at 0.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 20 smd rect (at 0.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 21 smd rect (at -0.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 22 smd rect (at -0.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 23 smd rect (at -1.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 24 smd rect (at -1.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 25 smd rect (at -2.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 26 smd rect (at -2.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 27 smd rect (at -3.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 28 smd rect (at -3.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 29 smd rect (at -4.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 30 smd rect (at -4.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 31 smd rect (at -5.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 32 smd rect (at -5.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 33 smd rect (at -6.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 34 smd rect (at -6.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 35 smd rect (at -7.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 36 smd rect (at -7.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 37 smd rect (at -8.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 38 smd rect (at -8.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 39 smd rect (at -9.25 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 40 smd rect (at -9.75 -1.85) (size 0.3 1.3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad MP smd rect (at -11.4 0.5) (size 2 3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad MP smd rect (at 11.4 0.5) (size 2 3) (layers F.Cu F.Paste F.Mask)) | ||||
|   (model ${KIPRJMOD}/models/molex_fpc_40_05_5051104091.step | ||||
|     (offset (xyz 0 0.5 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz -90 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,33 @@ | ||||
| (module LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder (layer F.Cu) (tedit 5F68FEF1) | ||||
|   (descr "LED SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") | ||||
|   (tags "LED handsolder") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -1.65) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder (at 0 1.65) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.86 0.96) (end 1 0.96) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.86 -0.96) (end -1.86 0.96) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1 -0.96) (end -1.86 -0.96) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1 0.6) (end 1 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 0.6) (end 1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 -0.3) (end -1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.7 -0.6) (end -1 -0.3) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1 -0.6) (end -0.7 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 0) (layer F.Fab) | ||||
|     (effects (font (size 0.5 0.5) (thickness 0.08))) | ||||
|   ) | ||||
|   (pad 1 smd roundrect (at -1.025 0) (size 1.15 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.217391)) | ||||
|   (pad 2 smd roundrect (at 1.025 0) (size 1.15 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.217391)) | ||||
|   (model ${KISYS3DMOD}/LED_SMD.3dshapes/LED_0805_2012Metric.wrl | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,36 @@ | ||||
| (module LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder_double_side (layer F.Cu) (tedit 60A87930) | ||||
|   (descr "LED SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") | ||||
|   (tags "LED handsolder") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -1.65) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder_double_side (at 0 1.65) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.86 0.96) (end 1 0.96) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.86 -0.96) (end -1.86 0.96) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1 -0.96) (end -1.86 -0.96) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1 0.6) (end 1 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 0.6) (end 1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 -0.3) (end -1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.7 -0.6) (end -1 -0.3) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1 -0.6) (end -0.7 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 0) (layer F.Fab) | ||||
|     (effects (font (size 0.5 0.5) (thickness 0.08))) | ||||
|   ) | ||||
|   (fp_line (start 1 -0.96) (end -1.86 -0.96) (layer B.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.86 -0.96) (end -1.86 0.96) (layer B.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.86 0.96) (end 1 0.96) (layer B.SilkS) (width 0.12)) | ||||
|   (pad 1 thru_hole roundrect (at -1.025 0) (size 1.4 1.4) (drill 0.4064) (layers *.Cu *.Mask) (roundrect_rratio 0.217)) | ||||
|   (pad 2 thru_hole roundrect (at 1.025 0) (size 1.4 1.4) (drill 0.4064) (layers *.Cu *.Mask) (roundrect_rratio 0.217)) | ||||
|   (model ${KISYS3DMOD}/LED_SMD.3dshapes/LED_0805_2012Metric.wrl | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,31 @@ | ||||
| (module LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder_double_side_no_3d (layer F.Cu) (tedit 60B3112F) | ||||
|   (descr "LED SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") | ||||
|   (tags "LED handsolder") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -1.65) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value LED_0805_2012Metric_Pad1.15x1.40mm_HandSolder_double_side_no_3d (at 0 1.65) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start -1.86 0.96) (end 1 0.96) (layer B.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.86 -0.96) (end -1.86 0.96) (layer B.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1 -0.96) (end -1.86 -0.96) (layer B.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1 -0.6) (end -0.7 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.7 -0.6) (end -1 -0.3) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 -0.3) (end -1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 0.6) (end 1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1 0.6) (end 1 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1 -0.96) (end -1.86 -0.96) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.86 -0.96) (end -1.86 0.96) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.86 0.96) (end 1 0.96) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_text user %R (at 0 0) (layer F.Fab) | ||||
|     (effects (font (size 0.5 0.5) (thickness 0.08))) | ||||
|   ) | ||||
|   (pad 1 thru_hole roundrect (at -1.025 0) (size 1.4 1.4) (drill 0.4064) (layers *.Cu *.Mask) (roundrect_rratio 0.217)) | ||||
|   (pad 2 thru_hole roundrect (at 1.025 0) (size 1.4 1.4) (drill 0.4064) (layers *.Cu *.Mask) (roundrect_rratio 0.217)) | ||||
| ) | ||||
							
								
								
									
										15
									
								
								kicad/stepper_motor_analyzer.pretty/MountingHole.kicad_mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								kicad/stepper_motor_analyzer.pretty/MountingHole.kicad_mod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| (module MountingHole (layer F.Cu) (tedit 600A6A73) | ||||
|   (descr "Mounting Hole 2.7mm, M2.5, ISO7380") | ||||
|   (tags "mounting hole 2.7mm m2.5 iso7380") | ||||
|   (attr virtual) | ||||
|   (fp_text reference REF** (at 0 -3.25) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value MountingHole (at 0 3.25) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user %R (at 0.3 0) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 thru_hole circle (at 0 0) (size 3.5 3.5) (drill 2.6) (layers *.Cu *.Mask)) | ||||
| ) | ||||
							
								
								
									
										297
									
								
								kicad/stepper_motor_analyzer.pretty/Pico.kicad_mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										297
									
								
								kicad/stepper_motor_analyzer.pretty/Pico.kicad_mod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,297 @@ | ||||
| (module Pico (layer F.Cu) (tedit 609CBCC2) | ||||
|   (descr "Through hole straight pin header, 2x20, 2.54mm pitch, double rows") | ||||
|   (tags "Through hole pin header THT 2x20 2.54mm double row") | ||||
|   (fp_text reference REF** (at 0 0) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value Pico (at 0 2.159) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 1.1 25.5) (end 1.5 25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.5 25.5) (end -1.1 25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 25.5) (end 3.7 25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 15.1) (end 10.5 15.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 7.4) (end 10.5 7.8) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -18) (end 10.5 -17.6) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -25.5) (end 10.5 -25.2) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -2.7) (end 10.5 -2.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 12.5) (end 10.5 12.9) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -7.8) (end 10.5 -7.4) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -12.9) (end 10.5 -12.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -0.2) (end 10.5 0.2) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 4.9) (end 10.5 5.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 20.1) (end 10.5 20.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 22.7) (end 10.5 23.1) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 17.6) (end 10.5 18) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -15.4) (end 10.5 -15) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -23.1) (end 10.5 -22.7) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -20.5) (end 10.5 -20.1) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 10) (end 10.5 10.4) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 2.3) (end 10.5 2.7) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -5.3) (end 10.5 -4.9) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -10.4) (end 10.5 -10) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 22.7) (end -10.5 23.1) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 20.1) (end -10.5 20.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 17.6) (end -10.5 18) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 15.1) (end -10.5 15.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 12.5) (end -10.5 12.9) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 10) (end -10.5 10.4) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 7.4) (end -10.5 7.8) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 4.9) (end -10.5 5.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 2.3) (end -10.5 2.7) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -0.2) (end -10.5 0.2) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -2.7) (end -10.5 -2.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -5.3) (end -10.5 -4.9) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -7.8) (end -10.5 -7.4) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -10.4) (end -10.5 -10) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -12.9) (end -10.5 -12.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -15.4) (end -10.5 -15) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -18) (end -10.5 -17.6) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -20.5) (end -10.5 -20.1) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -23.1) (end -10.5 -22.7) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -25.5) (end -10.5 -25.2) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -7.493 -22.833) (end -7.493 -25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -22.833) (end -7.493 -22.833) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.7 25.5) (end -10.5 25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -25.5) (end 10.5 -25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -11 26) (end -11 -26) (layer F.CrtYd) (width 0.12)) | ||||
|   (fp_line (start 11 26) (end -11 26) (layer F.CrtYd) (width 0.12)) | ||||
|   (fp_line (start 11 -26) (end 11 26) (layer F.CrtYd) (width 0.12)) | ||||
|   (fp_line (start -11 -26) (end 11 -26) (layer F.CrtYd) (width 0.12)) | ||||
|   (fp_line (start -10.5 -24.2) (end -9.2 -25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start -10.5 25.5) (end -10.5 -25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start 10.5 25.5) (end -10.5 25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start 10.5 -25.5) (end 10.5 25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start -10.5 -25.5) (end 10.5 -25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_poly (pts (xy -1.5 -16.5) (xy -3.5 -16.5) (xy -3.5 -18.5) (xy -1.5 -18.5)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_poly (pts (xy -1.5 -14) (xy -3.5 -14) (xy -3.5 -16) (xy -1.5 -16)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_poly (pts (xy -1.5 -11.5) (xy -3.5 -11.5) (xy -3.5 -13.5) (xy -1.5 -13.5)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_poly (pts (xy 3.7 -20.2) (xy -3.7 -20.2) (xy -3.7 -24.9) (xy 3.7 -24.9)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_text user %R (at 0 0 180) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP1 (at -12.9 -21.6 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP2 (at -12.9 -16.51 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP0 (at -12.8 -24.13 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP3 (at -12.8 -13.97 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP4 (at -12.8 -11.43 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP5 (at -12.8 -8.89 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP6 (at -12.8 -3.81 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP7 (at -12.7 -1.3 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP8 (at -12.8 1.27 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP9 (at -12.8 3.81 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP10 (at -13.054 8.89 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP11 (at -13.2 11.43 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP12 (at -13.2 13.97 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP13 (at -13.054 16.51 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP14 (at -13.1 21.59 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP15 (at -13.054 24.13 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP16 (at 13.054 24.13 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP17 (at 13.054 21.59 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP18 (at 13.054 16.51 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP19 (at 13.054 13.97 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP20 (at 13.054 11.43 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP21 (at 13.054 8.9 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP22 (at 13.054 3.81 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user RUN (at 13 1.27 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP26 (at 13.054 -1.27 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP27 (at 13.054 -3.8 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP28 (at 13.054 -9.144 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user ADC_VREF (at 14 -12.5 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user 3V3 (at 12.9 -13.9 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user 3V3_EN (at 13.7 -17.2 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user VSYS (at 13.2 -21.59 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user VBUS (at 13.3 -24.2 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at -12.8 -19.05 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at -12.8 -6.35 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at -12.8 6.35 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at -12.8 19.05 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at 12.8 19.05 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at 12.8 6.35 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at 12.8 -19.05 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user AGND (at 13.054 -6.35 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user SWCLK (at -5.7 26.2) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user SWDIO (at 5.6 26.2) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user "Copper Keepouts shown on Dwgs layer" (at 0.1 -30.2) (layer Cmts.User) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 thru_hole oval (at -8.89 -24.13) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 2 thru_hole oval (at -8.89 -21.59) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 3 thru_hole rect (at -8.89 -19.05) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 4 thru_hole oval (at -8.89 -16.51) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 5 thru_hole oval (at -8.89 -13.97) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 6 thru_hole oval (at -8.89 -11.43) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 7 thru_hole oval (at -8.89 -8.89) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 8 thru_hole rect (at -8.89 -6.35) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 9 thru_hole oval (at -8.89 -3.81) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 10 thru_hole oval (at -8.89 -1.27) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 11 thru_hole oval (at -8.89 1.27) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 12 thru_hole oval (at -8.89 3.81) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 13 thru_hole rect (at -8.89 6.35) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 14 thru_hole oval (at -8.89 8.89) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 15 thru_hole oval (at -8.89 11.43) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 16 thru_hole oval (at -8.89 13.97) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 17 thru_hole oval (at -8.89 16.51) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 18 thru_hole rect (at -8.89 19.05) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 19 thru_hole oval (at -8.89 21.59) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 20 thru_hole oval (at -8.89 24.13) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 21 thru_hole oval (at 8.89 24.13) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 22 thru_hole oval (at 8.89 21.59) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 23 thru_hole rect (at 8.89 19.05) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 24 thru_hole oval (at 8.89 16.51) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 25 thru_hole oval (at 8.89 13.97) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 26 thru_hole oval (at 8.89 11.43) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 27 thru_hole oval (at 8.89 8.89) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 28 thru_hole rect (at 8.89 6.35) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 29 thru_hole oval (at 8.89 3.81) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 30 thru_hole oval (at 8.89 1.27) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 31 thru_hole oval (at 8.89 -1.27) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 32 thru_hole oval (at 8.89 -3.81) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 33 thru_hole rect (at 8.89 -6.35) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 34 thru_hole oval (at 8.89 -8.89) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 35 thru_hole oval (at 8.89 -11.43) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 36 thru_hole oval (at 8.89 -13.97) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 37 thru_hole oval (at 8.89 -16.51) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 38 thru_hole rect (at 8.89 -19.05) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 39 thru_hole oval (at 8.89 -21.59) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 40 thru_hole oval (at 8.89 -24.13) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 1 smd rect (at -8.89 -24.13) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 2 smd rect (at -8.89 -21.59) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 3 smd rect (at -8.89 -19.05) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 4 smd rect (at -8.89 -16.51) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 5 smd rect (at -8.89 -13.97) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 6 smd rect (at -8.89 -11.43) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 7 smd rect (at -8.89 -8.89) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 8 smd rect (at -8.89 -6.35) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 9 smd rect (at -8.89 -3.81) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 10 smd rect (at -8.89 -1.27) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 11 smd rect (at -8.89 1.27) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 12 smd rect (at -8.89 3.81) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 13 smd rect (at -8.89 6.35) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 14 smd rect (at -8.89 8.89) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 15 smd rect (at -8.89 11.43) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 16 smd rect (at -8.89 13.97) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 17 smd rect (at -8.89 16.51) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 18 smd rect (at -8.89 19.05) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 19 smd rect (at -8.89 21.59) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 20 smd rect (at -8.89 24.13) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 40 smd rect (at 8.89 -24.13) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 39 smd rect (at 8.89 -21.59) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 38 smd rect (at 8.89 -19.05) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 37 smd rect (at 8.89 -16.51) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 36 smd rect (at 8.89 -13.97) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 35 smd rect (at 8.89 -11.43) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 34 smd rect (at 8.89 -8.89) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 33 smd rect (at 8.89 -6.35) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 32 smd rect (at 8.89 -3.81) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 31 smd rect (at 8.89 -1.27) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 30 smd rect (at 8.89 1.27) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 29 smd rect (at 8.89 3.81) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 28 smd rect (at 8.89 6.35) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 27 smd rect (at 8.89 8.89) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 26 smd rect (at 8.89 11.43) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 25 smd rect (at 8.89 13.97) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 24 smd rect (at 8.89 16.51) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 23 smd rect (at 8.89 19.05) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 22 smd rect (at 8.89 21.59) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 21 smd rect (at 8.89 24.13) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad "" np_thru_hole oval (at -2.725 -24) (size 1.8 1.8) (drill 1.8) (layers *.Cu *.Mask)) | ||||
|   (pad "" np_thru_hole oval (at 2.725 -24) (size 1.8 1.8) (drill 1.8) (layers *.Cu *.Mask)) | ||||
|   (pad "" np_thru_hole oval (at -2.425 -20.97) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) | ||||
|   (pad "" np_thru_hole oval (at 2.425 -20.97) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) | ||||
|   (pad 41 smd rect (at -2.54 23.9 90) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 41 thru_hole oval (at -2.54 23.9) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 42 smd rect (at 0 23.9 90) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 42 thru_hole rect (at 0 23.9) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (pad 43 smd rect (at 2.54 23.9 90) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 43 thru_hole oval (at 2.54 23.9) (size 1.7 1.7) (drill 1.02) (layers *.Cu *.Mask)) | ||||
|   (model ${KIPRJMOD}/models/Pico.wrl | ||||
|     (offset (xyz -10.5 -25.5 0)) | ||||
|     (scale (xyz 10 10 10)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
							
								
								
									
										263
									
								
								kicad/stepper_motor_analyzer.pretty/Pico_smd.kicad_mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										263
									
								
								kicad/stepper_motor_analyzer.pretty/Pico_smd.kicad_mod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,263 @@ | ||||
| (module Pico_smd (layer F.Cu) (tedit 609F615A) | ||||
|   (descr "Through hole straight pin header, 2x20, 2.54mm pitch, double rows") | ||||
|   (tags "Through hole pin header THT 2x20 2.54mm double row") | ||||
|   (fp_text reference REF** (at 0 0) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value Pico_smd (at 0 2.159) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 1.1 25.5) (end 1.5 25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.5 25.5) (end -1.1 25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 25.5) (end 3.7 25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 15.1) (end 10.5 15.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 7.4) (end 10.5 7.8) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -18) (end 10.5 -17.6) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -25.5) (end 10.5 -25.2) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -2.7) (end 10.5 -2.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 12.5) (end 10.5 12.9) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -7.8) (end 10.5 -7.4) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -12.9) (end 10.5 -12.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -0.2) (end 10.5 0.2) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 4.9) (end 10.5 5.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 20.1) (end 10.5 20.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 22.7) (end 10.5 23.1) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 17.6) (end 10.5 18) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -15.4) (end 10.5 -15) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -23.1) (end 10.5 -22.7) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -20.5) (end 10.5 -20.1) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 10) (end 10.5 10.4) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 2.3) (end 10.5 2.7) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -5.3) (end 10.5 -4.9) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 10.5 -10.4) (end 10.5 -10) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 22.7) (end -10.5 23.1) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 20.1) (end -10.5 20.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 17.6) (end -10.5 18) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 15.1) (end -10.5 15.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 12.5) (end -10.5 12.9) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 10) (end -10.5 10.4) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 7.4) (end -10.5 7.8) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 4.9) (end -10.5 5.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 2.3) (end -10.5 2.7) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -0.2) (end -10.5 0.2) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -2.7) (end -10.5 -2.3) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -5.3) (end -10.5 -4.9) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -7.8) (end -10.5 -7.4) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -10.4) (end -10.5 -10) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -12.9) (end -10.5 -12.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -15.4) (end -10.5 -15) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -18) (end -10.5 -17.6) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -20.5) (end -10.5 -20.1) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -23.1) (end -10.5 -22.7) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -25.5) (end -10.5 -25.2) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -7.493 -22.833) (end -7.493 -25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -22.833) (end -7.493 -22.833) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.7 25.5) (end -10.5 25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -10.5 -25.5) (end 10.5 -25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -11 26) (end -11 -26) (layer F.CrtYd) (width 0.12)) | ||||
|   (fp_line (start 11 26) (end -11 26) (layer F.CrtYd) (width 0.12)) | ||||
|   (fp_line (start 11 -26) (end 11 26) (layer F.CrtYd) (width 0.12)) | ||||
|   (fp_line (start -11 -26) (end 11 -26) (layer F.CrtYd) (width 0.12)) | ||||
|   (fp_line (start -10.5 -24.2) (end -9.2 -25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start -10.5 25.5) (end -10.5 -25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start 10.5 25.5) (end -10.5 25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start 10.5 -25.5) (end 10.5 25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start -10.5 -25.5) (end 10.5 -25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_poly (pts (xy -1.5 -16.5) (xy -3.5 -16.5) (xy -3.5 -18.5) (xy -1.5 -18.5)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_poly (pts (xy -1.5 -14) (xy -3.5 -14) (xy -3.5 -16) (xy -1.5 -16)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_poly (pts (xy -1.5 -11.5) (xy -3.5 -11.5) (xy -3.5 -13.5) (xy -1.5 -13.5)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_poly (pts (xy 3.7 -20.2) (xy -3.7 -20.2) (xy -3.7 -24.9) (xy 3.7 -24.9)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_text user %R (at 0 0 180) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP1 (at -12.9 -21.6 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP2 (at -12.9 -16.51 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP0 (at -12.8 -24.13 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP3 (at -12.8 -13.97 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP4 (at -12.8 -11.43 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP5 (at -12.8 -8.89 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP6 (at -12.8 -3.81 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP7 (at -12.7 -1.3 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP8 (at -12.8 1.27 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP9 (at -12.8 3.81 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP10 (at -13.054 8.89 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP11 (at -13.2 11.43 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP12 (at -13.2 13.97 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP13 (at -13.054 16.51 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP14 (at -13.1 21.59 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP15 (at -13.054 24.13 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP16 (at 13.054 24.13 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP17 (at 13.054 21.59 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP18 (at 13.054 16.51 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP19 (at 13.054 13.97 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP20 (at 13.054 11.43 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP21 (at 13.054 8.9 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP22 (at 13.054 3.81 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user RUN (at 13 1.27 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP26 (at 13.054 -1.27 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP27 (at 13.054 -3.8 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GP28 (at 13.054 -9.144 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user ADC_VREF (at 14 -12.5 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user 3V3 (at 12.9 -13.9 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user 3V3_EN (at 13.7 -17.2 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user VSYS (at 13.2 -21.59 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user VBUS (at 13.3 -24.2 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at -12.8 -19.05 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at -12.8 -6.35 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at -12.8 6.35 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at -12.8 19.05 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at 12.8 19.05 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at 12.8 6.35 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at 12.8 -19.05 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user AGND (at 13.054 -6.35 45) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user SWCLK (at -5.7 26.2) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user SWDIO (at 5.6 26.2) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user "Copper Keepouts shown on Dwgs layer" (at 0.1 -30.2) (layer Cmts.User) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 3 thru_hole rect (at -8.89 -19.05) (size 1.7 1.7) (drill 1.02) (layers *.Cu F.Mask)) | ||||
|   (pad 8 thru_hole rect (at -8.89 -6.35) (size 1.7 1.7) (drill 1.02) (layers *.Cu F.Mask)) | ||||
|   (pad 13 thru_hole rect (at -8.89 6.35) (size 1.7 1.7) (drill 1.02) (layers *.Cu F.Mask)) | ||||
|   (pad 18 thru_hole rect (at -8.89 19.05) (size 1.7 1.7) (drill 1.02) (layers *.Cu F.Mask)) | ||||
|   (pad 23 thru_hole rect (at 8.89 19.05) (size 1.7 1.7) (drill 1.02) (layers *.Cu F.Mask)) | ||||
|   (pad 28 thru_hole rect (at 8.89 6.35) (size 1.7 1.7) (drill 1.02) (layers *.Cu F.Mask)) | ||||
|   (pad 33 thru_hole rect (at 8.89 -6.35) (size 1.7 1.7) (drill 1.02) (layers *.Cu F.Mask)) | ||||
|   (pad 38 thru_hole rect (at 8.89 -19.05) (size 1.7 1.7) (drill 1.02) (layers *.Cu F.Mask)) | ||||
|   (pad 1 smd rect (at -8.89 -24.13) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 2 smd rect (at -8.89 -21.59) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 3 smd rect (at -8.89 -19.05) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 4 smd rect (at -8.89 -16.51) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 5 smd rect (at -8.89 -13.97) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 6 smd rect (at -8.89 -11.43) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 7 smd rect (at -8.89 -8.89) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 8 smd rect (at -8.89 -6.35) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 9 smd rect (at -8.89 -3.81) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 10 smd rect (at -8.89 -1.27) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 11 smd rect (at -8.89 1.27) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 12 smd rect (at -8.89 3.81) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 13 smd rect (at -8.89 6.35) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 14 smd rect (at -8.89 8.89) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 15 smd rect (at -8.89 11.43) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 16 smd rect (at -8.89 13.97) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 17 smd rect (at -8.89 16.51) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 18 smd rect (at -8.89 19.05) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 19 smd rect (at -8.89 21.59) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 20 smd rect (at -8.89 24.13) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 40 smd rect (at 8.89 -24.13) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 39 smd rect (at 8.89 -21.59) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 38 smd rect (at 8.89 -19.05) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 37 smd rect (at 8.89 -16.51) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 36 smd rect (at 8.89 -13.97) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 35 smd rect (at 8.89 -11.43) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 34 smd rect (at 8.89 -8.89) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 33 smd rect (at 8.89 -6.35) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 32 smd rect (at 8.89 -3.81) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 31 smd rect (at 8.89 -1.27) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 30 smd rect (at 8.89 1.27) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 29 smd rect (at 8.89 3.81) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 28 smd rect (at 8.89 6.35) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 27 smd rect (at 8.89 8.89) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 26 smd rect (at 8.89 11.43) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 25 smd rect (at 8.89 13.97) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 24 smd rect (at 8.89 16.51) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 23 smd rect (at 8.89 19.05) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 22 smd rect (at 8.89 21.59) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 21 smd rect (at 8.89 24.13) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad "" np_thru_hole oval (at -2.725 -24) (size 1.8 1.8) (drill 1.8) (layers *.Cu *.Mask)) | ||||
|   (pad "" np_thru_hole oval (at 2.725 -24) (size 1.8 1.8) (drill 1.8) (layers *.Cu *.Mask)) | ||||
|   (pad "" np_thru_hole oval (at -2.425 -20.97) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) | ||||
|   (pad "" np_thru_hole oval (at 2.425 -20.97) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) | ||||
|   (pad 41 smd rect (at -2.54 23.9 90) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 42 smd rect (at 0 23.9 90) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 42 thru_hole rect (at 0 23.9) (size 1.7 1.7) (drill 1.02) (layers *.Cu F.Mask)) | ||||
|   (pad 43 smd rect (at 2.54 23.9 90) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (model ${KIPRJMOD}/models/Pico.wrl | ||||
|     (offset (xyz -10.5 -25.5 0)) | ||||
|     (scale (xyz 10 10 10)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
							
								
								
									
										220
									
								
								kicad/stepper_motor_analyzer.pretty/Pico_smd_dedicated.kicad_mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								kicad/stepper_motor_analyzer.pretty/Pico_smd_dedicated.kicad_mod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,220 @@ | ||||
| (module Pico_smd_dedicated (layer F.Cu) (tedit 60B26676) | ||||
|   (descr "Through hole straight pin header, 2x20, 2.54mm pitch, double rows") | ||||
|   (tags "Through hole pin header THT 2x20 2.54mm double row") | ||||
|   (fp_text reference REF** (at -12.45 28.05) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value Pico_smd_dedicated (at 0 2.159) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_poly (pts (xy 4 27) (xy -4 27) (xy -4 22) (xy 4 22)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_line (start 7.55 25.55) (end 7.55 -25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -7.6 25.55) (end 7.55 25.55) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -7.6 -25.5) (end -7.6 25.55) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_poly (pts (xy 3.7 -20.2) (xy -3.7 -20.2) (xy -3.7 -24.9) (xy 3.7 -24.9)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_poly (pts (xy -1.5 -11.5) (xy -3.5 -11.5) (xy -3.5 -13.5) (xy -1.5 -13.5)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_poly (pts (xy -1.5 -14) (xy -3.5 -14) (xy -3.5 -16) (xy -1.5 -16)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_poly (pts (xy -1.5 -16.5) (xy -3.5 -16.5) (xy -3.5 -18.5) (xy -1.5 -18.5)) (layer Dwgs.User) (width 0.1)) | ||||
|   (fp_line (start -10.5 -25.5) (end 10.5 -25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start 10.5 -25.5) (end 10.5 25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start 10.5 25.5) (end -10.5 25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start -10.5 25.5) (end -10.5 -25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start -10.5 -24.2) (end -9.2 -25.5) (layer F.Fab) (width 0.12)) | ||||
|   (fp_line (start -11 -26) (end 11 -26) (layer F.CrtYd) (width 0.12)) | ||||
|   (fp_line (start 11 -26) (end 11 26) (layer F.CrtYd) (width 0.12)) | ||||
|   (fp_line (start 11 26) (end -11 26) (layer F.CrtYd) (width 0.12)) | ||||
|   (fp_line (start -11 26) (end -11 -26) (layer F.CrtYd) (width 0.12)) | ||||
|   (fp_line (start -10.5 -25.5) (end 10.5 -25.5) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_text user %R (at 0 0 180) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user ~TFT_WR (at -12 -21.59) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user TFT_RST (at -12 -16.51) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user TFT_DC (at -12 -24.13) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user D1 (at -12 -13.97) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user SDA (at -12 -11.43) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user SCL (at -12 -8.89) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user D2 (at -12 -3.81) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user D3 (at -12 -1.27) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user D4 (at -12 1.27) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user D5 (at -12 3.81) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user D7 (at -12 8.89) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user D8 (at -12 11.43) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user D10 (at -12 13.97) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user D12 (at -12 16.51) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user D14 (at -12 21.59) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user ~TFT_BL (at -12 24.13) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user LED2 (at 12 24.13) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user LED1 (at 12 21.59) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user D15 (at 12 16.51) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user D13 (at 12 13.97) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user D11 (at 12 11.43) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user D9 (at 12 8.89) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user D6 (at 12 3.81) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user ~RESET (at 12 1.27) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user CHA (at 12 -1.27) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user CHB (at 12 -3.81) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user D0 (at 12 -8.89) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user ADC_VREF (at 12 -11.43) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user 3V3 (at 12 -13.9) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user 3V3_EN (at 12 -16.51) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user VSYS (at 12 -21.59) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user VBUS (at 12 -24.2) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user G (at -12 -19.05) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user G (at -12 -6.35) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user G (at -12 6.35) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user G (at -12 19.05) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user G (at 12 19.05) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user G (at 12 6.35) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user G (at 12 -19.05) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user AGND (at 12 -6.35) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user SWCLK (at -2 27.7) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text user SWDIO (at 2 27.7) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15)) (justify left)) | ||||
|   ) | ||||
|   (fp_text user "Copper Keepouts shown on Dwgs layer" (at 0.1 -30.2) (layer Cmts.User) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user GND (at 0.05 27.7) (layer F.SilkS) | ||||
|     (effects (font (size 0.8 0.8) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 3 thru_hole rect (at -8.89 -19.05) (size 1.7 1.7) (drill 0.762) (layers *.Cu F.Mask)) | ||||
|   (pad 8 thru_hole rect (at -8.89 -6.35) (size 1.7 1.7) (drill 0.762) (layers *.Cu F.Mask)) | ||||
|   (pad 13 thru_hole rect (at -8.89 6.35) (size 1.7 1.7) (drill 0.762) (layers *.Cu F.Mask)) | ||||
|   (pad 18 thru_hole rect (at -8.89 19.05) (size 1.7 1.7) (drill 0.762) (layers *.Cu F.Mask)) | ||||
|   (pad 23 thru_hole rect (at 8.89 19.05) (size 1.7 1.7) (drill 0.762) (layers *.Cu F.Mask)) | ||||
|   (pad 28 thru_hole rect (at 8.89 6.35) (size 1.7 1.7) (drill 0.762) (layers *.Cu F.Mask)) | ||||
|   (pad 33 thru_hole rect (at 8.89 -6.35) (size 1.7 1.7) (drill 0.762) (layers *.Cu F.Mask)) | ||||
|   (pad 38 thru_hole rect (at 8.89 -19.05) (size 1.7 1.7) (drill 0.762) (layers *.Cu F.Mask)) | ||||
|   (pad 1 smd rect (at -8.89 -24.13) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 2 smd rect (at -8.89 -21.59) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 3 smd rect (at -8.89 -19.05) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 4 smd rect (at -8.89 -16.51) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 5 smd rect (at -8.89 -13.97) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 6 smd rect (at -8.89 -11.43) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 7 smd rect (at -8.89 -8.89) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 8 smd rect (at -8.89 -6.35) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 9 smd rect (at -8.89 -3.81) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 10 smd rect (at -8.89 -1.27) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 11 smd rect (at -8.89 1.27) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 12 smd rect (at -8.89 3.81) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 13 smd rect (at -8.89 6.35) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 14 smd rect (at -8.89 8.89) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 15 smd rect (at -8.89 11.43) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 16 smd rect (at -8.89 13.97) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 17 smd rect (at -8.89 16.51) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 18 smd rect (at -8.89 19.05) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 19 smd rect (at -8.89 21.59) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 20 smd rect (at -8.89 24.13) (size 3.5 1.7) (drill (offset -0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 40 smd rect (at 8.89 -24.13) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 39 smd rect (at 8.89 -21.59) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 38 smd rect (at 8.89 -19.05) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 37 smd rect (at 8.89 -16.51) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 36 smd rect (at 8.89 -13.97) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 35 smd rect (at 8.89 -11.43) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 34 smd rect (at 8.89 -8.89) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 33 smd rect (at 8.89 -6.35) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 32 smd rect (at 8.89 -3.81) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 31 smd rect (at 8.89 -1.27) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 30 smd rect (at 8.89 1.27) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 29 smd rect (at 8.89 3.81) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 28 smd rect (at 8.89 6.35) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 27 smd rect (at 8.89 8.89) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 26 smd rect (at 8.89 11.43) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 25 smd rect (at 8.89 13.97) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 24 smd rect (at 8.89 16.51) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 23 smd rect (at 8.89 19.05) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 22 smd rect (at 8.89 21.59) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad 21 smd rect (at 8.89 24.13) (size 3.5 1.7) (drill (offset 0.9 0)) (layers F.Cu F.Mask)) | ||||
|   (pad "" np_thru_hole oval (at -2.725 -24) (size 1.8 1.8) (drill 1.8) (layers *.Cu *.Mask)) | ||||
|   (pad "" np_thru_hole oval (at 2.725 -24) (size 1.8 1.8) (drill 1.8) (layers *.Cu *.Mask)) | ||||
|   (pad "" np_thru_hole oval (at -2.425 -20.97) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) | ||||
|   (pad "" np_thru_hole oval (at 2.425 -20.97) (size 1.5 1.5) (drill 1.5) (layers *.Cu *.Mask)) | ||||
|   (model ${KIPRJMOD}/models/pico.step | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz -90 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,31 @@ | ||||
| (module R_0805_2012Metric_Pad1.15x1.40mm_HandSolder (layer F.Cu) (tedit 5B36C52B) | ||||
|   (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") | ||||
|   (tags "resistor handsolder") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -1.65) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value R_0805_2012Metric_Pad1.15x1.40mm_HandSolder (at 0 1.65) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -0.261252 0.71) (end 0.261252 0.71) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -0.261252 -0.71) (end 0.261252 -0.71) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1 0.6) (end -1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1 -0.6) (end 1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 -0.6) (end 1 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 0.6) (end -1 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 0) (layer F.Fab) | ||||
|     (effects (font (size 0.5 0.5) (thickness 0.08))) | ||||
|   ) | ||||
|   (pad 1 smd roundrect (at -1.025 0) (size 1.15 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.217391)) | ||||
|   (pad 2 smd roundrect (at 1.025 0) (size 1.15 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.217391)) | ||||
|   (model ${KISYS3DMOD}/Resistor_SMD.3dshapes/R_0805_2012Metric.wrl | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,26 @@ | ||||
| (module R_0805_2012Metric_Pad1.15x1.40mm_HandSolder_no_3d (layer F.Cu) (tedit 60B3129F) | ||||
|   (descr "Resistor SMD 0805 (2012 Metric), square (rectangular) end terminal, IPC_7351 nominal with elongated pad for handsoldering. (Body size source: https://docs.google.com/spreadsheets/d/1BsfQQcO9C6DZCsRaXUlFlo91Tg2WpOkGARC1WS5S8t0/edit?usp=sharing), generated with kicad-footprint-generator") | ||||
|   (tags "resistor handsolder") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -1.65) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value R_0805_2012Metric_Pad1.15x1.40mm_HandSolder_no_3d (at 0 1.65) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 1.85 0.95) (end -1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 1.85 -0.95) (end 1.85 0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.85 -0.95) (end 1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.85 0.95) (end -1.85 -0.95) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -0.261252 0.71) (end 0.261252 0.71) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -0.261252 -0.71) (end 0.261252 -0.71) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1 0.6) (end -1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1 -0.6) (end 1 0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 -0.6) (end 1 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1 0.6) (end -1 -0.6) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 0) (layer F.Fab) | ||||
|     (effects (font (size 0.5 0.5) (thickness 0.08))) | ||||
|   ) | ||||
|   (pad 1 smd roundrect (at -1.025 0) (size 1.15 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.217391)) | ||||
|   (pad 2 smd roundrect (at 1.025 0) (size 1.15 1.4) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.217391)) | ||||
| ) | ||||
| @@ -0,0 +1,41 @@ | ||||
| (module SOIC-8_3.9x4.9mm_P1.27mm (layer F.Cu) (tedit 60AE6DAD) | ||||
|   (descr "SOIC, 8 Pin (JEDEC MS-012AA, https://www.analog.com/media/en/package-pcb-resources/package/pkg_pdf/soic_narrow-r/r_8.pdf), generated with kicad-footprint-generator ipc_gullwing_generator.py") | ||||
|   (tags "SOIC SO") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -3.4) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value SOIC-8_3.9x4.9mm_P1.27mm (at 0 3.4) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 0 2.56) (end 1.95 2.56) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 0 2.56) (end -1.95 2.56) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 0 -2.56) (end 1.95 -2.56) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 0 -2.56) (end -1.95 -2.56) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -0.975 -2.45) (end 1.95 -2.45) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1.95 -2.45) (end 1.95 2.45) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1.95 2.45) (end -1.95 2.45) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.95 2.45) (end -1.95 -1.475) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.95 -1.475) (end -0.975 -2.45) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3.7 -2.7) (end -3.7 2.7) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -3.7 2.7) (end 3.7 2.7) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 3.7 2.7) (end 3.7 -2.7) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 3.7 -2.7) (end -3.7 -2.7) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_text user %R (at 0 0) (layer F.Fab) | ||||
|     (effects (font (size 0.98 0.98) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_circle (center -2.8 -3) (end -2.517157 -3) (layer F.SilkS) (width 0.35)) | ||||
|   (pad 1 smd roundrect (at -2.475 -1.905) (size 1.95 0.6) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 2 smd roundrect (at -2.475 -0.635) (size 1.95 0.6) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 3 smd roundrect (at -2.475 0.635) (size 1.95 0.6) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 4 smd roundrect (at -2.475 1.905) (size 1.95 0.6) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 5 smd roundrect (at 2.475 1.905) (size 1.95 0.6) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 6 smd roundrect (at 2.475 0.635) (size 1.95 0.6) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 7 smd roundrect (at 2.475 -0.635) (size 1.95 0.6) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (pad 8 smd roundrect (at 2.475 -1.905) (size 1.95 0.6) (layers F.Cu F.Paste F.Mask) (roundrect_rratio 0.25)) | ||||
|   (model ${KISYS3DMOD}/Package_SO.3dshapes/SOIC-8_3.9x4.9mm_P1.27mm.wrl | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,35 @@ | ||||
| (module SOT-23_hand_soldering (layer F.Cu) (tedit 60A8A025) | ||||
|   (descr "SOT-23, Standard") | ||||
|   (tags SOT-23) | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value SOT-23_hand_soldering (at 0 2.5) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 0.76 1.58) (end -0.7 1.58) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 0.76 -1.58) (end -1.4 -1.58) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.7 1.75) (end -1.7 -1.75) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 1.7 1.75) (end -1.7 1.75) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 1.7 -1.75) (end 1.7 1.75) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -1.7 -1.75) (end 1.7 -1.75) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 0.76 -1.58) (end 0.76 -0.65) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 0.76 1.58) (end 0.76 0.65) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -0.7 1.52) (end 0.7 1.52) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 0.7 -1.52) (end 0.7 1.52) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.7 -0.95) (end -0.15 -1.52) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.15 -1.52) (end 0.7 -1.52) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -0.7 -0.95) (end -0.7 1.5) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 0 90) (layer F.Fab) | ||||
|     (effects (font (size 0.5 0.5) (thickness 0.075))) | ||||
|   ) | ||||
|   (pad 1 smd rect (at -1.3 -0.95) (size 1.7 0.8) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at -1.3 0.95) (size 1.7 0.8) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 3 smd rect (at 1.3 0) (size 1.7 0.8) (layers F.Cu F.Paste F.Mask)) | ||||
|   (model ${KISYS3DMOD}/Package_TO_SOT_SMD.3dshapes/SOT-23.wrl | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,36 @@ | ||||
| (module SW_Push_1P1T_NO_CK_KMR2 (layer F.Cu) (tedit 5A02FC95) | ||||
|   (descr "CK components KMR2 tactile switch http://www.ckswitches.com/media/1479/kmr2.pdf") | ||||
|   (tags "tactile switch kmr2") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -2.45) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value SW_Push_1P1T_NO_CK_KMR2 (at 0 2.55) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start -2.2 0.05) (end -2.2 -0.05) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 2.2 -1.55) (end -2.2 -1.55) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -2.2 1.55) (end 2.2 1.55) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_circle (center 0 0) (end 0 0.8) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.8 1.8) (end -2.8 -1.8) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.8 1.8) (end -2.8 1.8) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.8 -1.8) (end 2.8 1.8) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -2.8 -1.8) (end 2.8 -1.8) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.2 0.05) (end 2.2 -0.05) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -2.1 1.4) (end -2.1 -1.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.1 1.4) (end -2.1 1.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.1 -1.4) (end 2.1 1.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.1 -1.4) (end 2.1 -1.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 -2.45) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 smd rect (at -2.05 -0.8) (size 0.9 1) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at -2.05 0.8) (size 0.9 1) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 1 smd rect (at 2.05 -0.8) (size 0.9 1) (layers F.Cu F.Paste F.Mask)) | ||||
|   (pad 2 smd rect (at 2.05 0.8) (size 0.9 1) (layers F.Cu F.Paste F.Mask)) | ||||
|   (model ${KISYS3DMOD}/Button_Switch_SMD.3dshapes/SW_Push_1P1T_NO_CK_KMR2.wrl | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,36 @@ | ||||
| (module SW_Push_1P1T_NO_CK_KMR2_double_size (layer F.Cu) (tedit 60A9DFF7) | ||||
|   (descr "CK components KMR2 tactile switch http://www.ckswitches.com/media/1479/kmr2.pdf") | ||||
|   (tags "tactile switch kmr2") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -2.45) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value SW_Push_1P1T_NO_CK_KMR2_double_size (at 0 2.55) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start -2.2 0.05) (end -2.2 -0.05) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 2.2 -1.55) (end -2.2 -1.55) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -2.2 1.55) (end 2.2 1.55) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_circle (center 0 0) (end 0 0.8) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.8 1.8) (end -2.8 -1.8) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.8 1.8) (end -2.8 1.8) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.8 -1.8) (end 2.8 1.8) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -2.8 -1.8) (end 2.8 -1.8) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.2 0.05) (end 2.2 -0.05) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -2.1 1.4) (end -2.1 -1.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.1 1.4) (end -2.1 1.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.1 -1.4) (end 2.1 1.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.1 -1.4) (end 2.1 -1.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 -2.45) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 thru_hole roundrect (at -2.05 -0.8) (size 1.6 1) (drill 0.4064) (layers *.Cu *.Mask) (roundrect_rratio 0.187)) | ||||
|   (pad 2 thru_hole roundrect (at -2.05 0.8) (size 1.6 1) (drill 0.4064) (layers *.Cu *.Mask) (roundrect_rratio 0.187)) | ||||
|   (pad 1 thru_hole roundrect (at 2.05 -0.8) (size 1.6 1) (drill 0.4064) (layers *.Cu *.Mask) (roundrect_rratio 0.187)) | ||||
|   (pad 2 thru_hole roundrect (at 2.05 0.8) (size 1.6 1) (drill 0.4064) (layers *.Cu *.Mask) (roundrect_rratio 0.187)) | ||||
|   (model ${KIPRJMOD}/models/KMR211GLFS.step | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz -90 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,31 @@ | ||||
| (module SW_Push_1P1T_NO_CK_KMR2_double_size_no_3d (layer F.Cu) (tedit 60B310A5) | ||||
|   (descr "CK components KMR2 tactile switch http://www.ckswitches.com/media/1479/kmr2.pdf") | ||||
|   (tags "tactile switch kmr2") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -2.45) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value SW_Push_1P1T_NO_CK_KMR2_double_size_no_3d (at 0 2.55) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start -2.1 -1.4) (end 2.1 -1.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.1 -1.4) (end 2.1 1.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.1 1.4) (end -2.1 1.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.1 1.4) (end -2.1 -1.4) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 2.2 0.05) (end 2.2 -0.05) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -2.8 -1.8) (end 2.8 -1.8) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.8 -1.8) (end 2.8 1.8) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 2.8 1.8) (end -2.8 1.8) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -2.8 1.8) (end -2.8 -1.8) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_circle (center 0 0) (end 0 0.8) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -2.2 1.55) (end 2.2 1.55) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 2.2 -1.55) (end -2.2 -1.55) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -2.2 0.05) (end -2.2 -0.05) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_text user %R (at 0 -2.45) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 thru_hole roundrect (at -2.05 -0.8) (size 1.6 1) (drill 0.4064) (layers *.Cu *.Mask) (roundrect_rratio 0.187)) | ||||
|   (pad 2 thru_hole roundrect (at -2.05 0.8) (size 1.6 1) (drill 0.4064) (layers *.Cu *.Mask) (roundrect_rratio 0.187)) | ||||
|   (pad 1 thru_hole roundrect (at 2.05 -0.8) (size 1.6 1) (drill 0.4064) (layers *.Cu *.Mask) (roundrect_rratio 0.187)) | ||||
|   (pad 2 thru_hole roundrect (at 2.05 0.8) (size 1.6 1) (drill 0.4064) (layers *.Cu *.Mask) (roundrect_rratio 0.187)) | ||||
| ) | ||||
| @@ -0,0 +1,41 @@ | ||||
| (module SW_SPST_CK_RS282G05A3 (layer F.Cu) (tedit 60A6DA4C) | ||||
|   (descr https://www.mouser.com/ds/2/60/RS-282G05A-SM_RT-1159762.pdf) | ||||
|   (tags "SPST button tactile switch") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -2.6) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value SW_SPST_CK_RS282G05A3 (at 0 3) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start 3 -1.8) (end 3 1.8) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3 -1.8) (end -3 1.8) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3 -1.8) (end 3 -1.8) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3 1.8) (end 3 1.8) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.5 -0.8) (end -1.5 0.8) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1.5 -0.8) (end 1.5 0.8) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.5 -0.8) (end 1.5 -0.8) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.5 0.8) (end 1.5 0.8) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -3.06 1.85) (end -3.06 -1.85) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 3.06 1.85) (end -3.06 1.85) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 3.06 -1.85) (end 3.06 1.85) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -3.06 -1.85) (end 3.06 -1.85) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.75 1) (end -1.75 -1) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1.75 1) (end -1.75 1) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start 1.75 -1) (end 1.75 1) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -1.75 -1) (end 1.75 -1) (layer F.Fab) (width 0.1)) | ||||
|   (fp_line (start -4.9 -2.05) (end 4.9 -2.05) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 4.9 -2.05) (end 4.9 2.05) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start 4.9 2.05) (end -4.9 2.05) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_line (start -4.9 2.05) (end -4.9 -2.05) (layer F.CrtYd) (width 0.05)) | ||||
|   (fp_text user %R (at 0 -2.6) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 2 thru_hole rect (at 4.1 0) (size 1.9 1.9) (drill 0.762) (layers *.Cu *.Mask F.Paste)) | ||||
|   (pad 1 thru_hole rect (at -4.1 0) (size 1.9 1.9) (drill 0.762) (layers *.Cu *.Mask F.Paste)) | ||||
|   (model ${KISYS3DMOD}/Button_Switch_SMD.3dshapes/SW_SPST_CK_RS282G05A3.wrl | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,21 @@ | ||||
| (module SolderWire-0.1sqmm_1x01_D0.4mm_OD1mm (layer F.Cu) (tedit 60A1F2C4) | ||||
|   (descr "Soldered wire connection, for a single 0.1 mm² wire, basic insulation, conductor diameter 0.4mm, outer diameter 1mm, size source Multi-Contact FLEXI-E 0.1 (https://ec.staubli.com/AcroFiles/Catalogues/TM_Cab-Main-11014119_(en)_hi.pdf), bend radius 3 times outer diameter, generated with kicad-footprint-generator") | ||||
|   (tags "connector wire 0.1sqmm") | ||||
|   (attr virtual) | ||||
|   (fp_text reference REF** (at -1.25 0) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15)) (justify right)) | ||||
|   ) | ||||
|   (fp_text value SolderWire-0.1sqmm_1x01_D0.4mm_OD1mm (at 0 2) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_circle (center 0 0) (end 0.5 0) (layer F.Fab) (width 0.1)) | ||||
|   (fp_text user %R (at 0 0) (layer F.Fab) | ||||
|     (effects (font (size 0.25 0.25) (thickness 0.04))) | ||||
|   ) | ||||
|   (pad 1 smd roundrect (at 0 0) (size 1.5 1.2) (layers F.Cu F.Mask) (roundrect_rratio 0.156)) | ||||
|   (model ${KISYS3DMOD}/Connector_Wire.3dshapes/SolderWire-0.1sqmm_1x01_D0.4mm_OD1mm.wrl | ||||
|     (at (xyz 0 0 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 0 0)) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,31 @@ | ||||
| (module connector_4pins_horizontal (layer F.Cu) (tedit 60A91CAD) | ||||
|   (descr "Through hole straight pin header, 1x04, 2.54mm pitch, single row") | ||||
|   (tags "Through hole pin header THT 1x04 2.54mm single row") | ||||
|   (fp_text reference REF** (at 0 -2.33) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value connector_4pins_horizontal (at 0.4191 11.19632) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_line (start -1.33 8.95) (end 1.33 8.95) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.33 1.27) (end -1.33 8.95) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start 1.33 1.27) (end 1.33 8.95) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -1.33 -1.33) (end -11 -1.33) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -11 -1.27) (end -11 8.89) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_line (start -11 8.95) (end -1.33 8.95) (layer F.SilkS) (width 0.12)) | ||||
|   (fp_text user %R (at 2.99974 3.22326 90) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 thru_hole rect (at 0 0) (size 1.7 1.7) (drill 0.889) (layers *.Cu F.Mask)) | ||||
|   (pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 0.889) (layers *.Cu F.Mask)) | ||||
|   (pad 3 thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 0.889) (layers *.Cu F.Mask)) | ||||
|   (pad 4 thru_hole oval (at 0 7.62) (size 1.7 1.7) (drill 0.889) (layers *.Cu F.Mask)) | ||||
|   (model ${KIPRJMOD}/models/kf2510_4p_right_angle.step | ||||
|     (offset (xyz 0.2 -3.8 0)) | ||||
|     (scale (xyz 1 1 1)) | ||||
|     (rotate (xyz 0 90 0)) | ||||
|   ) | ||||
| ) | ||||
							
								
								
									
										11
									
								
								kicad/stepper_motor_analyzer.pretty/null_footprint.kicad_mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								kicad/stepper_motor_analyzer.pretty/null_footprint.kicad_mod
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| (module null_footprint (layer F.Cu) (tedit 600A8C74) | ||||
|   (descr "SMT capacitor, aluminium electrolytic, 3x5.3, Cornell Dubilier Electronics ") | ||||
|   (tags "Capacitor Electrolytic") | ||||
|   (attr smd) | ||||
|   (fp_text reference REF** (at 0 -2.7) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value null_footprint (at 0 2.7) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
| ) | ||||
| @@ -0,0 +1,14 @@ | ||||
| (module testpoint_double_side (layer F.Cu) (tedit 60A680F7) | ||||
|   (descr "Through hole straight pin header, 1x01, 2.54mm pitch, single row") | ||||
|   (tags "Through hole pin header THT 1x01 2.54mm single row") | ||||
|   (fp_text reference REF** (at 0 -2.33) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value testpoint (at 0 2.33) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user %R (at 0 0 90) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 thru_hole roundrect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) (roundrect_rratio 0.25)) | ||||
| ) | ||||
| @@ -0,0 +1,14 @@ | ||||
| (module testpoint_one_side (layer F.Cu) (tedit 60A67FA7) | ||||
|   (descr "Through hole straight pin header, 1x01, 2.54mm pitch, single row") | ||||
|   (tags "Through hole pin header THT 1x01 2.54mm single row") | ||||
|   (fp_text reference REF** (at 0 -2.33) (layer F.SilkS) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text value testpoint (at 0 2.33) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (fp_text user %R (at 0 0 90) (layer F.Fab) | ||||
|     (effects (font (size 1 1) (thickness 0.15))) | ||||
|   ) | ||||
|   (pad 1 thru_hole roundrect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu F.Mask) (roundrect_rratio 0.25)) | ||||
| ) | ||||
							
								
								
									
										3
									
								
								kicad/sym-lib-table
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								kicad/sym-lib-table
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| (sym_lib_table | ||||
|   (lib (name stepper_motor_analyzer)(type Legacy)(uri ${KIPRJMOD}/stepper_motor_analyzer.lib)(options "")(descr "")) | ||||
| ) | ||||
							
								
								
									
										5
									
								
								platformio/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								platformio/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| .pio | ||||
| .vscode/.browse.c_cpp.db* | ||||
| .vscode/c_cpp_properties.json | ||||
| .vscode/launch.json | ||||
| .vscode/ipch | ||||
							
								
								
									
										7
									
								
								platformio/.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								platformio/.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| { | ||||
|     // See http://go.microsoft.com/fwlink/?LinkId=827846 | ||||
|     // for the documentation about the extensions.json format | ||||
|     "recommendations": [ | ||||
|         "platformio.platformio-ide" | ||||
|     ] | ||||
| } | ||||
							
								
								
									
										34
									
								
								platformio/TODO.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								platformio/TODO.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | ||||
|  | ||||
| * Switch to LVGL 8, when released. | ||||
|  | ||||
| * In the oscilloscope and phase charts, make the major division lines thicker. (Requires LVGL 8). | ||||
|  | ||||
|  | ||||
| ============= DONE | ||||
|  | ||||
| * In the home page, call the coils A, B, not 1, 2. | ||||
|  | ||||
| * Consider to set WR_HL in the first gpio color table. //Didn't work. Insufficient hold time. | ||||
|  | ||||
| * Increase tft driver render loop inline to 20 pixels (currently 8) | ||||
|  | ||||
| * Increase chart horizontal resolution (and update rate). Display resoluion is 400 pixels. | ||||
|  | ||||
| * Consider to double the update rate of the steps and retraction charts to have | ||||
| a more smooth graph animation. | ||||
|  | ||||
| * COnvert the java table generator to python | ||||
|  | ||||
| * When reentering the steps or retraction charts, clear them. | ||||
|  | ||||
| * Double the resolution of the capture buffer. | ||||
|  | ||||
| * Can we reduce the delays in the screen dump code? | ||||
|  | ||||
| * Consider to slightly increase the LVGL heap, just in case, since we have sufficient RAM.  // currently 32k, seems ok. | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										5
									
								
								platformio/include/pico/config_autogen.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								platformio/include/pico/config_autogen.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
|  | ||||
| /* SELECT BOARD */ | ||||
| #include "boards/pico.h"  | ||||
|  | ||||
|  | ||||
							
								
								
									
										42
									
								
								platformio/platformio.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								platformio/platformio.ini
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| ; PlatformIO Project Configuration File | ||||
| ; | ||||
| ;   Build options: build flags, source filter | ||||
| ;   Upload options: custom upload port, speed and extra flags | ||||
| ;   Library options: dependencies, extra library storages | ||||
| ;   Advanced options: extra scripting | ||||
| ; | ||||
| ; Please visit documentation for the other options and examples | ||||
| ; https://docs.platformio.org/page/projectconf.html | ||||
|  | ||||
| ; monitor_port = COM8 | ||||
| ; monitor_port = COM3 | ||||
|  | ||||
| ; USB Serial notes: | ||||
| ; 1. Use 'zadig' app to set 'Board CDC' device (id: 2E8A, 000A),  | ||||
| ;    to driver USB Serial (CDC) | ||||
| ; 2. Update the monitor_port COM port below to the actual number | ||||
| ;    the Pico is assinged to on your system.  | ||||
|  | ||||
| [env:raspberry-pi-pico] | ||||
| platform = wizio-pico | ||||
| board = raspberry-pi-pico | ||||
| framework = baremetal | ||||
| upload_protocol = picoprobe | ||||
| debug_tool = picoprobe | ||||
| monitor_port = COM3 | ||||
| ; This enables int64 printf. | ||||
| board_build.nano = disable | ||||
| build_flags =  | ||||
| 	-O3 | ||||
| 	-Wno-missing-field-initializers | ||||
| 	-D LV_CONF_INCLUDE_SIMPLE | ||||
| 	-I src | ||||
| 	-I "$PROJECT_CORE_DIR/packages/framework-wizio-pico/SDK111/hardware" | ||||
| 	-I "$PROJECT_CORE_DIR/packages/framework-wizio-pico/SDK/pico" | ||||
| 	-D PICO_STDIO_USB | ||||
| lib_deps =  | ||||
| 	lvgl/lvgl@7.9.1 | ||||
| lib_ignore = freertos, wiring | ||||
|  | ||||
|  | ||||
| ;monitor_speed = 115200 | ||||
							
								
								
									
										171
									
								
								platformio/src/acquisition/adc_dma.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										171
									
								
								platformio/src/acquisition/adc_dma.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,171 @@ | ||||
| // Implementation of the acquisition module. It uses the ADC/DMA | ||||
| // interrupts to process the ADC sampling. | ||||
|  | ||||
| // TODO: convert const naming style to kCammelCase. | ||||
|  | ||||
| #include "adc_dma.h" | ||||
|  | ||||
| #include "hardware/adc.h" | ||||
| #include "hardware/dma.h" | ||||
| #include "hardware/gpio.h" | ||||
| #include "hardware/irq.h" | ||||
| #include "hardware/pio.h" | ||||
| #include "io.h" | ||||
|  | ||||
| // Analyzer provides this callback. | ||||
| namespace analyzer { | ||||
| void isr_handle_one_sample(const uint16_t raw_v1, const uint16_t raw_v2); | ||||
| } | ||||
|  | ||||
| namespace adc_dma { | ||||
|  | ||||
| void disable_irq() { | ||||
|   irq_set_mask_enabled(1 << DMA_IRQ_0 | 1 << DMA_IRQ_1, false); | ||||
| } | ||||
|  | ||||
| void enable_irq() { | ||||
|   irq_set_mask_enabled(1 << DMA_IRQ_0 | 1 << DMA_IRQ_1, true); | ||||
| } | ||||
|  | ||||
| //------------------------------------------ | ||||
|  | ||||
| // void isr_handle_one_sample(const uint16_t raw_v1, const uint16_t raw_v2) ; | ||||
|  | ||||
| #define ADC_CHANNEL_1 0 | ||||
| #define ADC_CHANNEL_2 1 | ||||
|  | ||||
| // Assumed to have a sizeof() of exactly 4 bytes. | ||||
| struct SamplePair { | ||||
|   uint16_t v1; | ||||
|   uint16_t v2; | ||||
| }; | ||||
|  | ||||
| #define BUFFER_SIZE 512 | ||||
| #define BUFFER_DMA_CCOUNT BUFFER_SIZE * 2 | ||||
| #define BUFFER_SIZE_BYTES BUFFER_SIZE * 4 | ||||
| // Number of bytes for 512x4 bytes address. | ||||
| #define CAPTURE_RING_BITS 11 | ||||
|  | ||||
| // Aligned for the DMA ring address warp. | ||||
| static SamplePair capture_buf1[BUFFER_SIZE] | ||||
|     __attribute__((aligned(BUFFER_SIZE_BYTES))); | ||||
| static SamplePair capture_buf2[BUFFER_SIZE] | ||||
|     __attribute__((aligned(BUFFER_SIZE_BYTES))); | ||||
|  | ||||
| static uint dma_chan1; | ||||
| static uint dma_chan2; | ||||
|  | ||||
| static int irq_counter1 = 0; | ||||
| static int irq_counter2 = 0; | ||||
|  | ||||
| // Called when capture_buf1 is full. | ||||
| static void dma_handler1() { | ||||
|   LED1_ON; | ||||
|   irq_counter1++; | ||||
|   // Clear the interrupt request. | ||||
|   dma_hw->ints0 = 1u << dma_chan1; | ||||
|   for (int i = 0; i < BUFFER_SIZE; i++) { | ||||
|     analyzer::isr_handle_one_sample(capture_buf1[i].v1, capture_buf1[i].v2); | ||||
|   } | ||||
|   LED1_OFF; | ||||
| } | ||||
|  | ||||
| // Called when capture_buf2 is full. | ||||
| static void dma_handler2() { | ||||
|   LED1_ON; | ||||
|   irq_counter2++; | ||||
|   // Clear the interrupt request. | ||||
|   dma_hw->ints0 = 1u << dma_chan2; | ||||
|   for (int i = 0; i < BUFFER_SIZE; i++) { | ||||
|     analyzer::isr_handle_one_sample(capture_buf2[i].v1, capture_buf2[i].v2); | ||||
|   } | ||||
|   LED1_OFF; | ||||
| } | ||||
|  | ||||
| void setup() { | ||||
|   // -------ADC init | ||||
|  | ||||
|   // Make sure GPIO is high impedance, no pullups, etc. | ||||
|   adc_gpio_init(26 + ADC_CHANNEL_1); | ||||
|   adc_gpio_init(26 + ADC_CHANNEL_2); | ||||
|  | ||||
|   adc_init(); | ||||
|  | ||||
|   // This determines the first channel that will be scanned in | ||||
|   // each round robin cycle. | ||||
|   adc_select_input(ADC_CHANNEL_1); | ||||
|   // Alternating ADC sampling. | ||||
|   adc_set_round_robin(1 << ADC_CHANNEL_1 | 1 << ADC_CHANNEL_2); | ||||
|  | ||||
|   adc_fifo_setup(true,  // Write each completed conversion to the sample FIFO | ||||
|                  true,  // Enable DMA data request (DREQ) | ||||
|                  1,  // DREQ (and IRQ) asserted when at least 1 sample present | ||||
|                  true,  // Collect also the error bit. | ||||
|                  false  // Do not reduce samples to 8 bits. | ||||
|   ); | ||||
|  | ||||
|   // Determines the ADC sampling rate as a divisor of the basic | ||||
|   // 48Mhz clock. Set to have 100k sps on each of the two ADC | ||||
|   // channels. | ||||
|   adc_set_clkdiv(240 - 1);  // Total rate 200k sps. | ||||
|                             // adc_set_clkdiv(240 - 1);  // Total rate 200k sps. | ||||
|  | ||||
|   // --------------- DMA | ||||
|  | ||||
|   dma_chan1 = dma_claim_unused_channel(true); | ||||
|   dma_chan2 = dma_claim_unused_channel(true); | ||||
|  | ||||
|   // Chan 1 | ||||
|   { | ||||
|     dma_channel_config dma_config1 = dma_channel_get_default_config(dma_chan1); | ||||
|     channel_config_set_transfer_data_size(&dma_config1, DMA_SIZE_16); | ||||
|     channel_config_set_read_increment(&dma_config1, false);  // ADC fifo | ||||
|     channel_config_set_write_increment(&dma_config1, true);  // RAM buffer. | ||||
|     // channel_config_set_write_increment(&dma_config1, true); | ||||
|     // Wrap to begining of buffer. Assuming buffer is well alligned. | ||||
|     channel_config_set_ring(&dma_config1, true, CAPTURE_RING_BITS); | ||||
|     // Paced by ADC genered requests. | ||||
|     channel_config_set_dreq(&dma_config1, DREQ_ADC); | ||||
|     // When done, start the other channel. | ||||
|     channel_config_set_chain_to(&dma_config1, dma_chan2); | ||||
|     // Using interrupt channel 0 | ||||
|     dma_channel_set_irq0_enabled(dma_chan1, true); | ||||
|     // Set IRQ handler. | ||||
|     irq_set_exclusive_handler(DMA_IRQ_0, dma_handler1); | ||||
|     // irq_set_enabled(DMA_IRQ_0, true); | ||||
|     dma_channel_configure(dma_chan1, &dma_config1, | ||||
|                           capture_buf1,       // dst | ||||
|                           &adc_hw->fifo,      // src | ||||
|                           BUFFER_DMA_CCOUNT,  // transfer count | ||||
|                           true                // start immediately | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   // Chan 2 | ||||
|   { | ||||
|     dma_channel_config dma_config2 = dma_channel_get_default_config(dma_chan2); | ||||
|     channel_config_set_transfer_data_size(&dma_config2, DMA_SIZE_16); | ||||
|     channel_config_set_read_increment(&dma_config2, false); | ||||
|     channel_config_set_write_increment(&dma_config2, true); | ||||
|     channel_config_set_ring(&dma_config2, true, CAPTURE_RING_BITS); | ||||
|     channel_config_set_dreq(&dma_config2, DREQ_ADC); | ||||
|     // When done, start the other channel. | ||||
|     channel_config_set_chain_to(&dma_config2, dma_chan1); | ||||
|     dma_channel_set_irq1_enabled(dma_chan2, true); | ||||
|     irq_set_exclusive_handler(DMA_IRQ_1, dma_handler2); | ||||
|     //  irq_set_enabled(DMA_IRQ_1, true); | ||||
|     dma_channel_configure(dma_chan2, &dma_config2, | ||||
|                           capture_buf2,       // dst | ||||
|                           &adc_hw->fifo,      // src | ||||
|                           BUFFER_DMA_CCOUNT,  // transfer count | ||||
|                           false               // Do not start immediately | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   enable_irq(); | ||||
|  | ||||
|   // Start the ADC free run sampling. | ||||
|   adc_run(true); | ||||
| } | ||||
|  | ||||
| }  // namespace adc_dma | ||||
							
								
								
									
										12
									
								
								platformio/src/acquisition/adc_dma.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								platformio/src/acquisition/adc_dma.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
|  | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| namespace adc_dma { | ||||
| void disable_irq(); | ||||
| void enable_irq(); | ||||
| void setup(); | ||||
| }  // namespace adc_dma | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										539
									
								
								platformio/src/acquisition/analyzer.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										539
									
								
								platformio/src/acquisition/analyzer.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,539 @@ | ||||
| // Implementation of the acquisition module. It uses the ADC/DMA | ||||
| // interrupts to process the ADC sampling. | ||||
|  | ||||
| // TODO: convert const naming style to kCammelCase. | ||||
|  | ||||
| #include "analyzer.h" | ||||
|  | ||||
| #include <inttypes.h> | ||||
| #include <math.h> | ||||
| #include <stdint.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
|  | ||||
| #include <cmath> | ||||
|  | ||||
| #include "adc_dma.h" | ||||
| #include "filters.h" | ||||
| #include "hardware/pio.h" | ||||
| #include "io.h" | ||||
| #include "pico/stdlib.h" | ||||
|  | ||||
| namespace analyzer { | ||||
|  | ||||
| // Updated by sample_state(). This is the frozen copy of the | ||||
| // state the UI can use. | ||||
| static State sampled_state; | ||||
|  | ||||
| // 12 bit -> 4096 counts. 3.3V full scale. | ||||
| // 0.4V per AMP (for +/- 2.5A sensor). | ||||
| constexpr float kCountsPerAmp = 0.4 * 4096 / 3.3; | ||||
|  | ||||
| // We use this value to do multiplications instead of divisions. | ||||
| constexpr float kAmpsPerCount = 1 / kCountsPerAmp; | ||||
|  | ||||
| constexpr float kMilliampsPerCount = 1000 / kCountsPerAmp; | ||||
|  | ||||
| // Energized/non-energized histeresis limits in ADC | ||||
| // counts. | ||||
| // | ||||
| // TODO: specify here what the limits are as a percentage | ||||
| // of full current scale. | ||||
| // | ||||
| constexpr uint16_t kNonEnergizedThresholdCounts = 50; | ||||
| constexpr uint16_t kEnergizedThresholdCounts = 150; | ||||
|  | ||||
| // Allowed range for adc zero current offset setting. | ||||
| // This range is wider than needed and actual offsets | ||||
| // are expected to be around 1900. | ||||
| constexpr int kMinOffset = 0; | ||||
| constexpr int kMaxOffset = 4095;  // 12 bits max | ||||
|  | ||||
| enum CaptureState { | ||||
|   // Filling half of the capture buffer. | ||||
|   CAPTURE_HALF_FILL, | ||||
|   // Keep filling in a circular way until a trigger event | ||||
|   // or wait for trigger timeout. | ||||
|   CAPTURE_PRE_TRIGGER, | ||||
|   // Keep capture points as long as the capture buffer is not full. | ||||
|   CAPTURE_POST_TRIGER, | ||||
|   // Not capturing. ISR is guaranteed not to update or access the | ||||
|   // capture buffer. | ||||
|   CAPTURE_IDLE, | ||||
| }; | ||||
|  | ||||
| // This data is accessed from interrupt and thus should | ||||
| // be access from main() with IRQ disabled. | ||||
| struct IsrData { | ||||
|   // The state visible to users. | ||||
|   State state; | ||||
|  | ||||
|   // Current settings. | ||||
|   Settings settings; | ||||
|  | ||||
|   // Signal capturing. | ||||
|   // Time out for waiting for trigger in divided ADC ticks. | ||||
|   uint32_t capture_pre_trigger_items_left = 0; | ||||
|   // Factor to divide ADC ticks. Only every n'th sample is captured. | ||||
|   uint16_t capture_divider = 1; | ||||
|   // Up counter for capturing only every n'th samples. | ||||
|   uint16_t capture_divider_counter = 0; | ||||
|   // Capturing state. | ||||
|   CaptureState capture_state = CAPTURE_IDLE; | ||||
|   // The capture buffer itself. Updated by ISR when state != CAPTURE_IDLE | ||||
|   // and accessible by the UI (ready only) when state = CAPTURE_IDLE. | ||||
|   CaptureBuffer capture_buffer; | ||||
| }; | ||||
|  | ||||
| static IsrData isr_data; | ||||
|  | ||||
| extern bool is_capture_ready() { | ||||
|   CaptureState capture_state; | ||||
|   //__disable_irq(); | ||||
|   adc_dma::disable_irq(); | ||||
|   { capture_state = isr_data.capture_state; } | ||||
|   //__enable_irq(); | ||||
|   adc_dma::enable_irq(); | ||||
|   return capture_state == CAPTURE_IDLE; | ||||
| } | ||||
|  | ||||
| extern void start_capture(uint16_t divider) { | ||||
|   // Force a reasonable range. | ||||
|   if (divider < 1) { | ||||
|     divider = 1; | ||||
|   } else if (divider > 1000) { | ||||
|     divider = 1000; | ||||
|   } | ||||
|  | ||||
|   // Since capture may be active, data can co-access by ISR. | ||||
|   //__disable_irq(); | ||||
|   adc_dma::disable_irq(); | ||||
|   { | ||||
|     isr_data.capture_buffer.items.clear(); | ||||
|     isr_data.capture_buffer.trigger_found = false; | ||||
|     // This is an arbitrary number of divided samples that we allow | ||||
|     // to wait for a trigger event. | ||||
|     isr_data.capture_pre_trigger_items_left = 500; | ||||
|     isr_data.capture_divider = divider; | ||||
|     isr_data.capture_divider_counter = 0; | ||||
|     isr_data.capture_state = CAPTURE_HALF_FILL; | ||||
|   } | ||||
|   adc_dma::enable_irq(); | ||||
|   //__enable_irq(); | ||||
| } | ||||
|  | ||||
| // Users are expected to read this buffer only when capturing | ||||
| // is not active. | ||||
| const CaptureBuffer* capture_buffer() { return &isr_data.capture_buffer; } | ||||
|  | ||||
| const State* sample_state() { | ||||
|   adc_dma::disable_irq(); | ||||
|   sampled_state = isr_data.state; | ||||
|   adc_dma::enable_irq(); | ||||
|   return &sampled_state; | ||||
| } | ||||
|  | ||||
| void reset_state() { | ||||
|   adc_dma::disable_irq(); | ||||
|   { | ||||
|     isr_data.state.tick_count = 0; | ||||
|     isr_data.state.ticks_with_errors = 0; | ||||
|     isr_data.state.non_energized_count = 0; | ||||
|     isr_data.state.full_steps = 0; | ||||
|     isr_data.state.max_full_steps = 0; | ||||
|     isr_data.state.max_retraction_steps = 0; | ||||
|     isr_data.state.quadrature_errors = 0; | ||||
|     memset(isr_data.state.buckets, 0, sizeof(isr_data.state.buckets)); | ||||
|   } | ||||
|   adc_dma::enable_irq(); | ||||
| } | ||||
|  | ||||
| int adc_value_to_milliamps(int adc_value) { | ||||
|   return (int)(adc_value * kMilliampsPerCount); | ||||
| } | ||||
|  | ||||
| float adc_value_to_amps(int adc_value) { | ||||
|   return ((float)adc_value) * kAmpsPerCount; | ||||
| } | ||||
|  | ||||
| void calibrate_zeros() { | ||||
|   adc_dma::disable_irq(); | ||||
|   { | ||||
|     isr_data.settings.offset1 += isr_data.state.v1; | ||||
|     isr_data.settings.offset2 += isr_data.state.v2; | ||||
|   } | ||||
|   adc_dma::enable_irq(); | ||||
| } | ||||
|  | ||||
| void set_direction(bool reverse_direction) { | ||||
|   adc_dma::disable_irq(); | ||||
|   { isr_data.settings.reverse_direction = reverse_direction; } | ||||
|   adc_dma::enable_irq(); | ||||
| } | ||||
|  | ||||
| void get_settings(Settings* settings) { | ||||
|   adc_dma::disable_irq(); | ||||
|  | ||||
|   { *settings = isr_data.settings; } | ||||
|   adc_dma::enable_irq(); | ||||
| } | ||||
|  | ||||
| void dump_sampled_state() { | ||||
|   for (int i = 0; i < kNumHistogramBuckets; i++) { | ||||
|     // Int64 printing is broken. For now using int32. | ||||
|     printf("%llu ", sampled_state.buckets[i].total_ticks_in_steps); | ||||
|   } | ||||
|   printf("\n"); | ||||
|  | ||||
|   for (int i = 0; i < kNumHistogramBuckets; i++) { | ||||
|     const uint32_t avg_peak_current = | ||||
|         sampled_state.buckets[i].total_steps | ||||
|             ? (sampled_state.buckets[i].total_step_peak_currents / | ||||
|                sampled_state.buckets[i].total_steps) | ||||
|             : 0; | ||||
|     printf("%lu ", avg_peak_current); | ||||
|  | ||||
|   } | ||||
|   printf("\n"); | ||||
|  | ||||
|   // Remember last tick count and report only diff. | ||||
|   static uint32_t last_tick_count = 0; | ||||
|  | ||||
|   printf( | ||||
|       "[%6lu][er:%lu, %lu] [%5d, %5d] [en:%d %lu] s:%d/%d  steps:%d " | ||||
|       "max_steps:%d\n", | ||||
|       sampled_state.tick_count - last_tick_count, | ||||
|       sampled_state.quadrature_errors, sampled_state.ticks_with_errors, | ||||
|       sampled_state.v1, sampled_state.v2, sampled_state.is_energized, | ||||
|       sampled_state.non_energized_count, sampled_state.quadrant, | ||||
|       sampled_state.last_step_direction, sampled_state.full_steps, | ||||
|       sampled_state.max_full_steps); | ||||
|  | ||||
|   last_tick_count = sampled_state.tick_count; | ||||
| } | ||||
|  | ||||
| // Assumes that capture data is ready. | ||||
| void dump_capture(const CaptureBuffer& buffer) { | ||||
|   for (int i = 0; i < buffer.items.size(); i++) { | ||||
|     const analyzer::CaptureItem* item = buffer.items.get(i); | ||||
|     printf(" %hd %hd\n", item->v1, item->v2); | ||||
|     printf("%hd %hd\n", item->v2, item->v2); | ||||
|   } | ||||
| } | ||||
|  | ||||
| // Maybe add step's information to the histogram. | ||||
| // Called from isr on step transition. | ||||
| inline void isr_add_step_to_histogram(int quadrant, Direction entry_direction, | ||||
|                                       Direction exit_direction, | ||||
|                                       uint32_t ticks_in_step, | ||||
|                                       uint32_t max_current_in_step) { | ||||
|   // Ignoring this step if not entering and exiting this step in same forward or | ||||
|   // backward direction. | ||||
|   if (entry_direction != exit_direction || | ||||
|       entry_direction == UNKNOWN_DIRECTION) { | ||||
|     return; | ||||
|   } | ||||
|   uint32_t steps_per_sec = | ||||
|       TicksPerSecond / ticks_in_step;  // speed in steps per second | ||||
|   if (steps_per_sec < 10) { | ||||
|     return;  // ignore very slow steps as they dominate the time. | ||||
|   } | ||||
|   uint32_t bucket_index = steps_per_sec / kBucketStepsPerSecond; | ||||
|   if (bucket_index >= kNumHistogramBuckets) { | ||||
|     bucket_index = kNumHistogramBuckets - 1; | ||||
|   } | ||||
|   HistogramBucket& bucket = isr_data.state.buckets[bucket_index]; | ||||
|   bucket.total_ticks_in_steps += ticks_in_step; | ||||
|   bucket.total_step_peak_currents += max_current_in_step; | ||||
|   bucket.total_steps++; | ||||
| } | ||||
|  | ||||
| // A helper for the isr function. | ||||
| static inline void isr_update_full_steps_counter(int increment) { | ||||
|   State& isr_state = isr_data.state;  // alias | ||||
|  | ||||
|   // Update step counter based on direction setting. | ||||
|   if (isr_data.settings.reverse_direction) { | ||||
|     isr_state.full_steps -= increment; | ||||
|   } else { | ||||
|     isr_state.full_steps += increment; | ||||
|   } | ||||
|  | ||||
|   // Track retraction. | ||||
|   if (isr_state.full_steps > isr_state.max_full_steps) { | ||||
|     isr_state.max_full_steps = isr_state.full_steps; | ||||
|   } | ||||
|   const int retraction_steps = isr_state.max_full_steps - isr_state.full_steps; | ||||
|   if (retraction_steps > isr_state.max_retraction_steps) { | ||||
|     isr_state.max_retraction_steps = retraction_steps; | ||||
|   } | ||||
| } | ||||
|  | ||||
| // NOTE: these four filters slow the interrupt handling. Consider | ||||
| // to eliminate if free CPU time is insufficient. | ||||
| // | ||||
| // We use these filters to reduce internal and external noise. | ||||
| static filters::Adc12BitsLowPassFilter<700> signal1_filter; | ||||
| static filters::Adc12BitsLowPassFilter<400> signal2_filter; | ||||
|  | ||||
| // This function performs the bulk of the IRQ processing. It accepts | ||||
| // one pair of ADC1, ADC2 readings, analyzes it, and updates the | ||||
| // state. | ||||
| void isr_handle_one_sample(const uint16_t raw_v1, const uint16_t raw_v2) { | ||||
|   isr_data.state.tick_count++; | ||||
|  | ||||
|   //  ignore ADC readings that have the error flag set (bit 15); | ||||
|   if (raw_v1 & 0x8000 || raw_v2 & 0x8000) { | ||||
|     isr_data.state.ticks_with_errors++; | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|   // Fast filtering for signal analysis. | ||||
|   const int16_t v1 = | ||||
|       (uint16_t)signal1_filter.update(raw_v1) - isr_data.settings.offset1; | ||||
|   const int16_t v2 = | ||||
|       (uint16_t)signal2_filter.update(raw_v2) - isr_data.settings.offset2; | ||||
|  | ||||
|   // Slower filtering for display purposes. | ||||
|   isr_data.state.v1 = v1; | ||||
|   //   (uint16_t)display1_filter.update(raw_v1) - isr_data.settings.offset1; | ||||
|   isr_data.state.v2 = v2; | ||||
|   // (uint16_t)display2_filter.update(raw_v2) - isr_data.settings.offset2; | ||||
|  | ||||
|   // Handle signal capturing. | ||||
|   // Release: 220ns, Debug: 1100ns.  (TODO: update timing for current code) | ||||
|   if (isr_data.capture_state != CAPTURE_IDLE && | ||||
|       ++isr_data.capture_divider_counter >= isr_data.capture_divider) { | ||||
|     isr_data.capture_divider_counter = 0; | ||||
|     // Insert sample to circular buffer. If the buffer is full it drops | ||||
|     // the oldest item. | ||||
|     CaptureItem* capture_item = isr_data.capture_buffer.items.insert(); | ||||
|     capture_item->v1 = v1; | ||||
|     capture_item->v2 = v2; | ||||
|  | ||||
|     switch (isr_data.capture_state) { | ||||
|       // In this sate we blindly fill half of the buffer. | ||||
|       case CAPTURE_HALF_FILL: | ||||
|         if (isr_data.capture_buffer.items.size() >= kCaptureBufferSize / 2) { | ||||
|           isr_data.capture_state = CAPTURE_PRE_TRIGGER; | ||||
|         } | ||||
|         break; | ||||
|  | ||||
|       // In this state we look for a trigger event or a pre trigger timeout. | ||||
|       case CAPTURE_PRE_TRIGGER: { | ||||
|         // Pre trigger timeout? | ||||
|         if (isr_data.capture_pre_trigger_items_left == 0) { | ||||
|           // NOTE: if the buffer is full here we could terminate | ||||
|           // the capture but we go through the normal motions for simplicity. | ||||
|           isr_data.capture_state = CAPTURE_POST_TRIGER; | ||||
|           isr_data.capture_buffer.trigger_found = false; | ||||
|  | ||||
|           break; | ||||
|         } | ||||
|         isr_data.capture_pre_trigger_items_left--; | ||||
|         // Trigger event? | ||||
|         const int16_t old_v1 = | ||||
|             isr_data.capture_buffer.items.get_reversed(5)->v1; | ||||
|         // Trigger criteria, up crossing of the zero line. | ||||
|         if (old_v1 < -10 && v1 >= 0) { | ||||
|           // Keep only the last n/2 points. This way the trigger will | ||||
|           // always be in the middle of the buffer. | ||||
|           isr_data.capture_buffer.items.keep_at_most(kCaptureBufferSize / 2); | ||||
|           isr_data.capture_buffer.trigger_found = true; | ||||
|           isr_data.capture_state = CAPTURE_POST_TRIGER; | ||||
|         } | ||||
|       } break; | ||||
|  | ||||
|       // In this state we blindly fill the rest of the buffer. | ||||
|       case CAPTURE_POST_TRIGER: | ||||
|         if (isr_data.capture_buffer.items.is_full()) { | ||||
|           isr_data.capture_state = CAPTURE_IDLE; | ||||
|         } | ||||
|         break; | ||||
|  | ||||
|       // This one is non reachable but makes the compiler happy. | ||||
|       case CAPTURE_IDLE: | ||||
|         break; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   // Determine if motor is energized. Use hysteresis for noise rejection. | ||||
|   // Release: 200ns. Debug: 600ns. | ||||
|   const bool old_is_energized = isr_data.state.is_energized; | ||||
|   const uint16_t total_current = abs(v1) + abs(v2); | ||||
|   // Using histeresis. | ||||
|   const uint16_t energized_threshold = old_is_energized | ||||
|                                            ? kNonEnergizedThresholdCounts | ||||
|                                            : kEnergizedThresholdCounts; | ||||
|   const bool new_is_energized = total_current > energized_threshold; | ||||
|   isr_data.state.is_energized = new_is_energized; | ||||
|  | ||||
|   // Handle the non energized case. No need to go through quadrant decoding. | ||||
|   // Pass through case: Release: 110ns. Debug: 250ns. | ||||
|   if (!new_is_energized) { | ||||
|     if (old_is_energized) { | ||||
|       // Becoming non energized. | ||||
|       isr_data.state.last_step_direction = UNKNOWN_DIRECTION; | ||||
|       isr_data.state.ticks_in_step = 0; | ||||
|       isr_data.state.non_energized_count++; | ||||
|     } else { | ||||
|       // Staying non energized | ||||
|     } | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|   // Here when energized. Decode quadrant. | ||||
|   // We now go through a decision tree to collect the new quadrant, sector | ||||
|   // and max coil current. Optimized for speed. See quadrants_plot.png | ||||
|   // for the individual cases. | ||||
|   uint8_t new_quadrant;  // set below to [0, 3] | ||||
|   uint32_t max_current;  // max coil current | ||||
|   if (v2 >= 0) { | ||||
|     if (v1 >= 0) { | ||||
|       // Quadrant 0: v1 > 0, V2 > 0. | ||||
|       new_quadrant = 0; | ||||
|       if (v1 > v2) { | ||||
|         // Sector 0: v1 > 0, V2 > 0.  |v1| > |v2| | ||||
|         max_current = v1; | ||||
|       } else { | ||||
|         // Sector 1: v1 > 0, V2 > 0.  |v1| < |v2| | ||||
|         max_current = v2; | ||||
|       } | ||||
|     } else { | ||||
|       // Quadrant 1: v1 < 0, V2 > 0 | ||||
|       new_quadrant = 1; | ||||
|       if (-v1 < v2) { | ||||
|         // Sector 2: v1 < 0, V2 > 0.  |v1| < |v2| | ||||
|         max_current = v2; | ||||
|       } else { | ||||
|         // Sector 3: v1 < 0, V2 > 0.  |v1| > |v2| | ||||
|         max_current = -v1; | ||||
|       } | ||||
|     } | ||||
|   } else { | ||||
|     if (v1 < 0) { | ||||
|       // Quadrant 2:  v1 < 0, V2 < 0 | ||||
|       new_quadrant = 2; | ||||
|       if (-v1 > -v2) { | ||||
|         // Sector 4: v1 < 0, V2 < 0.  |v1| > |v2| | ||||
|         max_current = -v1; | ||||
|       } else { | ||||
|         // Sector 5: v1 < 0, V2 < 0.  |v1| < |v2| | ||||
|         max_current = -v2; | ||||
|       } | ||||
|     } else { | ||||
|       // Quadrant 3 v1 > 0, V2 < 0. | ||||
|       new_quadrant = 3; | ||||
|       if (v1 < -v2) { | ||||
|         // Sector 6: v1 > 1, V2 < 0.  |v1| < |v2| | ||||
|         max_current = -v2; | ||||
|       } else { | ||||
|         // Sector 7: v1 > 0, V2 < 0.  |v1| > |v2| | ||||
|         max_current = v1; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   const int8_t old_quadrant = isr_data.state.quadrant;  // old quadrant [0, 3] | ||||
|   isr_data.state.quadrant = new_quadrant; | ||||
|  | ||||
|   // Track quadrant transitions and update steps. | ||||
|   if (!old_is_energized) { | ||||
|     // Case 1: motor just became energized. Direction is still not known. | ||||
|     isr_data.state.last_step_direction = UNKNOWN_DIRECTION; | ||||
|     isr_data.state.ticks_in_step = 1; | ||||
|     isr_data.state.max_current_in_step = max_current; | ||||
|   } else if (new_quadrant == old_quadrant) { | ||||
|     // Case 2: staying in same quadrant | ||||
|     isr_data.state.ticks_in_step++; | ||||
|     if (max_current > isr_data.state.max_current_in_step) { | ||||
|       isr_data.state.max_current_in_step = max_current; | ||||
|     } | ||||
|   } else if (new_quadrant == ((old_quadrant + 1) & 0x03)) { | ||||
|     // Case 3: Moved to next quadrant. | ||||
|     isr_update_full_steps_counter(+1); | ||||
|     isr_add_step_to_histogram(old_quadrant, isr_data.state.last_step_direction, | ||||
|                               FORWARD, isr_data.state.ticks_in_step, | ||||
|                               isr_data.state.max_current_in_step); | ||||
|     isr_data.state.last_step_direction = FORWARD; | ||||
|     isr_data.state.ticks_in_step = 1; | ||||
|     isr_data.state.max_current_in_step = max_current; | ||||
|   } else if (new_quadrant == ((old_quadrant - 1) & 0x03)) { | ||||
|     // Case 4: Moved to previous quadrant. | ||||
|     isr_update_full_steps_counter(-1); | ||||
|     isr_add_step_to_histogram(old_quadrant, isr_data.state.last_step_direction, | ||||
|                               BACKWARD, isr_data.state.ticks_in_step, | ||||
|                               isr_data.state.max_current_in_step); | ||||
|     isr_data.state.last_step_direction = BACKWARD; | ||||
|     isr_data.state.ticks_in_step = 1; | ||||
|     isr_data.state.max_current_in_step = max_current; | ||||
|   } else { | ||||
|     // Case 5: Invalid quadrant transition. | ||||
|     // TODO: count and report errors. | ||||
|     isr_data.state.quadrature_errors++; | ||||
|     isr_data.state.last_step_direction = UNKNOWN_DIRECTION; | ||||
|     isr_data.state.ticks_in_step = 1; | ||||
|     isr_data.state.max_current_in_step = max_current; | ||||
|   } | ||||
| } | ||||
|  | ||||
| // Force a valid settings offset value. | ||||
| static int clip_offset(int requested_offset) { | ||||
|   return MAX(kMinOffset, MIN(kMaxOffset, requested_offset)); | ||||
| } | ||||
|  | ||||
| // Call once on program initialization. | ||||
| void setup(const Settings& settings) { | ||||
|   isr_data.settings = settings; | ||||
|   isr_data.settings.offset1 = clip_offset(isr_data.settings.offset1); | ||||
|   isr_data.settings.offset2 = clip_offset(isr_data.settings.offset2); | ||||
|  | ||||
| } | ||||
|  | ||||
| // This involves floating point operations and thus slow. Do not | ||||
| // call from the interrupt routine. | ||||
| double state_steps(const State& state) { | ||||
|   // If not energized, we can't compute fractional steps. | ||||
|   if (!state.is_energized) { | ||||
|     return state.full_steps; | ||||
|   } | ||||
|  | ||||
|   // Compute fractional stept. We use the abs() to avoid | ||||
|   // the discontinuity near -180 degrees. It provides better safety with | ||||
|   // the non determinism of floating point values. | ||||
|   // Range is in [0, PI]; | ||||
|   const double abs_radians = abs(atan2(state.v2, state.v1)); | ||||
|  | ||||
|   // Rel radians in [-PI/4, PI/4]. | ||||
|   double rel_radians = 0; | ||||
|   switch (state.quadrant) { | ||||
|     case 0: | ||||
|       rel_radians = abs_radians - (M_PI / 4); | ||||
|       break; | ||||
|     case 1: | ||||
|       rel_radians = abs_radians - (3 * M_PI / 4); | ||||
|       break; | ||||
|     case 2: | ||||
|       rel_radians = (3 * M_PI / 4) - abs_radians; | ||||
|       break; | ||||
|     case 3: | ||||
|       rel_radians = (M_PI / 4) - abs_radians; | ||||
|       break; | ||||
|   } | ||||
|  | ||||
|   // Fraction is in the range [-0.5, 0.5] | ||||
|   const double fraction = rel_radians * (2 / M_PI); | ||||
|  | ||||
|   // NOTE: this is a little bit hacky since we don't know the direction | ||||
|   // flag setting at the time this sample was captured but should | ||||
|   // be good enough for now. | ||||
|   // | ||||
|   // TODO: record last direction flag value in the state. | ||||
|   const double result = isr_data.settings.reverse_direction | ||||
|                             ? state.full_steps - fraction | ||||
|                             : state.full_steps + fraction; | ||||
|  | ||||
|   return result; | ||||
| } | ||||
|  | ||||
| }  // namespace analyzer | ||||
							
								
								
									
										209
									
								
								platformio/src/acquisition/analyzer.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										209
									
								
								platformio/src/acquisition/analyzer.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,209 @@ | ||||
| // API of the data acquisition and step decoder modole. This | ||||
| // is the core of the analysis software and it is executed | ||||
| // in an interrupt routine so handle with care. | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include <string.h> | ||||
|  | ||||
| #include "misc/circular_buffer.h" | ||||
|  | ||||
| namespace analyzer { | ||||
|  | ||||
| // This is set in the Settings page. | ||||
| struct Settings { | ||||
|   // Offsets to substract from the ADC readings to have zero reading | ||||
|   // when the current is zero. | ||||
|   // Typically around ~1900 which represents ~1.5V from the current | ||||
|   // sensors. | ||||
|   int16_t offset1; | ||||
|   int16_t offset2; | ||||
|   // If true, reverse interpretation of forward/backward movement. | ||||
|   bool reverse_direction; | ||||
| }; | ||||
|  | ||||
| // Number of pairs of ADC readings to capture for the signal | ||||
| // capture page. The capture logic try to sync a ch1 up crossing | ||||
| // the horizontal axis at the middle of the buffer for better | ||||
| // visual stability. | ||||
| // | ||||
| // NOTE: 400 is the width in pixels of the active plot area of the  | ||||
| // osciloscope screen. | ||||
| constexpr int kCaptureBufferSize = 400; | ||||
|  | ||||
| // A single captured item. These are the signed values | ||||
| // in adc counts of the two curent sensing channels. | ||||
| struct CaptureItem { | ||||
|   int16_t v1; | ||||
|   int16_t v2; | ||||
| }; | ||||
|  | ||||
| // A circular array with captured signals. Using a circular array | ||||
| // allow to capture data before the trigger point. | ||||
| typedef CircularBuffer<CaptureItem, kCaptureBufferSize> CaptureItems; | ||||
|  | ||||
| struct CaptureBuffer { | ||||
|   CaptureItems items; | ||||
|   // True if capture was synced with a trigger event where | ||||
|   // v1 crossed up the y=0 axis. The triggered event, if available | ||||
|   // is always at a fixed index at the middle of the returned | ||||
|   // captured range. | ||||
|   bool trigger_found; | ||||
| }; | ||||
|  | ||||
| // Step direction classification. The analyzer classifies | ||||
| // each step with these gats. Unknown happens when direction | ||||
| // is reversed at the middle of the step. | ||||
| enum Direction { UNKNOWN_DIRECTION, FORWARD, BACKWARD }; | ||||
|  | ||||
| // Sampling rate is 100K sampling-pairs/sec. Should match ADC | ||||
| // settings. | ||||
| constexpr int kUsecsPerTick = 10; | ||||
| constexpr int TicksPerSecond = 1000000 / kUsecsPerTick; | ||||
|  | ||||
| // Max range when using ACS70331EESATR-2P5B3 (+/- 2.5A). | ||||
| // Double this if using the +/-5A current sensor variant. | ||||
| constexpr int kMaxMilliamps = 2500; | ||||
|  | ||||
| // Number of histogram buckets, each bucket represents | ||||
| // a band of step speeds. | ||||
| constexpr int kNumHistogramBuckets = 20; | ||||
|  | ||||
| // Each histogram bucket represents a speed range of 100 | ||||
| // steps/sec, starting from zero. Overflow speeds are | ||||
| // aggregated in the last bucket. | ||||
| const int kBucketStepsPerSecond = 100; | ||||
|  | ||||
| // A single histogram bucket | ||||
| struct HistogramBucket { | ||||
|   // Total adc samples in steps in this bucket. This is a proxy | ||||
|   // for time spent in this speed range. | ||||
|   uint64_t total_ticks_in_steps; | ||||
|   // Total max step current in ADC counts. Used | ||||
|   // to compute the average max coil curent by speed range. | ||||
|   uint64_t total_step_peak_currents; | ||||
|   // Total steps. This is a proxy for the distance (in either direction) | ||||
|   // done in this speed range. | ||||
|   uint32_t total_steps; | ||||
| }; | ||||
|  | ||||
| // Analyzer data, other than the capture buffer, this is the only | ||||
| // data that the interrupt routine updates. | ||||
| struct State { | ||||
|  public: | ||||
|   State() | ||||
|       : tick_count(0), | ||||
|         ticks_with_errors(0), | ||||
|         v1(0), | ||||
|         v2(0), | ||||
|         is_energized(false), | ||||
|         non_energized_count(0), | ||||
|         quadrant(0), | ||||
|         full_steps(0), | ||||
|         max_full_steps(0), | ||||
|         max_retraction_steps(0), | ||||
|         quadrature_errors(0), | ||||
|         last_step_direction(UNKNOWN_DIRECTION), | ||||
|         max_current_in_step(0), | ||||
|         ticks_in_step(0) { | ||||
|     memset(buckets, 0, sizeof(buckets)); | ||||
|   } | ||||
|  | ||||
|   // Number of ADC pair samples since last data reset. This is | ||||
|   // also a proxy for the time passed. | ||||
|   uint32_t tick_count; | ||||
|  | ||||
|   // Ticks that have the ADC error flag set. | ||||
|   uint32_t ticks_with_errors; | ||||
|  | ||||
|   // Signed current values in ADC count units.  When the stepper | ||||
|   // is energized, these values together with the quadrant value | ||||
|   // below can be used to compute the fractional step value. | ||||
|   int16_t v1; | ||||
|   int16_t v2; | ||||
|   // True if the coils are energized. Determined by the sum | ||||
|   // of the absolute values of a pair of current readings. | ||||
|   bool is_energized; | ||||
|   // Number of times coils were de-energized. | ||||
|   uint32_t non_energized_count; | ||||
|   // The last quadrant in the range [0, 3]. Each quadrant | ||||
|   // represents a full step. See quadrants_plot.png  for details. | ||||
|   int8_t quadrant; | ||||
|   // Total (forward - backward) full steps. This is a proxy | ||||
|   // for the overall distance. | ||||
|   int full_steps; | ||||
|   // Max value of full_steps so far. Momentary retraction value | ||||
|   // can computed as max(0, max_full_steps - full_steps). | ||||
|   int max_full_steps; | ||||
|   // Max value of (max_full_steps - full_steps). As of Jan 2021, | ||||
|   // this value is computed but not used. | ||||
|   int max_retraction_steps; | ||||
|   // Total invalid quadrant transitions. Typically indicate | ||||
|   // distorted stepper coils current patterns. | ||||
|   uint32_t quadrature_errors; | ||||
|   // Direction of last step. Used to track step speed. | ||||
|   Direction last_step_direction; | ||||
|   // Max current detected in the current step. We use a single non signed | ||||
|   // value for both channels. in ADC count units. | ||||
|   uint32_t max_current_in_step; | ||||
|   // Time in current state, in 100Khz ADC sample time unit. This is | ||||
|   // a proxy for the time in current step. | ||||
|   uint32_t ticks_in_step; | ||||
|   // Histogram, each bucket represents a range of steps/sec speeds. | ||||
|   HistogramBucket buckets[kNumHistogramBuckets]; | ||||
| }; | ||||
|  | ||||
| // Helpers for dumping aquisition sate. For debugging. | ||||
| extern void dump_sampled_state(); | ||||
| extern void dump_capture(const CaptureBuffer& capture_buffer); | ||||
|  | ||||
| // Called once during program initialization. | ||||
| extern void setup(const Settings& settings); | ||||
|  | ||||
| // Is the capture buffer full with data? | ||||
| extern bool is_capture_ready(); | ||||
|  | ||||
| // Call after is_capture_ready() is true, to get a pointer | ||||
| // to internal buffer that contains the capture buffer. | ||||
| extern const CaptureBuffer* capture_buffer(); | ||||
|  | ||||
| // Start signal capturing. Data is ready when | ||||
| // is_capture_ready() is true. If divider > 1, | ||||
| // only one every n ADC samples is captured. | ||||
| extern void start_capture(uint16_t divider); | ||||
|  | ||||
| // Sample the current state to an internal buffer and return | ||||
| // a const ptr to it. Values are stable until next time | ||||
| // this method is called. | ||||
| extern const State* sample_state(); | ||||
|  | ||||
| // Clears state data. This resets counters, min/max values, | ||||
| // histograms, etc. | ||||
| extern void reset_state(); | ||||
|  | ||||
| // Return the steps value of the given state. | ||||
| extern double state_steps(const State& state); | ||||
|  | ||||
| // Convert adc value to milliamps. | ||||
| extern int adc_value_to_milliamps(int adc_value); | ||||
|  | ||||
| // Convert adc value to amps. | ||||
| extern float adc_value_to_amps(int adc_value); | ||||
|  | ||||
| // Call this when the coil current is known to be zero to | ||||
| // calibrate the internal offset1 and offset2. | ||||
| extern void calibrate_zeros(); | ||||
|  | ||||
| // Set direction. This updates the current settings. | ||||
| // Controlled by the user in the Settings screen. | ||||
| extern void set_direction(bool reverse_direction); | ||||
|  | ||||
| // Return a copy of the internal settings. Used after | ||||
| // calibrate_zeros() to save the current settings in the | ||||
| // EEPROM. | ||||
| extern void get_settings(Settings* settings); | ||||
|  | ||||
| // @@@ Temp | ||||
| extern void dump_dma_state(); | ||||
|  | ||||
| }  // namespace analyzer | ||||
							
								
								
									
										32
									
								
								platformio/src/acquisition/filters.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								platformio/src/acquisition/filters.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| // First order ADC 12 bit signal filter. | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
|  | ||||
| namespace filters { | ||||
|  | ||||
| // K is in the range (0, 1024). The higher the value of K, the more the filter | ||||
| // smooths the signal. We use fixed point integers for efficiency since | ||||
| // this filter is used by the acquisition interrut routine. | ||||
| template <uint32_t k> | ||||
| class Adc12BitsLowPassFilter { | ||||
|  public: | ||||
|   Adc12BitsLowPassFilter() : scaled_12bit_value_(0 << 10) {} | ||||
|  | ||||
|   // Accepts the new 12 bit sample and update and return the new | ||||
|   // filter values. | ||||
|   inline uint16_t update(uint16_t adc_12_bit_value) { | ||||
|     const uint32_t t1 = ((uint32_t)adc_12_bit_value) << 10; | ||||
|     const uint32_t t2 = (t1 * (1024 - k)) + (scaled_12bit_value_ * k); | ||||
|     scaled_12bit_value_ = t2 >> 10; | ||||
|     return scaled_12bit_value_ >> 10; | ||||
|   } | ||||
|  | ||||
|  private: | ||||
|   // The current value with additional 10 bits representing the | ||||
|   // fraction. | ||||
|   uint32_t scaled_12bit_value_;  // current value << 10 | ||||
| }; | ||||
|  | ||||
| }  // namespace filters | ||||
|  | ||||
							
								
								
									
										40
									
								
								platformio/src/acquisition/speed_tracker.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								platformio/src/acquisition/speed_tracker.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
|  | ||||
| #include "speed_tracker.h" | ||||
|  | ||||
|  | ||||
| bool SpeedTracker::track(const analyzer::State* state, | ||||
|                          int32_t* steps_per_sec) { | ||||
|   // First time after reset. | ||||
|   if (!has_data_) { | ||||
|     last_ticks_ = state->tick_count; | ||||
|     last_steps_ = state->full_steps; | ||||
|     has_data_ = true; | ||||
|     return false; | ||||
|   } | ||||
|  | ||||
|   // This should behave well even when tick_count overflows. | ||||
|   const uint32_t delta_ticks = state->tick_count - last_ticks_; | ||||
|  | ||||
|   // Expects a minimal time tick interval for good accuracy. | ||||
|   if (delta_ticks < (analyzer::TicksPerSecond / 25)) { | ||||
|     return false; | ||||
|   } | ||||
|  | ||||
|   const int32_t delta_steps = state->full_steps - last_steps_; | ||||
|  | ||||
|  | ||||
|   // Hopefully this can't overflow. Otherwise need to compute | ||||
|   // using int64. | ||||
|   if (steps_per_sec != nullptr) { | ||||
|     const int32_t result = | ||||
|         (delta_steps * (int32_t)analyzer::TicksPerSecond) / (int32_t)delta_ticks; | ||||
|     *steps_per_sec = result; | ||||
|   } | ||||
|  | ||||
|   // Update for next cycle. | ||||
|   last_ticks_ = state->tick_count; | ||||
|   last_steps_ = state->full_steps; | ||||
|  | ||||
|   return true; | ||||
| } | ||||
|  | ||||
							
								
								
									
										27
									
								
								platformio/src/acquisition/speed_tracker.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								platformio/src/acquisition/speed_tracker.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| // A simple class to track time and steps pairs and compute the  | ||||
| // speed. | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include "analyzer.h" | ||||
|  | ||||
| class SpeedTracker { | ||||
|  public: | ||||
|   SpeedTracker() { reset(); } | ||||
|  | ||||
|   void reset() { | ||||
|     has_data_ = false; | ||||
|     last_ticks_ = 0; | ||||
|     last_steps_ = 0; | ||||
|   } | ||||
|  | ||||
|   // Track a new sample. If a pulse/sec estimation is available | ||||
|   // it returns true and updates *steps_per_sec. 'steps_per_sec' | ||||
|   // is ignored if null. | ||||
|   bool track(const analyzer::State* state, int32_t* steps_per_sec); | ||||
|  | ||||
|  private: | ||||
|   bool has_data_; | ||||
|   uint32_t last_ticks_; | ||||
|   int32_t last_steps_; | ||||
| }; | ||||
							
								
								
									
										23
									
								
								platformio/src/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								platformio/src/config.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #define VERSION_STRING "1.0.0" | ||||
|  | ||||
| namespace config { | ||||
|  | ||||
| // FOR DEBUGGING ONLY. Turn off for official releases. | ||||
|  | ||||
| // For UI debugging. Shows the boundaries of UI objects. | ||||
| static constexpr bool kDebugBackgrounds = false; | ||||
|  | ||||
| // For developers only. When enabled, clicking on a | ||||
| // screen's title field pauses the program and sends a screen | ||||
| // dump over the USB/serial connection. | ||||
| static constexpr bool kEnableScreenshots = false; | ||||
|  | ||||
| // For developers only. When enabled, clicking on a | ||||
| // screen's title field generates a Debug event for that | ||||
| // screen. | ||||
| static constexpr bool kEnableDebugEvents = false; | ||||
|  | ||||
| }  // namespace config | ||||
							
								
								
									
										295
									
								
								platformio/src/display/gpio_tables.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										295
									
								
								platformio/src/display/gpio_tables.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,295 @@ | ||||
| #include "gpio_tables.h" | ||||
|  | ||||
| // Tables were generated using the gpio_tables_generator.py script. | ||||
|  | ||||
| namespace gpio_tables { | ||||
|  | ||||
| // PIN MAP: | ||||
| //   WR     1 | ||||
| // | ||||
| //   D0    28 | ||||
| //   D1     3 | ||||
| //   D2     6 | ||||
| //   D3     7 | ||||
| //   D4     8 | ||||
| //   D5     9 | ||||
| //   D6    22 | ||||
| //   D7    10 | ||||
| //   D8    11 | ||||
| //   D9    21 | ||||
| //   D10   12 | ||||
| //   D11   20 | ||||
| //   D12   13 | ||||
| //   D13   19 | ||||
| //   D14   14 | ||||
| //   D15   18 | ||||
|  | ||||
| const uint32_t gpio_direct_set_table[] = { | ||||
|     0x00000000, 0x10000000, 0x00000008, 0x10000008,  // 0x00 - 0x03 | ||||
|     0x00000040, 0x10000040, 0x00000048, 0x10000048,  // 0x04 - 0x07 | ||||
|     0x00000080, 0x10000080, 0x00000088, 0x10000088,  // 0x08 - 0x0b | ||||
|     0x000000c0, 0x100000c0, 0x000000c8, 0x100000c8,  // 0x0c - 0x0f | ||||
|     0x00000100, 0x10000100, 0x00000108, 0x10000108,  // 0x10 - 0x13 | ||||
|     0x00000140, 0x10000140, 0x00000148, 0x10000148,  // 0x14 - 0x17 | ||||
|     0x00000180, 0x10000180, 0x00000188, 0x10000188,  // 0x18 - 0x1b | ||||
|     0x000001c0, 0x100001c0, 0x000001c8, 0x100001c8,  // 0x1c - 0x1f | ||||
|     0x00000200, 0x10000200, 0x00000208, 0x10000208,  // 0x20 - 0x23 | ||||
|     0x00000240, 0x10000240, 0x00000248, 0x10000248,  // 0x24 - 0x27 | ||||
|     0x00000280, 0x10000280, 0x00000288, 0x10000288,  // 0x28 - 0x2b | ||||
|     0x000002c0, 0x100002c0, 0x000002c8, 0x100002c8,  // 0x2c - 0x2f | ||||
|     0x00000300, 0x10000300, 0x00000308, 0x10000308,  // 0x30 - 0x33 | ||||
|     0x00000340, 0x10000340, 0x00000348, 0x10000348,  // 0x34 - 0x37 | ||||
|     0x00000380, 0x10000380, 0x00000388, 0x10000388,  // 0x38 - 0x3b | ||||
|     0x000003c0, 0x100003c0, 0x000003c8, 0x100003c8,  // 0x3c - 0x3f | ||||
|     0x00400000, 0x10400000, 0x00400008, 0x10400008,  // 0x40 - 0x43 | ||||
|     0x00400040, 0x10400040, 0x00400048, 0x10400048,  // 0x44 - 0x47 | ||||
|     0x00400080, 0x10400080, 0x00400088, 0x10400088,  // 0x48 - 0x4b | ||||
|     0x004000c0, 0x104000c0, 0x004000c8, 0x104000c8,  // 0x4c - 0x4f | ||||
|     0x00400100, 0x10400100, 0x00400108, 0x10400108,  // 0x50 - 0x53 | ||||
|     0x00400140, 0x10400140, 0x00400148, 0x10400148,  // 0x54 - 0x57 | ||||
|     0x00400180, 0x10400180, 0x00400188, 0x10400188,  // 0x58 - 0x5b | ||||
|     0x004001c0, 0x104001c0, 0x004001c8, 0x104001c8,  // 0x5c - 0x5f | ||||
|     0x00400200, 0x10400200, 0x00400208, 0x10400208,  // 0x60 - 0x63 | ||||
|     0x00400240, 0x10400240, 0x00400248, 0x10400248,  // 0x64 - 0x67 | ||||
|     0x00400280, 0x10400280, 0x00400288, 0x10400288,  // 0x68 - 0x6b | ||||
|     0x004002c0, 0x104002c0, 0x004002c8, 0x104002c8,  // 0x6c - 0x6f | ||||
|     0x00400300, 0x10400300, 0x00400308, 0x10400308,  // 0x70 - 0x73 | ||||
|     0x00400340, 0x10400340, 0x00400348, 0x10400348,  // 0x74 - 0x77 | ||||
|     0x00400380, 0x10400380, 0x00400388, 0x10400388,  // 0x78 - 0x7b | ||||
|     0x004003c0, 0x104003c0, 0x004003c8, 0x104003c8,  // 0x7c - 0x7f | ||||
|     0x00000400, 0x10000400, 0x00000408, 0x10000408,  // 0x80 - 0x83 | ||||
|     0x00000440, 0x10000440, 0x00000448, 0x10000448,  // 0x84 - 0x87 | ||||
|     0x00000480, 0x10000480, 0x00000488, 0x10000488,  // 0x88 - 0x8b | ||||
|     0x000004c0, 0x100004c0, 0x000004c8, 0x100004c8,  // 0x8c - 0x8f | ||||
|     0x00000500, 0x10000500, 0x00000508, 0x10000508,  // 0x90 - 0x93 | ||||
|     0x00000540, 0x10000540, 0x00000548, 0x10000548,  // 0x94 - 0x97 | ||||
|     0x00000580, 0x10000580, 0x00000588, 0x10000588,  // 0x98 - 0x9b | ||||
|     0x000005c0, 0x100005c0, 0x000005c8, 0x100005c8,  // 0x9c - 0x9f | ||||
|     0x00000600, 0x10000600, 0x00000608, 0x10000608,  // 0xa0 - 0xa3 | ||||
|     0x00000640, 0x10000640, 0x00000648, 0x10000648,  // 0xa4 - 0xa7 | ||||
|     0x00000680, 0x10000680, 0x00000688, 0x10000688,  // 0xa8 - 0xab | ||||
|     0x000006c0, 0x100006c0, 0x000006c8, 0x100006c8,  // 0xac - 0xaf | ||||
|     0x00000700, 0x10000700, 0x00000708, 0x10000708,  // 0xb0 - 0xb3 | ||||
|     0x00000740, 0x10000740, 0x00000748, 0x10000748,  // 0xb4 - 0xb7 | ||||
|     0x00000780, 0x10000780, 0x00000788, 0x10000788,  // 0xb8 - 0xbb | ||||
|     0x000007c0, 0x100007c0, 0x000007c8, 0x100007c8,  // 0xbc - 0xbf | ||||
|     0x00400400, 0x10400400, 0x00400408, 0x10400408,  // 0xc0 - 0xc3 | ||||
|     0x00400440, 0x10400440, 0x00400448, 0x10400448,  // 0xc4 - 0xc7 | ||||
|     0x00400480, 0x10400480, 0x00400488, 0x10400488,  // 0xc8 - 0xcb | ||||
|     0x004004c0, 0x104004c0, 0x004004c8, 0x104004c8,  // 0xcc - 0xcf | ||||
|     0x00400500, 0x10400500, 0x00400508, 0x10400508,  // 0xd0 - 0xd3 | ||||
|     0x00400540, 0x10400540, 0x00400548, 0x10400548,  // 0xd4 - 0xd7 | ||||
|     0x00400580, 0x10400580, 0x00400588, 0x10400588,  // 0xd8 - 0xdb | ||||
|     0x004005c0, 0x104005c0, 0x004005c8, 0x104005c8,  // 0xdc - 0xdf | ||||
|     0x00400600, 0x10400600, 0x00400608, 0x10400608,  // 0xe0 - 0xe3 | ||||
|     0x00400640, 0x10400640, 0x00400648, 0x10400648,  // 0xe4 - 0xe7 | ||||
|     0x00400680, 0x10400680, 0x00400688, 0x10400688,  // 0xe8 - 0xeb | ||||
|     0x004006c0, 0x104006c0, 0x004006c8, 0x104006c8,  // 0xec - 0xef | ||||
|     0x00400700, 0x10400700, 0x00400708, 0x10400708,  // 0xf0 - 0xf3 | ||||
|     0x00400740, 0x10400740, 0x00400748, 0x10400748,  // 0xf4 - 0xf7 | ||||
|     0x00400780, 0x10400780, 0x00400788, 0x10400788,  // 0xf8 - 0xfb | ||||
|     0x004007c0, 0x104007c0, 0x004007c8, 0x104007c8,  // 0xfc - 0xff | ||||
| }; | ||||
|  | ||||
| const uint32_t gpio_direct_clr_table[] = { | ||||
|     0x107c7fca, 0x007c7fca, 0x107c7fc2, 0x007c7fc2,  // 0x00 - 0x03 | ||||
|     0x107c7f8a, 0x007c7f8a, 0x107c7f82, 0x007c7f82,  // 0x04 - 0x07 | ||||
|     0x107c7f4a, 0x007c7f4a, 0x107c7f42, 0x007c7f42,  // 0x08 - 0x0b | ||||
|     0x107c7f0a, 0x007c7f0a, 0x107c7f02, 0x007c7f02,  // 0x0c - 0x0f | ||||
|     0x107c7eca, 0x007c7eca, 0x107c7ec2, 0x007c7ec2,  // 0x10 - 0x13 | ||||
|     0x107c7e8a, 0x007c7e8a, 0x107c7e82, 0x007c7e82,  // 0x14 - 0x17 | ||||
|     0x107c7e4a, 0x007c7e4a, 0x107c7e42, 0x007c7e42,  // 0x18 - 0x1b | ||||
|     0x107c7e0a, 0x007c7e0a, 0x107c7e02, 0x007c7e02,  // 0x1c - 0x1f | ||||
|     0x107c7dca, 0x007c7dca, 0x107c7dc2, 0x007c7dc2,  // 0x20 - 0x23 | ||||
|     0x107c7d8a, 0x007c7d8a, 0x107c7d82, 0x007c7d82,  // 0x24 - 0x27 | ||||
|     0x107c7d4a, 0x007c7d4a, 0x107c7d42, 0x007c7d42,  // 0x28 - 0x2b | ||||
|     0x107c7d0a, 0x007c7d0a, 0x107c7d02, 0x007c7d02,  // 0x2c - 0x2f | ||||
|     0x107c7cca, 0x007c7cca, 0x107c7cc2, 0x007c7cc2,  // 0x30 - 0x33 | ||||
|     0x107c7c8a, 0x007c7c8a, 0x107c7c82, 0x007c7c82,  // 0x34 - 0x37 | ||||
|     0x107c7c4a, 0x007c7c4a, 0x107c7c42, 0x007c7c42,  // 0x38 - 0x3b | ||||
|     0x107c7c0a, 0x007c7c0a, 0x107c7c02, 0x007c7c02,  // 0x3c - 0x3f | ||||
|     0x103c7fca, 0x003c7fca, 0x103c7fc2, 0x003c7fc2,  // 0x40 - 0x43 | ||||
|     0x103c7f8a, 0x003c7f8a, 0x103c7f82, 0x003c7f82,  // 0x44 - 0x47 | ||||
|     0x103c7f4a, 0x003c7f4a, 0x103c7f42, 0x003c7f42,  // 0x48 - 0x4b | ||||
|     0x103c7f0a, 0x003c7f0a, 0x103c7f02, 0x003c7f02,  // 0x4c - 0x4f | ||||
|     0x103c7eca, 0x003c7eca, 0x103c7ec2, 0x003c7ec2,  // 0x50 - 0x53 | ||||
|     0x103c7e8a, 0x003c7e8a, 0x103c7e82, 0x003c7e82,  // 0x54 - 0x57 | ||||
|     0x103c7e4a, 0x003c7e4a, 0x103c7e42, 0x003c7e42,  // 0x58 - 0x5b | ||||
|     0x103c7e0a, 0x003c7e0a, 0x103c7e02, 0x003c7e02,  // 0x5c - 0x5f | ||||
|     0x103c7dca, 0x003c7dca, 0x103c7dc2, 0x003c7dc2,  // 0x60 - 0x63 | ||||
|     0x103c7d8a, 0x003c7d8a, 0x103c7d82, 0x003c7d82,  // 0x64 - 0x67 | ||||
|     0x103c7d4a, 0x003c7d4a, 0x103c7d42, 0x003c7d42,  // 0x68 - 0x6b | ||||
|     0x103c7d0a, 0x003c7d0a, 0x103c7d02, 0x003c7d02,  // 0x6c - 0x6f | ||||
|     0x103c7cca, 0x003c7cca, 0x103c7cc2, 0x003c7cc2,  // 0x70 - 0x73 | ||||
|     0x103c7c8a, 0x003c7c8a, 0x103c7c82, 0x003c7c82,  // 0x74 - 0x77 | ||||
|     0x103c7c4a, 0x003c7c4a, 0x103c7c42, 0x003c7c42,  // 0x78 - 0x7b | ||||
|     0x103c7c0a, 0x003c7c0a, 0x103c7c02, 0x003c7c02,  // 0x7c - 0x7f | ||||
|     0x107c7bca, 0x007c7bca, 0x107c7bc2, 0x007c7bc2,  // 0x80 - 0x83 | ||||
|     0x107c7b8a, 0x007c7b8a, 0x107c7b82, 0x007c7b82,  // 0x84 - 0x87 | ||||
|     0x107c7b4a, 0x007c7b4a, 0x107c7b42, 0x007c7b42,  // 0x88 - 0x8b | ||||
|     0x107c7b0a, 0x007c7b0a, 0x107c7b02, 0x007c7b02,  // 0x8c - 0x8f | ||||
|     0x107c7aca, 0x007c7aca, 0x107c7ac2, 0x007c7ac2,  // 0x90 - 0x93 | ||||
|     0x107c7a8a, 0x007c7a8a, 0x107c7a82, 0x007c7a82,  // 0x94 - 0x97 | ||||
|     0x107c7a4a, 0x007c7a4a, 0x107c7a42, 0x007c7a42,  // 0x98 - 0x9b | ||||
|     0x107c7a0a, 0x007c7a0a, 0x107c7a02, 0x007c7a02,  // 0x9c - 0x9f | ||||
|     0x107c79ca, 0x007c79ca, 0x107c79c2, 0x007c79c2,  // 0xa0 - 0xa3 | ||||
|     0x107c798a, 0x007c798a, 0x107c7982, 0x007c7982,  // 0xa4 - 0xa7 | ||||
|     0x107c794a, 0x007c794a, 0x107c7942, 0x007c7942,  // 0xa8 - 0xab | ||||
|     0x107c790a, 0x007c790a, 0x107c7902, 0x007c7902,  // 0xac - 0xaf | ||||
|     0x107c78ca, 0x007c78ca, 0x107c78c2, 0x007c78c2,  // 0xb0 - 0xb3 | ||||
|     0x107c788a, 0x007c788a, 0x107c7882, 0x007c7882,  // 0xb4 - 0xb7 | ||||
|     0x107c784a, 0x007c784a, 0x107c7842, 0x007c7842,  // 0xb8 - 0xbb | ||||
|     0x107c780a, 0x007c780a, 0x107c7802, 0x007c7802,  // 0xbc - 0xbf | ||||
|     0x103c7bca, 0x003c7bca, 0x103c7bc2, 0x003c7bc2,  // 0xc0 - 0xc3 | ||||
|     0x103c7b8a, 0x003c7b8a, 0x103c7b82, 0x003c7b82,  // 0xc4 - 0xc7 | ||||
|     0x103c7b4a, 0x003c7b4a, 0x103c7b42, 0x003c7b42,  // 0xc8 - 0xcb | ||||
|     0x103c7b0a, 0x003c7b0a, 0x103c7b02, 0x003c7b02,  // 0xcc - 0xcf | ||||
|     0x103c7aca, 0x003c7aca, 0x103c7ac2, 0x003c7ac2,  // 0xd0 - 0xd3 | ||||
|     0x103c7a8a, 0x003c7a8a, 0x103c7a82, 0x003c7a82,  // 0xd4 - 0xd7 | ||||
|     0x103c7a4a, 0x003c7a4a, 0x103c7a42, 0x003c7a42,  // 0xd8 - 0xdb | ||||
|     0x103c7a0a, 0x003c7a0a, 0x103c7a02, 0x003c7a02,  // 0xdc - 0xdf | ||||
|     0x103c79ca, 0x003c79ca, 0x103c79c2, 0x003c79c2,  // 0xe0 - 0xe3 | ||||
|     0x103c798a, 0x003c798a, 0x103c7982, 0x003c7982,  // 0xe4 - 0xe7 | ||||
|     0x103c794a, 0x003c794a, 0x103c7942, 0x003c7942,  // 0xe8 - 0xeb | ||||
|     0x103c790a, 0x003c790a, 0x103c7902, 0x003c7902,  // 0xec - 0xef | ||||
|     0x103c78ca, 0x003c78ca, 0x103c78c2, 0x003c78c2,  // 0xf0 - 0xf3 | ||||
|     0x103c788a, 0x003c788a, 0x103c7882, 0x003c7882,  // 0xf4 - 0xf7 | ||||
|     0x103c784a, 0x003c784a, 0x103c7842, 0x003c7842,  // 0xf8 - 0xfb | ||||
|     0x103c780a, 0x003c780a, 0x103c7802, 0x003c7802,  // 0xfc - 0xff | ||||
| }; | ||||
|  | ||||
| const uint32_t gpio_color_set_table[] = { | ||||
|     0x00000000, 0x00000088, 0x10000140, 0x100001c8,  // 0x00 - 0x03 | ||||
|     0x00000a00, 0x00000a88, 0x10000b40, 0x10000bc8,  // 0x04 - 0x07 | ||||
|     0x00600000, 0x00600088, 0x10600140, 0x106001c8,  // 0x08 - 0x0b | ||||
|     0x00600a00, 0x00600a88, 0x10600b40, 0x10600bc8,  // 0x0c - 0x0f | ||||
|     0x00001400, 0x00001488, 0x10001540, 0x100015c8,  // 0x10 - 0x13 | ||||
|     0x00001e00, 0x00001e88, 0x10001f40, 0x10001fc8,  // 0x14 - 0x17 | ||||
|     0x00601400, 0x00601488, 0x10601540, 0x106015c8,  // 0x18 - 0x1b | ||||
|     0x00601e00, 0x00601e88, 0x10601f40, 0x10601fc8,  // 0x1c - 0x1f | ||||
|     0x00080000, 0x00080088, 0x10080140, 0x100801c8,  // 0x20 - 0x23 | ||||
|     0x00080a00, 0x00080a88, 0x10080b40, 0x10080bc8,  // 0x24 - 0x27 | ||||
|     0x00680000, 0x00680088, 0x10680140, 0x106801c8,  // 0x28 - 0x2b | ||||
|     0x00680a00, 0x00680a88, 0x10680b40, 0x10680bc8,  // 0x2c - 0x2f | ||||
|     0x00081400, 0x00081488, 0x10081540, 0x100815c8,  // 0x30 - 0x33 | ||||
|     0x00081e00, 0x00081e88, 0x10081f40, 0x10081fc8,  // 0x34 - 0x37 | ||||
|     0x00681400, 0x00681488, 0x10681540, 0x106815c8,  // 0x38 - 0x3b | ||||
|     0x00681e00, 0x00681e88, 0x10681f40, 0x10681fc8,  // 0x3c - 0x3f | ||||
|     0x00104000, 0x00104088, 0x10104140, 0x101041c8,  // 0x40 - 0x43 | ||||
|     0x00104a00, 0x00104a88, 0x10104b40, 0x10104bc8,  // 0x44 - 0x47 | ||||
|     0x00704000, 0x00704088, 0x10704140, 0x107041c8,  // 0x48 - 0x4b | ||||
|     0x00704a00, 0x00704a88, 0x10704b40, 0x10704bc8,  // 0x4c - 0x4f | ||||
|     0x00105400, 0x00105488, 0x10105540, 0x101055c8,  // 0x50 - 0x53 | ||||
|     0x00105e00, 0x00105e88, 0x10105f40, 0x10105fc8,  // 0x54 - 0x57 | ||||
|     0x00705400, 0x00705488, 0x10705540, 0x107055c8,  // 0x58 - 0x5b | ||||
|     0x00705e00, 0x00705e88, 0x10705f40, 0x10705fc8,  // 0x5c - 0x5f | ||||
|     0x00184000, 0x00184088, 0x10184140, 0x101841c8,  // 0x60 - 0x63 | ||||
|     0x00184a00, 0x00184a88, 0x10184b40, 0x10184bc8,  // 0x64 - 0x67 | ||||
|     0x00784000, 0x00784088, 0x10784140, 0x107841c8,  // 0x68 - 0x6b | ||||
|     0x00784a00, 0x00784a88, 0x10784b40, 0x10784bc8,  // 0x6c - 0x6f | ||||
|     0x00185400, 0x00185488, 0x10185540, 0x101855c8,  // 0x70 - 0x73 | ||||
|     0x00185e00, 0x00185e88, 0x10185f40, 0x10185fc8,  // 0x74 - 0x77 | ||||
|     0x00785400, 0x00785488, 0x10785540, 0x107855c8,  // 0x78 - 0x7b | ||||
|     0x00785e00, 0x00785e88, 0x10785f40, 0x10785fc8,  // 0x7c - 0x7f | ||||
|     0x00042000, 0x00042088, 0x10042140, 0x100421c8,  // 0x80 - 0x83 | ||||
|     0x00042a00, 0x00042a88, 0x10042b40, 0x10042bc8,  // 0x84 - 0x87 | ||||
|     0x00642000, 0x00642088, 0x10642140, 0x106421c8,  // 0x88 - 0x8b | ||||
|     0x00642a00, 0x00642a88, 0x10642b40, 0x10642bc8,  // 0x8c - 0x8f | ||||
|     0x00043400, 0x00043488, 0x10043540, 0x100435c8,  // 0x90 - 0x93 | ||||
|     0x00043e00, 0x00043e88, 0x10043f40, 0x10043fc8,  // 0x94 - 0x97 | ||||
|     0x00643400, 0x00643488, 0x10643540, 0x106435c8,  // 0x98 - 0x9b | ||||
|     0x00643e00, 0x00643e88, 0x10643f40, 0x10643fc8,  // 0x9c - 0x9f | ||||
|     0x000c2000, 0x000c2088, 0x100c2140, 0x100c21c8,  // 0xa0 - 0xa3 | ||||
|     0x000c2a00, 0x000c2a88, 0x100c2b40, 0x100c2bc8,  // 0xa4 - 0xa7 | ||||
|     0x006c2000, 0x006c2088, 0x106c2140, 0x106c21c8,  // 0xa8 - 0xab | ||||
|     0x006c2a00, 0x006c2a88, 0x106c2b40, 0x106c2bc8,  // 0xac - 0xaf | ||||
|     0x000c3400, 0x000c3488, 0x100c3540, 0x100c35c8,  // 0xb0 - 0xb3 | ||||
|     0x000c3e00, 0x000c3e88, 0x100c3f40, 0x100c3fc8,  // 0xb4 - 0xb7 | ||||
|     0x006c3400, 0x006c3488, 0x106c3540, 0x106c35c8,  // 0xb8 - 0xbb | ||||
|     0x006c3e00, 0x006c3e88, 0x106c3f40, 0x106c3fc8,  // 0xbc - 0xbf | ||||
|     0x00146000, 0x00146088, 0x10146140, 0x101461c8,  // 0xc0 - 0xc3 | ||||
|     0x00146a00, 0x00146a88, 0x10146b40, 0x10146bc8,  // 0xc4 - 0xc7 | ||||
|     0x00746000, 0x00746088, 0x10746140, 0x107461c8,  // 0xc8 - 0xcb | ||||
|     0x00746a00, 0x00746a88, 0x10746b40, 0x10746bc8,  // 0xcc - 0xcf | ||||
|     0x00147400, 0x00147488, 0x10147540, 0x101475c8,  // 0xd0 - 0xd3 | ||||
|     0x00147e00, 0x00147e88, 0x10147f40, 0x10147fc8,  // 0xd4 - 0xd7 | ||||
|     0x00747400, 0x00747488, 0x10747540, 0x107475c8,  // 0xd8 - 0xdb | ||||
|     0x00747e00, 0x00747e88, 0x10747f40, 0x10747fc8,  // 0xdc - 0xdf | ||||
|     0x001c6000, 0x001c6088, 0x101c6140, 0x101c61c8,  // 0xe0 - 0xe3 | ||||
|     0x001c6a00, 0x001c6a88, 0x101c6b40, 0x101c6bc8,  // 0xe4 - 0xe7 | ||||
|     0x007c6000, 0x007c6088, 0x107c6140, 0x107c61c8,  // 0xe8 - 0xeb | ||||
|     0x007c6a00, 0x007c6a88, 0x107c6b40, 0x107c6bc8,  // 0xec - 0xef | ||||
|     0x001c7400, 0x001c7488, 0x101c7540, 0x101c75c8,  // 0xf0 - 0xf3 | ||||
|     0x001c7e00, 0x001c7e88, 0x101c7f40, 0x101c7fc8,  // 0xf4 - 0xf7 | ||||
|     0x007c7400, 0x007c7488, 0x107c7540, 0x107c75c8,  // 0xf8 - 0xfb | ||||
|     0x007c7e00, 0x007c7e88, 0x107c7f40, 0x107c7fc8,  // 0xfc - 0xff | ||||
| }; | ||||
|  | ||||
| const uint32_t gpio_color_clr_table[] = { | ||||
|     0x107c7fca, 0x107c7f42, 0x007c7e8a, 0x007c7e02,  // 0x00 - 0x03 | ||||
|     0x107c75ca, 0x107c7542, 0x007c748a, 0x007c7402,  // 0x04 - 0x07 | ||||
|     0x101c7fca, 0x101c7f42, 0x001c7e8a, 0x001c7e02,  // 0x08 - 0x0b | ||||
|     0x101c75ca, 0x101c7542, 0x001c748a, 0x001c7402,  // 0x0c - 0x0f | ||||
|     0x107c6bca, 0x107c6b42, 0x007c6a8a, 0x007c6a02,  // 0x10 - 0x13 | ||||
|     0x107c61ca, 0x107c6142, 0x007c608a, 0x007c6002,  // 0x14 - 0x17 | ||||
|     0x101c6bca, 0x101c6b42, 0x001c6a8a, 0x001c6a02,  // 0x18 - 0x1b | ||||
|     0x101c61ca, 0x101c6142, 0x001c608a, 0x001c6002,  // 0x1c - 0x1f | ||||
|     0x10747fca, 0x10747f42, 0x00747e8a, 0x00747e02,  // 0x20 - 0x23 | ||||
|     0x107475ca, 0x10747542, 0x0074748a, 0x00747402,  // 0x24 - 0x27 | ||||
|     0x10147fca, 0x10147f42, 0x00147e8a, 0x00147e02,  // 0x28 - 0x2b | ||||
|     0x101475ca, 0x10147542, 0x0014748a, 0x00147402,  // 0x2c - 0x2f | ||||
|     0x10746bca, 0x10746b42, 0x00746a8a, 0x00746a02,  // 0x30 - 0x33 | ||||
|     0x107461ca, 0x10746142, 0x0074608a, 0x00746002,  // 0x34 - 0x37 | ||||
|     0x10146bca, 0x10146b42, 0x00146a8a, 0x00146a02,  // 0x38 - 0x3b | ||||
|     0x101461ca, 0x10146142, 0x0014608a, 0x00146002,  // 0x3c - 0x3f | ||||
|     0x106c3fca, 0x106c3f42, 0x006c3e8a, 0x006c3e02,  // 0x40 - 0x43 | ||||
|     0x106c35ca, 0x106c3542, 0x006c348a, 0x006c3402,  // 0x44 - 0x47 | ||||
|     0x100c3fca, 0x100c3f42, 0x000c3e8a, 0x000c3e02,  // 0x48 - 0x4b | ||||
|     0x100c35ca, 0x100c3542, 0x000c348a, 0x000c3402,  // 0x4c - 0x4f | ||||
|     0x106c2bca, 0x106c2b42, 0x006c2a8a, 0x006c2a02,  // 0x50 - 0x53 | ||||
|     0x106c21ca, 0x106c2142, 0x006c208a, 0x006c2002,  // 0x54 - 0x57 | ||||
|     0x100c2bca, 0x100c2b42, 0x000c2a8a, 0x000c2a02,  // 0x58 - 0x5b | ||||
|     0x100c21ca, 0x100c2142, 0x000c208a, 0x000c2002,  // 0x5c - 0x5f | ||||
|     0x10643fca, 0x10643f42, 0x00643e8a, 0x00643e02,  // 0x60 - 0x63 | ||||
|     0x106435ca, 0x10643542, 0x0064348a, 0x00643402,  // 0x64 - 0x67 | ||||
|     0x10043fca, 0x10043f42, 0x00043e8a, 0x00043e02,  // 0x68 - 0x6b | ||||
|     0x100435ca, 0x10043542, 0x0004348a, 0x00043402,  // 0x6c - 0x6f | ||||
|     0x10642bca, 0x10642b42, 0x00642a8a, 0x00642a02,  // 0x70 - 0x73 | ||||
|     0x106421ca, 0x10642142, 0x0064208a, 0x00642002,  // 0x74 - 0x77 | ||||
|     0x10042bca, 0x10042b42, 0x00042a8a, 0x00042a02,  // 0x78 - 0x7b | ||||
|     0x100421ca, 0x10042142, 0x0004208a, 0x00042002,  // 0x7c - 0x7f | ||||
|     0x10785fca, 0x10785f42, 0x00785e8a, 0x00785e02,  // 0x80 - 0x83 | ||||
|     0x107855ca, 0x10785542, 0x0078548a, 0x00785402,  // 0x84 - 0x87 | ||||
|     0x10185fca, 0x10185f42, 0x00185e8a, 0x00185e02,  // 0x88 - 0x8b | ||||
|     0x101855ca, 0x10185542, 0x0018548a, 0x00185402,  // 0x8c - 0x8f | ||||
|     0x10784bca, 0x10784b42, 0x00784a8a, 0x00784a02,  // 0x90 - 0x93 | ||||
|     0x107841ca, 0x10784142, 0x0078408a, 0x00784002,  // 0x94 - 0x97 | ||||
|     0x10184bca, 0x10184b42, 0x00184a8a, 0x00184a02,  // 0x98 - 0x9b | ||||
|     0x101841ca, 0x10184142, 0x0018408a, 0x00184002,  // 0x9c - 0x9f | ||||
|     0x10705fca, 0x10705f42, 0x00705e8a, 0x00705e02,  // 0xa0 - 0xa3 | ||||
|     0x107055ca, 0x10705542, 0x0070548a, 0x00705402,  // 0xa4 - 0xa7 | ||||
|     0x10105fca, 0x10105f42, 0x00105e8a, 0x00105e02,  // 0xa8 - 0xab | ||||
|     0x101055ca, 0x10105542, 0x0010548a, 0x00105402,  // 0xac - 0xaf | ||||
|     0x10704bca, 0x10704b42, 0x00704a8a, 0x00704a02,  // 0xb0 - 0xb3 | ||||
|     0x107041ca, 0x10704142, 0x0070408a, 0x00704002,  // 0xb4 - 0xb7 | ||||
|     0x10104bca, 0x10104b42, 0x00104a8a, 0x00104a02,  // 0xb8 - 0xbb | ||||
|     0x101041ca, 0x10104142, 0x0010408a, 0x00104002,  // 0xbc - 0xbf | ||||
|     0x10681fca, 0x10681f42, 0x00681e8a, 0x00681e02,  // 0xc0 - 0xc3 | ||||
|     0x106815ca, 0x10681542, 0x0068148a, 0x00681402,  // 0xc4 - 0xc7 | ||||
|     0x10081fca, 0x10081f42, 0x00081e8a, 0x00081e02,  // 0xc8 - 0xcb | ||||
|     0x100815ca, 0x10081542, 0x0008148a, 0x00081402,  // 0xcc - 0xcf | ||||
|     0x10680bca, 0x10680b42, 0x00680a8a, 0x00680a02,  // 0xd0 - 0xd3 | ||||
|     0x106801ca, 0x10680142, 0x0068008a, 0x00680002,  // 0xd4 - 0xd7 | ||||
|     0x10080bca, 0x10080b42, 0x00080a8a, 0x00080a02,  // 0xd8 - 0xdb | ||||
|     0x100801ca, 0x10080142, 0x0008008a, 0x00080002,  // 0xdc - 0xdf | ||||
|     0x10601fca, 0x10601f42, 0x00601e8a, 0x00601e02,  // 0xe0 - 0xe3 | ||||
|     0x106015ca, 0x10601542, 0x0060148a, 0x00601402,  // 0xe4 - 0xe7 | ||||
|     0x10001fca, 0x10001f42, 0x00001e8a, 0x00001e02,  // 0xe8 - 0xeb | ||||
|     0x100015ca, 0x10001542, 0x0000148a, 0x00001402,  // 0xec - 0xef | ||||
|     0x10600bca, 0x10600b42, 0x00600a8a, 0x00600a02,  // 0xf0 - 0xf3 | ||||
|     0x106001ca, 0x10600142, 0x0060008a, 0x00600002,  // 0xf4 - 0xf7 | ||||
|     0x10000bca, 0x10000b42, 0x00000a8a, 0x00000a02,  // 0xf8 - 0xfb | ||||
|     0x100001ca, 0x10000142, 0x0000008a, 0x00000002,  // 0xfc - 0xff | ||||
| }; | ||||
|  | ||||
| }  // namespace gpio_tables | ||||
							
								
								
									
										12
									
								
								platformio/src/display/gpio_tables.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								platformio/src/display/gpio_tables.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| namespace gpio_tables { | ||||
|  | ||||
| extern const uint32_t gpio_direct_set_table[]; | ||||
| extern const uint32_t gpio_direct_clr_table[]; | ||||
| extern const uint32_t gpio_color_set_table[]; | ||||
| extern const uint32_t gpio_color_clr_table[]; | ||||
|  | ||||
| }  // namespace gpio_tables | ||||
							
								
								
									
										202
									
								
								platformio/src/display/lvgl_adapter.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										202
									
								
								platformio/src/display/lvgl_adapter.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,202 @@ | ||||
| // See display porting here: | ||||
| // https://docs.lvgl.io/v7/en/html/porting/display.html | ||||
|  | ||||
| #include "lvgl_adapter.h" | ||||
|  | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include "io.h" | ||||
| #include "lvgl.h" | ||||
| #include "pico/stdlib.h" | ||||
| #include "tft_driver.h" | ||||
| #include "touch_driver.h" | ||||
|  | ||||
| #if LV_COLOR_DEPTH != 8 | ||||
| #error "Expecting LVGL color depth of 8" | ||||
| #endif | ||||
|  | ||||
| namespace lvgl_adapter { | ||||
|  | ||||
| #define MY_DISP_HOR_RES (480) | ||||
|  | ||||
| // A static variable to store the buffers. | ||||
| static lv_disp_buf_t disp_buf; | ||||
|  | ||||
| // LVGL renders up to this number of pixels at a time. | ||||
| //static constexpr uint32_t kBufferSize = MY_DISP_HOR_RES * 40; | ||||
| static constexpr uint32_t kBufferSize = MY_DISP_HOR_RES * 320; | ||||
|  | ||||
| // Static buffer(s). Since we don't use DMA, we use only a | ||||
| // single buffer and define the second one as NULL. | ||||
| static lv_color_t buf_1[kBufferSize]; | ||||
|  | ||||
| // For developer's usage. Eatables screen capture for | ||||
| // documentation. Do not release with this flag set. | ||||
| static bool screen_capture_enabled = false; | ||||
|  | ||||
| // A handler to print lvgl log messages. | ||||
| // Log level is configured in lv_conf.h. | ||||
| static void my_log_cb(lv_log_level_t level, const char* file, uint32_t line, | ||||
|                       const char* fn_name, const char* dsc) { | ||||
|   // Send the logs via serial port. | ||||
|   // TODO: change to switch(). | ||||
|   if (level == LV_LOG_LEVEL_ERROR) | ||||
|     printf("ERROR: "); | ||||
|   else if (level == LV_LOG_LEVEL_WARN) | ||||
|     printf("WARNING: "); | ||||
|   else if (level == LV_LOG_LEVEL_INFO) | ||||
|     printf("INFO: "); | ||||
|   else if (level == LV_LOG_LEVEL_TRACE) | ||||
|     printf("TRACE: "); | ||||
|  | ||||
|   // TODO: Merge to a single printf (?). Unless if it causes problems with the | ||||
|   // USB output. | ||||
|   printf("File: "); | ||||
|   printf("%s", file); | ||||
|   printf("#"); | ||||
|   printf("%lu", line); | ||||
|   printf(": "); | ||||
|   printf("%s", fn_name); | ||||
|   printf(": "); | ||||
|   printf("%s", dsc); | ||||
|   printf("\n"); | ||||
| } | ||||
|  | ||||
| // NOTE: Capture the dumpped text using an external terminal emularot. | ||||
| // Platformio's own terminal drops line seperators in some cases. | ||||
| // | ||||
| // Used during debugging to dump the screen. Enabled by | ||||
| // ui::kEnableScreenshots. | ||||
| static void capture_buffer(const lv_area_t* area, lv_color_t* bfr) { | ||||
|   const int32_t w_pixels = area->x2 - area->x1 + 1; | ||||
|   const int32_t h_pixels = area->y2 - area->y1 + 1; | ||||
|  | ||||
|   // x,y are relative to the area. | ||||
|   for (int y = 0; y < h_pixels; y++) { | ||||
|     printf("#%d,%d,%ld", area->x1, area->y1 + y, w_pixels); | ||||
|     uint16_t pending_pixels_count = 0; | ||||
|     uint8_t pending_pixel_color = 0; | ||||
|     for (int x = 0; x < w_pixels; x++) { | ||||
|       uint8_t pixel_color = bfr[(uint32_t)y * w_pixels + x].full; | ||||
|  | ||||
|       // Case 0: no pending. | ||||
|       if (pending_pixels_count == 0) { | ||||
|         pending_pixels_count = 1; | ||||
|         pending_pixel_color = pixel_color; | ||||
|         continue; | ||||
|       } | ||||
|  | ||||
|       // Case 1: pending exists, append to pending. | ||||
|       if (pending_pixel_color == pixel_color) { | ||||
|         pending_pixels_count++; | ||||
|         continue; | ||||
|       } | ||||
|  | ||||
|       // Case 2: pending exist, flushing pending. | ||||
|       printf(",%hu:%hx", pending_pixels_count, pending_pixel_color); | ||||
|       pending_pixel_color = pixel_color; | ||||
|       pending_pixels_count = 1; | ||||
|     } | ||||
|     // Flush end of line. | ||||
|     if (pending_pixels_count > 0) { | ||||
|       printf(",%hu:%hx", pending_pixels_count, pending_pixel_color); | ||||
|     } | ||||
|     printf("\n"); | ||||
|     // This prevents loss of data. | ||||
|     //sleep_ms(25); | ||||
|   } | ||||
| } | ||||
|  | ||||
| // Called by LV_GL to flush a buffer to the display. Per our LVGL config, | ||||
| // color is uint16_t RGB565. | ||||
| static void my_flush_cb(lv_disp_drv_t* disp_drv, const lv_area_t* area, | ||||
|                         lv_color_t* color_p) { | ||||
|   LED2_ON; | ||||
|   if (screen_capture_enabled) { | ||||
|     capture_buffer(area, color_p); | ||||
|   } | ||||
|  | ||||
|   // Per our lv config settings, LVGL uses 8 bits colors. | ||||
|   const lv_color8_t* lv_color8 = static_cast<lv_color8_t*>(color_p); | ||||
|   tft_driver::render_buffer(area->x1, area->y1, area->x2, area->y2, | ||||
|                             (uint8_t*)lv_color8); | ||||
|  | ||||
|   // IMPORTANT!!! Inform the graphics library that flushing was done. | ||||
|   lv_disp_flush_ready(disp_drv); | ||||
|   LED2_OFF; | ||||
| } | ||||
|  | ||||
| void static init_display_driver() { | ||||
|   // Initialize `disp_buf` with the buffer. We pass NULL for | ||||
|   // the second (optional) buffer since we don't use DMA. | ||||
|   lv_disp_buf_init(&disp_buf, buf_1, NULL, kBufferSize); | ||||
|  | ||||
|   lv_disp_drv_t disp_drv; | ||||
|   lv_disp_drv_init(&disp_drv); | ||||
|  | ||||
|   // Sets an initialized buffer. | ||||
|   disp_drv.buffer = &disp_buf; | ||||
|   // Sets a flush callback to draw to the display. | ||||
|   disp_drv.flush_cb = my_flush_cb; | ||||
|  | ||||
|   // Register the driver and save the created display objects. | ||||
|   lv_disp_drv_register(&disp_drv); | ||||
| } | ||||
|  | ||||
| // This is how LVGL reads the touch screen's status. | ||||
| bool my_touch_read_cb(lv_indev_drv_t* drv, lv_indev_data_t* data) { | ||||
|   uint16_t x, y; | ||||
|   bool is_pressed; | ||||
|   touch_driver::touch_read(&x, &y, &is_pressed); | ||||
|   data->point.x = x; | ||||
|   data->point.y = y; | ||||
|   data->state = is_pressed ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL; | ||||
|   // No buffering now so no more data read. | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| void static init_touch_driver() { | ||||
|   lv_indev_drv_t indev_drv; | ||||
|   lv_indev_drv_init(&indev_drv); | ||||
|   indev_drv.type = LV_INDEV_TYPE_POINTER; | ||||
|   indev_drv.read_cb = my_touch_read_cb; | ||||
|   // Register the driver in LVGL and save the created input device object. | ||||
|   // TODO: verify result is not null (error) | ||||
|   lv_indev_drv_register(&indev_drv); | ||||
| } | ||||
|  | ||||
| // Called once from main on program start. | ||||
| void setup() { | ||||
|   lv_init(); | ||||
|  | ||||
|   // lv_log_print_g_cb_t | ||||
|   lv_log_register_print_cb(my_log_cb); | ||||
|  | ||||
|   init_display_driver(); | ||||
|   init_touch_driver(); | ||||
| } | ||||
|  | ||||
| void dump_stats() { | ||||
|   lv_mem_monitor_t lv_info; | ||||
|   lv_mem_monitor(&lv_info); | ||||
|   printf("total_size=%lu, free_cnt=%lu, free_size=%lu, free_bigest_size=%lu\n", | ||||
|          lv_info.total_size, lv_info.free_cnt, lv_info.free_size, | ||||
|          lv_info.free_biggest_size); | ||||
|  | ||||
|   printf("used_cnt=%lu, max_used=%lu, used_pct=%hu, frag_pct=%hu\n", | ||||
|          lv_info.used_cnt, lv_info.max_used, lv_info.used_pct, | ||||
|          lv_info.frag_pct); | ||||
| } | ||||
|  | ||||
| // For developer's usage. Dump the current screen. | ||||
| void start_screen_capture() { | ||||
|   screen_capture_enabled = true; | ||||
|   printf("###BEGIN screen capture\n"); | ||||
| } | ||||
|  | ||||
| void stop_screen_capture() { | ||||
|   screen_capture_enabled = false; | ||||
|   printf("###END screen capture\n"); | ||||
| } | ||||
|  | ||||
| }  // namespace lvgl_adapter | ||||
							
								
								
									
										14
									
								
								platformio/src/display/lvgl_adapter.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								platformio/src/display/lvgl_adapter.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| namespace lvgl_adapter { | ||||
|  | ||||
| extern void setup(); | ||||
|  | ||||
| // For developement. | ||||
| extern void dump_stats(); | ||||
| extern void start_screen_capture(); | ||||
| extern void stop_screen_capture(); | ||||
|  | ||||
|  | ||||
| }  // namespace lvgl_adapter | ||||
							
								
								
									
										229
									
								
								platformio/src/display/tft_driver.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										229
									
								
								platformio/src/display/tft_driver.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,229 @@ | ||||
|  | ||||
|  | ||||
| #include "tft_driver.h" | ||||
|  | ||||
| #include "gpio_tables.h" | ||||
| #include "hardware/gpio.h" | ||||
| #include "io.h" | ||||
| #include "pico/stdlib.h" | ||||
|  | ||||
| // // Assuming landscape mode per memory access command 0x36. | ||||
| #define WIDTH 480 | ||||
| #define HEIGHT 320 | ||||
|  | ||||
| #define ILI9488_SLPOUT 0x11 | ||||
|  | ||||
| #define ILI9488_DISPON 0x29 | ||||
|  | ||||
| #define ILI9488_CASET 0x2A | ||||
| #define ILI9488_PASET 0x2B | ||||
| #define ILI9488_RAMWR 0x2C | ||||
| #define ILI9488_RAMRD 0x2E | ||||
|  | ||||
| namespace tft_driver { | ||||
|  | ||||
| // Send a byte to the TFT. Since the interface to the TFT is  | ||||
| // 16 bits parallel, it writes a 16 bits value where the upper | ||||
| // 8 bits  are all zero. | ||||
| // | ||||
| // Note that actual pixels are written by separate code in this file | ||||
| // which sends them as 16 bits color values. | ||||
| static inline void write_byte(uint8_t c) { | ||||
|   sio_hw->gpio_set = gpio_tables::gpio_direct_set_table[c]; | ||||
|   // NOTE: The gpio_direct_clr_table is configured to also do the | ||||
|   // equivalent of TFT_WR_LOW. | ||||
|   sio_hw->gpio_clr = gpio_tables::gpio_direct_clr_table[c]; | ||||
|   //  __asm volatile ("nop\n"); | ||||
|   //  __asm volatile ("nop\n"); | ||||
|   TFT_WR_HIGH; | ||||
| } | ||||
|  | ||||
| void write_command_byte(uint8_t c) { | ||||
|   TFT_DC_LOW;  // Indicates a command | ||||
|   write_byte(c); | ||||
| } | ||||
|  | ||||
| void write_data_byte(uint8_t c) { | ||||
|   TFT_DC_HIGH;  // Indicates data | ||||
|   write_byte(c); | ||||
| } | ||||
|  | ||||
| void begin() { | ||||
|   // NOTE: To avoid flicker, TFT_BL is set to an inactive state earlier, | ||||
|   // when initializing the pins and is enabled later after rendering the  | ||||
|   // first screen. | ||||
|  | ||||
|   TFT_WR_HIGH; | ||||
|   TFT_RST_HIGH; | ||||
|  | ||||
|   sleep_ms(5); | ||||
|   TFT_RST_LOW; | ||||
|   sleep_ms(20); | ||||
|   TFT_RST_HIGH; | ||||
|   sleep_ms(150); | ||||
|  | ||||
|   write_command_byte(0xE0); | ||||
|   write_data_byte(0x00); | ||||
|   write_data_byte(0x03); | ||||
|   write_data_byte(0x09); | ||||
|   write_data_byte(0x08); | ||||
|   write_data_byte(0x16); | ||||
|   write_data_byte(0x0A); | ||||
|   write_data_byte(0x3F); | ||||
|   write_data_byte(0x78); | ||||
|   write_data_byte(0x4C); | ||||
|   write_data_byte(0x09); | ||||
|   write_data_byte(0x0A); | ||||
|   write_data_byte(0x08); | ||||
|   write_data_byte(0x16); | ||||
|   write_data_byte(0x1A); | ||||
|   write_data_byte(0x0F); | ||||
|  | ||||
|   write_command_byte(0XE1); | ||||
|   write_data_byte(0x00); | ||||
|   write_data_byte(0x16); | ||||
|   write_data_byte(0x19); | ||||
|   write_data_byte(0x03); | ||||
|   write_data_byte(0x0F); | ||||
|   write_data_byte(0x05); | ||||
|   write_data_byte(0x32); | ||||
|   write_data_byte(0x45); | ||||
|   write_data_byte(0x46); | ||||
|   write_data_byte(0x04); | ||||
|   write_data_byte(0x0E); | ||||
|   write_data_byte(0x0D); | ||||
|   write_data_byte(0x35); | ||||
|   write_data_byte(0x37); | ||||
|   write_data_byte(0x0F); | ||||
|  | ||||
|   write_command_byte(0XC0);  // Power Control 1 | ||||
|   write_data_byte(0x17);     // Vreg1out | ||||
|   write_data_byte(0x15);     // Verg2out | ||||
|  | ||||
|   write_command_byte(0xC1);  // Power Control 2 | ||||
|   write_data_byte(0x41);     // VGH,VGL | ||||
|  | ||||
|   write_command_byte(0xC5);  // Power Control 3 | ||||
|   write_data_byte(0x00); | ||||
|   write_data_byte(0x12);  // Vcom | ||||
|   write_data_byte(0x80); | ||||
|  | ||||
|   write_command_byte(0x36);  // Memory Access | ||||
|   write_data_byte(0xe8);     // landscape mode. Swapping and mirroring x, y. | ||||
|  | ||||
|   // NOTE: For 16bit parallel transfer, IM jumpers need to be set | ||||
|   // as 010. | ||||
|   write_command_byte(0x3A);  // Interface Pixel Format | ||||
|   write_data_byte(0x55);     // 16 bit | ||||
|  | ||||
|   write_command_byte(0XB0);  // Interface Mode Control | ||||
|   write_data_byte(0x80);     // SDO NOT USE | ||||
|  | ||||
|   write_command_byte(0xB1);  // Frame rate | ||||
|   write_data_byte(0xA0);     // 60Hz | ||||
|  | ||||
|   write_command_byte(0xB4);  // Display Inversion Control | ||||
|   write_data_byte(0x02);     // 2-dot | ||||
|  | ||||
|   write_command_byte(0XB6);  // Display Function Control  RGB/MCU Interface Control | ||||
|  | ||||
|   write_data_byte(0x02);  // MCU | ||||
|   write_data_byte(0x02);  // Source,Gate scan direction | ||||
|  | ||||
|   write_command_byte(0XE9);  // Set Image Function | ||||
|   write_data_byte(0x00);     // Disable 24 bit data | ||||
|  | ||||
|   write_command_byte(0xF7);  // Adjust Control | ||||
|   write_data_byte(0xA9); | ||||
|   write_data_byte(0x51); | ||||
|   write_data_byte(0x2C); | ||||
|   write_data_byte(0x82);  // D7 stream, loose | ||||
|  | ||||
|   write_command_byte(ILI9488_SLPOUT);  // Exit Sleep | ||||
|   sleep_ms(120); | ||||
|   write_command_byte(ILI9488_DISPON);  // Display on | ||||
| } | ||||
|  | ||||
| // This is followed by a stream of pixels to render in this | ||||
| // rectangle. | ||||
| void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { | ||||
|   write_command_byte(ILI9488_CASET);  // Column addr set | ||||
|   write_data_byte(x0 >> 8); | ||||
|   write_data_byte(x0 & 0xFF);  // XSTART | ||||
|   write_data_byte(x1 >> 8); | ||||
|   write_data_byte(x1 & 0xFF);  // XEND | ||||
|  | ||||
|   write_command_byte(ILI9488_PASET);  // Row addr set | ||||
|   write_data_byte(y0 >> 8); | ||||
|   write_data_byte(y0 & 0xff);  // YSTART | ||||
|   write_data_byte(y1 >> 8); | ||||
|   write_data_byte(y1 & 0xff);  // YEND | ||||
|  | ||||
|   // Should follow by data bytes. | ||||
|   write_command_byte(ILI9488_RAMWR);  // write to RAM | ||||
|  | ||||
|   // Next send the pixels data. | ||||
|   TFT_DC_HIGH; | ||||
| } | ||||
|  | ||||
| // NOTE: The gpio_color_clr_table is configured to also do the | ||||
| // equivalent of TFT_WR_LOW. This macro was optimized for pixel  | ||||
| // transfer speed while still maintaining data setup and hold | ||||
| // time relative to the positive transition of the WR signal. | ||||
| #define SEND_PIXEL(i)                                          \ | ||||
|   color = p[i];                                                \ | ||||
|   TFT_WR_HIGH;                                                 \ | ||||
|   sio_hw->gpio_set = gpio_tables::gpio_color_set_table[color]; \ | ||||
|   sio_hw->gpio_clr = gpio_tables::gpio_color_clr_table[color]; | ||||
|  | ||||
| void render_buffer(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, | ||||
|                    const uint8_t* color8_p) { | ||||
|   setAddrWindow(x1, y1, x2, y2); | ||||
|  | ||||
|   const int32_t w_pixels = x2 - x1 + 1; | ||||
|   const int32_t h_pixels = y2 - y1 + 1; | ||||
|   const uint32_t pixels_count = w_pixels * h_pixels; | ||||
|  | ||||
|   const uint8_t* p = color8_p; | ||||
|   const uint8_t* const p_limit = p + pixels_count; | ||||
|   const uint8_t* const p_limit_minus_20 = p_limit - 20; | ||||
|  | ||||
|   // Fast loop with 8 pixels per iteration. | ||||
|   uint8_t color = 0; | ||||
|   while (p < p_limit_minus_20) { | ||||
|     SEND_PIXEL(0); | ||||
|     SEND_PIXEL(1); | ||||
|     SEND_PIXEL(2); | ||||
|     SEND_PIXEL(3); | ||||
|     SEND_PIXEL(4); | ||||
|     SEND_PIXEL(5); | ||||
|     SEND_PIXEL(6); | ||||
|     SEND_PIXEL(7); | ||||
|     SEND_PIXEL(8); | ||||
|     SEND_PIXEL(9); | ||||
|     SEND_PIXEL(10); | ||||
|     SEND_PIXEL(11); | ||||
|     SEND_PIXEL(12); | ||||
|     SEND_PIXEL(13); | ||||
|     SEND_PIXEL(14); | ||||
|     SEND_PIXEL(15); | ||||
|     SEND_PIXEL(16); | ||||
|     SEND_PIXEL(17); | ||||
|     SEND_PIXEL(18); | ||||
|     SEND_PIXEL(19); | ||||
|     p += 20; | ||||
|   } | ||||
|  | ||||
|   // Remaining pixels. | ||||
|   while (p < p_limit) { | ||||
|     SEND_PIXEL(0); | ||||
|     p++; | ||||
|   } | ||||
|  | ||||
|   // Make sure last pixel has sufficient hold time. | ||||
|   // __asm volatile("nop\n"); | ||||
|   // __asm volatile("nop\n"); | ||||
|   TFT_WR_HIGH; | ||||
| } | ||||
|  | ||||
| }  // namespace tft_driver | ||||
							
								
								
									
										13
									
								
								platformio/src/display/tft_driver.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								platformio/src/display/tft_driver.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| namespace tft_driver { | ||||
|  | ||||
| extern void begin(); | ||||
|  | ||||
| extern void render_buffer(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, | ||||
|                           const uint8_t* color8_p); | ||||
|  | ||||
| }  // namespace tft_driver | ||||
							
								
								
									
										269
									
								
								platformio/src/display/touch_driver.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										269
									
								
								platformio/src/display/touch_driver.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,269 @@ | ||||
|  | ||||
| // // Based on ESP32 port | ||||
| // // | ||||
| // https://github.com/lvgl/lv_port_esp32/blob/ace36bf14af1ca96faa56ea9dedc3cba6fb2415a/components/lvgl_esp32_drivers/lvgl_touch/ft6x36.c | ||||
| #include "touch_driver.h" | ||||
|  | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include "hardware/gpio.h" | ||||
| #include "hardware/i2c.h" | ||||
| #include "pico/stdlib.h" | ||||
|  | ||||
|  | ||||
| #define FT6236_I2C_SLAVE_ADDR 0x38 | ||||
|  | ||||
| // Dimensions of the touch panel | ||||
| #define MAX_X ((uint16_t)480) | ||||
| #define MAX_Y ((uint16_t)320) | ||||
|  | ||||
| /* Max detectable simultaneous touch points */ | ||||
| #define FT6X36_MAX_TOUCH_PNTS 2 | ||||
|  | ||||
| /* Register of the current mode */ | ||||
| #define FT6X36_DEV_MODE_REG 0x00 | ||||
|  | ||||
| /* Possible modes as of FT6X36_DEV_MODE_REG */ | ||||
| #define FT6X36_DEV_MODE_WORKING 0x00 | ||||
| #define FT6X36_DEV_MODE_FACTORY 0x04 | ||||
|  | ||||
| #define FT6X36_DEV_MODE_MASK 0x70 | ||||
| #define FT6X36_DEV_MODE_SHIFT 4 | ||||
|  | ||||
| /* Gesture ID register */ | ||||
| #define FT6X36_GEST_ID_REG 0x01 | ||||
|  | ||||
| /* Possible values returned by FT6X36_GEST_ID_REG */ | ||||
| #define FT6X36_GEST_ID_NO_GESTURE 0x00 | ||||
| #define FT6X36_GEST_ID_MOVE_UP 0x10 | ||||
| #define FT6X36_GEST_ID_MOVE_RIGHT 0x14 | ||||
| #define FT6X36_GEST_ID_MOVE_DOWN 0x18 | ||||
| #define FT6X36_GEST_ID_MOVE_LEFT 0x1C | ||||
| #define FT6X36_GEST_ID_ZOOM_IN 0x48 | ||||
| #define FT6X36_GEST_ID_ZOOM_OUT 0x49 | ||||
|  | ||||
| /* Status register: stores number of active touch points (0, 1, 2) */ | ||||
| #define FT6X36_TD_STAT_REG 0x02 | ||||
| #define FT6X36_TD_STAT_MASK 0x0F | ||||
| #define FT6X36_TD_STAT_SHIFT 0x00 | ||||
|  | ||||
| /* Touch events */ | ||||
| #define FT6X36_TOUCH_EVT_FLAG_PRESS_DOWN 0x00 | ||||
| #define FT6X36_TOUCH_EVT_FLAG_LIFT_UP 0x01 | ||||
| #define FT6X36_TOUCH_EVT_FLAG_CONTACT 0x02 | ||||
| #define FT6X36_TOUCH_EVT_FLAG_NO_EVENT 0x03 | ||||
|  | ||||
| #define FT6X36_TOUCH_EVT_FLAG_SHIFT 6 | ||||
| #define FT6X36_TOUCH_EVT_FLAG_MASK (3 << FT6X36_TOUCH_EVT_FLAG_SHIFT) | ||||
|  | ||||
| #define FT6X36_MSB_MASK 0x0F | ||||
| #define FT6X36_MSB_SHIFT 0 | ||||
| #define FT6X36_LSB_MASK 0xFF | ||||
| #define FT6X36_LSB_SHIFT 0 | ||||
|  | ||||
| #define FT6X36_P1_XH_REG 0x03 | ||||
| #define FT6X36_P1_XL_REG 0x04 | ||||
| #define FT6X36_P1_YH_REG 0x05 | ||||
| #define FT6X36_P1_YL_REG 0x06 | ||||
|  | ||||
| #define FT6X36_P1_WEIGHT_REG \ | ||||
|   0x07 /* Register reporting touch pressure - read only */ | ||||
| #define FT6X36_TOUCH_WEIGHT_MASK 0xFF | ||||
| #define FT6X36_TOUCH_WEIGHT_SHIFT 0 | ||||
|  | ||||
| #define FT6X36_P1_MISC_REG 0x08 /* Touch area register */ | ||||
|  | ||||
| #define FT6X36_TOUCH_AREA_MASK \ | ||||
|   (0x04 << 4) /* Values related to FT6X36_Pn_MISC_REG */ | ||||
| #define FT6X36_TOUCH_AREA_SHIFT 0x04 | ||||
|  | ||||
| #define FT6X36_P2_XH_REG 0x09 | ||||
| #define FT6X36_P2_XL_REG 0x0A | ||||
| #define FT6X36_P2_YH_REG 0x0B | ||||
| #define FT6X36_P2_YL_REG 0x0C | ||||
| #define FT6X36_P2_WEIGHT_REG 0x0D | ||||
| #define FT6X36_P2_MISC_REG 0x0E | ||||
|  | ||||
| /* Threshold for touch detection */ | ||||
| #define FT6X36_TH_GROUP_REG 0x80 | ||||
| #define FT6X36_THRESHOLD_MASK \ | ||||
|   0xFF /* Values FT6X36_TH_GROUP_REG : threshold related  */ | ||||
| #define FT6X36_THRESHOLD_SHIFT 0 | ||||
|  | ||||
| #define FT6X36_TH_DIFF_REG 0x85 /* Filter function coefficients */ | ||||
|  | ||||
| #define FT6X36_CTRL_REG 0x86 /* Control register */ | ||||
|  | ||||
| #define FT6X36_CTRL_KEEP_ACTIVE_MODE \ | ||||
|   0x00 /* Will keep the Active mode when there is no touching */ | ||||
| #define FT6X36_CTRL_KEEP_AUTO_SWITCH_MONITOR_MODE                             \ | ||||
|   0x01 /* Switching from Active mode to Monitor mode automatically when there \ | ||||
|           is no touching */ | ||||
|  | ||||
| #define FT6X36_TIME_ENTER_MONITOR_REG                                        \ | ||||
|   0x87 /* The time period of switching from Active mode to Monitor mode when \ | ||||
|           there is no touching */ | ||||
|  | ||||
| #define FT6X36_PERIOD_ACTIVE_REG 0x88  /* Report rate in Active mode */ | ||||
| #define FT6X36_PERIOD_MONITOR_REG 0x89 /* Report rate in Monitor mode */ | ||||
|  | ||||
| #define FT6X36_RADIAN_VALUE_REG                                              \ | ||||
|   0x91 /* The value of the minimum allowed angle while Rotating gesture mode \ | ||||
|         */ | ||||
|  | ||||
| #define FT6X36_OFFSET_LEFT_RIGHT_REG \ | ||||
|   0x92 /* Maximum offset while Moving Left and Moving Right gesture */ | ||||
| #define FT6X36_OFFSET_UP_DOWN_REG \ | ||||
|   0x93 /* Maximum offset while Moving Up and Moving Down gesture */ | ||||
|  | ||||
| #define FT6X36_DISTANCE_LEFT_RIGHT_REG \ | ||||
|   0x94 /* Minimum distance while Moving Left and Moving Right gesture */ | ||||
| #define FT6X36_DISTANCE_UP_DOWN_REG \ | ||||
|   0x95 /* Minimum distance while Moving Up and Moving Down gesture */ | ||||
|  | ||||
| #define FT6X36_LIB_VER_H_REG 0xA1 /* High 8-bit of LIB Version info */ | ||||
| #define FT6X36_LIB_VER_L_REG 0xA2 /* Low 8-bit of LIB Version info */ | ||||
|  | ||||
| #define FT6X36_CHIPSELECT_REG 0xA3 /* 0x36 for ft6236; 0x06 for ft6206 */ | ||||
|  | ||||
| #define FT6X36_POWER_MODE_REG 0xA5 | ||||
| #define FT6X36_FIRMWARE_ID_REG 0xA6 | ||||
| #define FT6X36_RELEASECODE_REG 0xAF | ||||
| #define FT6X36_PANEL_ID_REG 0xA8 | ||||
| #define FT6X36_OPMODE_REG 0xBC | ||||
|  | ||||
| // // Assuming landscape mode per memory access command 0x36. | ||||
|  | ||||
| namespace touch_driver { | ||||
|  | ||||
| bool ft6x06_i2c_read_8bit_register_until(uint8_t register_addr, uint8_t* data_buf, absolute_time_t deadline) { | ||||
|   // uint8_t val = 0x3B; | ||||
|  | ||||
|   // TODO: Add timeout using i2c_read_blocking_until | ||||
|   // i2c_write_blocking(i2c_default, addr, &val, 1, true); // true to keep | ||||
|   // master control of bus | ||||
|   const int byte_written = i2c_write_blocking_until( | ||||
|       i2c_default, FT6236_I2C_SLAVE_ADDR, ®ister_addr, 1, true, deadline); | ||||
|   if (byte_written != 1) { | ||||
|     return false; | ||||
|   } | ||||
|   const int bytes_read = | ||||
|       i2c_read_blocking_until(i2c_default, FT6236_I2C_SLAVE_ADDR, data_buf, 1, false, deadline); | ||||
|   return bytes_read == 1; | ||||
| } | ||||
|  | ||||
| void test() { | ||||
|     absolute_time_t deadline = make_timeout_time_ms(100); | ||||
|   printf("\n"); | ||||
|   // Serial.println(); | ||||
|   uint8_t data_buf = 0; | ||||
|  | ||||
|   bool ok = ft6x06_i2c_read_8bit_register_until(FT6X36_PANEL_ID_REG, &data_buf, deadline); | ||||
|   printf("FT6X36_PANEL_ID_REG: status=%d, value=%02hhx\n", (int)ok, data_buf); | ||||
|  | ||||
|   ok = ft6x06_i2c_read_8bit_register_until(FT6X36_CHIPSELECT_REG, &data_buf, deadline); | ||||
|   printf("FT6X36_CHIPSELECT_REG: status=%d, value=%02hhx\n", (int)ok, data_buf); | ||||
|  | ||||
|   ok = ft6x06_i2c_read_8bit_register_until(FT6X36_DEV_MODE_REG, &data_buf, deadline); | ||||
|   printf("FT6X36_DEV_MODE_REG: status=%d, value=%02hhx\n", (int)ok, data_buf); | ||||
|  | ||||
|   ok = ft6x06_i2c_read_8bit_register_until(FT6X36_FIRMWARE_ID_REG, &data_buf, deadline); | ||||
|   printf("FT6X36_FIRMWARE_ID_REG: status=%d, value=%02hhx\n", (int)ok, data_buf); | ||||
|  | ||||
|   ok = ft6x06_i2c_read_8bit_register_until(FT6X36_RELEASECODE_REG, &data_buf, deadline); | ||||
|   printf("FT6X36_RELEASECODE_REG: status=%d, value=%02hhx\n", (int)ok, data_buf); | ||||
| } | ||||
|  | ||||
| // TODO: return last x, y in case of an error, as the ESP32 port does. | ||||
| void touch_read(uint16_t* x, uint16_t* y, bool* is_pressed) { | ||||
|  | ||||
| const absolute_time_t deadline = make_timeout_time_ms(5); | ||||
|  | ||||
|   // uint8_t data_xy[4];         // 2 bytes X | 2 bytes Y | ||||
|  | ||||
|   static int16_t last_x = 0; | ||||
|   static int16_t last_y = 0; | ||||
|  | ||||
|   // Set default for cases of an early exit. | ||||
|   *x = last_x; | ||||
|   *y = last_y; | ||||
|   *is_pressed = false; | ||||
|  | ||||
|   uint8_t touch_pnt_cnt;  // Number of detected touch points | ||||
|  | ||||
|   // ft6x06_i2c_read8(current_dev_addr, FT6X36_TD_STAT_REG, &touch_pnt_cnt); | ||||
|   ft6x06_i2c_read_8bit_register_until(FT6X36_TD_STAT_REG, &touch_pnt_cnt, deadline); | ||||
|   if (touch_pnt_cnt != 1) {  // ignore no touch & multi touch | ||||
|    | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|   // Continue to read the x,y | ||||
|  | ||||
|   uint8_t tx_bfr1[] = {FT6X36_P1_XH_REG}; | ||||
|  | ||||
|   const int bytes_written1 = i2c_write_blocking_until( | ||||
|       i2c_default, FT6236_I2C_SLAVE_ADDR, tx_bfr1, sizeof(tx_bfr1), true, deadline); | ||||
|   if (bytes_written1 != sizeof(tx_bfr1)) { | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|  | ||||
|   uint8_t rx_bfr1[2]; | ||||
|  | ||||
|   const int bytes_read1 = i2c_read_blocking_until(i2c_default, FT6236_I2C_SLAVE_ADDR, | ||||
|                                             rx_bfr1, sizeof(rx_bfr1), false, deadline); | ||||
|  | ||||
|   if (bytes_read1 != sizeof(rx_bfr1)) { | ||||
|     return; | ||||
|   } | ||||
|   | ||||
|  | ||||
|   uint8_t tx_bfr2[] = {FT6X36_P1_YH_REG}; | ||||
|  | ||||
|  | ||||
|   const int bytes_written2 = i2c_write_blocking_until( | ||||
|       i2c_default, FT6236_I2C_SLAVE_ADDR, tx_bfr2, sizeof(tx_bfr2), true, deadline); | ||||
|  | ||||
|   if (bytes_written2 != sizeof(tx_bfr2)) { | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|   uint8_t rx_bfr2[2]; | ||||
|  | ||||
|  | ||||
|  | ||||
|   const int bytes_read2 = i2c_read_blocking_until(i2c_default, FT6236_I2C_SLAVE_ADDR, | ||||
|                                             rx_bfr2, sizeof(rx_bfr2), false, deadline); | ||||
|  | ||||
|   if (bytes_read2 != sizeof(rx_bfr2)) { | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|   // Note that we swap x, y. | ||||
|   last_y = | ||||
|       ((rx_bfr1[0] & FT6X36_MSB_MASK) << 8) | (rx_bfr1[1] & FT6X36_LSB_MASK); | ||||
|   last_x = | ||||
|       ((rx_bfr2[0] & FT6X36_MSB_MASK) << 8) | (rx_bfr2[1] & FT6X36_LSB_MASK); | ||||
|  | ||||
|   // invert x. | ||||
|   last_x = MAX_X - last_x; | ||||
|  | ||||
|   *x = last_x; | ||||
|   *y = last_y; | ||||
|   *is_pressed = true; | ||||
| } | ||||
|  | ||||
| void setup() { | ||||
|   // This example will use I2C0 on the default SDA and SCL pins (4, 5 on a Pico) | ||||
|   i2c_init(i2c0, 100 * 1000); | ||||
|   gpio_set_function(PICO_DEFAULT_I2C_SDA_PIN, GPIO_FUNC_I2C); | ||||
|   gpio_set_function(PICO_DEFAULT_I2C_SCL_PIN, GPIO_FUNC_I2C); | ||||
|  | ||||
|   gpio_pull_up(PICO_DEFAULT_I2C_SDA_PIN); | ||||
|   gpio_pull_up(PICO_DEFAULT_I2C_SCL_PIN); | ||||
|  | ||||
|  | ||||
| } | ||||
|  | ||||
| }  // namespace touch_driver | ||||
							
								
								
									
										11
									
								
								platformio/src/display/touch_driver.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								platformio/src/display/touch_driver.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include <stdint.h> | ||||
|  | ||||
| namespace touch_driver { | ||||
| extern void setup(); | ||||
| extern void test(); | ||||
| extern void touch_read(uint16_t* x, uint16_t* y, bool* is_pressed); | ||||
|  | ||||
| }  // namespace touch_driver | ||||
							
								
								
									
										1037
									
								
								platformio/src/fonts/font_fa_symbols_28.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1037
									
								
								platformio/src/fonts/font_fa_symbols_28.cpp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1183
									
								
								platformio/src/fonts/font_montserrat_alphanum_12.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1183
									
								
								platformio/src/fonts/font_montserrat_alphanum_12.cpp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1411
									
								
								platformio/src/fonts/font_montserrat_alphanum_16.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1411
									
								
								platformio/src/fonts/font_montserrat_alphanum_16.cpp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1689
									
								
								platformio/src/fonts/font_montserrat_alphanum_20.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1689
									
								
								platformio/src/fonts/font_montserrat_alphanum_20.cpp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										277
									
								
								platformio/src/fonts/font_montserrat_numeric_20.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										277
									
								
								platformio/src/fonts/font_montserrat_numeric_20.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,277 @@ | ||||
| #include "lvgl.h" | ||||
|  | ||||
| /******************************************************************************* | ||||
|  * Size: 22 px | ||||
|  * Bpp: 4 | ||||
|  * Opts:  | ||||
|  ******************************************************************************/ | ||||
|  | ||||
| #ifndef FONT_MONTSERRAT_NUMERIC_20 | ||||
| #define FONT_MONTSERRAT_NUMERIC_20 1 | ||||
| #endif | ||||
|  | ||||
| #if FONT_MONTSERRAT_NUMERIC_20 | ||||
|  | ||||
| /*----------------- | ||||
|  *    BITMAPS | ||||
|  *----------------*/ | ||||
|  | ||||
| /*Store the image of the glyphs*/ | ||||
| static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { | ||||
|     /* U+2B "+" */ | ||||
|     0x0, 0x0, 0x48, 0x20, 0x0, 0x0, 0x0, 0x8, | ||||
|     0xf5, 0x0, 0x0, 0x0, 0x0, 0x8f, 0x50, 0x0, | ||||
|     0x0, 0x0, 0x8, 0xf5, 0x0, 0x0, 0x49, 0x99, | ||||
|     0xcf, 0xb9, 0x99, 0x28, 0xff, 0xff, 0xff, 0xff, | ||||
|     0xf5, 0x13, 0x33, 0x9f, 0x73, 0x33, 0x0, 0x0, | ||||
|     0x8, 0xf5, 0x0, 0x0, 0x0, 0x0, 0x8f, 0x50, | ||||
|     0x0, 0x0, 0x0, 0x8, 0xf5, 0x0, 0x0, 0x0, | ||||
|     0x0, 0x12, 0x0, 0x0, 0x0, | ||||
|  | ||||
|     /* U+2C "," */ | ||||
|     0x6d, 0x6e, 0xfe, 0x8f, 0xc2, 0xf7, 0x6f, 0x2a, | ||||
|     0xc0, 0x32, 0x0, | ||||
|  | ||||
|     /* U+2D "-" */ | ||||
|     0xbf, 0xff, 0xff, 0x2a, 0xee, 0xee, 0xe2, | ||||
|  | ||||
|     /* U+2E "." */ | ||||
|     0x6d, 0x6e, 0xfe, 0xaf, 0x90, 0x10, | ||||
|  | ||||
|     /* U+30 "0" */ | ||||
|     0x0, 0x0, 0x4, 0x78, 0x61, 0x0, 0x0, 0x0, | ||||
|     0x3, 0xdf, 0xff, 0xff, 0x90, 0x0, 0x0, 0x3f, | ||||
|     0xfd, 0x76, 0x9f, 0xfb, 0x0, 0x0, 0xdf, 0xa0, | ||||
|     0x0, 0x3, 0xff, 0x60, 0x5, 0xfe, 0x0, 0x0, | ||||
|     0x0, 0x6f, 0xd0, 0xa, 0xf8, 0x0, 0x0, 0x0, | ||||
|     0xf, 0xf2, 0xd, 0xf5, 0x0, 0x0, 0x0, 0xc, | ||||
|     0xf6, 0xf, 0xf3, 0x0, 0x0, 0x0, 0xa, 0xf7, | ||||
|     0xf, 0xf2, 0x0, 0x0, 0x0, 0xa, 0xf8, 0xe, | ||||
|     0xf3, 0x0, 0x0, 0x0, 0xb, 0xf7, 0xd, 0xf6, | ||||
|     0x0, 0x0, 0x0, 0xd, 0xf5, 0x8, 0xfa, 0x0, | ||||
|     0x0, 0x0, 0x2f, 0xf1, 0x3, 0xff, 0x30, 0x0, | ||||
|     0x0, 0xaf, 0xb0, 0x0, 0xaf, 0xe3, 0x0, 0x9, | ||||
|     0xff, 0x20, 0x0, 0xc, 0xff, 0xed, 0xff, 0xf5, | ||||
|     0x0, 0x0, 0x0, 0x7e, 0xff, 0xfb, 0x30, 0x0, | ||||
|     0x0, 0x0, 0x0, 0x12, 0x0, 0x0, 0x0, | ||||
|  | ||||
|     /* U+31 "1" */ | ||||
|     0x36, 0x66, 0x66, 0x9, 0xff, 0xff, 0xf1, 0x48, | ||||
|     0x88, 0xff, 0x10, 0x0, 0x1f, 0xf1, 0x0, 0x1, | ||||
|     0xff, 0x10, 0x0, 0x1f, 0xf1, 0x0, 0x1, 0xff, | ||||
|     0x10, 0x0, 0x1f, 0xf1, 0x0, 0x1, 0xff, 0x10, | ||||
|     0x0, 0x1f, 0xf1, 0x0, 0x1, 0xff, 0x10, 0x0, | ||||
|     0x1f, 0xf1, 0x0, 0x1, 0xff, 0x10, 0x0, 0x1f, | ||||
|     0xf1, 0x0, 0x1, 0xff, 0x10, 0x0, 0x1f, 0xf1, | ||||
|  | ||||
|     /* U+32 "2" */ | ||||
|     0x0, 0x2, 0x68, 0x87, 0x30, 0x0, 0x0, 0x3c, | ||||
|     0xff, 0xff, 0xff, 0xb1, 0x0, 0x3f, 0xfd, 0x86, | ||||
|     0x7a, 0xff, 0xb0, 0x0, 0xa8, 0x0, 0x0, 0x5, | ||||
|     0xff, 0x30, 0x0, 0x0, 0x0, 0x0, 0xe, 0xf5, | ||||
|     0x0, 0x0, 0x0, 0x0, 0x0, 0xef, 0x40, 0x0, | ||||
|     0x0, 0x0, 0x0, 0x3f, 0xf1, 0x0, 0x0, 0x0, | ||||
|     0x0, 0xd, 0xf8, 0x0, 0x0, 0x0, 0x0, 0xc, | ||||
|     0xfc, 0x0, 0x0, 0x0, 0x0, 0xc, 0xfd, 0x10, | ||||
|     0x0, 0x0, 0x0, 0x1c, 0xfc, 0x10, 0x0, 0x0, | ||||
|     0x0, 0x1d, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x1d, | ||||
|     0xfb, 0x0, 0x0, 0x0, 0x0, 0x1d, 0xfb, 0x0, | ||||
|     0x0, 0x0, 0x0, 0xe, 0xff, 0xee, 0xee, 0xee, | ||||
|     0xee, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, | ||||
|  | ||||
|     /* U+33 "3" */ | ||||
|     0x5, 0x66, 0x66, 0x66, 0x66, 0x62, 0xc, 0xff, | ||||
|     0xff, 0xff, 0xff, 0xf6, 0x6, 0x88, 0x88, 0x88, | ||||
|     0xcf, 0xe2, 0x0, 0x0, 0x0, 0x3, 0xff, 0x40, | ||||
|     0x0, 0x0, 0x0, 0x1e, 0xf7, 0x0, 0x0, 0x0, | ||||
|     0x0, 0xcf, 0x90, 0x0, 0x0, 0x0, 0x9, 0xfc, | ||||
|     0x0, 0x0, 0x0, 0x0, 0x3f, 0xfe, 0xb6, 0x0, | ||||
|     0x0, 0x0, 0x3d, 0xdf, 0xff, 0xc0, 0x0, 0x0, | ||||
|     0x0, 0x0, 0x5f, 0xf8, 0x0, 0x0, 0x0, 0x0, | ||||
|     0x7, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x4, 0xff, | ||||
|     0x2, 0x0, 0x0, 0x0, 0x7, 0xfd, 0x1e, 0xc4, | ||||
|     0x0, 0x0, 0x5f, 0xf7, 0x3e, 0xff, 0xfd, 0xdf, | ||||
|     0xff, 0xc0, 0x1, 0x7c, 0xff, 0xff, 0xd7, 0x0, | ||||
|     0x0, 0x0, 0x1, 0x20, 0x0, 0x0, | ||||
|  | ||||
|     /* U+34 "4" */ | ||||
|     0x0, 0x0, 0x0, 0x0, 0x56, 0x30, 0x0, 0x0, | ||||
|     0x0, 0x0, 0x0, 0x6f, 0xe1, 0x0, 0x0, 0x0, | ||||
|     0x0, 0x0, 0x3f, 0xf3, 0x0, 0x0, 0x0, 0x0, | ||||
|     0x0, 0x1e, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x0, | ||||
|     0xb, 0xfa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, | ||||
|     0xfd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0xff, | ||||
|     0x20, 0x0, 0x0, 0x0, 0x0, 0x2, 0xff, 0x50, | ||||
|     0x0, 0xff, 0x20, 0x0, 0x0, 0xdf, 0x90, 0x0, | ||||
|     0xf, 0xf2, 0x0, 0x0, 0xaf, 0xc0, 0x0, 0x0, | ||||
|     0xff, 0x20, 0x0, 0x6f, 0xfc, 0xaa, 0xaa, 0xaf, | ||||
|     0xfb, 0xaa, 0x9, 0xff, 0xff, 0xff, 0xff, 0xff, | ||||
|     0xff, 0xf1, 0x13, 0x33, 0x33, 0x33, 0x3f, 0xf5, | ||||
|     0x33, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x20, | ||||
|     0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf2, 0x0, | ||||
|     0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x20, 0x0, | ||||
|  | ||||
|     /* U+35 "5" */ | ||||
|     0x0, 0x36, 0x66, 0x66, 0x66, 0x60, 0x0, 0xaf, | ||||
|     0xff, 0xff, 0xff, 0xf2, 0x0, 0xbf, 0xa8, 0x88, | ||||
|     0x88, 0x81, 0x0, 0xdf, 0x30, 0x0, 0x0, 0x0, | ||||
|     0x0, 0xff, 0x10, 0x0, 0x0, 0x0, 0x0, 0xff, | ||||
|     0x0, 0x0, 0x0, 0x0, 0x2, 0xff, 0x44, 0x31, | ||||
|     0x0, 0x0, 0x3, 0xff, 0xff, 0xff, 0xe8, 0x10, | ||||
|     0x3, 0xaa, 0xaa, 0xbe, 0xff, 0xd1, 0x0, 0x0, | ||||
|     0x0, 0x0, 0x4e, 0xf9, 0x0, 0x0, 0x0, 0x0, | ||||
|     0x6, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, | ||||
|     0x2, 0x0, 0x0, 0x0, 0x7, 0xfd, 0x1e, 0xc4, | ||||
|     0x0, 0x0, 0x5f, 0xf7, 0x3e, 0xff, 0xfd, 0xdf, | ||||
|     0xff, 0xc0, 0x1, 0x7c, 0xff, 0xff, 0xd7, 0x0, | ||||
|     0x0, 0x0, 0x1, 0x20, 0x0, 0x0, | ||||
|  | ||||
|     /* U+36 "6" */ | ||||
|     0x0, 0x0, 0x4, 0x78, 0x75, 0x10, 0x0, 0x0, | ||||
|     0x6e, 0xff, 0xff, 0xff, 0x30, 0x0, 0x9f, 0xfb, | ||||
|     0x65, 0x69, 0xc0, 0x0, 0x6f, 0xf4, 0x0, 0x0, | ||||
|     0x0, 0x0, 0xe, 0xf5, 0x0, 0x0, 0x0, 0x0, | ||||
|     0x4, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f, | ||||
|     0xa0, 0x2, 0x44, 0x20, 0x0, 0x9, 0xf8, 0x4d, | ||||
|     0xff, 0xff, 0xc3, 0x0, 0xaf, 0xcf, 0xe9, 0x79, | ||||
|     0xdf, 0xf3, 0xa, 0xff, 0xc1, 0x0, 0x0, 0xaf, | ||||
|     0xd0, 0x8f, 0xf3, 0x0, 0x0, 0x1, 0xff, 0x15, | ||||
|     0xff, 0x10, 0x0, 0x0, 0xf, 0xf2, 0xf, 0xf4, | ||||
|     0x0, 0x0, 0x2, 0xff, 0x0, 0x7f, 0xe2, 0x0, | ||||
|     0x1, 0xcf, 0xa0, 0x0, 0xaf, 0xfc, 0xab, 0xff, | ||||
|     0xd1, 0x0, 0x0, 0x6d, 0xff, 0xfe, 0x80, 0x0, | ||||
|     0x0, 0x0, 0x0, 0x21, 0x0, 0x0, 0x0, | ||||
|  | ||||
|     /* U+37 "7" */ | ||||
|     0x36, 0x66, 0x66, 0x66, 0x66, 0x66, 0x8, 0xff, | ||||
|     0xff, 0xff, 0xff, 0xff, 0xf1, 0x8f, 0xc8, 0x88, | ||||
|     0x88, 0x8c, 0xfd, 0x8, 0xf9, 0x0, 0x0, 0x0, | ||||
|     0xdf, 0x60, 0x8f, 0x90, 0x0, 0x0, 0x4f, 0xe0, | ||||
|     0x2, 0x42, 0x0, 0x0, 0xb, 0xf8, 0x0, 0x0, | ||||
|     0x0, 0x0, 0x3, 0xff, 0x10, 0x0, 0x0, 0x0, | ||||
|     0x0, 0xaf, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x1f, | ||||
|     0xf3, 0x0, 0x0, 0x0, 0x0, 0x8, 0xfb, 0x0, | ||||
|     0x0, 0x0, 0x0, 0x0, 0xff, 0x40, 0x0, 0x0, | ||||
|     0x0, 0x0, 0x7f, 0xd0, 0x0, 0x0, 0x0, 0x0, | ||||
|     0xe, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x5, 0xfe, | ||||
|     0x0, 0x0, 0x0, 0x0, 0x0, 0xcf, 0x80, 0x0, | ||||
|     0x0, 0x0, 0x0, 0x4f, 0xf1, 0x0, 0x0, 0x0, | ||||
|  | ||||
|     /* U+38 "8" */ | ||||
|     0x0, 0x1, 0x68, 0x87, 0x40, 0x0, 0x0, 0x9, | ||||
|     0xff, 0xff, 0xff, 0xd4, 0x0, 0xa, 0xff, 0x84, | ||||
|     0x36, 0xcf, 0xf2, 0x2, 0xff, 0x40, 0x0, 0x0, | ||||
|     0xbf, 0xa0, 0x4f, 0xe0, 0x0, 0x0, 0x6, 0xfc, | ||||
|     0x2, 0xff, 0x10, 0x0, 0x0, 0x8f, 0xb0, 0xc, | ||||
|     0xfc, 0x20, 0x0, 0x6f, 0xf4, 0x0, 0x1b, 0xff, | ||||
|     0xee, 0xff, 0xf5, 0x0, 0x4, 0xdf, 0xfe, 0xdf, | ||||
|     0xff, 0x90, 0x3, 0xff, 0x81, 0x0, 0x4, 0xdf, | ||||
|     0xb0, 0xaf, 0x90, 0x0, 0x0, 0x1, 0xff, 0x2d, | ||||
|     0xf5, 0x0, 0x0, 0x0, 0xd, 0xf5, 0xbf, 0x80, | ||||
|     0x0, 0x0, 0x0, 0xff, 0x36, 0xff, 0x50, 0x0, | ||||
|     0x1, 0xbf, 0xe0, 0xa, 0xff, 0xdb, 0xac, 0xff, | ||||
|     0xf3, 0x0, 0x5, 0xcf, 0xff, 0xfe, 0x91, 0x0, | ||||
|     0x0, 0x0, 0x1, 0x21, 0x0, 0x0, 0x0, | ||||
|  | ||||
|     /* U+39 "9" */ | ||||
|     0x0, 0x2, 0x78, 0x85, 0x10, 0x0, 0x0, 0x1a, | ||||
|     0xff, 0xff, 0xff, 0x70, 0x0, 0xc, 0xfe, 0x74, | ||||
|     0x48, 0xff, 0x80, 0x5, 0xfe, 0x10, 0x0, 0x2, | ||||
|     0xff, 0x30, 0x9f, 0x90, 0x0, 0x0, 0x9, 0xfa, | ||||
|     0xa, 0xf8, 0x0, 0x0, 0x0, 0x8f, 0xe0, 0x8f, | ||||
|     0xc0, 0x0, 0x0, 0xd, 0xff, 0x12, 0xff, 0x91, | ||||
|     0x0, 0x2b, 0xff, 0xf2, 0x6, 0xff, 0xfe, 0xef, | ||||
|     0xf7, 0xff, 0x20, 0x2, 0x9d, 0xed, 0xa3, 0x1f, | ||||
|     0xf1, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0x0, | ||||
|     0x0, 0x0, 0x0, 0x0, 0x8f, 0xa0, 0x0, 0x0, | ||||
|     0x0, 0x0, 0x2f, 0xf4, 0x0, 0x13, 0x0, 0x0, | ||||
|     0x5e, 0xf9, 0x0, 0x8, 0xfe, 0xcc, 0xef, 0xfa, | ||||
|     0x0, 0x0, 0x6d, 0xff, 0xff, 0xb5, 0x0, 0x0, | ||||
|     0x0, 0x0, 0x21, 0x0, 0x0, 0x0, 0x0 | ||||
| }; | ||||
|  | ||||
|  | ||||
| /*--------------------- | ||||
|  *  GLYPH DESCRIPTION | ||||
|  *--------------------*/ | ||||
|  | ||||
| static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { | ||||
|     {.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */, | ||||
|     {.bitmap_index = 0, .adv_w = 205, .box_w = 11, .box_h = 11, .ofs_x = 1, .ofs_y = 2}, | ||||
|     {.bitmap_index = 61, .adv_w = 80, .box_w = 3, .box_h = 7, .ofs_x = 1, .ofs_y = -4}, | ||||
|     {.bitmap_index = 72, .adv_w = 135, .box_w = 7, .box_h = 2, .ofs_x = 1, .ofs_y = 5}, | ||||
|     {.bitmap_index = 79, .adv_w = 80, .box_w = 3, .box_h = 4, .ofs_x = 1, .ofs_y = -1}, | ||||
|     {.bitmap_index = 85, .adv_w = 232, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, | ||||
|     {.bitmap_index = 204, .adv_w = 232, .box_w = 7, .box_h = 16, .ofs_x = 4, .ofs_y = 0}, | ||||
|     {.bitmap_index = 260, .adv_w = 232, .box_w = 13, .box_h = 16, .ofs_x = 1, .ofs_y = 0}, | ||||
|     {.bitmap_index = 364, .adv_w = 232, .box_w = 12, .box_h = 17, .ofs_x = 1, .ofs_y = -1}, | ||||
|     {.bitmap_index = 466, .adv_w = 232, .box_w = 15, .box_h = 16, .ofs_x = 0, .ofs_y = 0}, | ||||
|     {.bitmap_index = 586, .adv_w = 232, .box_w = 12, .box_h = 17, .ofs_x = 1, .ofs_y = -1}, | ||||
|     {.bitmap_index = 688, .adv_w = 232, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = -1}, | ||||
|     {.bitmap_index = 799, .adv_w = 232, .box_w = 13, .box_h = 16, .ofs_x = 1, .ofs_y = 0}, | ||||
|     {.bitmap_index = 903, .adv_w = 232, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = -1}, | ||||
|     {.bitmap_index = 1014, .adv_w = 232, .box_w = 13, .box_h = 17, .ofs_x = 1, .ofs_y = -1} | ||||
| }; | ||||
|  | ||||
| /*--------------------- | ||||
|  *  CHARACTER MAPPING | ||||
|  *--------------------*/ | ||||
|  | ||||
| static const uint8_t glyph_id_ofs_list_0[] = { | ||||
|     0, 1, 2, 3, 0, 4, 5, 6, | ||||
|     7, 8, 9, 10, 11, 12, 13 | ||||
| }; | ||||
|  | ||||
| /*Collect the unicode lists and glyph_id offsets*/ | ||||
| static const lv_font_fmt_txt_cmap_t cmaps[] = | ||||
| { | ||||
|     { | ||||
|         .range_start = 43, .range_length = 15, .glyph_id_start = 1, | ||||
|         .unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_0, .list_length = 15, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL | ||||
|     } | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| /*-------------------- | ||||
|  *  ALL CUSTOM DATA | ||||
|  *--------------------*/ | ||||
|  | ||||
| /*Store all the custom data of the font*/ | ||||
| static lv_font_fmt_txt_dsc_t font_dsc = { | ||||
|     .glyph_bitmap = gylph_bitmap, | ||||
|     .glyph_dsc = glyph_dsc, | ||||
|     .cmaps = cmaps, | ||||
|     .kern_dsc = NULL, | ||||
|     .kern_scale = 0, | ||||
|     .cmap_num = 1, | ||||
|     .bpp = 4, | ||||
|     .kern_classes = 0, | ||||
|     .bitmap_format = 0 | ||||
| }; | ||||
|  | ||||
|  | ||||
| /*----------------- | ||||
|  *  PUBLIC FONT | ||||
|  *----------------*/ | ||||
|  | ||||
| /*Initialize a public general font descriptor*/ | ||||
| lv_font_t font_montserrat_numeric_20 = { | ||||
|     .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt,    /*Function pointer to get glyph's data*/ | ||||
|     .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt,    /*Function pointer to get glyph's bitmap*/ | ||||
|     .line_height = 20,          /*The maximum line height required by the font*/ | ||||
|     .base_line = 4,             /*Baseline measured from the bottom of the line*/ | ||||
| #if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) | ||||
|     .subpx = LV_FONT_SUBPX_NONE, | ||||
| #endif | ||||
| #if LV_VERSION_CHECK(7, 4, 0) | ||||
|     .underline_position = -2, | ||||
|     .underline_thickness = 1, | ||||
| #endif | ||||
|     .dsc = &font_dsc           /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| #endif /*#if FONT_MONTSERRAT_NUMERIC_20*/ | ||||
|  | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user