Strumenti Utente

Strumenti Sito


lab2go_arduino:fotoresistenza

Fotoresistenza

Credits:Arduino.cc

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