# Drum Motor

How to connect and code for a nano or ESP32 to control the motor.

[![image.png](https://skywiki.coffee/uploads/images/gallery/2025-04/scaled-1680-/image.png)](https://skywiki.coffee/uploads/images/gallery/2025-04/image.png)

<table class="min-w-full" data-end="1670" data-start="1505" id="bkmrk-motor-wire-arduino-b" style="height: 115px; width: 82.7381%;"><thead data-end="1529" data-start="1505"><tr data-end="1529" data-start="1505"><th data-end="1518" data-start="1505" style="width: 49.9281%;">Motor Wire</th><th data-end="1529" data-start="1518" style="width: 49.9281%;">Arduino</th></tr></thead><tbody data-end="1670" data-start="1555"><tr data-end="1579" data-start="1555"><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1568" data-start="1555" style="width: 49.9281%;">Blue (PWM)</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1579" data-start="1568" style="width: 49.9281%;">D6</td></tr><tr data-end="1604" data-start="1580"><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1593" data-start="1580" style="width: 49.9281%;">White (DIR)</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1604" data-start="1593" style="width: 49.9281%;">D7</td></tr><tr data-end="1629" data-start="1605"><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1618" data-start="1605" style="width: 49.9281%;">Red (V+)</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1629" data-start="1618" style="width: 49.9281%;">12–24V</td></tr><tr data-end="1670" data-start="1630"><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1643" data-start="1630" style="width: 49.9281%;">Black (GND)</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1670" data-start="1643" style="width: 49.9281%;">Shared GND with Arduino</td></tr></tbody></table>


### 1. Add These Pin Definitions at the Top:

  
const int drumPwmPin = 6; // PWM pin (connect to Blue wire)  
const int drumDirPin = 7; // Direction pin (connect to White wire

### 2. Add These to `setup()`:Make sure these lines are inside your `setup()` function

<div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary" id="bkmrk--2"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div><div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary" id="bkmrk-pinmode%28drumpwmpin%2C-"><div class="overflow-y-auto p-4" dir="ltr"><div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary"><div class="overflow-y-auto p-4" dir="ltr">pinMode(drumPwmPin, OUTPUT);  
pinMode(drumDirPin, OUTPUT);</div></div>`<span class="hljs-comment"><br></br></span>`</div></div>### 3. Replace Your `handleDRUM()` With This Version:

<div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary" id="bkmrk--3"><div class="overflow-y-auto p-4" dir="ltr"><div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-sidebar-surface-primary text-token-text-secondary dark:bg-token-main-surface-secondary flex items-center rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div></div></div>void handleDRUM(uint8\_t value) {  
 if (value &gt; 100) value = 100; // Clamp value to 100  
 int pwmValue = map(value, 0, 100, 0, 255); // Scale 0-100 to 0-255

 if (value != 0) {  
 digitalWrite(drumDirPin, HIGH); // Set motor direction (HIGH = CW)  
 analogWrite(drumPwmPin, pwmValue); // Apply PWM speed  
 setValue(&amp;sendBuffer\[drumByte\], value); // Update protocol buffer  
 } else {  
 analogWrite(drumPwmPin, 0); // Stop motor  
 setValue(&amp;sendBuffer\[drumByte\], 0);  
 }

 lastEventTime = micros();  
}

<div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary" id="bkmrk--4"><div class="overflow-y-auto p-4" dir="ltr"><div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary"><div class="overflow-y-auto p-4" dir="ltr">  
</div></div></div></div>