отредактируйте пост согласно правилам раздела в течении 24 час или БАН
Требуется исполнитель :
удаленно
Надо изготовить :
Объединить 2 программы.
Планируемый бюджет :
договорной
Сроки :
приемлемые
Оплата :
по согласованию
Для связи :
форум или почта.
ТЗ:
Есть программа управления шаговым движком. С взято с просторов интернета. Она работает, но при изменении скорости глючит.
Нужна помощь в исправлении программы и добавлении функционала.
Хочу еще на эту ардуинку повесить управление адресной лентой из урока Алекса
удаленно
Надо изготовить :
Объединить 2 программы.
Планируемый бюджет :
договорной
Сроки :
приемлемые
Оплата :
по согласованию
Для связи :
форум или почта.
ТЗ:
Есть программа управления шаговым движком. С взято с просторов интернета. Она работает, но при изменении скорости глючит.
Нужна помощь в исправлении программы и добавлении функционала.
Хочу еще на эту ардуинку повесить управление адресной лентой из урока Алекса
Куча эффектов для WS2812b | AlexGyver
Большой сборник эффектов для адресной светодиодной ленты на чипах WS2812b в одном большом скетче! Эффекты собраны и оптимизированы со всех уголков интернета.
alexgyver.ru
C++:
// красный +5V не использовал.
// declare variables for the motor pins
int motorPin1 = 8; // Blue / Синий - 28BYJ48 pin 1
int motorPin2 = 9; // Pink / Розовый - 28BYJ48 pin 2
int motorPin3 = 10; // Yellow / Желтый - 28BYJ48 pin 3
int motorPin4 = 11; // Orange / Оранжевый - 28BYJ48 pin 4
int buttonPin = 12; // кнопку подключаем к Pin 12.
boolean q; // фиксируем нажатие на кнопку.
// установить скорость шагового двигателя.
//variable to set stepper speed.
int motorSpeed = 1200;
int lookup[8] = {
B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};
/////////////////////////////////////////////////////////////////
void setup() {
// declare the motor pins as outputs.
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
// Одна нога кнопки подключается к GND, другая к Pin № 12
// (никаких внешних резисторов не нужно).
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH);
// Serial.begin(9600);
}
void loop(){
// переменный резистор, крутим резистор меняем скорость вращения.
// раскомментируйте две строки.
int VariableResistor = analogRead(A0);
motorSpeed = map(VariableResistor, 0, 1023, 10000, 1200);
if (digitalRead(buttonPin) == LOW) // если кнопка нажата.
{
q = !q; // меняем значение q на противоположное 0 на 1 или 1 на 0.
delay(1000); // защита от дребезга кнопки.
}
if (q == 1)anticlockwise(); // крутим влево.
else clockwise(); // крутим вправо.
}
// --------------------------------
//set pins to ULN2003 high in sequence from 1 to 4
//delay "motorSpeed" between each pin setting (to determine speed)
// функция поворачивает мотор против часовой стрелки.
void anticlockwise()
{
for(int i = 0; i < 8; i++)
{
setOutput(i);
delayMicroseconds(motorSpeed);
}
}
// функция поворачивает мотор по часовой стрелке.
void clockwise()
{
for(int i = 7; i >= 0; i--)
{
setOutput(i);
delayMicroseconds(motorSpeed);
}
}
void setOutput(int out)
{
digitalWrite(motorPin1, bitRead(lookup[out], 0));
digitalWrite(motorPin2, bitRead(lookup[out], 1));
digitalWrite(motorPin3, bitRead(lookup[out], 2));
digitalWrite(motorPin4, bitRead(lookup[out], 3));
}
Изменено: