Zum Inhalt springen

Willkommen!

Teilen und diskutieren Sie die besten Inhalte und neuen Marketingideen, bauen Sie Ihr professionelles Profil auf und werden Sie gemeinsam ein besserer Vermarkter.

Registrieren

Sie müssen registriert sein, um mit der Community zu interagieren.
Diese Frage wurde gekennzeichnet
773 Ansichten

Hi all,

I have an 8A RBDimmer that I'm using with an Arduino Nano clone board (ATMega328p with a CH340g USB-serial chip). I have a sketch running to gradually brighten a tungsten/incandescent bulb (not an LED, which I know can cause problems), and it is exhibiting weird behavior:


From 1% to 13% power, the bulb is lit at a constant brightness of about 60% (the brightness does not change between 1% and 14% power).

Then from 14% to 16% power, the bulb flickers at a high frequency (maybe 50 Hz or so).

Then from 16% to 17% power, the bulb turns on and off at a much lower frequency (maybe 5 Hz).


Again, this is a tungsten/incandescent bulb I'm using, not an LED.


It is also behaving weirdly above that (at 100% power it is not lighting LED bulbs at all), but I have a harder time deciphering that behavior.


The code I am running is pasted below. Can anyone possibly explain (and/or provide a fix for) the weird behavior I'm seeing?


Thank you.


#include <RBDdimmer.h> // RobotDyn AC Dimmer library


#define AC_LOAD 3 // DIM/PWM pin connected to the RobotDyn module

#define ZC_PIN 2 // Zero-cross pin from the RobotDyn module (wired to D2, but handled internally)


// Create dimmer object (older library: only takes 1 argument)

dimmerLamp dimmer(AC_LOAD);


void setup() {

Serial.begin(9600);


// Initialize dimmer (older library handles ZC internally)

dimmer.begin(NORMAL_MODE, OFF);

dimmer.setPower(0);


Serial.println("Starting 30-minute gradual brightening...");

}


void loop() {

const int startBrightness = 0; // Start at 18% because below 18% it flickers.

const int endBrightness = 100; // End at 100%

const unsigned long totalTime = 1UL * 30UL * 1000UL; // calculating total time in milliseconds of fadeup; minutes, seconds per minute, milliseconds per second

const int steps = 100; // 1% increments

unsigned long delayPerStep = totalTime / steps; // calculating milliseconds per step


// Gradually brighten

for (int brightness = startBrightness; brightness <= endBrightness; brightness++) {

dimmer.setState(ON);

dimmer.setPower(brightness); // Set brightness (0–100%)

Serial.print("Brightness: ");

Serial.print(brightness);

Serial.println("%");

delay(delayPerStep);

}


// Hold full brightness indefinitely

Serial.println("Reached full brightness. Holding...");

dimmer.setPower(100);

dimmer.setState(ON);


while (true) {

delay(1000); // keep AC dimmer timing active

}

}


Avatar
Verwerfen

Ihre Antwort

Bitte versuchen Sie, eine aussagekräftige Antwort zu geben. Wenn Sie die Frage oder die Antwort kommentieren möchten, benutzen Sie einfach das Kommentarwerkzeug. Bitte denken Sie daran, dass Sie Ihre Antworten jederzeit überarbeiten können - Sie brauchen dieselbe Frage nicht zweimal zu beantworten. Vergessen Sie bitte auch nicht, Ihre Stimme abzugeben - Es hilft wirklich dabei, die besten Fragen und Antworten auszuwählen!