💬 Dimmable LED Actuator
-
so this works now like a charm:
// Enable debug prints to serial monitor #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_NRF24 //#define MY_RADIO_RFM69 #define MY_NODE_ID 153 #include <SPI.h> #include <MySensors.h> #define SN "MultiDimmableLED" #define SV "1.1" #define noLEDs 3 const int LED_Pin[] = {3, 5, 6}; #define FADE_DELAY 25 // Delay in ms for each percentage fade up/down (10ms = 1s full-range dim) static int currentLevel = 0; // Current dim level... MyMessage dimmerMsg(noLEDs, V_DIMMER); MyMessage lightMsg(noLEDs, V_LIGHT); /*** * Dimmable LED initialization method */ void setup() { // not sure this works // Pull the gateway's current dim level - restore light level upon sendor node power-up for (int sensor=1; sensor<=noLEDs; sensor++){ request( sensor, V_DIMMER ); } } void presentation() { // Register the LED Dimmable Light with the gateway for (int sensor=1; sensor<=noLEDs; sensor++){ present(sensor, S_DIMMER); wait(2); } sendSketchInfo(SN, SV); } /*** * Dimmable LED main processing loop */ void loop() { } void receive(const MyMessage &message) { if (message.type == V_LIGHT || message.type == V_DIMMER) { // Retrieve the power or dim level from the incoming request message int requestedLevel = atoi( message.data ); // Adjust incoming level if this is a V_LIGHT variable update [0 == off, 1 == on] requestedLevel *= ( message.type == V_LIGHT ? 100 : 1 ); // Clip incoming level to valid range of 0 to 100 requestedLevel = requestedLevel > 100 ? 100 : requestedLevel; requestedLevel = requestedLevel < 0 ? 0 : requestedLevel; Serial.print( "Changing LED " ); Serial.print(message.sensor); Serial.print(", PIN " ); Serial.print( LED_Pin[message.sensor] ); Serial.print(" level to " ); Serial.print( requestedLevel ); Serial.print( ", from " ); Serial.println( currentLevel ); fadeToLevel( requestedLevel, message.sensor ); // Inform the gateway of the current DimmableLED's SwitchPower1 and LoadLevelStatus value... send(lightMsg.set(currentLevel > 0 ? 1 : 0)); // hek comment: Is this really nessesary? send( dimmerMsg.set(currentLevel) ); } } /*** * This method provides a graceful fade up/down effect */ void fadeToLevel( int toLevel, int ledid ) { int delta = ( toLevel - currentLevel ) < 0 ? -1 : 1; while ( currentLevel != toLevel ) { currentLevel += delta; analogWrite(LED_Pin[ledid-1], (int)(currentLevel / 100. * 255) ); wait( FADE_DELAY ); } }``` thank you :thumbsup: -
I just tried the DimmableLightWithRotaryEncoderButton and I found that when rotating the rotary encoder clockwise the dim level decrease and turning it counter clockwise will increase the dim level. I would like it the other way around.
Any ideas how to modify the sketch? Or is this a feature of my rotary encoder? Did I wire something wrong (I did check my wires and it is according to the instructions).
-
@thazlett144 can't help to make a few comments on your sketch (sorry)
The led the array start from 0 and prevent the double pin declaration simply subtract one on usage so
this LED_Pin[ledid] becomes this LED_Pin[ledid-1]please do use wait() instead of delay(), delay is blocking MySensors communication
// hek comment: Is this really nessesary? send( dimmerMsg.set(currentLevel) );Answer: Yes, controllers like Vera want feedback about the new dimlevel
@BartE Thats great thank you. I am still learning anyway so there are gaps in my knowledge :-) I knew I could do something like that -1.
delay was part of the original example I think?
-
Hi guys,
Struggling with this a little and think it may be hardware related. I'm using a 3.3v pro mini and it won't let the 12v LEDs go to full brightness, at max dim level they're still quite dim. I've tried this on both regular flexi LED strip and the copper-wire type LEDs (final project is based on these).
I've tried with a different FET, an IRLB8721 and that goes to full brightness however won't switch the LEDS off completely so guessing there's a leak from that FET! I'm not sure if that's normal or not. Frustrating.
Ideally i want the circuitry to be 3.3v as i'm already converting the 12v LED power supply down to 3.3v for the nRF. I'd rather not have a 5v and 3.3v regulator.
Thanks,
Patrick
-
Hi guys,
Struggling with this a little and think it may be hardware related. I'm using a 3.3v pro mini and it won't let the 12v LEDs go to full brightness, at max dim level they're still quite dim. I've tried this on both regular flexi LED strip and the copper-wire type LEDs (final project is based on these).
I've tried with a different FET, an IRLB8721 and that goes to full brightness however won't switch the LEDS off completely so guessing there's a leak from that FET! I'm not sure if that's normal or not. Frustrating.
Ideally i want the circuitry to be 3.3v as i'm already converting the 12v LED power supply down to 3.3v for the nRF. I'd rather not have a 5v and 3.3v regulator.
Thanks,
Patrick
@pjblink I had the same problem in https://forum.mysensors.org/topic/2335/controlling-leds-with-the-irlz44n/ and another community member had something similar: https://forum.mysensors.org/topic/2335/controlling-leds-with-the-irlz44n/
The solution seems to be to buy new mosfets and hope that they work properly.
-
@pjblink I had the same problem in https://forum.mysensors.org/topic/2335/controlling-leds-with-the-irlz44n/ and another community member had something similar: https://forum.mysensors.org/topic/2335/controlling-leds-with-the-irlz44n/
The solution seems to be to buy new mosfets and hope that they work properly.
@mfalkvidd So keep trying IRLZ44N FETs?
-
@mfalkvidd So keep trying IRLZ44N FETs?
-
Inspirational pictures from my Dimmable LED Actuator with rotary encoder device I made for my sons bedside lamp.
Running this at 12VDC. His lamp had a G9 socket so I just broke apart the G9 LED bulb and soldered some G4 12VDC LED lights like these to it and replaces the "Dumb" switch with a 5mm DC plug. It turned out so nice that I think I will MySensor my own bedside lamp also.Edit: btw, I found the nice big knobs from here -> eBay


-
Bahh.. I had the 12VDC connected directly to the RAW pin on the Arduino Pro mini and yesterday it failed.
I should have known better. Now added a 5V regulator to the device and a new 5V Pro Mini. -
Hi all
I love the mysensors project. I have made a lot of sensors by now. Now I would like to control these LED-lights with a dimmer node:
http://www.siriushome.dk/product/50200/ (in danish)
The specs. for the LEDs are 6W@80V.
I have two questions that I hope you can help me with.
A) What is the easiest way to drive an arduinonode from 80v. Is a DC/DC converter the only way?
B) What mosfet would you suggest using for controling the LEDs?I hope you can help. Many thanks.
// MalmQ
-
Hi guys,
Struggling with this a little and think it may be hardware related. I'm using a 3.3v pro mini and it won't let the 12v LEDs go to full brightness, at max dim level they're still quite dim. I've tried this on both regular flexi LED strip and the copper-wire type LEDs (final project is based on these).
I've tried with a different FET, an IRLB8721 and that goes to full brightness however won't switch the LEDS off completely so guessing there's a leak from that FET! I'm not sure if that's normal or not. Frustrating.
Ideally i want the circuitry to be 3.3v as i'm already converting the 12v LED power supply down to 3.3v for the nRF. I'd rather not have a 5v and 3.3v regulator.
Thanks,
Patrick
@pjblink the irlzn44n is very sensitive to over heat during solder, I have lost some of them during soldering :) please be careful
-
Hi!
I'd like to use this sketch with a 5V Arduino Nano, do I need to use another type of MOSFET for this?
From the OP I gather that the IRLZ44N is used because of the lower gate threshold in combination with the 3.3v operating voltage, but won't the IRLZ44N gate be saturated very quickly when using 5v?Creaky
-
Hi!
I'd like to use this sketch with a 5V Arduino Nano, do I need to use another type of MOSFET for this?
From the OP I gather that the IRLZ44N is used because of the lower gate threshold in combination with the 3.3v operating voltage, but won't the IRLZ44N gate be saturated very quickly when using 5v?Creaky
-
@Creaky the dimmer uses PWM to control the light level, so the mosfet is always either in cutoff or fully saturated. So using IRLz44N with 5V will work just as well as 3.3V.
@mfalkvidd Thanks for the reply!
-
@Creaky the dimmer uses PWM to control the light level, so the mosfet is always either in cutoff or fully saturated. So using IRLz44N with 5V will work just as well as 3.3V.
@mfalkvidd Just so you know, there is no PWM involved in this sketch. I've just build this setup/node and it works great. You can see that the LED are continuously fed and brightness is changed by changing the voltage to the LEDs through the MOSFET.
-
@mfalkvidd Just so you know, there is no PWM involved in this sketch. I've just build this setup/node and it works great. You can see that the LED are continuously fed and brightness is changed by changing the voltage to the LEDs through the MOSFET.
-
It might be a very nice idea to use neopixels with this, a little expensive though when using a lot of LED's but still it's possible to dim them just by using code.. I am afraid I am not able to do that and it was just a small thought... :)
-
@mfalkvidd Yikes, you're right! I drew my conclusion too soon and only by watching the LED strip at max brightness. At max brightness the switching frequency is so high it is no longer perceptible by the eye. Mea culpa...