Почему потенциометр выполняет функцию переключателя «вкл/выкл» в моей программе?
Я использую ультразвуковой датчик HC-SRO4 и потенциометр D10K. Итак, я просто повозился с потенциометром в программе, а затем попытался изменить яркость светодиода, который включается при выполнении определенного условия, но вместо этого потенциометр действует как переключатель ВКЛ/ВЫКЛ. Я хотел бы узнать, почему это происходит и как я могу нормально изменить яркость светодиода в этой ситуации.
long duration;
int distance;
int trigPin = 9;
int echoPin = 10;
int buzzer = 11;
int LED = 3;
boolean detected = false;
#define pot 0
int val = 0;
void setup() {
pinMode(LED, OUTPUT);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
pinMode(buzzer,OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance= duration*0.034/2;
val = analogRead(pot);
val = map(val, 0, 1023, 0, 255);
Serial.println (distance);
if(distance < 50 && distance != 0){ // distance != 0 because sometimes the distance's first value is sometimes 0 which ruins the purpose of
// the program
analogWrite(LED, val);
alarm();
detected = true;
}
else if(detected){
digitalWrite(LED,LOW);
alarm();
}
}
void alarm(){
tone(buzzer, 450);
delay(100);
tone(buzzer, 1000);
delay(100);
}
@Arman Samma, 👍0
Обсуждение1 ответ
Лучший ответ:
Ответ очень прост. Вы используете вывод 12 для светодиода. Вывод 12 не может выполнять analogWrite(). Этот вывод не поддерживает ШИМ на Arduino UNO (Atmega 328)
Вывод 3 тоже не в порядке. Использование функции tone() отключает ШИМ на выводе 3. Из ссылки: «Использование функции tone() будет мешать выходу ШИМ на выводах 3 и 11».
Извините. Я изменил свой светодиодный пин на 12 (сейчас я его поменяю на 3), потому что я с ним возился. Изначально это был пин ШИМ, когда возникла эта проблема, @Arman Samma
@ArmanSamma: Пожалуйста, убедитесь, что любой публикуемый вами код всегда соответствует вопросу., @Edgar Bonet
Я не понимаю. Как и почему функция tone() отключает ШИМ на выводе 3? @Juraj, @Arman Samma
"tone()" в ответе — это ссылка. Прочитайте ссылку на функцию тона., @Juraj
- avrdude ser_open() can't set com-state
- Float печатается только 2 десятичных знака после запятой
- ошибка: espcomm_upload_mem failed при загрузке скетча
- Печать массива байтов на экране последовательного монитора Arduino IDE
- Разные и самые быстрые способы вычисления синусов и косинусов в Arduino
- Arduino IDE Отказано В Разрешении На Загрузку, Ubuntu
- Нет заголовочных файлов (.h) в Documents\Arduino\libraries\arduino_144469 с демонстрационным кодом
- Связь Arduino master/slave с использованием RS485
Напишите эскиз, используя только горшок и светодиод., @Juraj
Ну, я сделал, и это работает отлично. Я могу изменить яркость светодиода. Но я не понимаю, почему это не делается в коде выше. @Juraj, @Arman Samma
поскольку analogWrite зависит от показаний датчика расстояния, @Juraj
Проблема в том, что я не могу изменить яркость, пока это условие выполняется? Ну, когда я делаю условие истинным (помещаю какой-нибудь объект перед датчиком), я поворачиваю потенциометр, и он все равно работает как переключатель ВКЛ/ВЫКЛ., @Arman Samma