diff options
| author | schererleander <leander@schererleander.de> | 2025-06-25 01:00:49 +0200 |
|---|---|---|
| committer | schererleander <leander@schererleander.de> | 2025-06-25 01:00:59 +0200 |
| commit | 64564a6fee02708d375a349d75ce49d515e66f8d (patch) | |
| tree | fa7685e6f51e90af9f8bd45fae1f2133b1237772 /src/blog | |
| parent | 12aa0baac380149cdbb36803605be42368e736ad (diff) | |
add markdown-based blog
Diffstat (limited to 'src/blog')
| -rw-r--r-- | src/blog/3dprint.md | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/blog/3dprint.md b/src/blog/3dprint.md new file mode 100644 index 0000000..ab3cf28 --- /dev/null +++ b/src/blog/3dprint.md @@ -0,0 +1,66 @@ +--- +title: "3D Printing" +date: "2025-06-25" +excerpt: "My 3D-printing projects: from a robotic arm to a DIY drone – including the ESP32 controller code." +cover: "/src/assets/a1.webp" +--- + +# Projects + +## Robotic Arm + +[3D model on MakerWorld](https://makerworld.com/en/models/528885-robotic-arm#profileId-445995) – modified to work with my servo motors. + +```cpp +#include <Bluepad32.h> +#include <ESP32Servo.h> + +#define DEADZONE 30 +#define BASE_PIN 15 +#define SHOULDER_PIN 2 +#define ELBOW_PIN 4 +#define WRIST_PIN 16 +#define HAND_PIN 17 + +Servo base, shoulder, elbow, wrist, hand; +ControllerPtr pad; + +void onConnectedGamepad(ControllerPtr ctl) { + Serial.printf("Gamepad #%d connected\n", ctl->index()); + pad = ctl; +} + +void onDisconnectedGamepad(ControllerPtr ctl) { + Serial.printf("Gamepad disconnected\n"); +} + +int16_t mapAxis(int16_t v) { + if (abs(v) < DEADZONE) v = 0; + return map(v, -512, 512, 0, 180); +} + +void setup() { + BP32.setup(&onConnectedGamepad, &onDisconnectedGamepad); + BP32.enableNewBluetoothConnections(true); + + base.attach(BASE_PIN); + shoulder.attach(SHOULDER_PIN); + elbow.attach(ELBOW_PIN); + wrist.attach(WRIST_PIN); + hand.attach(HAND_PIN); +} + +void loop() { + BP32.update(); + if (pad && pad->isConnected()) { + base.write(mapAxis(pad->axisX())); + shoulder.write(mapAxis(-pad->axisY())); + elbow.write(mapAxis(-pad->axisRY())); + hand.write(mapAxis(pad->throttle() - pad->brake())); + + if (pad->l1()) wrist.write(0); + else if (pad->r1()) wrist.write(180); + else wrist.write(90); + } + delay(15); +}
\ No newline at end of file |
