Pentru a detecta lumina si a o folosi la a comanda un microcontroler putem folosi un modul care are inclus si un fotorezistor (LDR).Acest modul este creat cu ajutorul circuitului integrat LM393 si a catorva componente pasive.
    Acest modul se alimenteaza cu o tensiune cuprinsa intre 3.3V si 5V. Iesirea acestui modul este in format digital LOW. Mai exact in lipsa luminii pe pinul de iesire avem o tensiune egala cu tensiunea de alimentare. La detectarea luminii iesirea comuta in 0 logic (0V tensiune de iesire).

    Modulul poate fi cumparat la un pret de 5 lei de aici.
    Reglajul sensibilitatii acestui modul se realizeaza cu ajutorul rezistorului semireglabil de 10KiloOhmi aflat pe modul.
    Poza cu modulul este cea de mai jos:

    Schema electronica a acestui modul este cea de mai jos:

    Pentru a folosi acest modul cu Arduino va trebui sa creeam un sketch simplu, format doar din cateva linii de cod.
    Acest cod este explicat mai jos:
    In prima linie vom declara o variabila care contine pinul digital unde vom conecta iesirea modulului. In acest caz vom folosi portul D3 al Arduino:

int LDR = 3;

    Apoi vom crea prima functie necesara compilarii programului:

void setup() {}

    In interiorul acestei functii vom adauga 2 linii de cod.
    In prima linie de cod vom initializa functia de transfer serial pentru a citi rezultatele in consola:

Serial.begin(9600);

    In cea de-a doua linie vom seta pinul digital al Arduino ca si pin de intrare:

pinMode(LDR, INPUT);

    Codul final pentru functia setup() este urmatorul:

void setup() {
	Serial.begin(9600);
	pinMode(LDR, INPUT);
}

    Urmatoarea functie in care va trebui sa introducem cod este functia loop(). Aceasta functie se va executa in mod repetitiv si are urmatoarea forma:

void loop() {}

    In aceasta functie vom adauga liniile de cod de mai jos.
    In prima linie de cod vom citi valoarea aflata la pinul D3 al Arduino:

int val = digitalRead(LDR);

    In variabila val vom avea stocata valoarea returnata de catre modul in format LOW sau HIGH.
    Pentru a afisa aceasta valoare in consola seriala (sau intr-un display LCD) vom folosi instructiunea conditionala if... else. Aceasta instructiune ne va afisa o propozitie in cazul in care nu este lumina si o alta propozitie in cazul in care se detecteaza prezenta luminii. Codul este cel de mai jos:

if (val == LOW) {
	//aici se va executa codul in cazul in care este detectata lumina de catre modul, iesirea acestui fiind in LOW
	Serial.println("Am detectat lumina...");
} else {
	//aici se va executa codul in cazul in care valoarea citita la pinul D3 este HIGH, valoare care semnifica lipsa luminii
	Serial.println("Nu avem lumina detectata...");
}

    Dupa executarea acestor linii de cod vom pune microcontrolerul in pozitie de asteptare pentru 1 secunda prin adaugarea acestei linii de cod:

delay(1000);

    Codul in intregima din functia loop() este mai jos:

void loop() {
	int val = digitalRead(LDR);
	if (val == LOW) {
		Serial.println("Am detectat lumina...");
	} else {
		Serial.println("Nu avem lumina detectata...");
	}
	delay(1000);
}

    Sketchul in forma finala este cel de mai jos:

int LDR = 3;

void setup() {
	Serial.begin(9600);
	pinMode(LDR, INPUT);
}

void loop() {
	int val = digitalRead(LDR);
	if (val == LOW) {
		Serial.println("Am detectat lumina...");
	} else {
		Serial.println("Nu avem lumina detectata...");
	}
	delay(1000);
}

    In consola se va returna urmatorul mesaj:

 

Nu sunt comentarii

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