RC передатчик и Arduino UNO

Тема в разделе "Глядите, что я сделал", создана пользователем pyro, 14 фев 2013.

  1. pyro

    pyro Гик

    Все верно, цифровые пины 2 и 3.
    Было бы здорово, но его скорее всего нельзя будет использовать с набором команд ARDUINO.
     
  2. roggedhorse

    roggedhorse Гик

    Очень даже можно будет. И на полную катушку
     
  3. pyro

    pyro Гик

    По своему опыту знаю, при использовании библиотеки (avr/io.h), стандартные команды компилятор перестает понимать.
     
  4. roggedhorse

    roggedhorse Гик

    Не сталкивался.
    Отлаживать большие проекты на Arduino IDE очень трудно, поскольку через бутлоадер скетч загружается черепашьим темпом.
    От этого вся отладка делается мной в Atmel Studio 6.0, загрузка через AVRISP mkII происходит пулей. Однако, отлаженный код работает и в стандартной среде Arduino.
    Думаю, что проблем с этим не возникнет.

    Главная проблема - отсутствие RC-пульта
     
  5. Megakoteyka

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

    Вы из какого города? Могу пультом поделиться на время.
     
  6. roggedhorse

    roggedhorse Гик

    Спасибо, что-нибудь придумаю...
     
  7. Megakoteyka

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

    Или можно просто взять второй МК :)
     
  8. roggedhorse

    roggedhorse Гик

    Есть второй МК. Но пульт предпочтительнее. Найдем
     
  9. cybertesla

    cybertesla Нуб

    ну что есть продвижения? ждём недождёмся
     
  10. roggedhorse

    roggedhorse Гик

    да.
    скоро выложу код :)
     
  11. pyro

    pyro Гик

    Это будет здорово.
     
  12. cybertesla

    cybertesla Нуб

    я уже rc купил даже недорогой 6 канальный хобикингс. вот жду теперь кода=)
     
  13. warman

    warman Гик

    на правах оффтопа
    на тематических форумах встречал упоминание про Atmel Dragon. Мол им дебажить можно и прошитый контроллер. Что за зверь такой?
     
  14. pyro

    pyro Гик


    Практический пример использования кода.
     
  15. cybertesla

    cybertesla Нуб

    какого кода? которой на первой странице был?
     
  16. pyro

    pyro Гик

    Да. Адаптированный для управления двигателями платформы. Если интересует, я могу его выложить. Только его нужно привести в порядок.
     
  17. cybertesla

    cybertesla Нуб

    выкладый конечно
     
  18. pyro

    pyro Гик

    Код (C):
    #define lmotPWM 10 //Присваеваем имена пинам управления
    #define lmotCONT1 9
    #define lmotCONT2 8
    #define rmotPWM 5
    #define rmotCONT1 6
    #define rmotCONT2 7
    //назначение глобальных переменных
    long pulseWidth[3] = {
      0,0,0};
    void setup()
    //настройка вх/вых
    {
     // Serial.begin(9600);
      pinMode(11, INPUT);
      pinMode(12, INPUT);
      pinMode(13, INPUT);
      for (int i = 5; i <= 10; i++)
      {
        pinMode(i, OUTPUT);
        digitalWrite(i, LOW);
      }
    }
    void loop()
    {
      for (int x=2; x<=4; x++) //измеряем длину импульса
      {
        unsigned long z = pulseIn(x, HIGH, 20000);
        pulseWidth[x-2] = z; //записываем значения в массив
      }
      if(pulseWidth[2] != 0 && pulseWidth[0] != 0)
      {
        if(pulseWidth[0] < 1440 || pulseWidth[0] > 1470)
        {
          if(pulseWidth[0] < 1440)
          {
            //Serial.println("B");
            digitalWrite(lmotCONT1, 1);
            digitalWrite(lmotCONT2, 0);
            digitalWrite(rmotCONT1, 1);
            digitalWrite(rmotCONT2, 0);
            digitalWrite(lmotPWM, 1);
            digitalWrite(rmotPWM, 1);

          }
          if(pulseWidth[0] > 1470)
          {
            //Serial.println("F");

            digitalWrite(lmotCONT1, 0);
            digitalWrite(lmotCONT2, 1);
            digitalWrite(rmotCONT1, 0);
            digitalWrite(rmotCONT2, 1);
            digitalWrite(lmotPWM, 1);
            digitalWrite(rmotPWM, 1);
          }
        }
        else
        {
          if(pulseWidth[2] < 1440)
          {

            //Serial.println("L");
            digitalWrite(lmotCONT1, 0);
            digitalWrite(lmotCONT2, 1);
            digitalWrite(rmotCONT1, 1);
            digitalWrite(rmotCONT2, 0);
            digitalWrite(lmotPWM, 1);
            digitalWrite(rmotPWM, 1);
          }
          if(pulseWidth[2] > 1470)
          {

            //Serial.println("R");
            digitalWrite(lmotCONT1, 1);
            digitalWrite(lmotCONT2, 0);
            digitalWrite(rmotCONT1, 0);
            digitalWrite(rmotCONT2, 1);
            digitalWrite(lmotPWM, 1);
            digitalWrite(rmotPWM, 1);
          }
        }
        if(pulseWidth[0] > 1440 && pulseWidth[0] < 1470 && pulseWidth[2] > 1440 && pulseWidth[2] < 1470)
        {
          //Serial.println("STOP");
         
          digitalWrite(lmotPWM, 0);
          digitalWrite(rmotPWM, 0);
          digitalWrite(lmotCONT1, 0);
          digitalWrite(lmotCONT2, 0);
          digitalWrite(rmotCONT1, 0);
          digitalWrite(rmotCONT2, 0);
         
        //Serial.println(" ");
           /*Serial.print(pulseWidth[0]);
           Serial.print(" ");
           Serial.print(pulseWidth[1]);
           Serial.print(" ");
           Serial.print(pulseWidth[2]);
           Serial.print(" ");
           //Serial.print(pulseWidth[3]);
           Serial.print(" ");
           //Serial.print(pulseWidth[4]);
           Serial.println(" ");*/

        }
      }
      else
      {
        digitalWrite(lmotCONT1, 0);
        digitalWrite(lmotCONT2, 1);
        digitalWrite(rmotCONT1, 0);
        digitalWrite(rmotCONT2, 1);
        digitalWrite(lmotPWM, 0);
        digitalWrite(rmotPWM, 0);
      }
    }
     
    bigscorp нравится это.
  19. XCB

    XCB Гик

    roggedhorse и Megakoteyka нравится это.
  20. roggedhorse

    roggedhorse Гик

    отлично! теперь не вижу смысла завершать свой декодер
    все уже сделано до нас :)