Здравствуйте. В общем чтото я затупил. Не подскажите, где у меня ошибка - в сериал кидаю цифры от 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; } } }
Значения посылаются в ASCII см. пример в вики http://wiki.amperka.ru/конспект-arduino:светильник-управляемый-по-usb
Я полагаю, что в сериал кидаются символы, изображающие цифры, а в switch почему-то это дело сравнивается непосредственно с числами, соответствующими цифрам. По факту в incomingByte будет находиться код символа, изображающего цифру. Следовательно, если есть желание, чтобы этот код с чем-то из меток case совпал, надо сделать что-то одно из трех: Вариант 1 - получить из кода саму цифру в численном выражении, добавив перед switch Код (Text): incomingByte-=0x30; Вариант 2 - поставить в метке символ Код (Text): case '6': // было case 6 Вариант 3 - поставить в метке код символа, изображающего цифру Код (Text): case 0x36: // было case 6 Я полагаю, что вариант 2 наиболее нагляден и прост.
Спасибо - это я чтото затупил. Сейчас поставил инкомингбайт - инт, ну и соответсвенно 0-48,1-49 и т.д. Совсем все забыл.... Комрады извините за беспокойство по пустякам