#include //motor pins #define M2A 17 #define M2B 16 #define M1A 19 #define M1B 18 // LED #define NUM_LEDS 2 CRGB leds[NUM_LEDS]; #define WSLED 4 //LEDs on void ledsOn() { for (int i = 0; i < NUM_LEDS; i++) { leds[i] = CRGB::Red; } FastLED.show(); } //LEDs off void ledsOff() { for (int i = 0; i < NUM_LEDS; i++) { leds[i] = CRGB::Black; } FastLED.show(); } //B and A low void off() { digitalWrite(M2B, LOW); digitalWrite(M2A, LOW); digitalWrite(M1B, LOW); digitalWrite(M1A, LOW); } //B high A low void reverse() { digitalWrite(M2B, HIGH); digitalWrite(M2A, LOW); digitalWrite(M1B, HIGH); digitalWrite(M1A, LOW); } //B low A high void forward() { digitalWrite(M2B, LOW); digitalWrite(M2A, HIGH); digitalWrite(M1B, LOW); digitalWrite(M1A, HIGH); } // M2 high/low M1 high/low void cw() { digitalWrite(M2B, HIGH); digitalWrite(M2A, LOW); digitalWrite(M1B, LOW); digitalWrite(M1A, HIGH); } //B high A low in M1 opposite M2 void ccw() { digitalWrite(M2B, LOW); digitalWrite(M2A, HIGH); digitalWrite(M1B, HIGH); digitalWrite(M1A, LOW); } void setup() { //motor control output pinMode(M1A, OUTPUT); pinMode(M1B, OUTPUT); pinMode(M2A, OUTPUT); pinMode(M2B, OUTPUT); FastLED.addLeds(leds, NUM_LEDS); } void loop() { const unsigned long turnDuration = 200; // turn duration const unsigned long blinkInterval = 50; // blink const int numTurns = 4; // b2b turns // left and right 4 times for (int i = 0; i < numTurns; i++) { ccw(); ledsOn(); delay(turnDuration); ledsOff(); cw(); ledsOn(); delay(turnDuration); ledsOff(); } //spin in circle unsigned long startTime = millis(); unsigned long currentTime; const unsigned long spinDuration = 3000; //spin length cw(); while ((currentTime = millis()) - startTime < spinDuration) { ledsOn(); delay(blinkInterval / 2); ledsOff(); delay(blinkInterval / 2); } off(); ledsOff(); delay(500); }