/************************************************************************************************* PROGRAMMINFO ************************************************************************************************** Funktion: Die Helligkeit einer LED wird durch ein Potentiometer mit Pulsweitenmodulation gesteuert. 1,30" Display an I2C LED an GPIO 27 Poti an A2 ************************************************************************************************** Version: 15.04.2022 ************************************************************************************************** Board: ESP32vn IoT UNO ************************************************************************************************** C++ Arduino IDE V1.8.13 ************************************************************************************************** Einstellungen: https://dl.espressif.com/dl/package_esp32_index.json http://dan.drown.org/stm32duino/package_STM32duino_index.json https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json ************************************************************************************************* **************************************************************************************************/ #include #include #include #ifdef U8X8_HAVE_HW_SPI #include #endif #ifdef U8X8_HAVE_HW_I2C #include #endif const int ADC_pin = 2; int sensor_reading = 0; int dutyCycle =0; float analog_voltage; int LED = 27; U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); unsigned long delayTime; const int ledChannel = 0; // Auswahl LED-Channel 0; ESP32: 0-15 const int resolution = 8; // 8 bit Auflösung 0-255. Auflösung beim ESP32 ist 1-16Bit const int frequency = 25000; // Frequenz in Hz void setup() { Serial.begin(115200); pinMode (LED, OUTPUT); u8g2.begin(); ledcSetup(ledChannel, frequency, resolution); // Konfiguration ledcAttachPin(LED, ledChannel); // GPIO 27, Auswahl } void loop() { sensor_reading = analogRead(ADC_pin); dutyCycle = map(sensor_reading, 0, 4095, 0, 255); // dutyCycle = map(potiWert, 0, 4095, 0, 255); Serial.print("Tastverhältnis: "); Serial.println(dutyCycle); // Anzeige des Tastverhältnises am Display ledcWrite(ledChannel, dutyCycle); // Änderung der LED-Helligkeit durch PWM Serial.print("Analogeingang:"); Serial.println(sensor_reading); analog_voltage = sensor_reading * 3.3 / 4095; Serial.print("Spannung: "); Serial.println(analog_voltage); Serial.println(); u8g2.setFont(u8g2_font_courR08_tf); u8g2.firstPage(); do { u8g2.setCursor(5, 8); u8g2.print("Analogeingang:"); u8g2.setCursor(5, 18); u8g2.print(sensor_reading); u8g2.print(" Bit"); u8g2.setCursor(5, 28); u8g2.print("Spannung:"); u8g2.setCursor(5, 38); u8g2.print(analog_voltage); u8g2.print(" V"); u8g2.setCursor(5, 48); u8g2.print("Tastverhaeltnis:"); u8g2.setCursor(5, 58); u8g2.print(dutyCycle); u8g2.print("/255"); } while ( u8g2.nextPage() ); delay(delayTime); }