gitextract_endh529h/ ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── 3d.yml │ ├── electronics.yml │ ├── electronics_v2.yml │ ├── js.yml │ └── pio.yml ├── .gitignore ├── .gitmodules ├── 3d/ │ ├── 28byj-48.scad │ ├── assert.scad │ ├── color_util.scad │ ├── combined_front_panel.scad │ ├── flap.scad │ ├── flap_3dp.scad │ ├── flap_characters.scad │ ├── flap_dimensions.scad │ ├── flap_fonts.scad │ ├── font_generator.scad │ ├── fonts/ │ │ ├── Epilogue/ │ │ │ └── OFL.txt │ │ └── roboto/ │ │ └── LICENSE.txt │ ├── global_constants.scad │ ├── label.scad │ ├── m4_dimensions.scad │ ├── pcb.scad │ ├── projection_renderer.scad │ ├── rough7380.scad │ ├── scripts/ │ │ ├── colored_stl_exporter.py │ │ ├── dependencies.sh │ │ ├── generate_2d.py │ │ ├── generate_3d_print_flaps.py │ │ ├── generate_combined_front_panel.py │ │ ├── generate_fonts.py │ │ ├── generate_gif.py │ │ ├── generate_snapshot.py │ │ ├── generate_stl.py │ │ ├── kerf_presets.py │ │ ├── openscad.py │ │ ├── projection_renderer.py │ │ ├── requirements.txt │ │ └── svg_processor.py │ ├── sensor_pcb_dimensions.scad │ ├── shapes.scad │ ├── splitflap.scad │ ├── spool.scad │ └── tools/ │ ├── classic_pcb_mount.scad │ ├── connector_case.scad │ ├── flap_container.scad │ ├── mounting_bracket.scad │ ├── punch_jig.scad │ └── scoring_jig.scad ├── LICENSE.txt ├── README.md ├── __init__.py ├── arduino/ │ └── splitflap/ │ └── MOVED.txt ├── docs/ │ ├── DocumentationIndex.md │ ├── ElectronicsGuide.md │ ├── Flaps.md │ ├── MotorGuide.md │ ├── OpenSauce2024.md │ ├── v0/ │ │ ├── Assembly.md │ │ ├── OrderingComplete.md │ │ └── OrderingEasy.md │ └── v2/ │ ├── Assembly.md │ ├── OrderingComplete.md │ └── OrderingEasy.md ├── electronics/ │ ├── __init__.py │ ├── chainlinkBase/ │ │ ├── .gitignore │ │ ├── chainlinkBase-cache.lib │ │ ├── chainlinkBase.kibot.yml │ │ ├── chainlinkBase.kicad_pcb │ │ ├── chainlinkBase.lib │ │ ├── chainlinkBase.pro │ │ ├── chainlinkBase.sch │ │ ├── fp-lib-table │ │ ├── powerChannel.sch │ │ └── sym-lib-table │ ├── chainlinkBuddyBreadboard/ │ │ ├── chainlinkBuddyBreadboard-cache.lib │ │ ├── chainlinkBuddyBreadboard.kibot.yml │ │ ├── chainlinkBuddyBreadboard.kicad_pcb │ │ ├── chainlinkBuddyBreadboard.pro │ │ ├── chainlinkBuddyBreadboard.sch │ │ ├── fp-lib-table │ │ ├── kikit_panelize.json │ │ └── sym-lib-table │ ├── chainlinkBuddyTDisplay/ │ │ ├── chainlinkBuddyTDisplay-cache.lib │ │ ├── chainlinkBuddyTDisplay.kibot.yml │ │ ├── chainlinkBuddyTDisplay.kicad_pcb │ │ ├── chainlinkBuddyTDisplay.pro │ │ ├── chainlinkBuddyTDisplay.sch │ │ ├── fp-lib-table │ │ ├── kikit_panelize.json │ │ └── sym-lib-table │ ├── chainlinkDriver/ │ │ ├── .gitignore │ │ ├── chainlinkDriver-cache.lib │ │ ├── chainlinkDriver.kibot.yml │ │ ├── chainlinkDriver.kicad_pcb │ │ ├── chainlinkDriver.lib │ │ ├── chainlinkDriver.pro │ │ ├── chainlinkDriver.sch │ │ ├── fp-lib-table │ │ └── sym-lib-table │ ├── chainlinkDriverTester/ │ │ ├── .gitignore │ │ ├── chainlinkDriverTester-cache.lib │ │ ├── chainlinkDriverTester.kibot.yml │ │ ├── chainlinkDriverTester.kicad_pcb │ │ ├── chainlinkDriverTester.lib │ │ ├── chainlinkDriverTester.pro │ │ ├── chainlinkDriverTester.sch │ │ ├── fp-lib-table │ │ └── sym-lib-table │ ├── lib/ │ │ ├── 54-00131.STEP │ │ ├── 74HC125.dcm │ │ ├── 74HC125.lib │ │ ├── 74HC165-DIP.pretty/ │ │ │ └── 74HC165_DIP-16_W7.62mm.kicad_mod │ │ ├── 74HC165.lib │ │ ├── 74HC165_2.dcm │ │ ├── 74HC165_2.lib │ │ ├── ArduinoUnoShield.pretty/ │ │ │ └── arduino_uno_shield.kicad_mod │ │ ├── BK-6013.models/ │ │ │ └── Memory_Protection_Devices_-_BK-6013.step │ │ ├── BK-6013.pretty/ │ │ │ ├── BK-6013.kicad_mod │ │ │ └── Memory_Protection_Devices-BK-6013-0-0-0.kicad_mod │ │ ├── Buck.pretty/ │ │ │ ├── BuckModule.kicad_mod │ │ │ └── BuckModuleBackSilk.kicad_mod │ │ ├── BuckModule.dcm │ │ ├── BuckModule.lib │ │ ├── CustomPower.dcm │ │ ├── CustomPower.lib │ │ ├── CustomSymbols.pretty/ │ │ │ └── PolarityCenterPositive.kicad_mod │ │ ├── DML3006LFDS.dcm │ │ ├── DML3006LFDS.lib │ │ ├── Dummy.pretty/ │ │ │ └── Dummy.kicad_mod │ │ ├── ESP32.pretty/ │ │ │ ├── D1_32.kicad_mod │ │ │ ├── T-DISPLAY.kicad_mod │ │ │ ├── T-DISPLAY_extra_pins.kicad_mod │ │ │ ├── T-DISPLAY_extra_pins_labeled.kicad_mod │ │ │ └── T-DISPLAY_extra_pins_labeled_double.kicad_mod │ │ ├── ESP32Modules.dcm │ │ ├── ESP32Modules.lib │ │ ├── GP2S60.pretty/ │ │ │ ├── GP2S60.kicad_mod │ │ │ └── GP2S60_WITH_MOUNT.kicad_mod │ │ ├── INA219.pretty/ │ │ │ ├── INA219_LARGE.kicad_mod │ │ │ └── INA219_SMALL.kicad_mod │ │ ├── INA219_Breakout.dcm │ │ ├── INA219_Breakout.lib │ │ ├── JLCPCB.pretty/ │ │ │ └── AssemblyToolingHole.kicad_mod │ │ ├── JST_XH_Connectors.pretty/ │ │ │ └── JST_XH_2-5mm_5pin.kicad_mod │ │ ├── LCD.dcm │ │ ├── LCD.lib │ │ ├── LED3mmBetterSilkScreen.pretty/ │ │ │ └── LED_D3.0mm.kicad_mod │ │ ├── LM339.dcm │ │ ├── LM339.lib │ │ ├── LevelShifterModule.dcm │ │ ├── LevelShifterModule.lib │ │ ├── LevelShifterModule.pretty/ │ │ │ └── LevelShifterModule.kicad_mod │ │ ├── MIC5842.dcm │ │ ├── MIC5842.lib │ │ ├── Mega2560Shield.dcm │ │ ├── Mega2560Shield.lib │ │ ├── Mega2560Shield.pretty/ │ │ │ ├── Mega2560Shield.kicad_mod │ │ │ └── Mega2560Shield_Modified.kicad_mod │ │ ├── ModifiedSymbols.pretty/ │ │ │ ├── IDC-Header_2x04_P2.54mm_Vertical.kicad_mod │ │ │ ├── LED_0603_1608Metric_Silkscreen.kicad_mod │ │ │ ├── LED_0805_2012Metric_Silkscreen.kicad_mod │ │ │ ├── LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm.kicad_mod │ │ │ ├── PinHeader_1x03_P2.54mm_Vertical_SolderJumper.kicad_mod │ │ │ ├── PinHeader_1x05_P2.54mm_Vertical_NoSilk.kicad_mod │ │ │ ├── PinHoles_1x04_P2.54mm_NoSilk.kicad_mod │ │ │ ├── Pin_Header_Right_Angle_1x03.kicad_mod │ │ │ ├── SOIC-14_3.9x8.7mm_P1.27mm_silk.kicad_mod │ │ │ ├── SOIC-16_3.9x9.9mm_P1.27mm_silk.kicad_mod │ │ │ └── TO-220-3_Vertical.kicad_mod │ │ ├── MountingHoles.pretty/ │ │ │ ├── M4_mount.kicad_mod │ │ │ ├── M4_mount_2mm_play.kicad_mod │ │ │ └── M4_mount_4mm_play.kicad_mod │ │ ├── NCP45560.dcm │ │ ├── NCP45560.lib │ │ ├── PJ-202A.pretty/ │ │ │ └── PJ-202A.kicad_mod │ │ ├── PinHeaders.pretty/ │ │ │ ├── Pin_Header_Straight_1x03.kicad_mod │ │ │ ├── Pin_Header_Straight_1x04.kicad_mod │ │ │ └── Pin_Header_Straight_2x07_Pitch2.54mm_IDC_Shrouded.kicad_mod │ │ ├── Pogo.models/ │ │ │ ├── pogo1mmPoint.step │ │ │ └── pogo2mmCup.step │ │ ├── RS485.pretty/ │ │ │ └── RS485Module.kicad_mod │ │ ├── RS485Module.dcm │ │ ├── RS485Module.lib │ │ ├── Resistor0805ThroughHole.pretty/ │ │ │ └── R_0805_ThroughHole.kicad_mod │ │ ├── SSD1306.pretty/ │ │ │ └── SSD1306_128x32.kicad_mod │ │ ├── ST7789.pretty/ │ │ │ ├── ST7789_240x240.kicad_mod │ │ │ └── ST7789_80x160.kicad_mod │ │ ├── ScrewTerminals.pretty/ │ │ │ ├── C72334_WJ500V-5.08-3P.kicad_mod │ │ │ ├── C8465_WJ500V-5.08-2P.kicad_mod │ │ │ ├── EB147A-02-D.kicad_mod │ │ │ ├── Generic-5.08-2P.kicad_mod │ │ │ └── Generic-5.08-3P.kicad_mod │ │ ├── SolderJumpers.pretty/ │ │ │ └── SolderJumper-2_P1.3mm_Bridged_Pad1.0x1.5mm.kicad_mod │ │ ├── SwitchESE13.pretty/ │ │ │ └── ESE13V01D.kicad_mod │ │ ├── TTGO.models/ │ │ │ └── TTGO_TDisplay.step │ │ ├── ULN2003AModule.dcm │ │ ├── ULN2003AModule.lib │ │ ├── ULN2003AModule.pretty/ │ │ │ ├── ULN2003AModule.kicad_mod │ │ │ ├── ULN2003AModule_No_EN.kicad_mod │ │ │ └── ULN2003AModule_No_EN_No_FSilk.kicad_mod │ │ ├── VN7003ALHTR.models/ │ │ │ └── STMicroelectronics_-_VN7003ALHTR.step │ │ ├── VN7007ALHTR.dcm │ │ ├── VN7007ALHTR.lib │ │ ├── VN7007ALHTR.pretty/ │ │ │ └── VN7007ALHTR.kicad_mod │ │ ├── arduino_uno_shield.dcm │ │ ├── arduino_uno_shield.lib │ │ ├── gp2s60.dcm │ │ ├── gp2s60.lib │ │ ├── hall_effect.dcm │ │ ├── hall_effect.lib │ │ ├── hall_effect.pretty/ │ │ │ ├── hall_effect.kicad_mod │ │ │ └── hall_effect_wide.kicad_mod │ │ ├── mount.dcm │ │ ├── mount.lib │ │ ├── no_pin.dcm │ │ ├── no_pin.lib │ │ ├── oled.dcm │ │ ├── oled.lib │ │ ├── pogoPins.pretty/ │ │ │ ├── pogo1mm.kicad_mod │ │ │ └── pogo2mm.kicad_mod │ │ ├── screw_terminal_01x03_power_output.dcm │ │ ├── screw_terminal_01x03_power_output.lib │ │ ├── sensor_smd_lib.pretty/ │ │ │ ├── SolderJumper-2_P1.3mm_Bridged_Pad1.0x1.5mm.kicad_mod │ │ │ ├── header_3.kicad_mod │ │ │ ├── header_3_smd.kicad_mod │ │ │ └── hole_9.4.kicad_mod │ │ ├── ws2812b.dcm │ │ └── ws2812b.lib │ ├── scripts/ │ │ ├── __init__.py │ │ ├── config/ │ │ │ ├── eeschema │ │ │ ├── kikit_panelize_classic.json │ │ │ ├── kikit_panelize_sensor.json │ │ │ ├── pcbnew │ │ │ └── policy.xml │ │ ├── dependencies.sh │ │ ├── dependencies_v2.sh │ │ ├── export_3d.py │ │ ├── export_jlcpcb.py │ │ ├── export_schematic.py │ │ ├── export_util.py │ │ ├── generate_pdf.py │ │ ├── generate_svg.py │ │ ├── pcb_util.py │ │ └── svg_processor.py │ ├── sensor/ │ │ ├── fp-lib-table │ │ ├── sensor-cache.lib │ │ ├── sensor.kicad_pcb │ │ ├── sensor.pro │ │ ├── sensor.sch │ │ └── sym-lib-table │ └── sensor_smd/ │ ├── fp-lib-table │ ├── kikit_panelize.json │ ├── sensor_smd-panelized.kibot.yml │ ├── sensor_smd.kibot.yml │ ├── sensor_smd.kicad_pcb │ ├── sensor_smd.kicad_prl │ ├── sensor_smd.kicad_pro │ └── sensor_smd.kicad_sch ├── firmware/ │ ├── .gitignore │ ├── buildscript_build_info_macros.py │ ├── esp32/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── base/ │ │ │ ├── base_config.h │ │ │ ├── base_supervisor_task.cpp │ │ │ └── base_supervisor_task.h │ │ ├── core/ │ │ │ ├── common.h │ │ │ ├── configuration.cpp │ │ │ ├── configuration.h │ │ │ ├── logger.h │ │ │ ├── recursive_semaphore_guard.h │ │ │ ├── semaphore_guard.h │ │ │ ├── splitflap_task.cpp │ │ │ ├── splitflap_task.h │ │ │ ├── task.h │ │ │ ├── uart_stream.cpp │ │ │ └── uart_stream.h │ │ ├── proto_gen/ │ │ │ ├── splitflap.pb.c │ │ │ └── splitflap.pb.h │ │ ├── splitflap/ │ │ │ ├── crc32.cpp │ │ │ ├── crc32.h │ │ │ ├── debug_build_info.cpp │ │ │ ├── debug_build_info.h │ │ │ ├── display_layouts.h │ │ │ ├── display_task.cpp │ │ │ ├── display_task.h │ │ │ ├── http_task.cpp │ │ │ ├── http_task.h │ │ │ ├── main.cpp │ │ │ ├── mqtt_task.cpp │ │ │ ├── mqtt_task.h │ │ │ ├── secrets.h.example │ │ │ ├── serial_legacy_json_protocol.cpp │ │ │ ├── serial_legacy_json_protocol.h │ │ │ ├── serial_proto_protocol.cpp │ │ │ ├── serial_proto_protocol.h │ │ │ ├── serial_protocol.h │ │ │ ├── serial_task.cpp │ │ │ └── serial_task.h │ │ └── tester/ │ │ ├── base64url.cpp │ │ ├── base64url.h │ │ ├── firestore.cpp │ │ ├── firestore.h │ │ ├── firestore_test_reporter.cpp │ │ ├── firestore_test_reporter.h │ │ ├── jwt.cpp │ │ ├── jwt.h │ │ ├── main.cpp │ │ ├── result.h │ │ ├── secrets.h.example │ │ ├── tester_task.cpp │ │ └── tester_task.h │ ├── include/ │ │ └── README │ ├── lib/ │ │ ├── README │ │ └── json11/ │ │ ├── CMakeLists.txt │ │ ├── LICENSE.txt │ │ ├── Makefile │ │ ├── README.md │ │ ├── json11.cpp │ │ ├── json11.hpp │ │ ├── json11.pc.in │ │ └── test.cpp │ ├── src/ │ │ ├── Adafruit_INA219.cpp │ │ ├── Adafruit_INA219.h │ │ ├── acceleration.h │ │ ├── basic_io_config.h │ │ ├── config.h │ │ ├── generate_acceleration.py │ │ ├── spi_io_config.h │ │ ├── splitflap_module.h │ │ └── splitflap_module_data.h │ └── test/ │ └── README ├── platformio.ini ├── proto/ │ ├── generate_protobuf.py │ └── splitflap.proto ├── scripts/ │ ├── annotate_image.sh │ └── video_thumb/ │ └── generate_thumbnail.sh ├── software/ │ ├── chainlink/ │ │ ├── README.md │ │ ├── demo.py │ │ ├── js/ │ │ │ ├── .gitignore │ │ │ ├── .npmrc │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ └── packages/ │ │ │ ├── example-node-cli/ │ │ │ │ ├── .eslintrc │ │ │ │ ├── .prettierrc │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ └── index.ts │ │ │ │ └── tsconfig.json │ │ │ ├── example-webserial-basic/ │ │ │ │ ├── .eslintrc │ │ │ │ ├── .gitignore │ │ │ │ ├── .prettierrc │ │ │ │ ├── README.md │ │ │ │ ├── package.json │ │ │ │ ├── public/ │ │ │ │ │ ├── 3d_viewer/ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── js/ │ │ │ │ │ │ ├── OrbitControls.js │ │ │ │ │ │ ├── STLLoader.js │ │ │ │ │ │ ├── WebGL.js │ │ │ │ │ │ ├── three.js │ │ │ │ │ │ ├── url-search-params/ │ │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── viewer.js │ │ │ │ │ ├── embed.html │ │ │ │ │ ├── index.html │ │ │ │ │ └── robots.txt │ │ │ │ ├── src/ │ │ │ │ │ ├── App.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── react-app-env.d.ts │ │ │ │ │ └── util.ts │ │ │ │ └── tsconfig.json │ │ │ ├── splitflapjs-core/ │ │ │ │ ├── .eslintrc │ │ │ │ ├── .prettierrc │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ ├── cobs.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── util.ts │ │ │ │ └── tsconfig.json │ │ │ ├── splitflapjs-node/ │ │ │ │ ├── .eslintrc │ │ │ │ ├── .prettierrc │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ └── index.ts │ │ │ │ └── tsconfig.json │ │ │ ├── splitflapjs-proto/ │ │ │ │ └── package.json │ │ │ └── splitflapjs-webserial/ │ │ │ ├── .eslintrc │ │ │ ├── .prettierrc │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── proto_gen/ │ │ │ ├── nanopb_pb2.py │ │ │ └── splitflap_pb2.py │ │ ├── requirements.txt │ │ └── splitflap_proto.py │ └── classic/ │ ├── demo.py │ ├── flap_test.py │ ├── splitflap.py │ └── terminal.py ├── thirdparty/ │ ├── README │ ├── __init__.py │ ├── panelize.py │ └── xvfbwrapper/ │ ├── LICENSE.txt │ ├── __init__.py │ └── xvfbwrapper.py └── util/ ├── __init__.py ├── app_paths.py ├── file_util.py ├── inkscape.py └── rev_info.py