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 4022 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
  • funinalaska
    0 funinalaska over 12 years ago

    Ok, I got it

     

    I did a lot of research and learning last night.

    I wrote my own functions to do what I am looking for.

    It is up and working well.

     

    fadeOut(t); is for a normal speed fade out

    ffadeOut(t); is for a faster fadeout by a factor of 4

    the blackout() function is to make sure all pixels are set back to 0, 0, 0 instead of hanging on to their previous color setting and I use the blackout() by itself at points.

    This is working great for what I need.

     

    void fadeOut(int time) {
      for (int ii = 0; ii < 255; ++ii) {
        strip.setBrightness(255-ii);
        strip.show();
        delay (time);
      }
      blackout();
    }
    
    void ffadeOut(int time) {
      for (int ii = 0; ii < 64; ++ii) {
        int hh = ii*4;
        strip.setBrightness(255-hh);
        strip.show();
        delay (time);
      }
      blackout();
    }
      
      void blackout() {
        strip.setPixelColor(0, 0, 0, 0);
        strip.setPixelColor(1, 0, 0, 0);
        strip.setPixelColor(2, 0, 0, 0);
        strip.setPixelColor(3, 0, 0, 0);
        strip.setBrightness(255);
        strip.show();
      }

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 12 years ago in reply to funinalaska
    Excellent work, it is always the best learning experience when you discover the answers through trial and error rather than simply being provided the answer. Good for you in resolving this yourself.
    One tip I would like to make observing the supplied code, using the Blackout() as an example, I would recommend making this into a loop using a NumPixels property
    at the beginning of the code to set how many LEDS you have, then use this everywhere as aloop count. this way the blackout function for example will always work without re-coding for any number of LEDs you may use in the future.
    something like this (Not validated, just typed directly here ) assuming you have set an int NumPixels = 4 at the top of your code
    void blackout()
    { 
        for (int leds = 0 ; leds < NumPixels; leds++)
    •      {
              strip.setPixelColor(leds, 0, 0, 0); 
    •      }
        strip.show();
    }
    • 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 agree Peter, It is always more fulfilling to problem solve yourself.

    It turned out that one of the problems I had was that I was writing my function repeat line incorrectly.

    A simple mistake like using a ( instead of a { can really jack you up.

    For this project I am going to leave the blackout code alone but I have another upcoming project using a LOT more pixels where your idea for that function will certainly come in handy.

    Thank you for that.

     

    I spent a couple hours last night trimming some of the fat out of my sketch to make it fit the space available on an ATtiny85 chip.

     

    I got it loaded and working on my prototype, now I just need to wait for the rest of the parts to arrive so I can finish making the final project for my wife.

     

    I wish someone made an ultra small board or chip that only had a few pins like the ATtiny85 but had a lot more code room.

     

    I usually only need 2-3 pins for my projects but having more than 8k flash would be nice and not have to step up to a ATmega chip.

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

    Oh, I have so been there and feel you pain, it seems the manufacturers don't agree with us at this point in time. More RAM/FLASH in their books must mean you need more pins. I have done so many projects like yours where only a few pins are needed but have had to use chips with 40 to 100 pins or more just to get the flash and ram space. The irony is a significant part of the cost of chips is packaging and therefor it would make sense you and I that a big slice of silicon in a small package make perfect sense.... In a perfect world....Ah well.

    • 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

    Peter,

    I was doing some searching for information on an Ethernet module and I found a thread of yours about using a DHT22 over internet.

    I have a similar project in use that uses 2 DS18B20 sensors. Unfortunately the DHT11 and 22 modules will not work up here other than indoors.

    Your thread gave me a couple ideas on improving my project.

    Currently mine is only accessible on my local net not on the internet, that is one improvement I would like to make.

    I am also looking to downsize the footprint. Currently it is an Uno with 2 shields on it (Ethernet and LCD) I am looking into one of the Nokia graphic LCD modules and using a nano and ENC28J60 module instead of the Ethernet shield.

    I am looking at this module: http://www.ebay.com/itm/400670277069

    Any experience with this?

     

    One day i do hope to see an ATtiny85 size package with 32K flash, But I am just dreaming I am sure.

    • 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

    Peter,

    I was doing some searching for information on an Ethernet module and I found a thread of yours about using a DHT22 over internet.

    I have a similar project in use that uses 2 DS18B20 sensors. Unfortunately the DHT11 and 22 modules will not work up here other than indoors.

    Your thread gave me a couple ideas on improving my project.

    Currently mine is only accessible on my local net not on the internet, that is one improvement I would like to make.

    I am also looking to downsize the footprint. Currently it is an Uno with 2 shields on it (Ethernet and LCD) I am looking into one of the Nokia graphic LCD modules and using a nano and ENC28J60 module instead of the Ethernet shield.

    I am looking at this module: http://www.ebay.com/itm/400670277069

    Any experience with this?

     

    One day i do hope to see an ATtiny85 size package with 32K flash, But I am just dreaming I am sure.

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

    No experience with that specific module but I have used the 328 in many custom boards and extensive use of the ENC chip, if you use the library i linked to in the other article you should have no issues converting from Wiz net to it.

     

    The DHT22 does have a wider temp range than the 11, not sure why you would not be able to use it. the DS18B20 are also very capable devices, just no humidity sensor.

     

    you should have no issues with this combination. Some of my projects actually have both the DS18B20 and DHt22/11 devices, so long as there are pins and memory available, there should be no problems,

     

    As for extra flash, it is possible that Texas MSP430 range may have something and the nice thing is they have an IDE that is 99.9% same as Arduino (Color is different image ), just google Launch pad and MSP430 for loads of info

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
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