potřeboval bych poradit s úplně banální věcí – stmívaní LED. Jde mi o to ze chci po setmění (fotorezistor na analogovém pinu) nastavit LED na nějakou úroveň jasu – změna z nuly na nastavenou úroveň by mela byt pomalá. Pak po sepnutí kontaktu (PIR senzor na digitálním pinu) se nastaví svit LEDky na druhou úroveň (opět pomalý narůst intenzity) a vydrží po nastaveny čas pak se sníží na původní úroveň. Pokud se zvýší intenzita osvětleni tak LEDka zhasne.
Reálně to bude osvětleni chodníku na zahradě – večer se světlo zapne a sviti jen tak aby bylo vidět ze je tam chodnik, pokud po chodníku někdo půjde tak se zvýší intenzita a po nějake době se vrati jen na úroveň aby bylo videt ze je tam chodnik.
Mohl bych to udělat velice jednoduše skokovým nastavenim ale chtěl bych to udelat aby to bylo „efektni“ a zmeny osvětleni byli postupné.
Postupné změny osvětlení dělám přes knihovnu FadeLed.h. Nejsem schopny to dat dohromady – funguje mi zapnuti světla přes fotorezistor ale pokud chci zvýšit intenzitu osvětleni tak už mi to nechce chodit. Problem je v tom že se sice nastaví vyšší intenzita při sepnuti PIR sensoru ale ta se hned dalším průběhem smyčky nastaví zpět na puvodni nižší hodnotu. Tim ze pomalá změna svítivosti LEDky potřebuje nějaký čas a během toho běží program dal do dalších smyček tak mi hned další smyčka přepíše proměnnou kterou řidim hodnotu svitu LEDky
Popravdě jsem se do toho už tak zamotal že nevim jak z toho…
Připojil jsem zakladni kostru programu bez těch pokusu o "časovač" maximalniho svitu protože to stejne nefungovalo
Kód: Vybrat vše
#include <FadeLed.h>
const int PIRpin = 4; // PIR sensor Connected to PIN 4
const int LDRpin = 0; // PIR sensor Connected to PIN 4
const int LEDpin = 13; // LED Connected to PIN 8
int PIRstate = 0; // Variable for reading switch status
int LIGHTstate = 0; // Variable for reading light intensity
int brightness = 0; // brightness
int brightnessOFF = 0; //
int brightnessFADE = 30; // brightness (%) when is dark (lightSTART)
int brightnessMAX = 100; // max brightness (%) - when PIR sensor is active
int lightSTART = 200; // when light switch on
FadeLed LED(13);
void setup()
{
Serial.begin(9600);
pinMode(LEDpin, OUTPUT);
pinMode(PIRpin, INPUT);
pinMode(LDRpin, INPUT);
LED.setTime(timeFADE);
}
void loop()
{
LIGHTstate = analogRead(LDRpin);
if (LIGHTstate < lightSTART)
{
brightness = brightnessFADE;
PIRstate = digitalRead(PIRpin);
if (PIRstate == LOW)
{
brightness = brightnessMAX;
}
}
if (LIGHTstate > lightSTART)
{
brightness = brightnessOFF;
}
LED.set(brightness);
FadeLed::update();
}