Управление ИК пультом робоняшей

Тема в разделе "Arduino & Shields", создана пользователем _Assassin_, 5 апр 2017.

  1. _Assassin_

    _Assassin_ Нерд

    Всем привет! Сейчас я делаю робоняшу, а точнее пытаюсь сделать, чтобы мой чебурашка инвалид-колясочник ехал от ИК пульта. Скетч я вроде сделал, но вечно вылетает ошибка, хотя пишет, что компиляция прошла успешно, но робот отказывается ехать. Прошу вас, помогите мне, тупому и неадекватному!(Кстати, программирую плату Strela).
    Вот скетч:
    #include <IRremote.h>
    #include <Wire.h>
    #include <Strela.h>
    decode_results results;
    IRrecv irrecv(P12);
    const int Vpered = 16736925;
    const int Nazad = 16754775;
    const int Vlevo = 16720605;
    const int Vpravo = 16761405;
    const int Stoppp = 16712445;
    void Vperedl()
    {
    drive(65, 65);
    }
    void Vlevol()
    {
    drive(-50, 50);
    }
    void Vpravol()
    {
    drive(50, -50);
    }
    void Nazadl()
    {
    drive(-65, -65);
    }
    void Stopl()
    {
    drive(0, 0);
    }
    void setup()
    {
    irrecv.enableIRIn();
    Serial.begin(9600);
    motorConnection(1, 0);
    }
    void loop()
    {
    if (irrecv.decode(&results))
    {
    Serial.println(results.value, DEC);
    if (results.value == Vperedl)
    {
    Vperedl();
    delay(500);
    }
    if (results.value == Vlevo)
    {
    Vlevol();
    delay(500);
    }
    if (results.value == Vpravo)
    {
    Vpravol();
    delay(500);
    }
    if (results.value == Nazad)
    {
    Nazadl();
    delay(500);
    }
    if (results.value == Stoppp)
    {
    Stopl();
    delay(500);
    }
    irrecv.resume ();
    }
    }
     
  2. _Assassin_

    _Assassin_ Нерд

  3. qwone

    qwone Гик

    Может вам поможет этот скетч. Скачайте пакет отсюда и поставьте https://yadi.sk/d/m915zDp03GhGyw
    Ну и головной файл сюда кину
    Код (C++):
    /*Class_IR_btn.ino
      IRremote->11 (Recv_pin)
      ИК кнопки вверх вниз влево вправо выбор
      up = 0xFF629D;
      down = 0xFFA857;
      left = 0xFF22DD;
      right = 0xFFC23D;
      select = 0xFF02FD;
    */


    #include "Cl_IR_btn.h"
    const byte Recv_pin = 11;
    void Do_up() {
      Serial.println("Press Do_up");
    };
    void Do_down() {
      Serial.println("Press Do_down");
    };
    void Do_left() {
      Serial.println("Press Do_left");
    };
    void Do_right() {
      Serial.println("Press Do_right");
    };
    void Do_select() {
      Serial.println("Press Do_select");
    };
    Cl_IR_btn * IR_btn = new Cl_IR_btn(Recv_pin,
                                       0xFF629D, & Do_up,
                                       0xFFA857, & Do_down,
                                       0xFF22DD, & Do_left,
                                       0xFFC23D, & Do_right,
                                       0xFF02FD, & Do_select);
    void setup() {
      Serial.begin(9600);
      IR_btn->setup();
    }

    void loop() {
      IR_btn->loop();
    }
     
  4. ZAZ-965

    ZAZ-965 Гуру

    @_Assassin_ , вам же компилятор выдает предупреждения о переполнении
    Код (C++):
    const unsigned long Vpered = 16736925;
    const unsigned long Nazad = 16754775;
    const unsigned long Vlevo = 16720605;
    const unsigned long Vpravo = 16761405;
    const unsigned long Stoppp = 16712445;
    PS пользуйтесь для вставки скетча кнопкой "Код"
     
    arkadyf нравится это.
  5. acos

    acos Официальный гик Администратор

  6. _Assassin_

    _Assassin_ Нерд

    Всем огромное спасибо! Всё работает!