// рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
//
github.com/Stan-Reifel/TinyStepper_28BYJ_48//
//
// рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рд╣реИ рдХрд┐ рд╕реНрдЯреЗрдкрд░ рдореЛрдЯрд░ рдХреЛ Arduino рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП
// ULN2003 рдбреНрд░рд╛рдЗрд╡рд░ рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
// *************************************** ***********************
#include <TinyStepper_28BYJ_48.h>
#include <Adafruit_NeoPixel.h>
// NEO рдкрд┐рдХреНрд╕реЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
# рдбреЗрдлрд┐рди рдкрд┐рди 0
#define LEDS_COUNT 5
# рд░реЗрдбрд┐рдл рд╕реНрдЯреНрд░рд┐рдкред рд░рдВрдЧ (255, 0, 0)
#define GREEN рдХреА рдкрдЯреНрдЯреАред рд░рдВрдЧ (0, 255, 0)
#define BLUE рд╕реНрдЯреНрд░рд┐рдкред рд░рдВрдЧ (0, 0, 255)
#define рд╕рдлреЗрдж рдкрдЯреНрдЯреАред рд░рдВрдЧ (255, 255, 255)
// рдкрд┐рди рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ, рдХрд┐рд╕реА рднреА рдбрд┐рдЬрд┐рдЯрд▓ рдкрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
#define MOTOR_IN1_PIN рез
#define MOTOR_IN2_PIN 2
#define MOTOR_IN3_PIN 3
#define MOTOR_IN4_PIN 4
// рд╕реНрдЯреЗрдкрд░ рдореЛрдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ
TinyStepper_28BYJ_48 рд╕реНрдЯреЗрдкрд░;
Adafruit_NeoPixel рд╕реНрдЯреНрд░рд┐рдк = Adafruit_NeoPixel (LEDS_COUNT, PIN, NEO_GRB + NEO_KHZ800);
рд╢реВрдиреНрдп рд╕реЗрдЯрдЕрдк () {
// рд╕реНрдЯреЗрдкрд░ рдореЛрдЯрд░ рдХреЛ рдЙрд╕рдХреЗ IO рдкрд┐рди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
stepper.connectToPins (MOTOR_IN1_PIN, MOTOR_IN2_PIN, MOTOR_IN3_PIN, MOTOR_IN4_PIN);
// рд╕реНрдЯреЗрдкрд░ рдореЛрдЯрд░ рдХреЗ рд▓рд┐рдП рдЧрддрд┐ рдФрд░ рддреНрд╡рд░рдг рджрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ
stepper.setSpeedInStepsPerSecond (256);
stepper.setAccelerationInStepsPerSecondPerSecond (512);
рдкрдЯреНрдЯреАредрдмреАрдЧрд┐рди ();
рдкрдЯреНрдЯреАредрд╢реЛ (); // 'рдмрдВрдж' рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкрд┐рдХреНрд╕рд▓ рд╢реБрд░реВ
}
рд╢реВрдиреНрдп рд▓реВрдк () {
// рдореЛрдЯрд░ рдХреЛ рдЖрдЧреЗ рдХреА рдУрд░ рдПрдХ рдЪрдХреНрдХрд░ рдореЗрдВ рдШреБрдорд╛рдПрдВ
stepper.moveRelativeInSteps (410);
рдХреЗ рд▓рд┐рдП (рдмрд╛рдЗрдЯ i = 0; рдореИрдВ <20; рдореИрдВ ++) {
fadeInOut (0xff, 0x00, 0x00); // рд▓рд╛рд▓
}
// рдкреАрдЫреЗ 1 рдЪрдХреНрдХрд░ рдШреБрдорд╛рдПрдВ, рдлрд┐рд░ 1 рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
stepper.moveRelativeInSteps (-410);
рдХреЗ рд▓рд┐рдП (рдмрд╛рдЗрдЯ i = 0; рдореИрдВ <20; рдореИрдВ ++) {
fadeInOut (0x00, 0x00, 0xff); // рдиреАрд▓рд╛
}
}
рд╢реВрдиреНрдп fadeInOut (рдмрд╛рдЗрдЯ рд░реЗрдб, рдмрд╛рдЗрдЯ рдЧреНрд░реАрди, рдмрд╛рдЗрдЯ рдмреНрд▓реВ) {
рдлреНрд▓реЛрдЯ рдЖрд░, рдЬреА, рдмреА;
for (int k = 0; k <256; k = k + 1) {
рдЖрд░ = (рдХреЗ / 256.0) * рд▓рд╛рд▓;
g = (k / 256.0) * рд╣рд░рд╛;
b = (k / 256.0) * рдиреАрд▓рд╛;
setAll (рдЖрд░, рдЬреА, рдмреА);
рдкрдЯреНрдЯреАредрд╢реЛ ();
рджреЗрд░реА (5);
}
for (int k = 255; k> = 0; k = k-2) {
рдЖрд░ = (рдХреЗ / 256.0) * рд▓рд╛рд▓;
g = (k / 256.0) * рд╣рд░рд╛;
b = (k / 256.0) * рдиреАрд▓рд╛;
setAll (рдЖрд░, рдЬреА, рдмреА);
рдкрдЯреНрдЯреАредрд╢реЛ ();
рджреЗрд░реА (5);
}
}
рд╢реВрдиреНрдп setAll (рдмрд╛рдЗрдЯ рд░реЗрдб, рдмрд╛рдЗрдЯ рдЧреНрд░реАрди, рдмрд╛рдЗрдЯ рдмреНрд▓реВ) {
for (int i = 0; рдореИрдВ <LEDS_COUNT? i ++) {
strip.setPixelColor (i, strip.Color (рд▓рд╛рд▓, рд╣рд░рд╛, рдиреАрд▓рд╛));
}
рдкрдЯреНрдЯреАредрд╢реЛ ();
}