Menu
CoddyTech

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.

challenge icon

Desafio

Médio

O 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);
}
quiz iconTeste seus conhecimentos

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