Deoarece, in ultima perioada, am conectat afisajul doar la pinii D2..D7, o sa mut comanda releului de la D7 la D9, cel de-al doilea ramanand pe D8.
Schema de conectare devine:
Un sketch, netestat inca, ar fi de genul:
/* 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 ground
For more information see http://learn.adafruit.com/photocells
niq_ro adapted software program in 20.01.2014, see http://nicuflorica.blogspot.com/
*/
#include <LiquidCrystal.h>
// use LiquidCrystal.h library for alphanumerical display 1602
LiquidCrystal lcd(2,3,4,5,6,7);
/* -------------------
| LCD | Arduino |
-------------------
LCD RS pin to digital pin 7 | RS | D7 |
LCD Enable pin to digital pin 6 | E | D6 |
LCD D4 pin to digital pin 5 | D4 | D5 |
LCD D5 pin to digital pin 4 | D5 | D4 |
LCD D6 pin to digital pin 3 | D6 | D3 |
LCD D7 pin to digital pin 2 | D7 | D2 |
LCD R/W pin to ground | R/W | GND |
-------------------
*/
int photocellPin = 0; // the cell and 10K pulldown are connected to a0
int photocellReading; // the analog reading from the analog resistor divider
int relayPin = 9; // first relay control
int relayPin2 = 8; // second relay control
void setup(void) {
// We'll send debugging information via the Serial monitor
Serial.begin(9600);
pinMode(relayPin, OUTPUT); // pin "relayPin" is output pin
pinMode(relayPin2, OUTPUT); // pin "relayPin" is output pin
lcd.begin(16, 2); // set up the LCD's number of columns and rows:
lcd.clear(); // clear the screen
lcd.setCursor(0, 0); // put cursor at colon 0 and row 0
lcd.print("Fotorezistenta"); // print a text
lcd.setCursor(0, 1); // put cursor at colon 0 and row 1
lcd.print("comanda 2 relee"); // print a text
delay (2000);
lcd.clear(); // clear the screen
lcd.clear(); // clear the screen
lcd.setCursor(1, 0); // put cursor at colon 1 and row 0
lcd.print("Photoresistor"); // print a text
lcd.setCursor(0, 1); // put cursor at colon 0 and row 1
lcd.print("control 2 relay"); // print a text
delay (2000);
}
void loop(void) {
digitalWrite(relayPin, HIGH); // first auxiliar light is off
digitalWrite(relayPin2, HIGH); // second auxiliar light is off
photocellReading = analogRead(photocellPin);
lcd.clear(); // clear the screen
if (photocellReading >999)
{
lcd.setCursor(0, 0); // put cursor at colon 0 and row 0
}
else if (photocellReading >99)
{
lcd.setCursor(1, 0); // put cursor at colon 1 and row 0
}
else if (photocellReading >9)
{
lcd.setCursor(2, 0); // put cursor at colon 2 and row 0
}
else
{
lcd.setCursor(3, 0); // put cursor at colon 3 and row 0
}
lcd.print(photocellReading); // print a text
lcd.print(" lx");
Serial.print(photocellReading); // the raw analog reading
Serial.print(" lux");
// We'll have a few threshholds, qualitatively determined
if (photocellReading < 20) {
Serial.println(" - Dark (intuneric)");
digitalWrite(relayPin, LOW); // first auxiliar light is on
digitalWrite(relayPin2, LOW); // second auxiliar light is on
Serial.println("All lights are on (Toate luminile sunt aprinse).");
Serial.println("***********************************************");
lcd.print(" - Dark");
lcd.setCursor(2, 1); // put cursor at colon 0 and row 1
lcd.print("Lights are on");
} else if (photocellReading < 200) {
Serial.println(" - Dim (intunecat)");
digitalWrite(relayPin, LOW); // first auxiliar light is on
digitalWrite(relayPin2, HIGH); // second auxiliar light is off
Serial.println("First light are on (Un circuit de lumina e aprins).");
Serial.println("***********************************************");
lcd.print(" - Dim");
lcd.setCursor(0, 1); // put cursor at colon 0 and row 1
lcd.print("1st light are on");
} else if (photocellReading < 500) {
Serial.println(" - Light (lumina normala)");
digitalWrite(relayPin, HIGH); // first auxiliar light is off
digitalWrite(relayPin2, HIGH); // second auxiliar light is off
Serial.println("All lights are off (Toate luminile sunt stinse).");
Serial.println("***********************************************");
lcd.print(" - Light");
lcd.setCursor(0, 1); // put cursor at colon 0 and row 1
lcd.print("All lights off!");
} else if (photocellReading < 800) {
Serial.println(" - Bright (lumina buna)");
digitalWrite(relayPin, HIGH); // first auxiliar light is off
digitalWrite(relayPin2, HIGH); // second auxiliar light is off
Serial.println("All lights are off (Toate luminile sunt stinse).");
Serial.println("***********************************************");
lcd.print(" - Bright");
lcd.setCursor(0, 1); // put cursor at colon 0 and row 1
lcd.print("All lights off!");
} else {
Serial.println(" - Very bright (lumina puternica)");
digitalWrite(relayPin, HIGH); // first auxiliar light is off
digitalWrite(relayPin2, HIGH); // second auxiliar light is off
Serial.println("All lights are off (Toate luminile sunt stinse).");
Serial.println("***********************************************");
lcd.print("-Dazzling");
lcd.setCursor(0, 1); // put cursor at colon 0 and row 1
lcd.print("All lights off!");
}
delay(1500);
}
Am reusit sa fac si o poza:Dupa mai multe incercari,am reusit sa fac poze cu cele 4 cazuri:
- lumina orbitoare (soare puternic):
- lumina normala:
- lumina slabuta, s-a aprins un set de lumini, pentru compensare:
- intuneric, s-au aprins ambele circuite de lumini, pentru a compensa lipsa lumnii naturale:
Filmuletul teste cu fotorezistenta, 2 relee si Arduino (II) realizat cu un aparat photo FujiFilm S5700 este de o calitate slabuta, datorita luminii foarte slabe din camera, dar care ajuta la intelegerea modului de comportare al montajului.
Niciun comentariu:
Trimiteți un comentariu