Помогите найти ошибку

Тема в разделе "Arduino & Shields", создана пользователем Djvan, 13 фев 2015.

  1. Djvan

    Djvan Нерд

    Здравствуйте. В общем чтото я затупил. Не подскажите, где у меня ошибка - в сериал кидаю цифры от 0 до 6, но в ответ ничего не приходит :(
    Код (Text):
    char incomingByte;
    int svet = 0;
    int oborud = 0;

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

    void loop()
    {
        if (Serial.available() > 0)
        incomingByte = Serial.read();
        {
        switch (incomingByte)
                {
                    case 0:
                      svet=0;
                      oborud=0;
                      Serial.println("vse =0");
                    break;
                    case 1:
                      svet=0;
                      Serial.println("svet=0");
                    break;
                    case 2:
                      svet=1;
                      Serial.println("svet=1");
                    break;
                    case 3:
                      svet=2;
                      Serial.println("svet=2");
                    break;
                    case 4:
                      oborud=0;
                      Serial.println("oborud=0");
                    break;
                    case 5:
                      oborud=1;
                      Serial.println("oborud=1");
                    break;
                    case 6:
                      oborud=2;
                      Serial.println("oborud=2");
                    break;
                }

        }

               
    }
     
  2. X-Dron

    X-Dron Гик

  3. geher

    geher Гуру

    Я полагаю, что в сериал кидаются символы, изображающие цифры, а в switch почему-то это дело сравнивается непосредственно с числами, соответствующими цифрам.
    По факту в incomingByte будет находиться код символа, изображающего цифру.
    Следовательно, если есть желание, чтобы этот код с чем-то из меток case совпал, надо сделать что-то одно из трех:
    Вариант 1 - получить из кода саму цифру в численном выражении, добавив перед switch
    Код (Text):
    incomingByte-=0x30;
    Вариант 2 - поставить в метке символ
    Код (Text):
    case '6': // было case 6
    Вариант 3 - поставить в метке код символа, изображающего цифру
    Код (Text):
    case 0x36: // было case 6
    Я полагаю, что вариант 2 наиболее нагляден и прост.
     
  4. Djvan

    Djvan Нерд

    Спасибо - это я чтото затупил. Сейчас поставил инкомингбайт - инт, ну и соответсвенно 0-48,1-49 и т.д. Совсем все забыл.... Комрады извините за беспокойство по пустякам :)