Indice
Descrizione
Con l'aggiunta dei LED RGB NeoPixel ai tuoi progetti Arduino, puoi creare effetti luminosi sorprendenti con una vasta gamma di colori.
In questa guida, scoprirai come collegarli ad Arduino e come utilizzare la libreria Adafruit NeoPixel per controllarli. Con pochi componenti e un po' di codice, i tuoi progetti diventeranno molto più accattivanti.
Esploreremo alcuni esempi pratici, come un effetto di luce scorrevole, la visualizzazione di un input analogico attraverso i LED e alcune animazioni casuali che renderanno i tuoi progetti davvero unici.
Preparati a trasformare le tue idee in spettacolari effetti luminosi!
#include <Adafruit_NeoPixel.h>
#define DIN_PIN 6
#define NUM_PIXELS 8
Adafruit_NeoPixel pixels(NUM_PIXELS, DIN_PIN);
int32_t colors[] = {
pixels.Color(255, 0, 0),
pixels.Color(255, 255, 0),
pixels.Color(0, 255, 0),
pixels.Color(0, 255, 255),
pixels.Color(0, 0, 255),
pixels.Color(255, 0, 255),
};
int numColors = sizeof(colors) / sizeof(int32_t);
int index = 0;
void setup() {
pixels.begin();
pixels.setBrightness(128);
pixels.clear();
pixels.show();
}
void loop() {
for (int color = 0; color < numColors; color++) {
for (int pixel = 0; pixel < NUM_PIXELS; pixel++) {
index = pixel;
if (color % 2 != 0) {
index = NUM_PIXELS - 1 - index;
}
pixels.clear();
pixels.setPixelColor(index, colors[color]);
pixels.show();
delay(100);
}
}
}
#include <Adafruit_NeoPixel.h>
#define DIN_PIN 6
#define NUM_PIXELS 8
#define INPUT_PIN A0
Adafruit_NeoPixel pixels(NUM_PIXELS, DIN_PIN);
uint32_t colors[] = {
pixels.Color(0, 0, 255),
pixels.Color(0, 0, 255),
pixels.Color(0, 255, 0),
pixels.Color(0, 255, 0),
pixels.Color(255, 255, 0),
pixels.Color(255, 255, 0),
pixels.Color(255, 0, 0),
pixels.Color(255, 0, 0),
};
void setup() {
pixels.begin();
pixels.setBrightness(128);
pixels.clear();
pixels.show();
}
void loop() {
int value = analogRead(INPUT_PIN);
pixels.clear();
int limit = value * (NUM_PIXELS + 1) / 1023;
for (int i = 0; i < limit; i++) {
pixels.setPixelColor(i, colors[i]);
}
pixels.show();
delay(100);
}
#include <Adafruit_NeoPixel.h>
#define DIN_PIN 6
#define NUM_PIXELS 8
#define INPUT_PIN A0
#define NUM_ANIMATIONS 5
#define FRAME_DURATION 100
Adafruit_NeoPixel pixels(NUM_PIXELS, DIN_PIN);
int animation = 0;
unsigned long frameTimestamp = 0;
int32_t colors[] = {
pixels.Color(255, 0, 0),
pixels.Color(255, 255, 0),
pixels.Color(0, 255, 0),
pixels.Color(0, 255, 255),
pixels.Color(0, 0, 255),
pixels.Color(255, 0, 255),
pixels.Color(255, 255, 255),
};
int numColors = sizeof(colors) / sizeof(int32_t);
void setup() {
pixels.begin();
pixels.setBrightness(128);
pixels.clear();
pixels.show();
randomSeed(analogRead(A5));
nextAnimation();
}
void loop() {
unsigned long timestamp = millis();
int value = analogRead(INPUT_PIN);
pixels.setBrightness(map(value, 0, 1023, 0, 255));
if((timestamp - frameTimestamp) >= FRAME_DURATION) {
frameTimestamp = timestamp;
switch (animation) {
case 1: fillColor(1); break;
case 2: fillColor(-1); break;
case 3: scrollPixel(1); break;
case 4: scrollPixel(-1); break;
default: randomPixels();
}
}
}
void nextAnimation() {
animation = random(NUM_ANIMATIONS);
frameTimestamp = 0;
}
void randomPixels() {
static int count = 0;
if (count >= 8) {
count = 0;
nextAnimation();
return;
}
for (int pixel = 0; pixel < NUM_PIXELS; pixel++) {
pixels.setPixelColor(pixel, colors[random(1, numColors)]);
}
pixels.show();
count++;
}
void fillColor(int direction) {
static int pixel = 0;
static int index = 0;
static uint32_t color = colors[random(numColors)];
if(pixel >= NUM_PIXELS) {
pixel = 0;
color = colors[random(numColors)];
nextAnimation();
return;
}
index = pixel;
if (direction < 0) {
index = NUM_PIXELS - 1 - index;
}
pixels.setPixelColor(index, color);
pixels.show();
pixel++;
}
void scrollPixel(int direction) {
static int pixel = 0;
static int index = 0;
pixels.clear();
if(pixel >= NUM_PIXELS) {
pixel = 0;
nextAnimation();
return;
}
index = pixel;
if (direction < 0) {
index = NUM_PIXELS - 1 - index;
}
pixels.setPixelColor(index, colors[random(numColors)]);
pixels.show();
pixel++;
}