Другие языки программирования и технологии

помогите с программой (arduino)

int val;

void setup()
{
Serial.begin(9600);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
}
void loop()
{
if (Serial.available())
{
val = Serial.read();

if (val == '1')
{
digitalWrite(2, HIGH);
}

if ( val == '0')
{
digitalWrite(2, LOW);
}

if (Serial.available())
{
val = Serial.read();

if (val == '3')
{
digitalWrite(3, HIGH);
}

if ( val == '2')
{
digitalWrite(3, LOW);
}

if (Serial.available())
{
val = Serial.read();

if (val == '5')
{
digitalWrite(4, HIGH);
}

if ( val == '4')
{
digitalWrite(4, LOW);
}
}
}
}
}
загорается толька светодиодл под цифрой 2
Сократи код до digitalWrite(2, HIGH);
или даже потом digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
Тогда будешь уверен в схеме, что все рабочее.
Потом тоже
digitalWrite(2, LOW);
что оно может погасить
А уже потом

if (Serial.available())
{
val = Serial.read();

// и тут множество проверок
}
Сергей Фёдоров
Сергей Фёдоров
80 485
Лучший ответ
Сразу обозначу что с ардуинкой не занимался, только некоторые теоритические знания. Зато немного знаю си++.
И первый вопрос зачем столько всего? Почему не так например?

void loop()
{
if (Serial.available())
{
val = Serial.read();
switch(val)
{
case 0:
digitalWrite(2, LOW);
break;

case 1:
digitalWrite(2, HIGHT);
break;

case 2:
digitalWrite(3, LOW);
break;

case 3:
digitalWrite(3, HIGHT);
break;

case 4:
digitalWrite(4, LOW);
break;

case 5:
digitalWrite(4, HIGHT);
break;

default:
break;
}
}
}

А вообще попробуйте сначала просто включить все светодиоды и убедится что они горят, как советоал kaiu.
Сергей Логинов
Сергей Логинов
15 408
Да очень просто. тебе не надо использовать вложены циклы для этой задачи.
void loop()
{
if (Serial.available())
{
val = Serial.read();

if (val == '1')
{
digitalWrite(2, HIGH);
}

if ( val == '0')
{
digitalWrite(2, LOW);
}

if (val == '3')
{
digitalWrite(3, HIGH);
}

if ( val == '2')
{
digitalWrite(3, LOW);
}

if (val == '5')
{
digitalWrite(4, HIGH);
}

if ( val == '4')
{
digitalWrite(4, LOW);
}

}
}
@*@-Admiral -@*@
@*@-Admiral -@*@
1 436