Помогите с кодом (начинающий)

anusher
Offline
Зарегистрирован: 28.12.2016
#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 обновлялось каждый раз. Как это сделать?
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

1. Вставьте код как положено.

2. Объясните толком, подробно, что Вам нужно и что сейчас работает не так.

anusher
Offline
Зарегистрирован: 28.12.2016
#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

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так Вы же х ничерта не запоминаете. Надо запоминать. Ну, поставьте в строке 25 вместо "х+10", "х = х + 10". и аналогично в строке 29.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Все на хапке, да побыстрее. Все спешат как курица лапой написать скетч. А потом у них ничего не работает. В приятно и понятно написаном скетче , легко найти ошибку, даже если она есть.

/*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();
}

 

kalapanga
Offline
Зарегистрирован: 23.10.2016

По-моему, хорошо бы ещё границы проверять, чтобы X за допустимый диапазон не уходил.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
/*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();
}

 

anusher
Offline
Зарегистрирован: 28.12.2016

Незнаю, но сервопривод перестал реагировать на кнопки. Проверил в симуляторе тоже самое

Navigator
Navigator аватар
Offline
Зарегистрирован: 26.01.2016

Оборжаться )))) Перевод с немецкого: Anus her = анус сюда(ко мне) 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

anusher пишет:

Незнаю, но сервопривод перестал реагировать на кнопки. Проверил в симуляторе тоже самое

Какой странный пульт ))) на моём пульте который к RTL-SDR один из кодов - 8, а второго вообще нет