lab2go_arduino:fotoresistenza
Indice
Fotoresistenza
La fotoresistenza, o fotoresistore (meno usato), è un componente passivo, una resistenza variabile a seconda della luce che riceve sulla faccia principale. Solitamente viene utilizzato in accoppiata con un resistore a formare un partitore resistivo da cui è poi possibile leggere il valore di tensione (a questo punto direttamente proporzionale alla luce rilevata) tramite pin Arduino e funzione analogRead.
Utilizzo con Arduino
Leggere il valore dalla fotoresistenza
int val;
void setup() {
pinMode(A0,INPUT);
Serial.begin(9600); // Inizializza la comunicazione seriale
}
void loop(){
val = analogRead(A0);
Serial.println(val);
delay(10);
}
Crepuscolare
int val;
void setup() {
pinMode(A0,INPUT);
Serial.begin(9600); // Inizializza la comunicazione seriale
}
void loop(){
val = analogRead(A0); // analowRead range 0...1023
Serial.println(val);
analogWrite(3,val/4); //analogWrite range 0...255
delay(10);
}
Forcella ottica
In questo esempio vogliamo calcolare la velocità dell'oggetto che passa attraverso i due sensori
// Definizione dei pin
const int photoResistor1 = A1; // Fotoresistenza 1
const int photoResistor2 = A0; // Fotoresistenza 2
// Soglia regolabile per rilevamento (valore tra 0 e 1023)
int threshold = 500;
// Distanza tra i due sensori (in centimetri)
float distance = 10.0; // Ad esempio, 10 cm
// Variabili per il tempo
unsigned long startTime = 0;
unsigned long endTime = 0;
// Variabile per la velocità
float speed = 0.0;
void setup() {
Serial.begin(9600); // Inizializza la comunicazione seriale
pinMode(photoResistor1, INPUT);
pinMode(photoResistor2, INPUT);
}
void loop() {
// Legge i valori delle fotoresistenze
int value1 = analogRead(photoResistor1);
int value2 = analogRead(photoResistor2);
// Controlla se l'oggetto passa davanti al sensore 1
if (value1 < threshold && startTime == 0) {
startTime = millis();
Serial.println("Oggetto rilevato dal sensore 1");
// Controlla se l'oggetto passa davanti al sensore 2
while (endTime == 0) {
value2 = analogRead(photoResistor2);
if (value2 < threshold) {
endTime = millis();
Serial.println("Oggetto rilevato dal sensore 2");
}
}
// Calcola la velocità una volta rilevati entrambi i passaggi
unsigned long elapsedTime = endTime - startTime; // Tempo in millisecondi
speed = (distance / 100.0) / (elapsedTime / 1000.0); // Velocità in m/s
// Stampa i risultati
Serial.print("Tempo trascorso: ");
Serial.print(elapsedTime);
Serial.println(" ms");
Serial.print("Velocità: ");
Serial.print(speed);
Serial.println(" m/s");
// Reset delle variabili per la prossima misurazione
startTime = 0;
endTime = 0;
}
}
lab2go_arduino/fotoresistenza.txt · Ultima modifica: da 127.0.0.1




