Pentru a detecta prezenta sau absenta luminii de catre ESP32 vom folosi un fotorezistor. Iar in acest articol vom folosi un modul detector de lumin cu fotorezistor.

    Acest modul se poate alimenta cu o tensiune cuprinsa intre 3.3V si 5V, in acest caz va fi alimentat cu o tensiune de 3.3V.

    Modulul ne va returna un 1 logic (HIGH) cand lumina este insuficienta si un 0 logic (LOW) in momentul cand lumina trece de pragul prestabilit, acest prag fiind reglabil cu ajutorul unui rezistor semireglabil.

    Pretul placii de dezvoltare ESP32 este de 35 de lei, se poate achizitiona de aici iar pretul pentru modulul detector de luina este de 5 lei si poate fi cumparat de aici.

    Modulul folosit in acest exemplu este cel din poza de mai jos:

    Pinul de iesire al acestui modul se va conecta la pinul GPIO_26 al ESP32.

    Pentru detectia luminii vom folosi un led. Acesta se va conecta exact ca in articolul precedent. La detectia luminii ledul se va aprinde iar la scaderea luminii sub un anuit prag prestabilit acest led se va stinge.

    Continuam cu scrierea codului sursa. Pentru inceput va trebui sa declaram 2 variabile, una pentru led si cealalta pentru senzor:

int led = 25;
int senzor = 26;

    In void setup() vom declara pinul folosit pentru led ca si pin de iesire iar pinul care va fi conectat la senzorul de luina ca si pin de intrare. Acest lucru se face cu urmatoarele 2 linii de cod:

pinMode(led, OUTPUT);
pinMode(senzor, INPUT);

    In void loop() vom scrie restul codului sursa, cel care se va ocupa cu logica programului. Acest cod sursa va verifica ce tip de iesire logica ofera senzorul de luina si, in functie de nivelul logic detectat, va aprinde sau va stinge ledul martor. Codul sursa este urmatorul:

int val = digitalRead(senzor);
  if (val == LOW) {
    digitalWrite(led, HIGH);
  } else {
    digitalWrite(led, LOW);
  }

    Intregul sketch este cel de mai jos:

int led = 25;
int senzor = 26;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(senzor, INPUT);
}

void loop() {
  int val = digitalRead(senzor);
  if (val == LOW) {
    digitalWrite(led, HIGH);
  } else {
    digitalWrite(led, LOW);
  }
}

 

Nu sunt comentarii

Acest website foloseste cookie-uri pentru o experienta placuta in timpul navigarii.