Как шаговик крутить обратно?
- Войдите на сайт для отправки комментариев
Ср, 07/10/2015 - 17:10
Привет друзья. Написал скетч, который, при получении символа "w" крутит шаговик против часовой стрелки на 360 градусов, т.е. полный оборот. Никак не получается сделать так, чтобы при получении символа "s" крутило в обратную сторону, по часовой. Как это осуществить, помогите пожалуйста.
Вот сам скетч:
#include <Stepper.h> #include <SPI.h> char info = 0; //храним данные с буфера float stepper = 0; byte input1 = 3; byte input2 = 4; byte input3 = 5; byte input4 = 6; void setup() { Serial.begin(9600); pinMode (input1, OUTPUT); pinMode (input2, OUTPUT); pinMode (input3, OUTPUT); pinMode (input4, OUTPUT); } void loop () { if (Serial.available()>0){ // читаем, есть ли что-то в буфере info = Serial.read();// если есть, то это значение присваиваем переменной info } //if switch (info){ // разноусловная конструкция case 'w': while (stepper<50){ digitalWrite(input1, HIGH); digitalWrite(input2, LOW); digitalWrite(input3, LOW); digitalWrite(input4, HIGH); delayMicroseconds(800); digitalWrite(input1, LOW); digitalWrite(input2, HIGH); digitalWrite(input3, LOW); digitalWrite(input4, HIGH); delayMicroseconds(800); digitalWrite(input1, LOW); digitalWrite(input2, HIGH); digitalWrite(input3, HIGH); digitalWrite(input4, LOW); delayMicroseconds(800); digitalWrite(input1, HIGH); digitalWrite(input2, LOW); digitalWrite(input3, HIGH); digitalWrite(input4, LOW); delayMicroseconds(800); stepper++; } //while if (stepper==50){ digitalWrite(input1, LOW); digitalWrite(input2, LOW); digitalWrite(input3, LOW); digitalWrite(input4, LOW); break; } //if //while (Serial.available()) Serial.read(); break; case 's': break; case 'a': break; case 'd': break; } //switch info=0; stepper=0; } //void loop
По идее надо просто инвертировать значения - вместо LOW сделать HIGH и наоборот.
Ну и избавиться от повторяющихся кусков кода.
По идее надо просто инвертировать значения - вместо LOW сделать HIGH и наоборот.
Ну и избавиться от повторяющихся кусков кода.
Загрузил скетч. Шаговик крутит, как хочет. На символ W может крутить как по часовой, так и против. Так же и с S - крутит то в одну, то в другую сторону. Может, поможет наладить правильную работу шаговика его схема. Фото скрепил. Шаговик подключен через драйвер L298N.
А двигатель подключен правильно? А то такое бывает при неправильном подключении.
Вот набросок, как соединил:
----------------------
Провода от шаговика подключил к драйверу L298N следующим образом:
Черный: int1
Зеленый: int2
Синий: int3
Красный: int4
Черный и Зеленый - пара и Синий Красный - пара.
----------------------
Далее, от драйвера L298N подключаю к ардуино:
к pin3 соединен int1 (черный)
к pin4 соединен int2 (зеленый)
к pin5 соединен int3 (синий)
к pin6 соединен int4 (красный)
----------------------
Ребята, что скажете насчет кода и сборки шаговика? В чем причина не стаильной работы?