Una fotoresistència és un element que varia la seva resistència elèctrica en funció de la quantitat de llum que li arriba. Encara que no ens permet fer fàcilment lectures acurades de llum incident (caldria un ajust complex) sí és útil en molts casos en els que només ens cal saber si estem en un ambient fosc o il·luminat.

La lectura de la fotoresistència es fa des d'una entrada analògica del microcontrolador posant-li una resistènciade mil ohm (1 kΩ) com a la figura.

El següent programa llegeix una fotoresistència connectada a l'entrada A3 i ens mostra el valor llegit i la tensió a la que correspon. Els valors alts corresponen a elevada il·luminació.
#define LDRpin A3
int lectura;
void setup() {
Serial.begin(9600);
}
void loop() {
lectura = analogRead(LDRpin);
Serial.print("Lectura = ");
Serial.println(lectura);
Serial.print("Tensio = ");
Serial.print(lectura*3.3/1023);
Serial.println(" V");
delay(1000);
}
A continuació tenim un segon programa en el que la lectura es fa servir per variar el color d'un NeoPixel. Si hi ha poca llum el LED estarà verd i si n'hi ha molta serà vermell. Per a valors intermedis el color serà groc.
#include <Adafruit_NeoPixel.h> #define LDRpin A3
Adafruit_NeoPixel cadena = Adafruit_NeoPixel(1, 1, NEO_GRB + NEO_KHZ800); int lectura; byte color;
void setup() {
Serial.begin(9600);
cadena.begin(); // Inicialitza els NeoPixels
cadena.show();
}
void loop() {
lectura = analogRead(LDRpin);
Serial.print("Lectura = ");
Serial.println(lectura);
color = lectura*255/1023;
cadena.setPixelColor(0, color, 255 - color, 0);
cadena.show(); // Actualitza
delay(1000);
}
En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.