Как затухать RGB на расстоянии от ультразвукового датчика (HC-SR04), чтобы они не затухали полностью
Реализовать ультразвуковой датчик для регистрации расстояния до объектов перед датчиком и отображения значений этих расстояний на последовательном мониторе в режиме реального времени.
Используйте светодиод RGB для обозначения относительных расстояний от 5 см до 45 см, при этом светодиод RGB должен выполнять следующие переходы:
• КРАСНЫЙ: очень тусклый на расстоянии 5 см, полный на расстоянии 15 см и очень тусклый на расстоянии 24 см.
• ЗЕЛЕНЫЙ: очень тусклый на расстоянии 16 см, полный на расстоянии 25 см и очень тусклый на расстоянии 34 см.
• СИНИЙ: очень тусклый на расстоянии 26 см, полный на расстоянии 35 см и очень тусклый на расстоянии 45 см.
• Полностью БЕЛЫЙ от 46 см и выше
//////////// КОД //////////////////////////
//КРАСНЫЙ
if(distance == 15){ //тогда RED полностью горит
digitalWrite(RED_PIN, HIGH);
}
else if(distance >5 && distance <=14){
distance = map(distance, 0, 400, 0, 255);
for(int i = distance; i <= 255; i++){
analogWrite(RED_PIN, 255 - i);
//задержка(20);
}
}
else if(distance >15 && distance <=24){
distance = map(distance, 0, 400, 0, 255);
for(int i = distance; i <= 255; i++){
analogWrite(RED_PIN, 255 - i);
//задержка(20);
}
}
else{
digitalWrite(RED_PIN, LOW);
}
//ЗЕЛЕНЫЙ
if(distance == 25){ //то ЗЕЛЕНЫЙ полностью горит
digitalWrite(GREEN_PIN, HIGH);
}
else if(distance >16 && distance <=24){
distance = map(distance, 0, 400, 0, 255);
for(int i = distance; i <= 255; i++){
analogWrite(GREEN_PIN, 255 - i);
//задержка(20);
}
}
else if(distance >25 && distance <=34){
distance = map(distance, 0, 400, 0, 255);
for(int i = distance; i <= 255; i++){
analogWrite(GREEN_PIN, 255 - i);
//задержка(20);
}
}
else{
digitalWrite(GREEN_PIN, LOW);
}
//СИНИЙ
if(distance == 35){ //тогда СИНИЙ полностью включен
digitalWrite(BLUE_PIN, HIGH);
}
else if(distance >26 && distance <=34){
distance = map(distance, 0, 400, 0, 255);
for(int i = distance; i <= 255; i++){
analogWrite(BLUE_PIN, 255 - i);
//задержка(20);
}
}
else if(distance >35 && distance <=45){
distance = map(distance, 0, 400, 0, 255);
for(int i = distance; i <= 255; i++){
analogWrite(BLUE_PIN, 255 - i);
//задержка(20);
}
}
else{
digitalWrite(BLUE_PIN, LOW);
}
//БЕЛЫЙ
if(distance >=46){ //ВСЕ светодиоды горят
digitalWrite(RED_PIN, HIGH);
digitalWrite(GREEN_PIN, HIGH);
digitalWrite(BLUE_PIN, HIGH);
}
}
@user55311, 👍-2
Обсуждение1 ответ
Я не совсем понимаю, о чем именно вы спрашиваете, но вы можете использовать функцию «map» для плавного перехода от 255 (полный) до 50 (тусклый):
яркость = карта(диапазон, minRange, maxRange, самая низкая яркость, самая высокая яркость);
Ссылка: https://www.arduino.cc/reference/en/language/functions/math/map /
Поэтому вместо использования 0 в качестве минимальной яркости вы используете 50 (тусклый). Но я не совсем уверен, чего вы пытаетесь достичь в своем коде, используя цикл for. Вам следует начать с одного светодиода, а затем двигаться дальше.
Это вопрос Внедрите ультразвуковой датчик для регистрации расстояния до объектов перед датчиком и отображения значений этих расстояний на последовательном мониторе в режиме реального времени. Используйте светодиод RGB для обозначения относительных расстояний от 5 см до 45 см, при этом светодиод RGB должен выполнять следующие переходы: • КРАСНЫЙ: очень тусклый на расстоянии 5 см, полный на расстоянии 15 см и очень тусклый на расстоянии 24 см. • ЗЕЛЕНЫЙ: очень тусклый на расстоянии 16 см, полный на расстоянии 25 см и очень тусклый на расстоянии 34 см. • СИНИЙ: очень тусклый на расстоянии 26 см, полный на расстоянии 35 см и очень тусклый на расстоянии 45 см. • Полностью БЕЛЫЙ от 46 см и выше, @user55311
@user55311 user55311, почему ты повторяешь то, что уже писал выше?, @jsotola
- Нет заголовочных файлов (.h) в Documents\Arduino\libraries\arduino_144469 с демонстрационным кодом
- Код для 2 ультразвуковых датчиков
- HC-SR04 измерение расстояния без задержки?
- Сдвиг уровня 5В <-> 3,3В
- Подключение нескольких ультразвуковых датчиков (hc-sr04) к одной плате arduino.(мега)
- Ультразвуковой датчик HC-SR04: Как проверить напряжение на выводе ECHO
- Как далеко может стоять HC-SR04 от микроконтроллера?
- Как использовать датчик HC-SR04 для изготовления расходомера?
В чем именно заключается ваш вопрос? Вы рассказали нам о задании, которое дал вам учитель (примечание: мы *не* будем выполнять ваше задание за вас!), но какова реальная проблема, с которой вы столкнулись с вашим кодом?, @Majenko
вы не задали никаких вопросов.... вы не можете просто опубликовать описание вашего проекта с неполным листингом вашей программы и ожидать, что люди догадаются, почему вы ее разместили..... никто не удосуживается догадаться, есть ли там это какая-то проблема ....... голосование за закрытие, потому что я понятия не имею, в чем ваш вопрос ........ и, пожалуйста, не повторяйте в комментариях то же самое, что вы сделали ниже .... отредактируйте свой пост выше, @jsotola