Barra de nivel de luz
Parte de la sección Pantallas y sensores del Journey de Arduino de Coddy. Lección 22 de 24.
El anillo puede mostrar un número como una barra: cuanto mayor sea el número, más píxeles se iluminan. Aquí el número es el nivel de luz.
Como en la lección sobre la luz nocturna, la lectura del sensor de luz en A0 disminuye a medida que aumenta la luz. Invierte el valor primero, para que un número mayor signifique más luz:
int light = 1023 - analogRead(A0);
int count = map(light, 0, 1023, 0, 16);Después, borra el anillo e ilumina los píxeles desde 0 hasta count menos 1:
ring.clear();
for (int i = 0; i < count; i++) {
ring.setPixelColor(i, yellow);
}
ring.show();clear() permite que la barra se acorte: sin él, los píxeles que se iluminaron cuando había mucha luz siguen iluminados cuando oscurece.
Desafío
IntermedioEl sensor de luz está en A0 y el anillo en el pin 6. Crea una barra de luz:
- invierte la lectura para que, cuanto más luz haya, mayor sea el número
- asigna el valor al rango de 0 a 16 píxeles
- borra el anillo, enciende esa cantidad de píxeles empezando por el píxel 0 y muéstralo
Pulsa Run, cambia la luz de la placa y, después, pulsa Check.
Pruébalo tú mismo
#include <Adafruit_NeoPixel.h>
// 16 píxeles, datos en el pin 6
Adafruit_NeoPixel ring(16, 6, NEO_GRB + NEO_KHZ800);
uint32_t yellow = ring.Color(255, 160, 0);
void setup() {
ring.begin();
}
void loop() {
int reading = analogRead(A0); // disminuye a medida que aumenta la luz
// enciende más píxeles cuanto más luz haya
delay(50);
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Pantallas y sensores
Practica por tu cuenta: Playground de Arduino