Davide Rosa Hack
Ho creato questo circuito per simulare il ciclo giorno e notte nel presepe di casa..
L'idea è molto semplice, con un'Arduino mini ho creato un programma che controlla un Mosfet in PWM e grazie alla gestione di 3 pulsanti è possibile variare il periodo del ciclo giorno notte. Il Mosfet controlla la corrente che alimenta una barra di led.
Sketch Arduino :
#include <TimerOne.h>
#define switchPin A0
#define led 7
#define incre 1000 // 500 centesimi = 5 sec | 6000 centesimi = 60 sec = 1 min
#define timertick 20000 // 250000 = 25 centesimi = 0.25 sec
#define inccen 2 // = timertick / 10000
#define fine 3 // minimo 2
volatile unsigned long mise = 0; // centesimi di secondo
byte duti = 0; // da 0 a 255
boolean onof = false;
boolean btst = false;
boolean hilo = false;
#define sole 11
#define stagione 255 //da 1 a 255
long luce = 0;
void setup() {
pinMode(switchPin, INPUT);
pinMode(led, OUTPUT);
pinMode(sole, OUTPUT);
Timer1.initialize(timertick);
Timer1.attachInterrupt(Tick);
}
void Tick(){
mise = mise + inccen;
if (onof == true) {
if (duti == 0) {
digitalWrite(led, HIGH);
digitalWrite(sole, HIGH);
} else {
if ((mise % (incre * (unsigned long)duti)) == 0 ) {
hilo = !hilo;
mise = 0;
}
if (hilo == true) {
digitalWrite(led, HIGH);
long x = ((incre * (unsigned long)duti)/fine);
if (mise < x) {luce = (mise * stagione) / x;}
if ((mise > x) && (mise < (x*(fine-1)))) {luce = stagione;}
if (mise > (x*(fine-1))) {luce = (((x*fine)-mise) * stagione) / x;}
if (luce < 0) {luce = 0;}
if (luce > stagione) {luce = stagione;}
Serial.println(luce);
analogWrite(sole, (int)luce);
} else {
digitalWrite(led, LOW);
digitalWrite(sole, LOW);
}
}
} else {
digitalWrite(led, LOW);
digitalWrite(sole, LOW);
}
}
void loop() {
switch(int(analogRead(switchPin)/10)){
case (101):
if (btst == false) {
btst = true;
mise = 0;
hilo = true;
duti++;
}
break;
case (100):
if (btst == false) {
btst = true;
onof = !onof;
mise = 0;
hilo = true;
duti = 0;
}
break;
case (99):
if (btst == false) {
btst = true;
mise = 0;
hilo = true;
duti--;
}
break;
case (0):
btst = false;
break;
}
}
Schema Elettrico :
Galleria :