IvanNauka
@IvanNauka

Где ошибка в данном коде для ESP32?

Условие задачи: В порт монитора вводим "1" Потенциометром меняем яркость первого светодиода. Вводим "2" первым гаснет, меняем яркость второго светодиода.
#define pot 2 // Пин, к которому подключен потенциометр
#define led 14 // Пин, к которому подключен первый светодиод
#define led1 26 // Пин, к которому подключен второй светодиод

int i = 0;
char dir;
void setup() {

pinMode (led1, OUTPUT);
pinMode (led, OUTPUT);
Serial.begin (9600);
}

void loop() {
if (Serial.available()){
    dir = Serial.read();
    Serial.println(dir);
  }
 if (dir == '1'){
  i = 1;
 analogWrite (led1,0);
}
else {
   if (dir == '2'){
    i = 2;
  analogWrite (led,0);
}
}
if (i==1){
unsigned int adcValue = analogRead (pot);
adcValue = map(adcValue, 0, 1023, 0, 255);
analogWrite (led, adcValue);

}
if (i==2){
  unsigned int adcValue1 = analogRead (pot);
  adcValue1 = map(adcValue1, 0, 1023, 0, 255);
analogWrite (led1, adcValue1);

}
}
Прилагаю ссылку на симулятор:
<a href="https://wokwi.com/projects/384549189495543809">Wokwi</a>
В симуляторе код работает, а непосредственно на железе Нет!. Точнее даже не корректно, при вводе 1, загорается светодиод с той яркостью, на которую мы установили потенциометр до ввода данных. Уже всяко разно пробовал и даже как в этом варианте постарался как-то разделить.
  • Вопрос задан
  • 189 просмотров
Пригласить эксперта
Ответы на вопрос 1
@mordo445
Если не работает в железе, значит прблема в железе. Проверьте, как потключен потенциометр, считайте с него в COM порт сырые данные, считайте в COM порт adcValue1, посмотрите на результат, соотвествует ли тот ожиданиям. Проверьте, в вашей версии ядра PWM при инициализации 10 бит? По умолчанию в ардуино 8.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы