sto cercando di fare un semplice crepuscolare con arduino.
In pratica per il momento faccio accendere un led giusto per provare.
Il problema è quando avvio il programma perché quando qqscurisco il fotodiodo il led si siaccende ma dopo poco si spegne per poi riccendersi,in pratica ali inizio i valori sono alti e giustamente si accende il led poi per qualche3 strano motivo inizia a leggere i valori piu bassi fino allo 0 che si spegne il led per poi ripartire con i valori alti e ricomincia il ciclo, e non capisco perche lo faccia nonostante il fotodiodo sia oscurato.
i contatti sono messi cosi;
Codice dello sketch;
[*]
- Codice: Seleziona tutto
// VARIABILI & COSTANTI ↓
// Tempo intervallo lettura dati FotoDiodo
const unsigned long interval_a = 5000;
unsigned long previousMillis_a = 0;
/************************************* PIEDINATURA ***********************************************************************/
//N° Pin della BASE TRANSISTOR
const byte pin_B_Tr = 6;
// N° dell Pin Analogico dell' FotoDiodo + limite fotodiodo.
const byte pin_Fd = A0;
const int Limite_Fd = 45;
int valLumen = 0;
/************************************************************************************************************************/
void setup() {
Serial.begin ( 9600 );
pinMode ( pin_B_Tr, OUTPUT );
}
/**************************************************************************************************************************/
void Lettura_Fd () {
valLumen = analogRead ( pin_Fd ); // 0 - 1023
Serial.print ( " Sensore Crepuscolare : " );
Serial.print ( valLumen, DEC );
Serial.println (" ☼ ");
}
/**************************************** F I N E dei V O I D **************************************************************/
void loop () {
unsigned long currentMillis = millis();
/******* Richiamo per F O T O D I O D O eseguito solo ogni intervallo di 5000 milisecondi *******************/
// Lettura FotoDiodo
if ( millis() - previousMillis_a >= interval_a )
{
Lettura_Fd ();
previousMillis_a = currentMillis;
}
if ( Limite_Fd < valLumen ) // Sono stati invertiti per far funionare i led
{
digitalWrite ( pin_B_Tr, LOW );
}
else
{
digitalWrite ( pin_B_Tr, HIGH );
}
} // void loop
/****************************************** F I N E ****************************************************************/
[/*]