Не меняется цвет светодиода
- Войдите на сайт для отправки комментариев
Пт, 27/09/2019 - 19:57
#Привет, помогите найти ошибку. Светодиод не меняет цвет при смене значений с датчика
}
#define analogPin A0 // аналоговый выход MQ135 подключен к пину A0 Arduino #define digitalPin 3 // цифровой выход подключен к пину 3 #define RED 9 // Присваиваем имя RED для пина 9 #define GREEN 10 // Присваиваем имя GREEN для пина 10 #define BLUE 11 // Присваиваем имя BLUE для пина 11 void setup() { Serial.begin(9600); // инициализация последовательного порта pinMode(analogPin, INPUT); // режим работы аналогового пина pinMode(digitalPin, INPUT); // режим работы цифрового пина delay(1000); // pinMode(RED, OUTPUT); // Используем Pin9 для вывода pinMode(GREEN, OUTPUT); // Используем Pin10 для вывода pinMode(BLUE, OUTPUT); // Используем Pin11 для вывода } void loop() { float analogValue; // для аналогового значения C02 short digitalValue; // для цифрового значения CO 2 analogValue = analogRead(analogPin); // чтение аналогового значения digitalValue = digitalRead(3); // чтение цифрового значения if (digitalValue <= 500) { digitalWrite(GREEN, HIGH); // Включаем зеленый свет digitalWrite(RED, LOW); digitalWrite(BLUE, LOW); } else if (digitalValue < 1000){ digitalWrite(BLUE, HIGH); // Включаем синий свет digitalWrite(GREEN, LOW); digitalWrite(RED, LOW); } if (digitalValue >= 1000){ digitalWrite(RED, HIGH); // Включаем красный свет digitalWrite(GREEN, LOW); digitalWrite(BLUE, LOW); } Serial.print("Уровень СО2: "); // вывод аналогового значения СО2 в последовательный порт Serial.println(analogValue); delay(1); // }
А пояснить как вообще код работает, и что в нём делается, что там за датчик и что (и где) должно меняться? Не судьба? Что происходит? Каким цветом горит? С чего Вы взяли, что он не меняется?
Всё это самим догадываться?
датчик СО2 определяет уровень газа в комнате. Если значение нормальное, горит зеленый. Если до 1000, то горит синий. Выше 1000 - красный
Если у тебя даччик MQ135, то у него значения выше 200 поднимаюца, тока если взбзднешь рядом, ни на что другое он одэкватно не реагирует
А чё тут пояснять. Зелёным он всегда горит. digitalValue может быть только 0 или 1 а его в строке 27 на <500 сравнивают. Ну, а как ему быть? Меньше, конечно - вот он зелёным и загорается. А строки с №32 по №42 можно просто выбросить - они никогда не срабатывают.
есть идеи по модернизации кода?
Если значение нормальное, горит зеленый. Если до 1000, то горит синий. Выше 1000 - красный
Вам уже объяснили, что бывает только digitalValue 0 и 1 вот он у Вас и горит зелёным, т.к. всегда меньше 500.
И, кстати, Вы нам этого так и не сказали - что горит зелёным всё время. Учитесь задавать вопросы.
со значениями все в порядке
датчик СО2 определяет уровень газа в комнате. Если значение нормальное, горит зеленый. Если до 1000, то горит синий. Выше 1000 - красный
Мария, вы сигнал с датчика читаете командой digitalRead() (строка 25).
А вы в курсе, что оператор digitalRead() возвращает только 0 и 1 ? - какие тысячи. о чем вы...
есть идеи по модернизации кода?
Какие идеи? ты переменные перепутал(а). Поставь нормально и вся идея.
Вот скажи, только честно НАХРЕНА ты в строке 24 читаешь переменную analogValue? Чтобы напечатать её в строке №44? И всё? Больше она тебе точно ни зачем не нужна?
со значениями все в порядке
С какими значениями? Которые ты в строке 44 печатаешь?
Так ты печатаешь одну переменную, а сравниваешь другую!
со значениями все в порядке
ну тогда значит все работает верно, что вы от нас хотите еще?
все, нашла косяки. всем спасибо
p.s. это моя первая программа на С++
Не понял!? А "чмоки"?