Barra do nível de luz
Parte da seção Displays e sensores do Journey de Arduino da Coddy. Lição 22 de 24.
O anel pode mostrar um número como uma barra: quanto maior o número, mais pixels acesos. Aqui, o número é o nível de luz.
Assim como na lição sobre luz noturna, a leitura do sensor de luz em A0 diminui conforme a luz aumenta. Inverta-a primeiro, para que um número maior signifique mais luz:
int light = 1023 - analogRead(A0);
int count = map(light, 0, 1023, 0, 16);Em seguida, limpe o anel e acenda os pixels de 0 até count menos 1:
ring.clear();
for (int i = 0; i < count; i++) {
ring.setPixelColor(i, yellow);
}
ring.show();O clear() permite que a barra diminua: sem ele, os pixels que estavam acesos quando havia muita luz continuam acesos quando escurece.
Desafio
MédioO sensor de luz está em A0 e o anel no pino 6. Faça uma barra de luz:
- inverta a leitura para que mais luz resulte em um número maior
- mapeie-a para 0 a 16 pixels
- limpe o anel, acenda essa quantidade de pixels a partir do pixel 0 e mostre o resultado
Pressione Run, altere a luz na placa e, em seguida, Check.
Experimente você mesmo
#include <Adafruit_NeoPixel.h>
// 16 pixels, dados no pino 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); // diminui conforme a luminosidade aumenta
// acenda mais pixels quanto maior for a luminosidade
delay(50);
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Displays e sensores
Pratique por conta própria: Playground de Arduino