Tutorial Arduino #33

LED NeoPixel

LED NeoPixel | Tutorial Arduino ITA #33
Tutorial Arduino #32: Encoder rotativo
Tutorial Arduino #32
Encoder rotativo

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!

Scarica le risorse

Progetto: Scorrimento LED

Schema

Componenti

Codice

#include <Adafruit_NeoPixel.h> #define DIN_PIN 6#define NUM_PIXELS 8 Adafruit_NeoPixel pixels(NUM_PIXELS, DIN_PIN); int32_t colors[] = {  pixels.Color(25500),  pixels.Color(2552550),  pixels.Color(02550),  pixels.Color(0255255),  pixels.Color(00255),  pixels.Color(2550255),};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);    }  }}
scarica il file

Progetto: Input analogico

Schema

Componenti

Codice

#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(00255),  pixels.Color(00255),  pixels.Color(02550),  pixels.Color(02550),  pixels.Color(2552550),  pixels.Color(2552550),  pixels.Color(25500),  pixels.Color(25500),}; 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);}
scarica il file

Progetto: Animazioni casuali

Schema

Componenti

Codice

#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(25500),  pixels.Color(2552550),  pixels.Color(02550),  pixels.Color(0255255),  pixels.Color(00255),  pixels.Color(2550255),  pixels.Color(255255255),};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, 010230255));   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++;}
scarica il file

Altri componenti

Arduino Software Hero

Vuoi imparare a programmare Arduino, ma non sai da dove cominciare?

Iscriviti al corso online

Libri consigliati

In qualità di Affiliato Amazon riceviamo un guadagno dagli acquisti idonei


Tutorial consigliati

E-commerce di elettronica

Sul nostro negozio online trovi tutti i componenti usati nei tutorial.
Inoltre hai un'ampia scelta di prodotti tra:

  • Arduino
  • Raspberry Pi
  • Sensori
  • Robotica
  • Componenti elettronici
  • Accessori

Compra online, ricevi comodamente a casa

Visita il negozio