Elektronické svítání: Porovnání verzí
(→Potřebujete k tomu) |
|||
| (Nejsou zobrazeny 3 mezilehlé verze od stejného uživatele.) | |||
| Řádek 1: | Řádek 1: | ||
[[Kategorie:Projekty]] [[kategorie:Tipy a triky]] | [[Kategorie:Projekty]] [[kategorie:Tipy a triky]] | ||
| − | Také vás nebaví vstávat do tmy? | + | Také vás nebaví vstávat do tmy? Elektronické svítání vám nahradí východ slunce v zimních měsících... |
| + | |||
| + | V nastavenou dobu se začne postupně rozsvěcovat RGB LED pásek, postupně od tmavě modré, přes světle modrou, bílou až po teple bílou barvu slunečného rána. Začátek svítání se nastaví na spínacích hodinách, délka svítání je nastavena v kódu (60 minut). Takže ideálně hodinu před zvoněním budíku nastavíte začátek svítán a v době buzení už bude "den". Na spínacích hodinách pak nastavíte kdy má LED pásek zhasnout. | ||
===Potřebujete k tomu=== | ===Potřebujete k tomu=== | ||
| − | * 1x arduino | + | * 1x arduino (stačí Arduino Nano) |
| − | * 3x bezkontaktní výkonový spínač | + | * 3x bezkontaktní výkonový spínač (případně 1x 4-kanálový) |
* napájecí zdroj 12V/5A | * napájecí zdroj 12V/5A | ||
* RGB LED pásek | * RGB LED pásek | ||
| Řádek 10: | Řádek 12: | ||
* vhodnou krabičku | * vhodnou krabičku | ||
* spínací hodiny | * spínací hodiny | ||
| + | |||
| + | <gallery> | ||
| + | Nano.png|Arduino NanoTitulek 1 | ||
| + | Tip120.png|Bezkontaktní spínač | ||
| + | Zdroj.png|Napájecí zdroj | ||
| + | Led-lista.png|LED pásek v liště | ||
| + | Krabicka-uni.jpg|Krabička | ||
| + | Spinaci-hodiny.png|Spínací hodiny | ||
| + | </gallery> | ||
===Základní zapojení=== | ===Základní zapojení=== | ||
Aktuální verze z 24. 9. 2020, 08:29
Také vás nebaví vstávat do tmy? Elektronické svítání vám nahradí východ slunce v zimních měsících...
V nastavenou dobu se začne postupně rozsvěcovat RGB LED pásek, postupně od tmavě modré, přes světle modrou, bílou až po teple bílou barvu slunečného rána. Začátek svítání se nastaví na spínacích hodinách, délka svítání je nastavena v kódu (60 minut). Takže ideálně hodinu před zvoněním budíku nastavíte začátek svítán a v době buzení už bude "den". Na spínacích hodinách pak nastavíte kdy má LED pásek zhasnout.
Potřebujete k tomu
- 1x arduino (stačí Arduino Nano)
- 3x bezkontaktní výkonový spínač (případně 1x 4-kanálový)
- napájecí zdroj 12V/5A
- RGB LED pásek
- hlinikový profil pro LED pásek
- vhodnou krabičku
- spínací hodiny
Základní zapojení
Software
// *****************
// SVITANI v 1.0
// *****************
int red_light_pin= 9;
int green_light_pin = 10;
int blue_light_pin = 11;
int program[6][4] = { { 0, 0,0,0 },
{ 30, 0,0,100 },
{ 60, 30,50,100 },
{ 100, 50,100,100 },
{ 150,150,150,150 },
{ 255,255,120,30 }
};
int max_cil = 255; // prvni hodnota z posledniho radku tabulky
float R = 0; // hodnoty jasu
float G = 0;
float B = 0;
float R_cil = 0; // cilove hodnoty v kroku
float G_cil = 0;
float B_cil = 0;
float R_prirustek = 0; // prirustek hodnoty v kroku
float G_prirustek = 0;
float B_prirustek = 0;
long celkovy_cas = 60; // doba svítání v minutách
long zpozdeni = (celkovy_cas * 60 * 1000) / max_cil;
int dalsi_cil = 0; // dalsi nacteni programu
int krok = 0; // aktuální krok programu
void setup() {
Serial.begin(9600);
pinMode(red_light_pin, OUTPUT);
pinMode(green_light_pin, OUTPUT);
pinMode(blue_light_pin, OUTPUT);
pinMode(13, OUTPUT);
krok = program[0][0];
R = program[0][1];
G = program[0][2];
B = program[0][3];
for (int i = 0; i < max_cil; i++) {
if (i >= dalsi_cil) {
krok++;
dalsi_cil = program[krok][0];
R_cil = program[krok][1];
G_cil = program[krok][2];
B_cil = program[krok][3];
R_prirustek = (R_cil - R) / (dalsi_cil - i);
G_prirustek = (G_cil - G) / (dalsi_cil - i);
B_prirustek = (B_cil - B) / (dalsi_cil - i);
Serial.print("Celkovy cas: ");
Serial.print(celkovy_cas);
Serial.println(" minut");
Serial.print("Zpozdeni: ");
Serial.print(zpozdeni);
Serial.println(" ms");
Serial.print(krok);
Serial.print(". KROK PROGRAMU: ");
Serial.print(R_cil);
Serial.print(" ");
Serial.print(G_cil);
Serial.print(" ");
Serial.print(B_cil);
Serial.print(", + ");
Serial.print(R_prirustek);
Serial.print(" ");
Serial.print(G_prirustek);
Serial.print(" ");
Serial.println(B_prirustek);
//delay(5000);
}
R = R + R_prirustek;
G = G + G_prirustek;
B = B + B_prirustek;
//Serial.print(i);
//Serial.print(": RGB => ");
//Serial.print(R);
//Serial.print(" ");
//Serial.print(G);
//Serial.print(" ");
//Serial.println(B);
RGB_color(R, G, B);
delay(zpozdeni);
}
Serial.println("KONEC");
digitalWrite(13,true);
}
void loop() {
}
void RGB_color(int red_light_value, int green_light_value, int blue_light_value)
{
if (red_light_value > 255) red_light_value = 255;
if (green_light_value > 255) green_light_value = 255;
if (blue_light_value > 255) blue_light_value = 255;
analogWrite(red_light_pin, red_light_value);
analogWrite(green_light_pin, green_light_value);
analogWrite(blue_light_pin, blue_light_value);
}
