Odpověď na: Osvětlení akvaria Led pásky
Úvodní stránka › Fórum › Vaše projekty › Arduino › Osvětlení akvaria Led pásky › Odpověď na: Osvětlení akvaria Led pásky
6.6.2016 v 21:12
#7240
posjirka
Účastník
napsal jsem jednoduchý příklad.
Je to myslim dobře okomentovaný takže princip by měl být jasný:
// priklad principu regulace osvetleni akvaria
// v01
// by JP 2016
//
// knihovny
#include <Time.h>
// promenne
int jas = 0; // pomocna promenna pro vypocet jasu
const int LED = 10; // pin s LED diodou
// nasatveni casovace
int casovac[24] = {0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
// jednotlive polozky casovace predstavuji intenzitu jaku v celou hodinu
// 1. cislice je intenzita osvetleni v 0:00
// 2. cislice je intenzita osvetleni v 1:00
// ...
// 23. cislice je intenzita osvetelni v 23:00
// cislice jsou v rozsahu:
// 0 = 0%
// 255 = 100%
void setup() {
Serial.begin(9600); // nastaveni seriove komunikace
pinMode(LED, OUTPUT); // nastaveni pinu jako vystup
}
void loop() {
// vypis na seriovy port
Serial.print(hour()); // hodiny
Serial.print(":");
Serial.print(minute()); // minuty
Serial.print(":");
Serial.print(second()); // sekundy
Serial.print(" Jas:");
Serial.println(jas); // aktualni jas
// kdyz je 23 hodin je treba porovnavat hodnoty cislice 23 a 0
if(hour() == 23) {
// nastav jas podle aktualni minuty a hodiny
jas = map(minute(), 0, 59, casovac[23], casovac[0]);
// ochrana proti hazardnimu stavu prepoctu
jas = constrain(jas, casovac[23], casovac[0]);
} else {
// jinak porovnej hodnoty cilice pole = aktualni hodina a vedlejsi cislice
jas = map(minute(), 0, 59, casovac[hour()], casovac[hour()+1]);
// ochrana proti hazardnimu stavu prepoctu
jas = constrain(jas, casovac[hour()], casovac[hour()+1]);
}
jas = constrain(jas, 0, 255); // omezeni rozsahu regulace
analogWrite(LED, jas); // nastav aktualni intenzitu
delay(1000); // pauza 1s
}