• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Rozjaśnianie i ściemnianie LED czujnikiem PIR
#8
(29-09-2022, 22:15)Witam. napisał(a): Właśnie jestem na etapie zrobienia sobie swojego pierwszego funkcjonalnego projektu do mieszkania tj: podświetlenie pod szafkami kuchennymi z czujką ruchu oraz czujką światła. Napisałem sobie działający program na Arduino Uno lecz docelowo chciałem wykorzystać do tego celu ATtiny85. I tu się pojawił problem bo coś ta biblioteka Timers.h chyba nie działa z tym procesorem. Ale na tym jeszcze popracuję - bo chcę. Chętnie wkleję Ci mój programik który u mnie działa. Nie jest może perfekcyjny ale to są moje "początki". Możesz sobie coś dopasować zmieniać czasy procedury.. Kod jest prosty i raczej czytelny. Drobne info zapisałem w komentarzach.
Pozdrawiam KaDe.
Kod:
#include <Timers.h>
Timers <5> akcja;
int zal,wyl,czas,czujka,foto,pwm = 0;
int start =5;   // wartość 5 jest ustawiona dla testów, jest to czas ile sekund po wykryciu ruchu (przy wzbudzonej czujce foto oczywiście)
                // ma być właczone podświetlenie na max. Po tym czasie jeśli dalej jest ciemno w pomieszczeniu ma być właczone podświetlenie
                // z wypełnieniem 10 momentu aż  zrobi się dzień i czujka foto odblokuje czas "np. wyl=100" sek i zgasi całkiem "pwm=0"



void zad0(){
czujka = analogRead(14);              // odczyt czujki ruchu
if (czujka>110){czas=start; wyl=100;} // jeśli czujka aktywna to czas start
   
  }
void zad1(){
  if (czas>0){ czas--;}               //odliczanie czasu
  wyl--;
  }
void zad2(){
  foto = analogRead(15);
if (foto > 400) {zal = 10; wyl= 100;}// odczyt czujki foto; zmienna "zal" służy dalej w programie jako minimalne podświetlenie w ciemności
else zal=0;
 
 
}
void zad3(){                     // realizowanie powolnego gaszenia
  if (pwm > 10){pwm--;}
  else akcja.updateInterval(3,0); 
}
void zad4(){
  if (pwm < 255){pwm++;}
  else akcja.updateInterval(4,0); // realizowanie zwolnionego załaczenia
}
void setup(){
  pinMode(11, OUTPUT);          //port PWM
  pinMode(14, INPUT);           //port czujki ruchu
  pinMode(15, INPUT);           //port czujki światła
  Serial.begin(9600);
  akcja.attach(0, 500, zad0 ); // sprawdzenie  ird
  akcja.attach(1, 1000, zad1 );// odliczanie
  akcja.attach(2, 333, zad2 ); // sprawdzenie foto
  akcja.attach(3, 0, zad3);    // zgaś
  akcja.attach(4, 0, zad4);    // zapal

 
}
void loop(){
   
 
  akcja.process();                                               // inicjalizacja lub aktualizacja wszystkich procedur(wątków, zdarzeń itp.)
  if ((zal==10) && (czas==0)){akcja.updateInterval(3,20);}       // warunek wygaszania, tu parametr 20 określa czas 20 msek iteracji
  if ((zal==10) && (czas==start)){akcja.updateInterval(4,15);}   // warunek załączenia, tu parametr 15 określa czas 15 msek iteracji
  if ((zal==0) && (wyl==0)){pwm=0;}                              // wyłączenie podświetlenia końcowe (za dnia - czujka foto nieaktywna)
  analogWrite(11,pwm);                                           // praca w cyklu
  }
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Rozjaśnianie i ściemnianie LED czujnikiem PIR - przez KaDe - 30-10-2022, 19:47

Skocz do:


Przeglądający: 1 gości