проблема с библиотекой

Тема в разделе "Arduino & Shields", создана пользователем Алексей Схоменко, 1 июн 2013.

  1. C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:529: error: 'volatile struct irparams_t' has no member named 'rawlen'


    выдает такую ошибку, что делать подскажите
     
  2. Mitrandir

    Mitrandir Гуру

  3. а как ее от туда скачать?
     
  4. Mitrandir

    Mitrandir Гуру

    кнопка zip
     
  5. а еще не подскажешь, как использовать код полученный с пульта в программе и приемник разве не на аналоговый цеплять надо вход?
     
  6. хотел собрать машинку и управлять ей с пульта для магнитолы а как написать программу не могу сообразить
     
  7. можно набросок программы
     
  8. Recoshet

    Recoshet Нерд

    Как раз недавно сделал такое. Использовал пульт от DVD'шника.

    Тут программка работает в сочитании с драйвером моторов L293D


    Код (C):

    #include <IRremote.h> //импорт библиотеки

    int RECV_PIN = 26;
    IRrecv irrecv(RECV_PIN); //указывам пин подключения ИК приёмника

    decode_results results; // Какая то хрень для ИК приёмника

    int leftPin = 22;
    int rightPin = 24;

    int goPin = 53;
    int nazadPin = 51;

    int gazPin = 7;
    int power = 150;

    int led1 = 30;

    char command = '0';

    int rByte = 0;

    boolean stateSvet = LOW;

    void setup()
    {
      pinMode(leftPin, OUTPUT);
      pinMode(rightPin, OUTPUT);
      pinMode(goPin, OUTPUT);
      pinMode(nazadPin, OUTPUT);
      pinMode(gazPin, OUTPUT);
     
      pinMode(led1, OUTPUT);
      Serial.begin(9600);
     
      irrecv.enableIRIn(); // Start the receiver для ик приёмника
    }

    void svet()
    {
      if (stateSvet == LOW)
        stateSvet = HIGH;
      else
        stateSvet = LOW;
      digitalWrite(led1, stateSvet);
    }

    void sMotor()
    {
      digitalWrite(goPin, LOW);
      digitalWrite(nazadPin, LOW);
    }

    void go()
    {
      sMotor();
      digitalWrite(goPin, HIGH);
    //  digitalWrite(led1, HIGH);
    }

    void nazad()
    {
      sMotor();
      digitalWrite(nazadPin, HIGH);
      digitalWrite(led1, LOW);
    }

    void sRul()
    {
      digitalWrite(leftPin, LOW);
      digitalWrite(rightPin, LOW);
    }

    void leftRul()
    {
      sRul();
      digitalWrite(leftPin, HIGH);
    }

    void rightRul()
    {
      sRul();
      digitalWrite(rightPin, HIGH);
    }


    void razvorotLeft()
    {
      rightRul();
      nazad();
      delay(500);
     
      leftRul();
      go();
      delay(700);
     
        rightRul();
      nazad();
      delay(100);

      sMotor();
      sRul();
    }

    void loop()
    {/*
      if (irrecv.decode(&results))
      {
        Serial.println(results.value, HEX);
        irrecv.resume(); // Receive the next value
      }*/

     
    if (rByte = Serial.available() != 0 || irrecv.decode(&results))
    {
    command = Serial.read();
    Serial.println(command);

        Serial.println(results.value, HEX);
        irrecv.resume(); // Receive the next value

      if (command == '2' || results.value == 0xFF22DD)
        go();
      else if (command == '3' || results.value == 0xFF12ED)
        nazad();
      else if (command == '1' || results.value == 0xFF609F)
        sMotor();  
      else if (command == '5' || results.value == 0xFF32CD)
        leftRul();
      else if (command == '6' || results.value == 0xFF02FD)
        rightRul();
      if (command == '4' || results.value == 0xFF609F)
        sRul();
      else if (command == 'a')
        razvorotLeft();
      else if (command == 's')
        svet();
      if (command == 'z' || results.value == 0xFFB04F)
        power = 100;
      else if (command == 'x' || results.value == 0xFF906F)
        power = 200;
      else if (command == 'c' || results.value == 0xFFA05F)
        power = 255;
       
    analogWrite(gazPin, power);

    }

    }
     
    P.S. ИК порту не нужен аналоговый вход, у меня подключен к цифровому. Использовал только один аналоговый выход для регулировки мощности двигателя. Сейчас приобрёл датчик Холла, хочу научиться контролировать обороты, и менять мощность в зависимости от от нагрузки на двигатель.
    P.S.S. питание раздельное. Для ардуины (крона 9V), для двигателей (аккумулятор шёл родной с машинкой когда то 6V)
     
  9. Максим B

    Максим B Гуру

    А есть подробное описание как ты все это делал ??? Начиная с механики и заканчивая софтиной.
     
  10. Recoshet

    Recoshet Нерд

    Сейчас кратко изложу:
    И так мне понадобилось:
    1. Была у меня старая машинка на радиоуправлении, потом мне её корпус собака сгрызла, пульт потерял. Лежала долго в кладовке. К ней остался аккумулятор с зарядным:)
    2. Зная возможности ардуины, решил попробовать. (arduino mega 2560)
    3. Так как моторы довольно мощные, то нужно использовать отдельное питание (аккумулятор к машинке). Решение драйвер L293D
    4. Для управления с пульта потребовался ИК приёмник, кажется на 36 КГц. (взял что было)
    5. Ну и что бы всё это собрать без пайки понадобилась хлебная доска (БрэдБоард)

    Как действовал.
    1. Моторы подключал из инструкции по этому видео:


    2. С ИК датчиком научился пользоваться изучая это:
    http://www.youtube.com/watch?list=PLcBEB0EOlNqXvJgI_wbhaAG9g8zjVefJx&feature=player_detailpage&v=j_nG6InEfJE

    Ну а дальше... Пользуясь своими узкими знаниями программирования сотворил такой проект (код в атаче)
     

    Вложения:

    • Mahina.zip
      Размер файла:
      1,1 КБ
      Просмотров:
      259