Install Arduino IDE
If you're new to GEMMA and the Arduino IDE, we have a great introduction tutorial to get you started with the program and configuration.
You'll need to download our special flavor of the Arduino IDE that includes profiles for Adafruit micro-controllers. Walk through the guide and configure the GEMMA.
Arduino Sketch
Below is the code used in the project that animated the NeoPixel rings. Once you have installed the Adafruit Arduino IDE and configured the GEMMA. Copy the code below and paste it into a new sketch.
// SPDX-FileCopyrightText: 2014 Phil Burgess for Adafruit Industries // // SPDX-License-Identifier: MIT // #include <Adafruit_NeoPixel.h> #define PIN 0 #define NUM_LEDS 24 Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUM_LEDS, PIN); uint8_t mode = 0, // Current animation effect offset = 0; // Position of spinner animation uint32_t color = 0xFF0000; // Starting color = red uint32_t prevTime; // Time of last animation mode switch void setup() { pixels.begin(); pixels.setBrightness(85); // 1/3 brightness prevTime = millis(); // Starting time } void loop() { uint8_t i; uint32_t t; switch(mode) { case 0: // Random sparkles - just one LED on at a time! i = random(NUM_LEDS); // Choose a random pixel pixels.setPixelColor(i, color); // Set it to current color pixels.show(); // Refresh LED states // Set same pixel to "off" color now but DON'T refresh... // it stays on for now...both this and the next random // pixel will be refreshed on the next pass. pixels.setPixelColor(i, 0); delay(10); // 10 millisecond delay break; case 1: // Spinny wheel // A little trick here: pixels are processed in groups of 8 // (with 2 of 8 on at a time), NeoPixel rings are 24 pixels // (8*3) and 16 pixels (8*2), so we can issue the same data // to both rings and it appears correct and contiguous // (also, the pixel order is different between the two ring // types, so we get the reversed motion on #2 for free). for(i=0; i<NUM_LEDS; i++) { // For each LED... uint32_t c = 0; // Assume pixel will be "off" color if(((offset + i) & 7) < 2) { // For each 8 pixels, 2 will be... c = color; // ...assigned the current color } pixels.setPixelColor(i, c); // Set color of pixel 'i' } pixels.show(); // Refresh LED states delay(50); // 50 millisecond delay offset++; // Shift animation by 1 pixel on next frame if(offset >= 8) offset = 0; // Reset offset every 8 pixels break; // More animation modes could be added here! } t = millis(); // Current time in milliseconds if((t - prevTime) > 8000) { // Every 8 seconds... mode++; // Advance to next animation mode if(mode > 1) { // End of modes? mode = 0; // Start over from beginning color >>= 8; // Next color R->G->B if(!color) color = 0xFF0000; // Preiodically reset to red } pixels.clear(); // Set all pixels to 'off' state prevTime = t; // Record the time of the last mode change } }
Installing Arduino libraries is a frequent stumbling block. If this is your first time, or simply needing a refresher, please read the All About Arduino Libraries tutorial.If the NeoPixel library is correctly installed (and the Arduino IDE is restarted), you should be able to navigate through the “File” rollover menus as follows:
File→Sketchbook→Libraries→Adafruit_NeoPixel→strandtest
From the Tools→Board menu, select the device you are using:
- Adafruit Gemma M0
- Adafruit Gemma 8 MHz
- Connect the USB cable between the computer and your device. The original Gemma (8 MHz) need the reset button pressed on the board, then click the upload button (right arrow icon) in the Arduino IDE. You do not need to press the reset on the newer Gemma M0 or Trinket M0.
When the battery is connected, you should get a light show from the LEDs. Refer to the NeoPixel Uberguide for more info.
Text editor powered by tinymce.