Skip navigation

Cool LED Display

13 posts
mcb1

Beer Tap

Posted by mcb1 Top Member Dec 12, 2017

This is something done as an extra for the Beyond the Phone Design Challenge.

For those interested, it was sponsored by Wurth and my conversations with sleuz was the deciding factor to apply.

 

I had heard that someone was rather interested in beer, and since we had these interesting taps that featured an illuminated circle, it made sense for me to call in a favour to get my hands on one.

 

The originals have a rather crude tungsten lamp and I imagine are a right pain to replace.

Sadly my tap didn't have the lamp, but there is not much thickness and as I understand it was low voltage.

 

 

My first idea was to create something that would illuminate both sides, using a led ring both sides, but it quickly became obvious that it was easier to concentrate on one side.

The decision to use neopixels was also made allowing colour changing and brightness.

 

To keep with the wireless theme, I used a battery and wireless charging.

 

A slight change to the design was made for a second Hall Effect switch for the brightness control.

Settings were stored in the EEPROM and the digispark has a modified bootloader to remove the 5 sec startup delay.

 

The items were stuck to a piece of mylar cut to fit within the circle, and a generous amount of double sided tape ensured they would behave themselves.

 

 

In real life these taps have refrigerant piped thru and the body is usually solid ice, so heat wouldn't be the issue if it was used in real life.

http://www.andale.com.au/wp-content/uploads/2016/05/Iced_font.jpg

   stolen from http://www.andale.com.au/glycol-beer-system/

 

 

Adafruit supplied the charger/battery management and the unit was turned toward the rear to allow it to be viewed more easily.

 

 

This gives an idea of some of the colours and the video shows it cycling between colours.

                                   OFF                                                                                          WHITE                                                                                                BLUE

 

                                   GREEN                                                                                                RED                                                                                                MIXED

 

 

The code is attached for anyone wanting to replicate it

/*
 Illuminated Beer Tap controller created for the "Beyond the Phone Challenge".
 
  
    Pin connections
  
  Digi  tiny85
  P0     (5)= 
  P1     (6)= On board LED (Rev A)
  P2     (7)= NeoPixel
  P3     (2)= Hall Effect (Colour change)
  P4     (3)= Hall Effect (Brightness change)
  P5     (1)= 
 
 EEPROM.write(1, Brightness);           // Write it to EEPROM
      
      Created by Mark Beckett
     
    
     Version
     0.1  Initial Code  started June 2014
     0.2  9 Sept 2014 Change to include Brightness and install in ATtiny85
  
     ---------------------------------------------------
     To Do :
  
     */
 
 // NeoPixel
  #include <adafruit_neopixel.h> 
  #include 
  #define PIN 2                    //neopixel connected to P2
  
  // Inputs 
  const byte ButtonColour = 3;
  const byte ButtonBright = 4; 
   
  
  // General
  long LastButtonCheck = 0;  
  int ChangeTime = 25;
  int Brightness = 5;        //setting for the Brightness
  
  // State Flags  
  boolean setColour =0;          // used to decide if colour change is happening
  boolean SetBright =0;       // used to decide if set Brightness is happening 
  boolean ButtonStateColour = 0;    // boolean to store last change
  boolean ButtonStateBright =0;     // boolean to store last change 
  byte ButtonCountColour = 0;
  byte ButtonCountBright = 0; 
  
  // Parameter 1 = number of pixels in strip  
  // Parameter 2 = Arduino pin number (most are valid)  
  // Parameter 3 = pixel type flags, add together as needed:  
  //   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)  
  //   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)  
  //   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)  
  //   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)  
  Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, PIN, NEO_GRB + NEO_KHZ800);  
  
  // IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across  
  // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input  
  // and minimize distance between Arduino and first pixel.  Avoid connecting  
  // on a live circuit...if you must, connect GND first.  
  
  void setup() {  
    strip.begin();  
    strip.show();                       // Initialize all pixels to 'off' 
    
    Brightness = (EEPROM.read(1));      //read the value set.
    
    pinMode (ButtonColour, INPUT);  
    digitalWrite (ButtonColour, HIGH);        // internal pull-up
    pinMode (ButtonBright, INPUT);  
    digitalWrite (ButtonBright, HIGH);        // internal pull-up  
  
    
    for (int i=0; i<12; i++)  
    {  
      strip.setPixelColor(i, 255, 255, 255);  //initially white  
      strip.show();  
    }  
    strip.setBrightness(Brightness);
    strip.show();
  }  
  
  void loop() {  
     
    Check_Buttons();  
    
    if (setColour == 1)  
    {  
      rainbow(75);          // Calls the Rainbow routine with a 40mS delay
    }  
    else  
    {  
      // stay doing nothing  
    } 
    
    if (SetBright == 1)  
    {  
      BrightAdj(30);          // Calls the Rainbow routine with a 30mS delay
    }  
    else  
    {  
      // stay doing nothing  
    } 
   
  }  
  
  
void Check_Buttons()  
  
  /* This routine checks the timer (LastButtonCheck) and if necessary reads the button input 
     If the button is detected, it waits unitl it counts it 10 times at the set time rate. 
     This prevents button bounce from triggering and ensures the button is pressed. 
   
     Once a valid button press has been detected, it starts a timer (ButtonPressTime), 
    
  */  
    {  
      if (millis() - LastButtonCheck > 5)                    // Reads button state every 5mS and then updates button counts  
      {      
        ButtonStateColour = digitalRead(ButtonColour);
        ButtonStateBright = digitalRead(ButtonBright);   
        LastButtonCheck = millis();  
       
        if (ButtonStateColour == LOW)  
        {  
          ButtonCountColour ++;                                     // Increment the Count by 1  
          if (ButtonCountColour > 5)                               // the button should be LOW for 5x5mS = 25mS  
          {  
            // Button has been pressed for longer than 25mS so its valid  
             ButtonCountColour = 0;  
            setColour =1;                                      // Do something with the valid button press  
          }  
        }  
        else                                                  // Button is HIGH  
        {  
          ButtonCountColour =0;                                     // Reset the counter as the button has been released  
          setColour =0;  
        }
        
        if (ButtonStateBright == LOW)  
        {  
          ButtonCountBright ++;                                     // Increment the Count by 1  
          if (ButtonCountBright > 5)                               // the button should be LOW for 5x5mS = 25mS  
          {  
            // Button has been pressed for longer than 25mS so its valid  
            ButtonCountBright = 0;  
            SetBright =1;                                      // Do something with the valid button press
          }  
        }  
        else                                                  // Button is HIGH  
        {  
          ButtonCountBright =0;                                     // Reset the counter as the button has been released  
          SetBright =0;
           
        }  
      }  
    }  
     
  
  // The user wishes to change colour  
void rainbow(uint8_t wait) {  
  Check_Buttons();  
  uint16_t i, j;  
  
  for(j=0; j<256; j++) {  
    for(i=0; i<strip.numpixels(); i++)=""  ="" <br="">    {  
      strip.setPixelColor(i, Wheel((i+j) & 255));  
  
    }  
    strip.show();  
    Check_Buttons();  
    delay(wait);  
      if (setColour == 0)  
      {  
        break;      //get out  
      }  
  }  
}  
  
uint32_t Wheel(byte WheelPos) {  
  if(WheelPos < 85) {  
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);  
  } else if(WheelPos < 170) {  
   WheelPos -= 85;  
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);  
  } else {  
   WheelPos -= 170;  
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);  
  }  
}

void BrightAdj(uint8_t wait) 
{  
    
  uint16_t j;  
  
  for(j=10; j<256; j++) 
    {
        Brightness = j;  
        strip.setBrightness(Brightness);  
        strip.show();
        delay(wait); 
        Check_Buttons();
        if (SetBright == 0)  
        {  
            EEPROM.write(1, j);                       // Write it to EEPROM 
            break;      //get out  
        }         
    } 
} 

 

 

Hopefully this gives someone some inspiration, or another use for neopixels.

 

 

 

Cheers

Mark

 

Links for some of the original post

Wireless Challenge .... Beer Tap (the other bit) -3

Wireless Challenge .... Beer Tap (the other bit) - 4  Assembly

The Illuminated Beer Tap

Get Your Name in Lights and be the Life of the Party!  Clips on to your pocket!

Picture of Name Tag when Lit Up

This is a simple little project which you can use to get lots of attention at a party or event.

Materials Required:

3D Printed Parts

     https://www.thingiverse.com/thing:2687490

Small Switch

3 WS2812 LED Lights

Small Ardiuno - Nano, Nano Pro, or Digispark/Pro (Nano used in this howto)

Wires

Paperclips

2 2032 Batteries

 

Printing the Parts:

You need to print one of each part except for the clips, which you need 2 of.  When printing the pieces with words on them, you will want to use either a printer with dual nozzles, or set up your print to pause at the correct height so you can switch materials.  Instructions on doing this with Cura are available in the Youtube video below.  You will also have to glue the top and bottom sections of the name plate to the middle section.  This extra step is what allows you to have a faceplate with 4 different materials while using a single-extruder printer.

 

If you would like to change the name (very likely) here are the CAD files:

https://cad.onshape.com/documents/68be14817735aabb55c98f10/w/c4eb95c4e3f62b0a7c5e5b9a/e/0099cf37e03046918f6f55f3

 

The video below also walks you through making the required changes to change the name.

 

Assembling the Electronics:

 

As you can see below, the 2032 coin cells sit in the circular bits of the name tag back piece - one with positive side up, and the other with negative side up.  You will want to put a piece of paperclip with a sleight bend at each end in the channel below them before inserting the batteries.  You will also use 2 more small sections of a paperclip which are bent so they place pressure on the top of the batteries.  Your positive and negative wires are then soldered to these top clips - just make sure you solder the positive to the side with the positive battery facing up.  The positive wire goes to one pin of the the switch and then the next pin is wired to Vin on the Nano. The negative goes straight to GND of the Nano.  What this does is use the voltage regulator which is built in to the Nano board to supply the required 5 volts to everything.

 

Next you will want to run a wire from another GND pin of the Nano to the first LED board, another from the 5V pin of the Nano to 5V on the first LED board, and finally a wire from pin D6 from the Nano to the DI of the first LED.  You will then continue the string by wiring the 5V, GND and DO to the 5V, GND, and DI of the second LED board.  Repeat this to connect the second board to the third one.  You can then use a little double-sided tape to secure the LED's to the back of the case.

The insides of the name tag

Once this is all done, you can program the Nano by follwing the instructions in the video below.  Here is a summary:

     Install and run the Arduino IDE

     Install the Adafruit NeoPixel library

     Load up the Example file in [File -> Examples -> Adafruit NeoPixel -> strandtest

     Change line 16 from:

               Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);

     to:

               Adafruit_NeoPixel strip = Adafruit_NeoPixel(3, PIN, NEO_GRB + NEO_KHZ800);

     Program the Nano with this example

 

After it is programed you can test it out by turning on the switch and waiting a couple of seconds for the sequence to start.  Then put the front faceplate in place:

The assembled tag

 

And finally glue on the pocket clips:

Pocket clips attached

 

Now you just need to clip it on your pocket and turn it on!

 

 

That is it!

 

Don't have the WS2812 LEDs?

Here is some pictures of an earlier prototype which I built while waiting for the LEDs to arrive...it uses the 6 PWM channels of the Nano and is powered by a 9volt battery in your pocket::

Older prototype

Inside the prototype

Any issues or questions?

Just comment on the Youtube video with any questions you may have!

 

Enjoy!

 

Have played around with the coding for the lights Cool LED Display and the motor.

 

Also decided the Elf in the house would be a lego Spiderman and the son loves him.

Below is an artists view of the proposed structure :-)

 

My project for the Cool LED Display has additional constraints.

 

Friends have asked me to help with a competition piece for their sons nursery... The competition is aimed at the parents.

 

They have been tasked with making a Christmas decoration from a toilet roll tube.

 

They want to make an Elf house and have asked if I could produce them a simple light to be placed inside so that it looks like the lights are on through the window...

 

I feel we can do better than just a simple light.

 

Introducing the first proto type...

I decided I wanted lights that flashed like a Christmas tree and also an elf to wave in the window.

kimpritzker

Pixel Blast

Posted by kimpritzker Dec 3, 2017

 

 

Pixel Blast is an interactive installation made up of nine ‘Persistence of Vision’ displays which come together to create hologram-like images. This project challenges the idea of what a screen has to be, presenting something far more rich than a computer display.

Produced by:  Natthakit Kangsadansenanon

More info : https://www.hackster.io/kimbab-studio/pixel-blast-860b5a

https://kimbab.me/portfolio/

kimpritzker

Cubik Lamp

Posted by kimpritzker Dec 3, 2017

 

It has always been my aspiration to look at a daily product around my life and think how could I improve and build a stronger relationship between it and the users. I chose to increment the desk lamp in this project. This object always sits on our table giving light when we need it to study at night. However, we humans need a break between study from time to time, the usual activity during a break for today’s student is to play social media on a mobile phone. This is time consuming, due to the huge load of information being gained. I have designed this product to make sure that a five- minute break will last five and it will also be a break.

I use two Arduino Mega as a microcontroller for this interactive product. The communication between remote control and the object is possible through Xbee wireless module. The product enclosure was designed in Rhino 3D then export to a laser cutting machine to cut an acrylic sheet. Watch the link to see product in action.

MORE AWESOME PROJECTS: https://kimbab.me/portfolio/

kimpritzker

Snake Lamp

Posted by kimpritzker Dec 3, 2017

About

Snake lamp is a prior project to the Cubik. I tried to implement the well-known Nokia Snake game to the traditional desk lamp.

Design

This project uses one Arduino Uno to control 25 LEDs. The controller only has 4 buttons to control the direction of the Snake. The switch button on the left hand side serves as a changing-mode from a traditional on and off lamp to game setting. Please check out the link below to see the product in action.

 

More Awesome Projects : www.kimbab.me

uddin

3D matrix display

Posted by uddin Nov 28, 2017

I mad this LED 3D matrix display as project of interest. It is an 8*8*8 led cube. With blue diffused LEDs. Diffused LEDs are good in brightness that's why i chose them. Here are some pics and demo. These are all 512 solded LEDs

rsc

Scanning Laser Project

Posted by rsc Nov 16, 2017

This project is a microprocessor or analog signal generator controlled dual X,Y axis scanning laser.

The project is not complete yet, however it's far enough along to post some pictures.

There are two power supplies, one for the laser head (12VDC) and one for the scanning motor amplifiers (+_24VDC)

 

The laser power supply has a key switch for enable/disable.  Each power supply has an indicator on the front panel.

The laser module is 450nm blue with 1W output power and the scanning galvanometers have a 20K max scan frequency for ILDA use.

The laser is similar to this one:

https://www.ebay.com/itm/Blue-1W-1-2W-450nm-Blue-laser-Module-TTL-Modualtion-Basic-Engraving-Burning/331970310292?hash=i…

I purchased the laser and scanning galvo set on ebay - similar to this one:

https://www.ebay.com/itm/20Kpps-Laser-optical-galvo-sets-scanner-ILDA-max-30kpps/181516610218?hash=item2a433baaaa:g:IfcA…

On the side of the enclosure I put a C-Mount lens adapter for adding special filters or lenses.

There are 4 control pots and 2 BNC connectors on the front panel, a set for each channel.

The pots will adjust frequency and amplitude for each channel, the BNCs are for analog control.

There are toggle switches for input selection.

Here's a short video of basic laser operation.  The control system is still under construction.

kk99

Infrared thermometer

Posted by kk99 Nov 15, 2017

pyrometer

I would like to show you a infrared thermometer with MLX90614 sensor, seven segment display HP QDSP-6040 and ATtiny2313 MCU. Sensor allow to measure temperature in following ranges:

1) -40 - 125 °C - in case of measurement of sensor temperature,

2) -70 - 380 °C - in case of measurement of object temperature.

In project is implemented only measurement of object in Celsius degrees.

 

ATtiny2313 MCU communicates with sensor by SMBus. Measured value of temperature is shown on display. Current per single segment of display is configured to 4.67 mA, so display can be easily driven directly from MCU. In first solution as power supply was used ML2020 battery, but it was replaced with 200 mAh battery with TP4056 charger module. Housing was made from epoxy resin.

 

Schematic:

schematic

Images of first version:

pyrometer

 

pyrometer

Images of second version:

pyrometer

 

pyrometer

Video:

Source code in attachment.

ledstar
Hi,
I would like to show simple Christmas decoration. Cotton LED star was made from 5 orange LEDs, few pieces of hotmelt and cotton thread. Each LED diode is controlled by Digispark module with ATTINY85 module. Program was written in C language.

Schematic:

schematic

Photos:

ledstar

ledstar

ledstar

Video:

 

Source code in attachment.

kk99

Simple thermometer

Posted by kk99 Nov 14, 2017

 sevensegtherm

I would like to show you a simple thermometer with single seven segment LED display HP 5082-7356, DS18B20 sensor and Digispark module. DS18B20 sensor is able to measure temperatures in range form -55 to 125 °C. Digispark module communicates with DS18B20 sensor by 1-Wire interface and reads temperature every 10 seconds. Value of temperature (stored as integer) is displayed on HP display.

Schematic:

schematic

Video:

 

Source code:

sevensegtherm

WarrenW

Archery timer display

Posted by WarrenW Nov 14, 2017

Finally completed my wireless timer displays.

One remote control and two display units.

These operate up to a range of 75 meters (actually measured as over 200mtrs line of sight).

 

The remote control and display units are powered by Arduino Mega boards and I have written the software to drive the remotes LCD, keypad and radio and also the display units are interfaced into old commercially made displays that had failed.

 

nothing like breathing life into dead equipment and repurposing them.

I hope you like this.

The pulsing in the attached movie is due to the camera frame rate.