Menu
CoddyTech

Barra del livello di luce

Fa parte della sezione Display e sensori del percorso Arduino di Coddy. Lezione 22 di 24.

L'anello può mostrare un numero come una barra: più grande è il numero, più pixel si illuminano. Qui il numero indica il livello di luce.

Come nella lezione sulla luce notturna, la lettura del sensore di luce su A0 diminuisce quando la luce aumenta. Inverti prima il valore, così un numero più grande indica più luce:

int light = 1023 - analogRead(A0);
int count = map(light, 0, 1023, 0, 16);

Quindi svuota l'anello e illumina i pixel da 0 fino a count meno 1:

ring.clear();
for (int i = 0; i < count; i++) {
  ring.setPixelColor(i, yellow);
}
ring.show();

clear() permette alla barra di accorciarsi: senza questa istruzione, i pixel illuminati quando c'era molta luce restano accesi quando fa buio.

challenge icon

Sfida

Medio

Il sensore di luce è collegato ad A0 e l’anello al pin 6. Crea una barra luminosa:

  • inverti la lettura in modo che più luce corrisponda a un numero più grande
  • mappala su un intervallo da 0 a 16 pixel
  • svuota l’anello, accendi quel numero di pixel a partire dal pixel 0 e mostralo

Premi Esegui, cambia la luce sulla scheda, poi premi Verifica.

Provalo tu

#include <Adafruit_NeoPixel.h>

// 16 pixel, dati sul 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);  // diminuisce all'aumentare della luce
  // accendi più pixel quanto più è intensa la luce
  delay(50);
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Display e sensori

Esercitati da solo: Playground Arduino