Проблема с кодом

Тема в разделе "Arduino & Shields", создана пользователем NikitaBarinov, 25 июл 2014.

  1. NikitaBarinov

    NikitaBarinov Нерд

    Написал такой вот скетч
    Код (Text):
    #include <Servo.h>
    #include <IRremote.h>

    int RECEIVE_PIN = 11;
    IRrecv irrecv(RECEIVE_PIN);
    decode_results results;

    Servo myservo;
    Servo myservo2;

    void setup() {
      Serial.begin(9600);
      irrecv.enableIRIn();
     
      myservo.attach(4);
      myservo2.attach(9);
    }

    void loop() {
     
      if ((irrecv.decode(&results)) && (results.value==0xFF48B7) ) {
        myservo.write(180);
        myservo2.write(2);
      } else if ((irrecv.decode(&results)) && (results.value==0xFF6897) ) {
        myservo.write(2);
        myservo2.write(180);
      }
    }
    Моя задумка такова: нажимаю на одну кнопку - серво поворачиваются на один угол0 нажимаю на другую - поворачиваются на другой угл. При подключении к питанию ардуино нажимаю на одну кнопку - сервы поворачивают, нажимаю на другую - ничего не происходит, хотя сервы должны были повернуться на другой угл. Почему так?
     
  2. Unixon

    Unixon Оракул Модератор

    Коды команд оба верные? Что на самом деле принимается?
     
  3. NikitaBarinov

    NikitaBarinov Нерд

    Да, подключил к питанию плату - попробовал одну кнопку, выключил и включил питание - попробовал другую. Команды верны и сервы поворачиваются, но потом другие команды они не выполняют
     
  4. Unixon

    Unixon Оракул Модератор

    А что в это время выдает ИК приемник?

    Код (Text):

    //#include <Servo.h>
    #include <IRremote.h>

    const int RECEIVE_PIN = 11;

    IRrecv irrecv(RECEIVE_PIN);
    decode_results results;
    int cmd_count = 0;

    void setup()
    {
     Serial.begin(9600);
     irrecv.enableIRIn();
    }

    void loop()
    {
     if (irrecv.decode(&results))
     {
      Serial.print("command[");
      Serial.print(cmd_count++);
      Serial.print("]: ");
      Serial.print("0x");
      Serial.println(results.value, HEX);
     }
    }
     
     
  5. NikitaBarinov

    NikitaBarinov Нерд

    При таком куске коде:
    Код (Text):
    if ((irrecv.decode(&results)) && (results.value==0xFF48B7) ) {
        Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
        myservo.write(180);
        myservo2.write(2);
      } else if ((irrecv.decode(&results)) && (results.value==0xFF6897) ) {
        Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
        myservo.write(2);
        myservo2.write(180);
      }
    в мониторе появляются команды(FF48B7 и FF6897 без 0x).