Czujnik zmierzchowy BETA2 + termometr

Czujnik zmierzchowy BETA2 + termometr

INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(

Witajcie

 

Przedstawiam wam drugą wersję mojego czujnika zmierzchowego. We wcześniejszym artykule udostępniłem nieskończoną wersję czujnika. Zawierał on sporo błędów oraz troszkę błędne dane. W tym artykule zamieszczam wam 2 betę projektu z poprawionymi błędami oraz czujnikiem temperatury na switch. Więc zabieramy się do roboty :)

Potrzebne:

*5x Rezystor 1K-1,5K (ja takie zastosowałem)

*Czujnik temperatury LM35 lub inne

*Fotorezystor

*Arduino

*Płytka stykowa i kabelki

*Potencjometr 10K(ja taki zastosowałem)

*Button/Switch

A więc najpierw przedstawię projekt podłączenia poszczególnych elementów. Może trochę to chaotyczne, ale program fritzing używam dopiero 2 raz.

Untitled Sketch_bb

Co zostało zmienione?

Otóż wiele zmian kryje się w całym projekcie. Cały kod programu został edytowany i napisany od nowa, dodany został switch oraz termometr cyfrowy LM35. Do programu została dodana pętla histerezy, która eliminuje włączanie i wyłączanie stanu niskiego i wysokiego, więc już nie zaobserwujemy zmieniającego się co chwilę stanu. Całość wygląda i działa banalnie prosto. Co najważniejsze, problem z minusem odprowadzonym do oddzielnego minusa w arduino został naprawiony, co miało miejsce w poprzednim projekcie. Tak więc zmian jest sporo, a prace nad projektem nie przerywam. Ciągle będę coś dodawał nowego. W następnych wersjach postaram się dodać zegar czasu rzeczywistego oraz informator o nowych listach w skrzynce pocztowej.

Trochę się rozpisałem, więc czas na program i jego objaśnienie:

/////////////////////////////////////////////////
// Czujnik Zmierzchowy by LorEnzoo wersja BETA2//
/////////////////////////////////////////////////


// Pin 5 na LCD podpinamy pod -
//pin 4 pod 12 a pin 6 pod 11
// pin kontrastu potecjometr pod pin 3
//switch-rezystor do - a + bezposrednio do płytki, zaś wyście cyfrowe u góry
//LM35- oznaczenia z okrągłośći z przodu + SIGN -
//

 int guzik = 8; // switch
int pin_pr = A0; // pin fotorezystora
 int pin_term = A1;// pin analogowy LM35
int pin_dioda = 13;// czerwona
 int pin_dioda2 = 10;//zielona
#include <LiquidCrystal.h>// biblioteka LCD
 LiquidCrystal lcd(12,11,5,4,3,2);// porty lcd

 void setup() {
lcd.begin(16,2);
  pinMode(guzik, INPUT);
pinMode(pin_pr, INPUT);
  pinMode(pin_term, INPUT);
pinMode(pin_dioda, OUTPUT);
  pinMode(pin_dioda2, OUTPUT);
Serial.begin(19200);
 }
boolean stan=0;//zmienna logiczna ustawiająca stan wyjścia na 0
 
void loop()
 {

  int czujnik = analogRead(pin_pr);
int temp = (5.0  analogRead(pin_term)  100.0) / 1024; //Mnożnik do LM35
  delay(1000);
//Zbiór seriali które można zobaczyć w Serial Monitor
//  Serial.println("Temp");
//  Serial.println(temp)'
//  Serial.println("Oswietlenie");
//  Serial.println(czujnik);
  
if(digitalRead(guzik) == HIGH)// jezeli(wejsciecyfrowe(guzik) == Stan wysoki)
  {
delay(20);
    stan=!stan;//zmienna stan zmienia wartość na przecwną  
while(digitalRead(guzik) == HIGH);//pętla bedzie czekac dopoki odczyt 0 pinu bedzie wysoki
    delay(20);
}
////////////////////////////////////////////////////////////////////////////////////////////////  
if(czujnik>=5)
  { 
digitalWrite(pin_dioda, LOW);
    digitalWrite(pin_dioda2, HIGH); 
}
  if((czujnik>=3) && (czujnik<=4)) //Bariera,czyli od pewnego momentu Jest w stanie, potem tak jakby pływa bez zmiay stanu i jeśli zaskoczy to się stan zmienia, tzw pętla histerezy. 
{
    digitalWrite(pin_dioda, LOW);
digitalWrite(pin_dioda2, HIGH);
  }
if(czujnik<=1)
  {
digitalWrite(pin_dioda, HIGH);
    digitalWrite(pin_dioda2, LOW);
}
//////////////////////////////////////////////////////////////////////////////////////////////  
if(stan){
  if(czujnik>=5)
{
    lcd.setCursor(0,0);
lcd.print("Jasnosc: WYSOKA ");
    lcd.setCursor(0,1);
lcd.print("Oswietlenie: OFF");
  }
if((czujnik>=3) && (czujnik<=4)) //Bariera,czyli od pewnego momentu Jest w stanie, potem tak jakby pływa bez zmiay stanu i jeśli zaskoczy to się stan zmienia tzw pętla histerezy.
  {               
lcd.setCursor(0,0);
    lcd.print("Jasnosc: SREDNIA");
lcd.setCursor(0,1);
    lcd.print("Oswietlenie: OFF");   
}
  if(czujnik<=1)          
{
    lcd.setCursor(0,0);
lcd.print("Jasnosc: NISKA  ");
    lcd.setCursor(0,1);
lcd.print("Oswietlenie: ON ");
  }
}
  if(!stan)
{
    lcd.setCursor(0,0);
lcd.print("    Termomert   ");
    lcd.setCursor(0,1);
lcd.print("Temperatura:");
    lcd.setCursor(13,1);
lcd.print(temp);
    lcd.setCursor(15,1);
lcd.print("C");
  }
}

Program wygląda na całkiem ładny. Choć pewnie nie jest idealny, każdy by coś dodał lub przerobił inaczej, program działa bez zarzutu.

Myślę że artykuł wam się spodoba, zachęcam do komentowania i oceniania :)

 

PS: Bardzo bym prosił, aby ktoś mi powiedział, jak przejść 3 tryby w LCD za pomocą jednego switcha. Tzn 1 to czujnik zmierzchu, 2 to termometr oraz 3 czyli powiedzmy czas.

INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(

Ocena: 0/5 (głosów: 0)

Podobne posty

Regulator PID na arduino.

Regulator PID na arduino.

Witam wszystkich majsterkowiczów! Chciałbym przedstawić wam moje nagranie dotyczące realizacji regulatora PID przy użyciu arduino.Regulatory…

23 komentarzy do “Czujnik zmierzchowy BETA2 + termometr

Odpowiedz

anuluj

Czujnik zmierzchowy BETA2 + termometr

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?