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

joi, 14 ianuarie 2021

Alta versiune de ceas animat cu date meteo (4)

   Deoarece versiunea anterioara avea un mic "defect", schimband intensitatea luminoasa a afisajului matriceal foarte repede daca erau variatii bruste ale luminii din mediu apropiat, am corectat asta in fisierul LEDMatrixV2ro4.ino din subdirectorul LEDMatrixV2ro4.

   Pentru a nu ma mai deplasa la montaj, am implementat incarcarea de la distanta, care am prezentat-o in articolul Programare de la distanta (OTA) placa de dezvoltare cu ESP8266 asa ca acum trebuie folosite fisierele din subdirectorul LEDMatrixV2ro5

   De asemenea, am adaugat si domeniul temperaturilor, de exemplu, daca indicatia era -1.90C, acum este  -1.90C ( -2.8 /  0.30C).
   Schema este aceeasi

duminică, 5 aprilie 2020

Alta versiune de ceas animat cu date meteo (3)

   Dupa ce am testat un Ceas animat complex cu date de pe net, caruia ii pot regla, printre multe altele,  intensitatea luminoasa de pe o pagina web locala, am realizat ca trebuie sa implementez reglajul automat al intenstatii luminoase si ceasului simplu de-l testasem, cel care preia ora de pe un server NTP si datele meteo de pe pe serverul openweathermap.
   Dearece i-am printat si lui o carcasa, ca a ceasului complez (printata in oglinda), am constatat ca noaptea e bine sa am intensitate redusa, dar pe timpul zilei nu am se vad bine informatiile.
   Am ales varianta cu divizor rezistiv format dintr-o fotorezistenta si o rezistenta de 10k, cum pusem la alt ceas, dupa modelul prezentat in articolul NodeMCU With LDR
   Placa WeMos D1 Mini era conectata pe cablajul universal, asa ca au fost usor de montat rezistenta de 10k si fotorezistenta.
    Schema de conectare este simpla,
dupa indicatiile din program:
iar partea adaugata pentru reglajul intensitatii in 5 trepte (0 - minim, 1, 2, 3 si 4 - maxim) este
iar in serial putem vedea:
   Programul cu reglaj automat al intensitatii luminoase este LEDMatrixV2ro4, care este compus din mai multe fisiere:
   Versiunile anterioare ale acestui ces sunt prezentate in articolele:
Alta versiune de ceas animat cu date meteo (2)
Alta versiune de ceas animat cu date meteo

14.01.2021
    Am facut o mica corectie pentru a se schimba mai lent intensitatea luminoasa a ecranului, facand modificari in fisierul LEDMatrixV2ro4.ino din LEDMatrixV2ro4.
    Am implementat apoi programarea prin reteaua wi-fi, cum prezentasem in articolul Programare de la distanta (OTA) placa de dezvoltare cu ESP8266 acum trebuie folosite fisierele din LEDMatrixV2ro5


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: