Помогите с кодом (начинающий)
- Войдите на сайт для отправки комментариев
Вс, 08/01/2017 - 13:30
#include <Servo.h>
Servo servo;
#include "IRremote.h"
int x;
IRrecv irrecv(2);
decode_results results;
void setup() {
servo.attach(10);
irrecv.enableIRIn(); //
servo.write(0);
delay(1500);
}
void loop() {
if ( irrecv.decode( &results )) {
switch ( results.value ) {
case 0xFFA857:
servo.write(x+10);
break;
case 0xFFE01F:
servo.write(x-10);
break;
}
}
irrecv.resume();у
}
Нужно чтобы переменная x обновлялось каждый раз. Как это сделать?
1. Вставьте код как положено.
2. Объясните толком, подробно, что Вам нужно и что сейчас работает не так.
#include <Servo.h> Servo servo; #include "IRremote.h" int x; IRrecv irrecv(2); decode_results results; void setup() { servo.attach(10); irrecv.enableIRIn(); servo.write(0); delay(1500); } void loop() { if ( irrecv.decode( &results )) { switch ( results.value ) { case 0xFFA857: servo.write(x+10); break; case 0xFFE01F: servo.write(x-10); break; } } irrecv.resume(); }Работа идёт над управлением сервопривода от ИК пульта
при нажатии на кнопку сервопривод должен увеличить градус на 10
Так Вы же х ничерта не запоминаете. Надо запоминать. Ну, поставьте в строке 25 вместо "х+10", "х = х + 10". и аналогично в строке 29.
Все на хапке, да побыстрее. Все спешат как курица лапой написать скетч. А потом у них ничего не работает. В приятно и понятно написаном скетче , легко найти ошибку, даже если она есть.
/*anusher.ino #1 серва-> 10 (servo_pin) #2 Ик приемник -> 2 (IR_pin) */ //#1 серва #include <Servo.h> Servo servo; const int servo_pin = 10; // нога передатчика int x; // угол //#2 Ик приемник #include "IRremote.h" const int IR_pin = 2; // нога ИК приемника IRrecv irrecv(IR_pin); decode_results results; void setup() { //#1 серва servo.attach(servo_pin); servo.write(x = 0); //#2 Ик приемник irrecv.enableIRIn(); } void loop() { //#1 серва //#2 Ик приемник if ( irrecv.decode( &results )) { switch ( results.value ) { case 0xFFA857: servo.write(x = x + 10); break; case 0xFFE01F: servo.write(x = x - 10); break; } } irrecv.resume(); }По-моему, хорошо бы ещё границы проверять, чтобы X за допустимый диапазон не уходил.
/*anusher_v2.ino #1 серва-> 10 (servo_pin) #2 Ик приемник -> 2 (IR_pin) Принцип кода: если на Ик приемнике 0xFFA857 повернуть серву в + если на Ик приемнике 0xFFE01F повернуть серву в - */ //#1 серва #include <Servo.h> Servo servo; const int servo_pin = 10; // нога передатчика const int angle_max = 180; // угол максимум const int angle_min = 0 ; // угол минимум const int angle_step = 10; // угол поворота int angle; // угол //#2 Ик приемник #include "IRremote.h" const int IR_pin = 2; // нога ИК приемника IRrecv irrecv(IR_pin); decode_results results; void setup() { //#1 серва servo.attach(servo_pin); servo.write(angle = 0); //#2 Ик приемник irrecv.enableIRIn(); } void loop() { //#1 серва //#2 Ик приемник if ( irrecv.decode( &results )) { switch ( results.value ) { case 0xFFA857: // поворот в + if (angle + angle_step <= angle_max) angle = angle + angle_step; servo.write(angle); break; case 0xFFE01F: // поворот в - if (angle - angle_step >= angle_min) angle = angle - angle_step; servo.write(angle ); break; } } irrecv.resume(); }Незнаю, но сервопривод перестал реагировать на кнопки. Проверил в симуляторе тоже самое
Оборжаться )))) Перевод с немецкого: Anus her = анус сюда(ко мне)
Незнаю, но сервопривод перестал реагировать на кнопки. Проверил в симуляторе тоже самое
Какой странный пульт ))) на моём пульте который к RTL-SDR один из кодов - 8, а второго вообще нет