element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Arduino
  • Products
  • More
Arduino
Arduino Forum Help with coding Arduino for Adafruit Neopixels
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Arduino to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 20 replies
  • Subscribers 420 subscribers
  • Views 4015 views
  • Users 0 members are here
  • trinket
  • neopixel
  • ws2812
  • arduino
  • subroutine
Related

Help with coding Arduino for Adafruit Neopixels

funinalaska
funinalaska over 12 years ago

Ok, I am still struggling with coding issues.

I am trying to develop a subroutine (sorry for using the wrong term if that is incorrect but I do not know the proper terminology)

I am trying to program a trinket to control 4 Neopixel LEDs

I want to have the pixels turn on individually set to colors I choose using the strip.setPixelColor(n, R, B, G) code

Then I want to have them fade out using the strip.setBrightness(i) code and have "i" be a variable in the sub routine to run over and over fading from 255 (max brightness) to 0 (off) in increments assignable per step from 1 to 10

Then have the subroutine strip.setColorPixel(n, 0, 0, 0) and return i to 255 and then return to void loop for the next command

 

While I am at it, is there a way to have each of 4 neopixels fade at different times like have one pixel come on red and begin fading out and while that one is fading have another come on blue and start fading and then have the other 2 come on white then start fading. If not, i can handle them all fading at the same time, just curious

 

I can figure out how to have one LED come on and fade out then come back on and fade out in loop, but I don't know how to get this to work in a subroutine.

Thanks for any help.

  • Sign in to reply
  • Cancel

Top Replies

  • e14 Contributor
    e14 Contributor over 10 years ago +1
    I've just had a read through all of this and it was incredibly helpful as I'm doing something with neopixels that is very similar. Many thanks!
Parents
  • Robert Peter Oakes
    0 Robert Peter Oakes over 12 years ago

    The library has commands to individually set pixel color as needed which you seem to already be aware of

     

    so for example

    setPixelColor( uint16_t n, uint8_t r, uint8_t g, uint8_t b)  will let you specify the pixel ID (n), then the red, green and blue color from 0 - 255 for each.

     

    initialization of course will need you to simply specify there are 4 pixels to be used

     

    if you have a few variables containing the current mills() + the duration to state changes then you can look at these in a loop to decide what to do

     

    the NEOPIXEL library examples have many functions that perform different effects and will work with any given pixel length

     

    hope this helps

    Peter

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • funinalaska
    0 funinalaska over 12 years ago in reply to Robert Peter Oakes

    Yes, I have been using the Neopixel library and examples, especially those in strand test extensively.

    I have not been able to find what I am trying to achieve in this project.

    First question I have is can you use setBrightness on a single pixel or is that only able to be used on the whole strip?

    Second of all I have been trying to figure out how to write a decrementing function to use the setBrightness command to fade out the entire strip then return to my void loop

    Third is it possible to use the setPixelColor on more than one pixel in one line or do I need to assign every pixel individually? Can I use one line of code to set pixels 0 and 2 to the same?

    I had been using the example code colorWipe for that purpose and just putting the time at 1 but if I can set them another way it would be very helpful especially if using 4 pixels in one like I can address 0 and 2 and the next 1 and 3.

    I have had very limited experience writing code, and most of it has been adapting example codes to do what I want them to do, or close to it.

    Now I am trying to make this project mine, and having a difficult time with it.

    Here is what I want to be able to do:

     

    In my void loop I would like to be able to:

    setPixelColor of a pixel

    then call up a subroutine //function, void, whatever you call it//  "fade() "

    have that routine fade the led or the entire strip completely out before resetting the whole strip back to (0, 0, 0) RGB and set the brightness back to 255

    then return to the void loop for the next command.

    In total the void loop will probably be doing the bring up a pixel at different colors and intensities and possibly more than 1 pixel at a time.

     

    Example of what I would like

    strip.setPixelColor(0, 100, 255, 50);

    strip.setPixelColor(1, 255, 0, 100);

    strip.setPixelColor(2, 100, 255, 50);

    strip.setPixelColor(3, 255, 0, 100);

    strip.show();

    fade();   //or fade(T); or fade(T, P); Where T is the time of the fade and if possible P is the pixel as long as I can still set up to make it fade all pixels as well

    strip.setPixelColor(2, 255, 0, 0);

    strip.show();

    delay(100);

    strip.setPixelColor(1, 0, 255, 0);

    strip.show();

    delay(75);

    fade();

    // and so on

     

    There will also be other things is will be doing such as strobes, chases and other random action with the LEDs

     

    The whole purpose of this project is for my wife to put inside a candle holder she has that she wants a light in that can look like the light from a fireworks show.

     

    This will hopefully be going on an Adafruit Trinket and will be packaged to fit in something about the size of a tea light with a cue of the 4 pixels sticking out of the top.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • funinalaska
    0 funinalaska over 12 years ago in reply to Robert Peter Oakes

    Yes, I have been using the Neopixel library and examples, especially those in strand test extensively.

    I have not been able to find what I am trying to achieve in this project.

    First question I have is can you use setBrightness on a single pixel or is that only able to be used on the whole strip?

    Second of all I have been trying to figure out how to write a decrementing function to use the setBrightness command to fade out the entire strip then return to my void loop

    Third is it possible to use the setPixelColor on more than one pixel in one line or do I need to assign every pixel individually? Can I use one line of code to set pixels 0 and 2 to the same?

    I had been using the example code colorWipe for that purpose and just putting the time at 1 but if I can set them another way it would be very helpful especially if using 4 pixels in one like I can address 0 and 2 and the next 1 and 3.

    I have had very limited experience writing code, and most of it has been adapting example codes to do what I want them to do, or close to it.

    Now I am trying to make this project mine, and having a difficult time with it.

    Here is what I want to be able to do:

     

    In my void loop I would like to be able to:

    setPixelColor of a pixel

    then call up a subroutine //function, void, whatever you call it//  "fade() "

    have that routine fade the led or the entire strip completely out before resetting the whole strip back to (0, 0, 0) RGB and set the brightness back to 255

    then return to the void loop for the next command.

    In total the void loop will probably be doing the bring up a pixel at different colors and intensities and possibly more than 1 pixel at a time.

     

    Example of what I would like

    strip.setPixelColor(0, 100, 255, 50);

    strip.setPixelColor(1, 255, 0, 100);

    strip.setPixelColor(2, 100, 255, 50);

    strip.setPixelColor(3, 255, 0, 100);

    strip.show();

    fade();   //or fade(T); or fade(T, P); Where T is the time of the fade and if possible P is the pixel as long as I can still set up to make it fade all pixels as well

    strip.setPixelColor(2, 255, 0, 0);

    strip.show();

    delay(100);

    strip.setPixelColor(1, 0, 255, 0);

    strip.show();

    delay(75);

    fade();

    // and so on

     

    There will also be other things is will be doing such as strobes, chases and other random action with the LEDs

     

    The whole purpose of this project is for my wife to put inside a candle holder she has that she wants a light in that can look like the light from a fireworks show.

     

    This will hopefully be going on an Adafruit Trinket and will be packaged to fit in something about the size of a tea light with a cue of the 4 pixels sticking out of the top.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube