Помогите,пожалуйста,со скетчем ИК пульт+шаговый двигатель 28BYJ-48
- Войдите на сайт для отправки комментариев
Вс, 26/08/2018 - 18:46
Здравствуйте,уважаемые Форумчане!
Задача соит такая: необходимо,чтобы шаговый двигатель вращался с разной скоростью при нажатии различных кнопок на ИК-пульте. На практике получил следущее,а именно при нажатии одной из заданных кнопок двигатель начинает вращаться с требуемой скоростью и далее никак на команды с ИК-пульта не реагирует. Какую кнопку первой нажмешь,с такой и будет вращаться не реагируя на другие команды.Буду вам очень благодарен за помощь!
Прикрепляю скетч программы
#include "IRremote.h"
IRrecv irrecv(2); // указываем вывод, к которому подключен приемник
decode_results results;
int IN1 = 7;
int IN2 = 6;
int IN3 = 5;
int IN4 = 4;
int time_del = 16385;
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(9600); // выставляем скорость COM порта
irrecv.enableIRIn(); // запускаем прием
}
void loop() {
if ( irrecv.decode( &results )) { // если данные пришли
switch ( results.value ) {
case 0xFFA25D:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delayMicroseconds(time_del);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delayMicroseconds(time_del);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delayMicroseconds(time_del);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delayMicroseconds(time_del);
case 0xFF629D:
int time_del2 = 3000;
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delayMicroseconds(time_del2);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
delayMicroseconds(time_del2);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delayMicroseconds(time_del2);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
delayMicroseconds(time_del);
}
}
}
Вставьте код как положено. Только после этого будет предметный разговор.
оно даже компилироваться не должно
Почему? Вполне себе должно, но давайте не будем обсуждать неправильно вставленный код, а то народ потом на голову садится.
Почему? Вполне себе должно, но давайте не будем обсуждать неправильно вставленный код, а то народ потом на голову садится.
Код надо поправить и вставить правильно, а там переменная time_del2 не объявлена или я не вижу чего-то, странно, компилируется и в оригинале и с добавленной объявленной переменной, век живи век учись...
PS пишу аналогичный скетч )))
Почему? Вполне себе должно, но давайте не будем обсуждать неправильно вставленный код, а то народ потом на голову садится.
Код надо поправить и вставить правильно, а там переменная time_del2 не объявлена или я не вижу чего-то, странно, компилируется и в оригинале и с добавленной объявленной переменной, век живи век учись...
PS пишу аналогичный скетч )))
Там оно есть:
Другое дело, что после case нет break, оно там наисполняет :)
Cosmos888, Вы не читатель, а писатель?
Т.е. Вы принципиально не хотите выкладывать коды по правилам этого форума?
Ну, тогда, извините, решайте свои проблемы самостоятельно.
Добрый день!Извиняюсь за свое невежество!Сначала не понял,что именно надо сделать.Никого ни в коем случае не хотел обидеть!Прочитал тему про вставку программного кода.Теперь прикрепляю как положено и все-таки надеюсь на предметный разговор.
Другой разговор.
Не знаю, кто Вам писал этот код, но для начала обратите внимание на конструкцию switch. Там где-то наверняка пропущен break (и не один). Если Вы не знаете, что это такое – изучайте - http://arduino.ru/Reference/SwitchCase
Потом посмотрите на то, как Вы используете библиотеку IRremote. Там явно не хватает операции resume. Без неё она ничего читать не будет после первого чтения (одноразовая) Если Вы не знаете, что это такое – изучайте - https://www.pjrc.com/teensy/td_libs_IRremote.html
Дальше не смотрел, думаю, что ещё есть, но для начала это исправьте.
Большое спасибо!Буду изучать.