Проблемы с созданием режимов работы робота

Тема в разделе "Флудилка", создана пользователем hyfoxus, 23 фев 2016.

  1. hyfoxus

    hyfoxus Нуб

    Всем привет! Прошу помощи в создание режимов на моем роботе. Теперь о самом роботе. Его цель включать и выключать свет с помощью пульта + режимы работы, как я говорил выше. Проект создается на Arduino UNO. ЗАРАНЕЕ СПАСИБО.
     
  2. Unixon

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

    Напишите подробнее, раз этак в 10, вашего текста решительно недостаточно для понимания проблемы.
     
  3. hyfoxus

    hyfoxus Нуб

    Я работаю над проектом по включению и выключению света. Робот по сигналу пульта будет включать свет определенными комбинациями. Например на пульте нажата цифра 1 и свет включен по первой комбинации (скажем 0 1 0 1). Цифра 2-режим 2, и т.д. Теперь о проблеме. Я не знаю как в коде сделать режимы.
     
  4. Mestniy

    Mestniy Гуру

    прерыванием можно сделать.
     
  5. Tomasina

    Tomasina Сушитель лампочек Модератор

    Код (C++):
    enum {READY, SVET1, SVET2, SVET3};   // возможные режимы работы в виде слов, а не цифр (для удобства)
    byte CurrentMode;                    // переменная для хранения текущего режима, не более 254 режимов ;)

    void setup()
    {
      Serial.begin(9600);
      CurrentMode = READY;
    }

    void loop()
    {
      switch(CurrentMode)
      {
        case READY:
          // тут код, когда робот ждет команды
          /*
          byte key = IRrecieve();   // условный пример получения кода с пульта
          if (key > 0 && key < 4)   // если на пульте нажата кнопка 1...3
          {
            CurrentMode = key;      // назначаем режим, равный номеру кнопки
          }
          else
          {
            CurrentMode = READY;
          }
          */

          break;

        case SVET1:
          // тут код, когда получена команда №1 на включение света
          // digitalWrite(LED_1, LOW);
          // digitalWrite(LED_2, HIGH);
          // digitalWrite(LED_3, LOW);
          // digitalWrite(LED_4, HIGH);
          CurrentMode = READY; // после выполнения команды снова назначаем режим готовности
          break;

        case SVET2:
          // тут код, когда получена команда №2 на включение света
          // ...
          CurrentMode = READY;
          break;

        case SVET3:
          // тут код, когда получена команда №3 на включение света
          // ...
          CurrentMode = READY;
          break;

        default: // код, который выполнится, если где-то косяк с режимом
          Serial.println("Error!");
          CurrentMode = READY;
      } // конец switch

    } // конец loop


    byte IRrecieve()
    {
      // тут код обработки сигналов с ИК-приемника
      byte keyCode;
      // ...
      return keyCode;
    }
     
     
  6. hyfoxus

    hyfoxus Нуб

    Спасибо большое!