Close

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

#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
}