Остановка мотора с помощью фотодатчика
- Войдите на сайт для отправки комментариев
Ср, 04/05/2016 - 14:42
Помогите с кодом, в программировании С полный ноль...
Есть шаговый 28BYJ-48, 1 кнопка, 3 led, 1 потенциометрб, 1 оптический датчик
Нашел в сети код для мотора и немного исправил под себя...
Алгаритм работы проекта: мотор крутился с заданной скоростью по часовой и горит 1-й led, затем при нажатии кнопки и отпускании мотор крутится против часовой стрелки и загорается 2-й led 1-й гаснет, если фотодатчик перекрывается то двигатель должен останавливаться + загораться led и ждать нажатия кнопки
не могу понять куда надо функцию вставлять и какую для остановки двигателя...
сделал только индикацию перекрытия фотодатчика((( а остановку мотора так и не понял как...
[code]
/*
Arduino Шаговый двигатель 28BYJ-48 – 5V Stepper Motor
*/
// красный +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 = 3; // кнопку подключаем к Pin 3.
boolean q; // фиксируем нажатие на кнопку.
// установить скорость шагового двигателя.
// variable to set stepper speed.
const int led_G = 2;
const int led_R = 4;
int motorSpeed = 1200;
int lookup[8] = {
B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001
};
/////////////////////////////////////////////////////////////////
void setup() {
pinMode(6, OUTPUT);//LED
pinMode(5, INPUT_PULLUP); //ОПТОПАРА
// declare the motor pins as outputs.
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
pinMode(led_G, OUTPUT);
pinMode(led_R, 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) == HIGH) // если кнопка нажата.
{
q = !q; // меняем значение q на противоположное 0 на 1 или 1 на 0.
delay(500); // защита от дребезга кнопки.
digitalWrite(led_R, q); //загарается светодиод
}
if (q == 1)anticlockwise(); // крутим влево.
else clockwise(); // крутим вправо.
digitalWrite(led_G, !q); //загарается другой светодиод
//датчик - оптопара
if (digitalRead(5) == HIGH) digitalWrite(6, HIGH);
else digitalWrite(6, LOW);
}
// --------------------------------
//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));
}
[/code]
Прочитайте и перепостите код - http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
/* Arduino Шаговый двигатель 28BYJ-48 – 5V Stepper Motor */ // красный +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 = 3; // кнопку подключаем к Pin 3. boolean q; // фиксируем нажатие на кнопку. // установить скорость шагового двигателя. // variable to set stepper speed. const int led_G = 2; const int led_R = 4; int motorSpeed = 1200; int lookup[8] = { B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001 }; ///////////////////////////////////////////////////////////////// void setup() { pinMode(6, OUTPUT);//LED pinMode(5, INPUT_PULLUP); //ОПТОПАРА // declare the motor pins as outputs. pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); pinMode(led_G, OUTPUT); pinMode(led_R, 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) == HIGH) // если кнопка нажата. { q = !q; // меняем значение q на противоположное 0 на 1 или 1 на 0. delay(500); // защита от дребезга кнопки. digitalWrite(led_R, q); //загарается светодиод } if (q == 1)anticlockwise(); // крутим влево. else clockwise(); // крутим вправо. digitalWrite(led_G, !q); //загарается другой светодиод //датчик - оптопара if (digitalRead(5) == HIGH) digitalWrite(6, HIGH); else digitalWrite(6, LOW); } // -------------------------------- //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)); }/* Arduino Шаговый двигатель 28BYJ-48 – 5V Stepper Motor */ // красный +5V не использовал. // declare variables for the motor pins const byte motorPin1 = 8; // Blue / Синий - 28BYJ48 pin 1 const byte motorPin2 = 9; // Pink / Розовый - 28BYJ48 pin 2 const byte motorPin3 = 10; // Yellow / Желтый - 28BYJ48 pin 3 const byte motorPin4 = 11; // Orange / Оранжевый - 28BYJ48 pin 4 const byte buttonPin = 3; // кнопку подключаем к Pin 3. const byte sensorPin = 5; // выход фотодатчика подключаем к Pin 5. const byte PotPin = A0; // выход переменного резистора подключаем к Pin A0.const byte led_G = 2; const byte led_R = 4; const byte led_Stop = 6; // установить скорость шагового двигателя. int motorSpeed = 1200; boolean q; // фиксируем нажатие на кнопку. const byte lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001}; ///////////////////////////////////////////////////////////////// void setup() { pinMode(led_Stop, OUTPUT);//LED pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); pinMode(led_G, OUTPUT); pinMode(led_R, OUTPUT); // Одна нога кнопки подключается к GND, другая к Pin № 12 // (никаких внешних резисторов не нужно). pinMode(buttonPin, INPUT_PULLUP); pinMode(sensorPin, INPUT_PULLUP); //ОПТОПАРА Serial.begin(9600); } void loop() { // переменный резистор, крутим резистор меняем скорость вращения. int VariableResistor = analogRead(PotPin); motorSpeed = map(VariableResistor, 0, 1023, 10000, 1200); if (motorEnable()) // проверяем фотодатчик. Если он возвращает "запрещено", то остальное игнорим { if (digitalRead(buttonPin) == HIGH) // если кнопка нажата. { q = !q; // меняем значение q на противоположное 0 на 1 или 1 на 0. delay(250); // защита от дребезга кнопки. digitalWrite(led_R, q); //загарается светодиод } if (q == 1)anticlockwise(); // крутим влево. else clockwise(); // крутим вправо. digitalWrite(led_G, !q); //загарается другой светодиод } } // -------------------------------- //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)); } // функция чтения фотодатчика. Возвращает "true" (разрешено) или "false" (запрещено) boolean motorEnable() { if (digitalRead(sensorPin) == HIGH) // датчик сработал (есть препятствие) { digitalWrite(led_Stop, HIGH); // включаем LED "авария" setOutput(B00000); // принудительно тормозим движок digitalWrite(led_R, LOW); // принудительно гасим остальную индикацию digitalWrite(led_G, LOW); return false; // ставим флаг "запрещено" } else { digitalWrite(led_Stop, LOW); return true; // ставим флаг "разрешено" } }Спасибо большое!
Сейчас не могу проверить, все эксперименты на работе делаю. Завтра проверю с самого утра и отпишусь)))
Код рабочий, все работает как я хотел!
1 момент, при работе мотора "влево" после перекрытия фотодатчика мотор останавливается, а когда щелевой датчик освобождается - мотор крутится, но led не загорается. Сделал так:
{ digitalWrite(led_Stop, LOW); digitalWrite(led_R, q); //загарается другой светодиод return true; // ставим флаг "разрешено" }Спосибо за помощь.
Решил немного усложнить задачу. Кнопка которая меняла направление вращения мотора должна ещё и вкл/ вык мотор.
Сдается мне что кнопка с режимами то что надо, вот только запутался, из-за переменной "boolean q" не могу функцию построить для режимов.
От "boolean motorEnable()" надо отказаться я так понимаю, и функций должно быть уже 3?
1-я функция- ничего не работает
2-я функцияработает в право
3-я функцияработает в лево
Поправте если вообще не туда смотрю.
Последний код не рабочий (я извращался), нужны советы по изменению текущего кода.
З.ы.: Интересно, но сложно мне пока, функции, переменные, параметры, вместо параметров др. функции, операторы, и т.д. ... Сложно, стараюсь читать по мере возможности в справочнике, но пока туманно, всё запутанно) но интересно!
С уважением, Kilevra.
Спасибо.
/* Arduino Шаговый двигатель 28BYJ-48 – 5V Stepper Motor */ // красный +5V не использовал. // declare variables for the motor pins const byte motorPin1 = 8; // Blue / Синий - 28BYJ48 pin 1 const byte motorPin2 = 9; // Pink / Розовый - 28BYJ48 pin 2 const byte motorPin3 = 10; // Yellow / Желтый - 28BYJ48 pin 3 const byte motorPin4 = 11; // Orange / Оранжевый - 28BYJ48 pin 4 const byte buttonPin = 3; // кнопку подключаем к Pin 3. const byte sensorPin = 5; // выход фотодатчика подключаем к Pin 5. const byte PotPin = A0; // выход переменного резистора подключаем к Pin A0.const byte led_G = 2; const byte led_R = 4; const byte led_G = 2; const byte led_Stop = 6; int flag = 0; // флаг состояния int regim = 0; // переключение режимов // установить скорость шагового двигателя. int motorSpeed = 1200; boolean q; // фиксируем нажатие на кнопку. const byte lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001}; ///////////////////////////////////////////////////////////////// void setup() { pinMode(led_Stop, OUTPUT);//LED pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); pinMode(led_G, OUTPUT); pinMode(led_R, OUTPUT); pinMode(buttonPin, INPUT_PULLUP); pinMode(sensorPin, INPUT_PULLUP); //ОПТОПАРА Serial.begin(9600); } void loop() { // переменный резистор, крутим резистор меняем скорость вращения. int VariableResistor = analogRead(PotPin); motorSpeed = map(VariableResistor, 0, 1023, 10000, 1200); if (motorEnable()) // проверяем фотодатчик. Если он возвращает "запрещено", то остальное игнорим { if (digitalRead(buttonPin) == HIGH && flag == 0) // если кнопка нажата. { regim ++; flag = 1; if(regim > 2) // Если номер режима превышает требуемого { // то отсчет начинается с нуля regim = 0;} q = !q; // меняем значение q на противоположное 0 на 1 или 1 на 0. delay(250); // защита от дребезга кнопки. digitalWrite(led_R, q); //загарается светодиод } if (q == 1)anticlockwise(); // крутим влево. else clockwise(); // крутим вправо. digitalWrite(led_G, !q); //загарается другой светодиод } // РЕЖИМ 0 if(regim == 0) { if(digitalRead(buttonPin) == LOW && flag == 1) { flag = 0; } } // РЕЖИМ 1 if(regim == 1) { anticlockwise(); // крутим влево. digitalWrite(led_R, q); //загарается светодиод } // РЕЖИМ 2 if(regim == 2) { clockwise(); // крутим вправо. digitalWrite(led_G, !q); //загарается другой светодиод } } // -------------------------------- //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)); } // функция чтения фотодатчика. Возвращает "true" (разрешено) или "false" (запрещено) boolean motorEnable() { if (digitalRead(sensorPin) == HIGH) // датчик сработал (есть препятствие) { digitalWrite(led_Stop, HIGH); // включаем LED "авария" setOutput(B00000); // принудительно тормозим движок digitalWrite(led_R, LOW); // принудительно гасим остальную индикацию digitalWrite(led_G, LOW); return false; // ставим флаг "запрещено" } else { digitalWrite(led_Stop, LOW); digitalWrite(led_R, q); //загарается другой светодиод return true; // ставим флаг "разрешено" } }неважно сколько функций, важно сколько всего возможных состояний у системы, дальше легко расписать по функциям.
От motorEnable() не надо отказываться, ведь это основное в данной системе - блокировка вращения мотора.
Решил отказаться от "boolean q"
Режимы кнопки работают:
1-й мотор остановлен
2-й мотор крутит по часовой
3-й мотор крутит против часовой
Но перестал работать фото -датчик (точнее - перестал останавливать мотор), а LED при перекрытии датчика загорается, почемуто функция "motorEnable()"не срабатывает правильно.
LED, кстати последний горит - не зависимо куда вращается мотор или выключен, но если перекрыть датчик, LED снова сбрасывает значение на defolt
Прошу совета, и работы над ошибками как победить, сенсор очень нужен)
/* Arduino Шаговый двигатель 28BYJ-48 – 5V Stepper Motor */ // красный +5V не использовал. // declare variables for the motor pins const byte motorPin1 = 8; // Blue / Синий - 28BYJ48 pin 1 const byte motorPin2 = 9; // Pink / Розовый - 28BYJ48 pin 2 const byte motorPin3 = 10; // Yellow / Желтый - 28BYJ48 pin 3 const byte motorPin4 = 11; // Orange / Оранжевый - 28BYJ48 pin 4 const byte buttonPin = 3; // кнопку подключаем к Pin 3. const byte sensorPin = 5; // выход фотодатчика подключаем к Pin 5. const byte PotPin = A0; // выход переменного резистора подключаем к Pin A0.const byte led_G = 2; const byte led_R = 4; const byte led_Stop = 6; const byte led_G = 2; // установить скорость шагового двигателя. int motorSpeed = 1200; int flag = 0; // флаг состояния int regim = 0; // Переключалка const byte lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001}; ///////////////////////////////////////////////////////////////// void setup() { pinMode(led_Stop, OUTPUT);//LED pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); pinMode(led_G, OUTPUT); pinMode(led_R, OUTPUT); // Одна нога кнопки подключается к GND, другая к Pin № 3 // (никаких внешних резисторов не нужно). pinMode(buttonPin, INPUT_PULLUP); pinMode(sensorPin, INPUT_PULLUP); //ОПТОПАРА Serial.begin(9600); } void loop() { // переменный резистор, крутим резистор меняем скорость вращения. int VariableResistor = analogRead(PotPin); motorSpeed = map(VariableResistor, 0, 1023, 10000, 1200); if (motorEnable()) // проверяем фотодатчик. Если он возвращает "запрещено", то остальное игнорим { if (digitalRead(buttonPin) == HIGH && flag == 0) { regim ++; flag = 1; delay(350); // защита от дребезга кнопки. if(regim > 2) // Если номер режима превышает требуемого { // то отсчет начинается с нуля regim = 0; } } if (digitalRead(buttonPin) == LOW && flag == 1) { flag = 0; } } // ======= Вполняем задачу при выборе режима ======= // РЕЖИМ 0: OFF if(regim == 0) { setOutput(B00000); // принудительно тормозим движок } // РЕЖИМ 1: по часовой if(regim == 1) { clockwise(); digitalWrite(led_G, HIGH); } // РЕЖИМ 2: против часовой if(regim == 2) { anticlockwise(); digitalWrite(led_R, HIGH); } } // -------------------------------- //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)); } // функция чтения фотодатчика. Возвращает "true" (разрешено) или "false" (запрещено) boolean motorEnable() { if (digitalRead(sensorPin) == HIGH) // датчик сработал (есть препятствие) { digitalWrite(led_Stop, HIGH); // включаем LED "авария" setOutput(B00000); // принудительно тормозим движок digitalWrite(led_R, LOW); // принудительно гасим остальную индикацию digitalWrite(led_G, LOW); return false; // ставим флаг "запрещено" } else { digitalWrite(led_Stop, LOW); return true; // ставим флаг "разрешено" } }Нашел причину почему датчик не срабатывал ...
Нужно было функции с режимами кнопки вложить в функцию "motorEnable()", до этого они в "void loop()" были.
Только проблема с LED осталась, последний LED так и продолжает постоянно гореть пока датчик его не сбросит, я так понимаю потому что явно указан пин. Через переменную надо както-то сделать включение LED, -помаракую на досуге :)
/* Arduino Шаговый двигатель 28BYJ-48 – 5V Stepper Motor */ // красный +5V не использовал. // declare variables for the motor pins const byte motorPin1 = 8; // Blue / Синий - 28BYJ48 pin 1 const byte motorPin2 = 9; // Pink / Розовый - 28BYJ48 pin 2 const byte motorPin3 = 10; // Yellow / Желтый - 28BYJ48 pin 3 const byte motorPin4 = 11; // Orange / Оранжевый - 28BYJ48 pin 4 const byte buttonPin = 3; // кнопку подключаем к Pin 3. const byte sensorPin = 5; // выход фотодатчика подключаем к Pin 5. const byte PotPin = A0; // выход переменного резистора подключаем к Pin A0.const byte led_G = 2; const byte led_R = 4; const byte led_Stop = 6; const byte led_G = 2; int motorSpeed = 1200; // установить скорость шагового двигателя. enum {STOP, LEFT, RIGHT}; // возможные состояния системы byte regim[4] = {STOP, LEFT, STOP, RIGHT}; // последовательность переключения режимов работы byte currentMode; // переменная для хранения текущего режима работы const byte lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001}; ///////////////////////////////////////////////////////////////// void setup() { pinMode(led_Stop, OUTPUT);//LED pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); pinMode(led_G, OUTPUT); pinMode(led_R, OUTPUT); // Одна нога кнопки подключается к GND, другая к Pin № 3 // (никаких внешних резисторов не нужно). pinMode(buttonPin, INPUT_PULLUP); pinMode(sensorPin, INPUT_PULLUP); //ОПТОПАРА Serial.begin(9600); } void loop() { setMotorSpeed(); // задаем скорость мотора с переменного резистора checkButton(); // читаем состояние кнопки switch (regim[currentMode]) // смотрим текущий режим работы { case STOP: { setOutput(B00000); // тормозим движок digitalWrite(led_R, LOW); // гасим индикаторы направления digitalWrite(led_G, LOW); } break; case LEFT: { digitalWrite(led_G, HIGH); if (checkSensor() == true) clockwise(); // если разрешено, то крутим по часовой } break; case RIGHT: { digitalWrite(led_R, HIGH); if (checkSensor() == true) anticlockwise(); // если разрешено, то крутим против часовой } break; } } // конец loop // Обработчик кнопки. При нажатии перевключает режим по алгоритму: Stop --> Left --> Stop --> Right void checkButton() { if (digitalRead(buttonPin) == HIGH) // если кнопка нажата { if (currentMode < RIGHT) currentMode++; // переключаемся на следующий режим else currentMode = STOP; delay(100); // защита от дребезга кнопки. } } // функция чтения фотодатчика. При перекрытии останавливает движок, НЕ МЕНЯЯ текущего направления движения boolean checkSensor() { if (digitalRead(sensorPin) == HIGH) // датчик сработал (есть препятствие) { digitalWrite(led_Stop, HIGH); // включаем LED "авария" setOutput(B00000); // принудительно тормозим движок return false; // ставим флаг "запрещено" } else { digitalWrite(led_Stop, LOW); return true; // ставим флаг "разрешено" } } // задаем скорость вращения мотора с переменного резистора void setMotorSpeed() { int VariableResistor = analogRead(PotPin); motorSpeed = map(VariableResistor, 0, 1023, 10000, 1200); } // функция поворачивает мотор против часовой стрелки. 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)); }Tomasina,
Завтра обязательно проверю Ваш код. Я так понял, вариантов реализации проекта очень много, нужно только знать язык программирования))) Спасибо, что пишете коментарии к коду который переделали, очень помогает.
Буду вникать на праздниках.
Спасибо за помощь и подсказки. С наступающим праздником ПОБЕДЫ!