Se afișează postările cu eticheta LDR. Afișați toate postările
Se afișează postările cu eticheta LDR. Afișați toate postările

marți, 3 noiembrie 2015

Afisaj matriceal din 8x8 leduri controlat de MAX7219 (3)

   Am reluat testele cu statia meteo si ceas care prezinta datele pe un afisaj cu rezolutie de 32x8 leduri (compus din 4 afisaje 8x8 leduri rosii), contorlate de integrate MAX7219, de data asta am afisajele montate intr-o carcasa, iar ca placa de dezvoltare, am folosit un Arduino Mega, ca era disponibil. Pentru temperatura se foloseste un senzor DHT11, iar pentru temperatura un DS18B20.
- ora:
 - umiditate:
 - temperatura:
 - data (e text miscator, ca nu incape):.
   Schema este aceeasi:
   Am modificat sketch-ul, fata de cel din articolul anterior, astfel incat sa nu mai am partea de text (temperatura, umiditate, data, ora), devenind maxmatrix_ds18b20_dht_4module_ver7m2.ino.
   Am facut si 2 filmulete:
statie meteo si ceas cu data pe afisaj led de 32x8 leduri (5)
weather station on 32x8 led display drived by MAX7219

marți, 21 ianuarie 2014

O fotorezistenta si Arduino (II)

   Fata de articolul precedent, in care am afisat datele pe ecranul de monitorizare seriala, acum o sa afisez pe un LCD1602 (afisaj alfanumeric cu 16 coloane si 2 randuri).
   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. 
   Un alt filmulet,numit teste cu fotorezistenta, 2 relee si Arduino (III), a fost facut cu o camera video Praktica DVC 10.1 HDMI:

luni, 20 ianuarie 2014

O fotorezistenta si Arduino

   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 ground
 
For more information see http://learn.adafruit.com/photocells 

niq_ro adapted software program in 20.01.2014, see http://nicuflorica.blogspot.com/
*/

 
int photocellPin = 0;     // the cell and 10K pulldown are connected to a0
int photocellReading;     // the analog reading from the analog resistor divider
 
int relayPin = 7;         // 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
}
 
void loop(void) {
  digitalWrite(relayPin, HIGH);  // first auxiliar light is off
  digitalWrite(relayPin2, HIGH);  // second auxiliar light is off
  photocellReading = analogRead(photocellPin);  
 
  
  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("***********************************************");

  } 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("***********************************************");
  } 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("***********************************************");
  } 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("***********************************************");
  } 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("***********************************************");
  }
  delay(2500);
}
   Am facut si un filmulet, numit teste cu fotorezistenta, 2 relee si Arduino, in care se vede mai bine ce am explicat pana acum:
si cel in romgleza, numit photoresistor, 2 relay module and Arduino
21.01.2014
   Am desenat si schema de conexiuni, pentru a nu aparea confuzii: