Pe piata exista un modul cu 2 relee care se alimenteaza la 5V, pentru a fi folosit cu Arduino. Pentru a verifica rapid functionarea unui asemenea modul, avand la dispozitie decat o placa Arduino si niste fire Dupont, am facut un mic montaj:
iar ca sketch, am folosit ca baza pe cel numit "Blink" din exemplele programului Arduino IDE. Am facut un filmulet, numit test placa cu 2 relee in care apare un Arduino Mega, care este conectat la fel (D8 si D9).
Schema de conectare este
iar sketch-ul folosit este:
/* "Blink" is original sketch changed sketch by niq_ro for test 2 relay boardhttp://nicuflorica.blogspot.ro/http://www.tehnic.go.rohttp://www.niqro.3x.rohttp://arduinotehniq.blogspot.com/ */// inputs for relays:int pin1 = 7; // D7 for relay 1int pin2 = 8; // D8 for relay 2// the setup routine runs once when you press reset:voidsetup() {
// initialize the digital pin as an output.pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
digitalWrite(pin1, LOW); // turn the relay 1 off by making the voltage LOW digitalWrite(pin2, LOW); // turn the relay 2 off by making the voltage LOW
}
// the loop routine runs over and over again forever:voidloop() {
digitalWrite(pin1, HIGH); // turn the relay 1 on (HIGH is the voltage level)delay(1000); // wait for a seconddigitalWrite(pin1, LOW); // turn the relay 1 off by making the voltage LOWdelay(1000); // wait for a seconddigitalWrite(pin2, HIGH); // turn the relay 2 on (HIGH is the voltage level)delay(1000); // wait for a seconddigitalWrite(pin2, LOW); // turn the relay 2 off by making the voltage LOWdelay(1000); // wait for a second
}
Fotorezistentele sunt componente pasive, care-si modifica valoarea (rezistenta) functie de intensitatea luminoasa (au rezistent amare la intuneric si mica la lumina puternica). In articolul Using a Photocell este prezentat un material foarte bun, din care m-am inspirat si eu. Dupa ce ma incercat primele 2 exemple de acolo, am modificat sketch-ul ca la un anumit prag de intuneric sa se cupleze un releu, iar la lumina foarte slaba (intuneric), inca unul. Circuitul de conectare al fotorezistentei, este foarte simplu, necesitand doar o rezistenta:
iar placa cu 2 relee are comanda la pinii D7, respectiv D8.
Logica de comanda este inversata, adica daca pe pinul de comanda este 0 logic (LOW), releul este actionat si daca este 1 logic (HIGH) este neconectat, cum am prezentat mai de mult in articolul Placa cu 4 relee pentru Arduino (.. si nu numai).
Montajul testat arata asa (mai contine si alte parti de circuit, nefolosite):
Pe ecran am obtinut:
Sketch-ul adaptat de mine este:
/* Photocell simple testing sketch. Connect one end of the photocell to 5V, the other end to Analog 0.Then connect one end of a 10K resistor from Analog 0 to groundFor more information see http://learn.adafruit.com/photocellsniq_ro adapted software program in 20.01.2014, see http://nicuflorica.blogspot.com/*/int photocellPin = 0; // the cell and 10K pulldown are connected to a0int photocellReading; // the analog reading from the analog resistor dividerint relayPin = 7; // first relay controlint relayPin2 = 8; // second relay controlvoidsetup(void) {
// We'll send debugging information via the Serial monitorSerial.begin(9600);
pinMode(relayPin, OUTPUT); // pin "relayPin" is output pinpinMode(relayPin2, OUTPUT); // pin "relayPin" is output pin
}
voidloop(void) {
digitalWrite(relayPin, HIGH); // first auxiliar light is offdigitalWrite(relayPin2, HIGH); // second auxiliar light is off
photocellReading = analogRead(photocellPin);
Serial.print(photocellReading); // the raw analog readingSerial.print(" lux");
// We'll have a few threshholds, qualitatively determinedif (photocellReading < 20) {
Serial.println(" - Dark (intuneric)");
digitalWrite(relayPin, LOW); // first auxiliar light is ondigitalWrite(relayPin2, LOW); // second auxiliar light is onSerial.println("All lights are on (Toate luminile sunt aprinse).");
Serial.println("***********************************************");
} elseif (photocellReading < 200) {
Serial.println(" - Dim (intunecat)");
digitalWrite(relayPin, LOW); // first auxiliar light is ondigitalWrite(relayPin2, HIGH); // second auxiliar light is offSerial.println("First light are on (Un circuit de lumina e aprins).");
Serial.println("***********************************************");
} elseif (photocellReading < 500) {
Serial.println(" - Light (lumina normala)");
digitalWrite(relayPin, HIGH); // first auxiliar light is offdigitalWrite(relayPin2, HIGH); // second auxiliar light is offSerial.println("All lights are off (Toate luminile sunt stinse).");
Serial.println("***********************************************");
} elseif (photocellReading < 800) {
Serial.println(" - Bright (lumina buna)");
digitalWrite(relayPin, HIGH); // first auxiliar light is offdigitalWrite(relayPin2, HIGH); // second auxiliar light is offSerial.println("All lights are off (Toate luminile sunt stinse).");
Serial.println("***********************************************");
} else {
Serial.println(" - Very bright (lumina puternica)");
digitalWrite(relayPin, HIGH); // first auxiliar light is offdigitalWrite(relayPin2, HIGH); // second auxiliar light is offSerial.println("All lights are off (Toate luminile sunt stinse).");
Serial.println("***********************************************");
}
delay(2500);
}