رفتن به مطلب
تخفیف تهیه دوره های آموزشی مشاهده دوره ها
تخفیف انواع برد و قطعات الکترونیکی ورود به فروشگاه
  • 0

کنترل کامل pwm با esp32


etemadi386
 اشتراک گذاری

سوال

const int ledPin = 12;
const int ledcChannel = 0;
const int freq = 5000;
const int resolution = 8;

const int btnUp = 13;
const int btnDown = 14;

int brightness = 0;
unsigned long lastDebounceTime = 0; 
const unsigned long debounceDelay = 20; // تأخیر بسیار کم بدون توقف برنامه

void setup() {
  pinMode(btnUp, INPUT_PULLUP);
  pinMode(btnDown, INPUT_PULLUP);

  ledcSetup(ledcChannel, freq, resolution);
  ledcAttachPin(ledPin, ledcChannel);
  ledcWrite(ledcChannel, brightness);
}

void loop() {
  // بررسی زمان فعلی برای مدیریت بدون وقفه
  if (millis() - lastDebounceTime > debounceDelay) {
    
    bool changed = false;

    if (digitalRead(btnUp) == LOW) {
      if (brightness < 255) {
        brightness += 5;
        changed = true;
      }
      lastDebounceTime = millis();
    } 
    else if (digitalRead(btnDown) == LOW) {
      if (brightness > 0) {
        brightness -= 5;
        changed = true;
      }
      lastDebounceTime = millis();
    }

    // فقط وقتی تغییر داشتیم مقدار را بنویس که نویز ایجاد نشود
    if (changed) {
      ledcWrite(ledcChannel, brightness);
    }
  }
}
 

 

لطفا این کد را تشریح کنید 

متشکرم 

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

1 پاسخ به این سوال تاکنون داده شده است

ارسال های توصیه شده

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری
 اشتراک گذاری

×
×
  • اضافه کردن...