//ricorda di rimuovere questo include
#include <TinyDebug.h>
uint8_t fotoresistore = PB1;
uint8_t encoderCLK = PB2;
uint8_t encoderDT = PB4;
uint8_t encoderSW = PB0;
uint8_t luce = PB3;
uint8_t livelloLuce = 0;
uint8_t sogliaLuce = 0;
uint8_t valore = 0;
uint8_t stato = 0;
uint8_t statoPrec = 0;
uint8_t acceso = 0;
//valori per trovare la quantità di luce, scegli se sostituirli direttamente o lasciarli
const float GAMMA = 0.7;
const float RL10 = 50;
void setup() {
// put your setup code here, to run once:
SREG |=_BV(7);
pinMode(encoderCLK, INPUT);
pinMode(encoderDT, INPUT);
pinMode(encoderSW, INPUT_PULLUP);
pinMode(luce, OUTPUT);
attachInterrupt(1,frecce, INPUT_PULLUP);
}
void loop() {
//questa parte serve per accendere e spegnere
if (digitalRead(encoderSW) == LOW)
stato=1;
else {stato=0;}
if(statoPrec!=stato&&statoPrec==1){
if(acceso==0)
acceso=1;
else{acceso=0;}
}
//questa parte è il calcolo dell'accensione delle luci
if(acceso==1){
livelloLuce=getLivelloLuce();
sogliaLuce;//soglia luce deve essere aggiornato costantemente con i tasti dell'encoder
if(livelloLuce>sogliaLuce)
livelloLuce = map(livelloLuce,0,1200,0,255);
digitalWrite(luce,livelloLuce); //questo deve essere analogWrite
}
if(acceso==0)
shutdown();
statoPrec=stato;
}
uint8_t getLivelloLuce(){
//1016 è luna piena 630 è lo schermo di un monitor, più scende più c'è luce
//sopra il 500 è considerato buio quindi direi che la scelta della luce parte da
//500 andando a salire
uint8_t analogValue = analogRead(6);
return 200;
}
uint8_t getSogliaLuce(){
}
void shutdown(){
PORTB &=~_BV(luce);
//quando viene chiamato ferma tutti i processi del sistema spegnendo le luci
}
//questo è ciò che serve a capire quale dei due pulsanti dell'encoder è stato premuto
int lastClk = HIGH;
void frecce(){
PORTB |=_BV(luce);
}
//SERVE PER LANCIARE L'INTERRUPT
//_ISR(INT0_vect){
//}
//9.2.1