From f96ca76418b98c6202bec24f580c4eabb14633fa Mon Sep 17 00:00:00 2001 From: Zekkos Date: Fri, 6 Mar 2026 13:54:22 +1300 Subject: [PATCH] Added motor drivers --- hardware/esp32-racer-lib/drv8701.pdf | Bin 0 -> 3065136 bytes .../esp32-racer-lib/esp32-racer-lib.kicad_sym | 47552 ++++++++++++++ hardware/esp32-racer/MOTOR_DRIVER.kicad_sch | 52589 ++++++++++++++++ hardware/esp32-racer/POWER.kicad_sch | 6 +- hardware/esp32-racer/esp32-racer.kicad_prl | 41 +- hardware/esp32-racer/esp32-racer.kicad_pro | 224 +- hardware/esp32-racer/esp32-racer.kicad_sch | 288 + hardware/esp32-racer/sym-lib-table | 4 + 8 files changed, 100694 insertions(+), 10 deletions(-) create mode 100644 hardware/esp32-racer-lib/drv8701.pdf create mode 100644 hardware/esp32-racer-lib/esp32-racer-lib.kicad_sym create mode 100644 hardware/esp32-racer/MOTOR_DRIVER.kicad_sch create mode 100644 hardware/esp32-racer/sym-lib-table diff --git a/hardware/esp32-racer-lib/drv8701.pdf b/hardware/esp32-racer-lib/drv8701.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5156aff706cc92dfcafad4baa8eec44a00d95b36 GIT binary patch literal 3065136 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