Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Hardware
  3. Best dimmable countertop lights?

Best dimmable countertop lights?

Scheduled Pinned Locked Moved Hardware
leddimmerlight
14 Posts 6 Posters 6.3k Views 7 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • mfalkviddM Offline
    mfalkviddM Offline
    mfalkvidd
    Mod
    wrote on last edited by
    #1

    Does anyone have a recommendation on dimmable countertop lights? I have looked at the led series from Ikea (Ansluta/Omlopp) but they only support 2 level dimming. I want more than that.

    Do I buy a dimmable LED strip from China? (no need for RGB, white is fine but I guess RGB won't hurt)

    I need a total of 1.6m lights to be mounted underneath two shelves.

    BulldogLowellB 1 Reply Last reply
    0
    • Q Offline
      Q Offline
      Qu3Uk
      wrote on last edited by
      #2

      If you down the LED strip route I got a white led strip and found they are a bit tooo white. Got the natural white ones look much better but not installed yet. Not entirely sure if they are called natural white though.

      They actually seem pretty reasonable from Amazon as well which if you don't want to wait 5 weeks.

      1 Reply Last reply
      0
      • mfalkviddM mfalkvidd

        Does anyone have a recommendation on dimmable countertop lights? I have looked at the led series from Ikea (Ansluta/Omlopp) but they only support 2 level dimming. I want more than that.

        Do I buy a dimmable LED strip from China? (no need for RGB, white is fine but I guess RGB won't hurt)

        I need a total of 1.6m lights to be mounted underneath two shelves.

        BulldogLowellB Offline
        BulldogLowellB Offline
        BulldogLowell
        Contest Winner
        wrote on last edited by
        #3

        Hey @mfalkvidd,

        I was working on a similar project with @petewill and worked up a non-blocking version of @blacey code which allows you to use the dimmer controller as a repeating node.

        here is what I came up with, sorry the class wasn't pulled out into a header/implementation file.

        It does compile and I have tested it, some notes on how to use in the code...

        have fun building your project, whichever LEDs you choose.

        /**
         * The MySensors Arduino library handles the wireless radio link and protocol
         * between your home built sensors/actuators and HA controller of choice.
         * The sensors forms a self healing radio network with optional repeaters. Each
         * repeater and gateway builds a routing tables in EEPROM which keeps track of the
         * network topology allowing messages to be routed to nodes.
         *
         * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
         * Copyright (C) 2013-2015 Sensnology AB
         * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
         *
         * Documentation: http://www.mysensors.org
         * Support Forum: http://forum.mysensors.org
         *
         * This program is free software; you can redistribute it and/or
         * modify it under the terms of the GNU General Public License
         * version 2 as published by the Free Software Foundation.
         *
         *******************************
         *
         * REVISION HISTORY
         * Version 1.0 - February 15, 2014 - Bruce Lacey
         * Version 1.1 - August 13, 2014 - Converted to 1.4 (hek)
         * Version 1.2 - December 7, 2015 - converted to non-blocking code to facilitate multiple outputs and repeater node (pseudo-threading) <bulldoglowell>
         *
         * DESCRIPTION
         * This sketch provides a Dimmable LED Light using PWM and based Henrik Ekblad
         * <henrik.ekblad@gmail.com> Vera Arduino Sensor project.
         * Developed by Bruce Lacey, inspired by Hek's MySensor's example sketches.
         *
         * The circuit uses a MOSFET for Pulse-Wave-Modulation to dim the attached LED or LED strip(s).
         * The MOSFET Gate pin is connected to Arduino pin 3 (LED_PIN), the MOSFET Drain pin is connected
         * to the LED negative terminal and the MOSFET Source pin is connected to ground.
         *
         * This sketch is extensible to support more than one MOSFET/PWM dimmer per circuit.
         * http://www.mysensors.org/build/dimmer
         */
         
        #define SN "DimmableLED"
        #define SV "1.1"
        
        #include <MySensor.h>
        #include <SPI.h>
        
        #define LED_PIN_0 3      // Arduino PWM capable pin attached to MOSFET Gate pin
        #define LED_PIN_1 4      
        
        #define FADE_DELAY 15  // Delay in ms for each percentage fade up/down (10ms = 1s full-range dim)
        
        class Fade
        {
          public:
            Fade() {};
            ~Fade() {};
            Fade(int pin, uint32_t timeStep = 15, uint8_t min = 0, uint8_t max = 255);
            void 
              write(int to),
              update(void),
              update(uint32_t time),
              begin(void),
              begin(int pin, uint32_t timeStep = 15),
              begin(int pin, uint32_t timeStep = 15, uint8_t min = 0, uint8_t max = 255);
            uint8_t 
              read(void),
              getSetpoint(void);
            uint32_t 
              readSpeed(void),
              writeSpeed(uint32_t time);  
              
          private:
            uint8_t 
              _min,
              _max,
              _targetFade,
              _pwmRate,
              _pin;
            uint32_t 
              _timeStep,
              _last;
        };
        
        Fade::Fade(int pin, uint32_t timeStep, uint8_t min, uint8_t max)
        {
          _pin = pin;
          _timeStep = timeStep;
          _min = min;
          _max = max;
          pinMode(_pin, OUTPUT);
          analogWrite(_pin, _min);
          _pwmRate = _min;
        }
        
        void Fade::begin(void)
        {
          pinMode(_pin, OUTPUT);
        }
        
        void Fade::begin(int pin, uint32_t timeStep)
        {
          _pin = pin;
          _timeStep = timeStep;
          _min = 0;
          _max = 255;
          pinMode(_pin, OUTPUT);
          analogWrite(_pin, _min);
          _pwmRate = _min;
        }
        void Fade::begin(int pin, uint32_t timeStep, uint8_t min, uint8_t max)
        {
          _pin = pin;
          _timeStep = timeStep;
          _min = min;
          _max = max;
          pinMode(_pin, OUTPUT);
          analogWrite(_pin, _min);
          _pwmRate = _min;
        }
        
        void Fade::write(int to)
        {
          _targetFade = (uint8_t) constrain(to, _min, _max);
          this->update();
        }
        
        void Fade::update()
        {
          this->update(millis());
        }
        
        void Fade::update(uint32_t time)
        {
          if (time - _timeStep > _last)
          {
            _last = time;
            if (_pwmRate > _targetFade) analogWrite(_pin, --_pwmRate);
            if (_pwmRate < _targetFade) analogWrite(_pin, ++_pwmRate);
          }
        }
        
        uint8_t Fade::getSetpoint()
        {
          return _targetFade;
        }
        
        uint8_t Fade::read()
        {
          return _pwmRate;
        }
        
        uint32_t Fade::readSpeed()
        {
          return _timeStep;
        }
        
        uint32_t Fade::writeSpeed(uint32_t time)
        {
          _timeStep = time;
        }
        
        Fade led[2];   // Create two Fade objects, led[0] & led[1]
        MySensor gw;
        
        MyMessage dimmer0Msg(0, V_DIMMER);
        MyMessage lightM0sg(0, V_LIGHT);
        MyMessage dimmer1Msg(1, V_DIMMER);
        MyMessage light1Msg(1, V_LIGHT);
         
        void setup()
        {
          //Serial.begin(9600);
          led[0].begin(LED_PIN_0, FADE_DELAY, 0, 255);  // initialize the Fade objects
          led[0].write(0);                              // set initial value to "off"
          led[1].begin(LED_PIN_1, FADE_DELAY, 0, 255);
          led[1].write(0);
          gw.begin(incomingMessage, true);
          gw.present( 0, S_DIMMER );
          gw.request( 0, V_DIMMER );
          gw.present( 1, S_DIMMER );
          gw.request( 1, V_DIMMER );
          gw.sendSketchInfo(SN, SV);
        }
        
        void loop()
        {
          gw.process();
          led[0].update();  // must keep this command in loop for every Fade object
          led[1].update();  // calling update transitions the PWM towards the setpoint, without blocking
        }
        
        void incomingMessage(const MyMessage &message)
        {
          if (message.type == V_LIGHT || message.type == V_DIMMER)
          {
            int requestedLevel = atoi(message.data);
            requestedLevel *= ( message.type == V_LIGHT ? 100 : 1 );  
            requestedLevel = requestedLevel > 100 ? 100 : requestedLevel;
            requestedLevel = requestedLevel < 0   ? 0   : requestedLevel;
            
            Serial.print(F("Changing led["));
            Serial.print(message.sensor);
            Serial.print(F("] level to "));
            Serial.print(requestedLevel);
            Serial.print(F(" from "));
            Serial.println(map(led[message.sensor].getSetpoint(), 0, 255, 0, 100));
            
            led[message.sensor].write(map(requestedLevel, 0, 100, 0, 255));
          }
        }
        
        mfalkviddM 1 Reply Last reply
        0
        • S Offline
          S Offline
          Samuel235
          Hardware Contributor
          wrote on last edited by
          #4

          Here in the UK we have two different colours of white for LED strips. Normally they're called 'Warm White' and 'Cool White'. The cool ones are the ones that are really bright white, the warm ones are almost tinted/yellowey white, more subtle on the eyes. But i personally like the look of the cool white ones.

          MySensors 2.1.1
          Controller - OpenHAB (Virtual Machine)
          Gateway - Arduino Mega MQTT Gateway W5100

          1 Reply Last reply
          0
          • BulldogLowellB BulldogLowell

            Hey @mfalkvidd,

            I was working on a similar project with @petewill and worked up a non-blocking version of @blacey code which allows you to use the dimmer controller as a repeating node.

            here is what I came up with, sorry the class wasn't pulled out into a header/implementation file.

            It does compile and I have tested it, some notes on how to use in the code...

            have fun building your project, whichever LEDs you choose.

            /**
             * The MySensors Arduino library handles the wireless radio link and protocol
             * between your home built sensors/actuators and HA controller of choice.
             * The sensors forms a self healing radio network with optional repeaters. Each
             * repeater and gateway builds a routing tables in EEPROM which keeps track of the
             * network topology allowing messages to be routed to nodes.
             *
             * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
             * Copyright (C) 2013-2015 Sensnology AB
             * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
             *
             * Documentation: http://www.mysensors.org
             * Support Forum: http://forum.mysensors.org
             *
             * This program is free software; you can redistribute it and/or
             * modify it under the terms of the GNU General Public License
             * version 2 as published by the Free Software Foundation.
             *
             *******************************
             *
             * REVISION HISTORY
             * Version 1.0 - February 15, 2014 - Bruce Lacey
             * Version 1.1 - August 13, 2014 - Converted to 1.4 (hek)
             * Version 1.2 - December 7, 2015 - converted to non-blocking code to facilitate multiple outputs and repeater node (pseudo-threading) <bulldoglowell>
             *
             * DESCRIPTION
             * This sketch provides a Dimmable LED Light using PWM and based Henrik Ekblad
             * <henrik.ekblad@gmail.com> Vera Arduino Sensor project.
             * Developed by Bruce Lacey, inspired by Hek's MySensor's example sketches.
             *
             * The circuit uses a MOSFET for Pulse-Wave-Modulation to dim the attached LED or LED strip(s).
             * The MOSFET Gate pin is connected to Arduino pin 3 (LED_PIN), the MOSFET Drain pin is connected
             * to the LED negative terminal and the MOSFET Source pin is connected to ground.
             *
             * This sketch is extensible to support more than one MOSFET/PWM dimmer per circuit.
             * http://www.mysensors.org/build/dimmer
             */
             
            #define SN "DimmableLED"
            #define SV "1.1"
            
            #include <MySensor.h>
            #include <SPI.h>
            
            #define LED_PIN_0 3      // Arduino PWM capable pin attached to MOSFET Gate pin
            #define LED_PIN_1 4      
            
            #define FADE_DELAY 15  // Delay in ms for each percentage fade up/down (10ms = 1s full-range dim)
            
            class Fade
            {
              public:
                Fade() {};
                ~Fade() {};
                Fade(int pin, uint32_t timeStep = 15, uint8_t min = 0, uint8_t max = 255);
                void 
                  write(int to),
                  update(void),
                  update(uint32_t time),
                  begin(void),
                  begin(int pin, uint32_t timeStep = 15),
                  begin(int pin, uint32_t timeStep = 15, uint8_t min = 0, uint8_t max = 255);
                uint8_t 
                  read(void),
                  getSetpoint(void);
                uint32_t 
                  readSpeed(void),
                  writeSpeed(uint32_t time);  
                  
              private:
                uint8_t 
                  _min,
                  _max,
                  _targetFade,
                  _pwmRate,
                  _pin;
                uint32_t 
                  _timeStep,
                  _last;
            };
            
            Fade::Fade(int pin, uint32_t timeStep, uint8_t min, uint8_t max)
            {
              _pin = pin;
              _timeStep = timeStep;
              _min = min;
              _max = max;
              pinMode(_pin, OUTPUT);
              analogWrite(_pin, _min);
              _pwmRate = _min;
            }
            
            void Fade::begin(void)
            {
              pinMode(_pin, OUTPUT);
            }
            
            void Fade::begin(int pin, uint32_t timeStep)
            {
              _pin = pin;
              _timeStep = timeStep;
              _min = 0;
              _max = 255;
              pinMode(_pin, OUTPUT);
              analogWrite(_pin, _min);
              _pwmRate = _min;
            }
            void Fade::begin(int pin, uint32_t timeStep, uint8_t min, uint8_t max)
            {
              _pin = pin;
              _timeStep = timeStep;
              _min = min;
              _max = max;
              pinMode(_pin, OUTPUT);
              analogWrite(_pin, _min);
              _pwmRate = _min;
            }
            
            void Fade::write(int to)
            {
              _targetFade = (uint8_t) constrain(to, _min, _max);
              this->update();
            }
            
            void Fade::update()
            {
              this->update(millis());
            }
            
            void Fade::update(uint32_t time)
            {
              if (time - _timeStep > _last)
              {
                _last = time;
                if (_pwmRate > _targetFade) analogWrite(_pin, --_pwmRate);
                if (_pwmRate < _targetFade) analogWrite(_pin, ++_pwmRate);
              }
            }
            
            uint8_t Fade::getSetpoint()
            {
              return _targetFade;
            }
            
            uint8_t Fade::read()
            {
              return _pwmRate;
            }
            
            uint32_t Fade::readSpeed()
            {
              return _timeStep;
            }
            
            uint32_t Fade::writeSpeed(uint32_t time)
            {
              _timeStep = time;
            }
            
            Fade led[2];   // Create two Fade objects, led[0] & led[1]
            MySensor gw;
            
            MyMessage dimmer0Msg(0, V_DIMMER);
            MyMessage lightM0sg(0, V_LIGHT);
            MyMessage dimmer1Msg(1, V_DIMMER);
            MyMessage light1Msg(1, V_LIGHT);
             
            void setup()
            {
              //Serial.begin(9600);
              led[0].begin(LED_PIN_0, FADE_DELAY, 0, 255);  // initialize the Fade objects
              led[0].write(0);                              // set initial value to "off"
              led[1].begin(LED_PIN_1, FADE_DELAY, 0, 255);
              led[1].write(0);
              gw.begin(incomingMessage, true);
              gw.present( 0, S_DIMMER );
              gw.request( 0, V_DIMMER );
              gw.present( 1, S_DIMMER );
              gw.request( 1, V_DIMMER );
              gw.sendSketchInfo(SN, SV);
            }
            
            void loop()
            {
              gw.process();
              led[0].update();  // must keep this command in loop for every Fade object
              led[1].update();  // calling update transitions the PWM towards the setpoint, without blocking
            }
            
            void incomingMessage(const MyMessage &message)
            {
              if (message.type == V_LIGHT || message.type == V_DIMMER)
              {
                int requestedLevel = atoi(message.data);
                requestedLevel *= ( message.type == V_LIGHT ? 100 : 1 );  
                requestedLevel = requestedLevel > 100 ? 100 : requestedLevel;
                requestedLevel = requestedLevel < 0   ? 0   : requestedLevel;
                
                Serial.print(F("Changing led["));
                Serial.print(message.sensor);
                Serial.print(F("] level to "));
                Serial.print(requestedLevel);
                Serial.print(F(" from "));
                Serial.println(map(led[message.sensor].getSetpoint(), 0, 255, 0, 100));
                
                led[message.sensor].write(map(requestedLevel, 0, 100, 0, 255));
              }
            }
            
            mfalkviddM Offline
            mfalkviddM Offline
            mfalkvidd
            Mod
            wrote on last edited by
            #5

            @BulldogLowell thanks. What LEDs did you use?

            BulldogLowellB 1 Reply Last reply
            0
            • mfalkviddM mfalkvidd

              @BulldogLowell thanks. What LEDs did you use?

              BulldogLowellB Offline
              BulldogLowellB Offline
              BulldogLowell
              Contest Winner
              wrote on last edited by BulldogLowell
              #6

              @mfalkvidd

              I used these on Amazon. By and large the reviews are spot on... but I installed inside a molding strip that I routed out like this and mounted underneath, to make it have a finished look. You can see the molding in the photo below, just inboard of the doors. I used a clear adhesive to augment the not-great adhesive backing that the strips come with, something like a bead of hot glue down each side of the milled out molding.

              0_1458770884571_FullSizeRender.jpg
              and the finished product like this... though the color is horribly off on my iPhone photo. It looks much warmer to the eye in real life.
              0_1458771159855_FullSizeRender-1.jpg
              Most importantly, they allow for a lot of light and a happy wife!

              Photo from the other side shows the LED's above as well, though not completed for the left hand island:
              0_1458772094442_FullSizeRender-2.jpg
              Again, the Colors are all wrong!!

              mfalkviddM 1 Reply Last reply
              3
              • BulldogLowellB BulldogLowell

                @mfalkvidd

                I used these on Amazon. By and large the reviews are spot on... but I installed inside a molding strip that I routed out like this and mounted underneath, to make it have a finished look. You can see the molding in the photo below, just inboard of the doors. I used a clear adhesive to augment the not-great adhesive backing that the strips come with, something like a bead of hot glue down each side of the milled out molding.

                0_1458770884571_FullSizeRender.jpg
                and the finished product like this... though the color is horribly off on my iPhone photo. It looks much warmer to the eye in real life.
                0_1458771159855_FullSizeRender-1.jpg
                Most importantly, they allow for a lot of light and a happy wife!

                Photo from the other side shows the LED's above as well, though not completed for the left hand island:
                0_1458772094442_FullSizeRender-2.jpg
                Again, the Colors are all wrong!!

                mfalkviddM Offline
                mfalkviddM Offline
                mfalkvidd
                Mod
                wrote on last edited by
                #7

                @BulldogLowell sweet, thanks a lot!

                1 Reply Last reply
                1
                • TheoLT Offline
                  TheoLT Offline
                  TheoL
                  Contest Winner
                  wrote on last edited by
                  #8

                  If ordered some DUAL white ledstrips. They've promissed me that you can mix them in to warmer light. Made be something for you.

                  Will play with them and report my findings here.

                  1 Reply Last reply
                  1
                  • korttomaK Offline
                    korttomaK Offline
                    korttoma
                    Hero Member
                    wrote on last edited by korttoma
                    #9

                    I have a RGBW strip on top of my kitchen cabinets and I combine the 4 channels as follows to get a warm white i like:

                    Red 100%
                    Green 50%
                    Blue 0%
                    White 10% (this is cool white)

                    The benefit of using a RGBW this is that I can have the strip inform me of thing by using any collor. Example, If some alarm is tripped I can send the strip in to alarm mode and then it will blink Red and Blue. sample sketch: here

                    • Tomas
                    BulldogLowellB 1 Reply Last reply
                    1
                    • korttomaK korttoma

                      I have a RGBW strip on top of my kitchen cabinets and I combine the 4 channels as follows to get a warm white i like:

                      Red 100%
                      Green 50%
                      Blue 0%
                      White 10% (this is cool white)

                      The benefit of using a RGBW this is that I can have the strip inform me of thing by using any collor. Example, If some alarm is tripped I can send the strip in to alarm mode and then it will blink Red and Blue. sample sketch: here

                      BulldogLowellB Offline
                      BulldogLowellB Offline
                      BulldogLowell
                      Contest Winner
                      wrote on last edited by
                      #10

                      @korttoma

                      Hey Tomas!!

                      I'd love to add color, but my wife says "NO!"

                      what ledstrip ddi you use? My kids are eager to use color, so I may do the under-bed ledstrip for my daughter.

                      S 1 Reply Last reply
                      0
                      • BulldogLowellB BulldogLowell

                        @korttoma

                        Hey Tomas!!

                        I'd love to add color, but my wife says "NO!"

                        what ledstrip ddi you use? My kids are eager to use color, so I may do the under-bed ledstrip for my daughter.

                        S Offline
                        S Offline
                        Samuel235
                        Hardware Contributor
                        wrote on last edited by
                        #11

                        @BulldogLowell, i too wouldn't like colour there for everyday use, but for alerts i'de have brightly flashing red lighting and for notifications like main door entry i'de have them slowly fade from white to green then back again for one cycle.

                        MySensors 2.1.1
                        Controller - OpenHAB (Virtual Machine)
                        Gateway - Arduino Mega MQTT Gateway W5100

                        BulldogLowellB 1 Reply Last reply
                        0
                        • S Samuel235

                          @BulldogLowell, i too wouldn't like colour there for everyday use, but for alerts i'de have brightly flashing red lighting and for notifications like main door entry i'de have them slowly fade from white to green then back again for one cycle.

                          BulldogLowellB Offline
                          BulldogLowellB Offline
                          BulldogLowell
                          Contest Winner
                          wrote on last edited by
                          #12

                          @Samuel235

                          nice idea!

                          S 1 Reply Last reply
                          0
                          • BulldogLowellB BulldogLowell

                            @Samuel235

                            nice idea!

                            S Offline
                            S Offline
                            Samuel235
                            Hardware Contributor
                            wrote on last edited by
                            #13

                            @BulldogLowell said:

                            @Samuel235

                            nice idea!

                            Just one of many ideas, the possibilties are endless. I'de always go for RGB leds over just white, allows for more customisation while able to still give you the same white as the white leds.

                            MySensors 2.1.1
                            Controller - OpenHAB (Virtual Machine)
                            Gateway - Arduino Mega MQTT Gateway W5100

                            BulldogLowellB 1 Reply Last reply
                            0
                            • S Samuel235

                              @BulldogLowell said:

                              @Samuel235

                              nice idea!

                              Just one of many ideas, the possibilties are endless. I'de always go for RGB leds over just white, allows for more customisation while able to still give you the same white as the white leds.

                              BulldogLowellB Offline
                              BulldogLowellB Offline
                              BulldogLowell
                              Contest Winner
                              wrote on last edited by
                              #14

                              @Samuel235 said:

                              Just one of many ideas, the possibilties are endless. I'de always go for RGB leds over just white, allows for more customisation while able to still give you the same white as the white leds.

                              ... unless, as in my use case, colors are not needed.

                              I'm too stingy to pay for the unused dry powder!

                              ;)

                              1 Reply Last reply
                              1
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              17

                              Online

                              11.7k

                              Users

                              11.2k

                              Topics

                              113.1k

                              Posts


                              Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • MySensors
                              • OpenHardware.io
                              • Categories
                              • Recent
                              • Tags
                              • Popular