Ciao tutti..ho un problema e non so se è possibile o meno..io vorrei fare in modo che se il valore della fotoresistenza cresce da 500 a 1023 ad esempio mi si accende una luce mentre se va da 1023 a 500 ad esempio si . Si può?se si come?
SteColle:
Ciao tutti..ho un problema e non so se è possibile o meno..io vorrei fare in modo che se il valore della fotoresistenza cresce da 500 a 1023 ad esempio mi si accende una luce mentre se va da 1023 a 500 ad esempio si . Si può?se si come?
Grazie a tutti
Non vi si chede molto, ma almeno le domande formulatele bene è a tutto vantaggio vostro
Prima che arrivino i grandi Capi è meglio presentarsi nell'apposita sezione del Forum, in seconda battuta leggere e comprendere il relativo regolamento.
Tornando ontopic, da 0 a 500 cosa deve fare la luce? Mantenere lo stato precedente?
Bisogna partire sapendo che la fotoresistenza è un componente lineare, quindi può tornare valori che si discostino l'uno dall'altro anche solo di un paio di punti.
Se il valore passa da 500 a 512, cosa deve fare? E se passa da 1023 a 1018?
Vuoi che arduino faccia da interruttore automatico, tipo il crepuscolare?
La fotoresistenza è influenzata dalla luce che abbiamo acceso, oppure è protetta?
Forse è meglio che specifichi in modo più approffondito cosa vuoi ottenere, in modo che possiamo darti un aiuto più puntuale possibile.
Credo che questo link possa esserti di aiuto, soprattutto il primo link al suo interno ti spiega per filo e per segno ciò che ti serve, poi basta inserire solo due if per accendere/spegnere la tua luce.
SteColle:
Ciao tutti..ho un problema e non so se è possibile o meno..io vorrei fare in modo che se il valore della fotoresistenza cresce da 500 a 1023 ad esempio mi si accende una luce mentre se va da 1023 a 500 ad esempio si . Si può?se si come?
Grazie a tutti
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento
Come già detto sopra, dalla domanda non si capisce nulla. "da 500 a 1023 mi si accende luce... da 1023 a 500 si.."
"Si" che? In un caso cresce e nell'altro decresce? e nei due casi, uno accende luce e nell'altro che fa?
Si scusate mi si è cancellato per errore..Spiego meglio..Quando i valori del sensore vanno da 1023 a 500 decrescendo voglio che la luce del mio LED diminuisca di intensità..mentre quando vanno da 500 a 1023,crescendo quindi, la luce del mio LED aumenti di intensità.
I valori di incremento o decremento non devono dipendere dal valore del sensore ma sono già stati stabiliti (quindi non devo utilizzare il remap sul valore del sensore).
Spero di essere stato chiaro adesso..
grazie a tutti
In questo Topic trovi un semplice schema per collegare una foto resistenza ad un pin analogico di arduino.
ora i valori restituiti dal pin dipendono dalle caratteristiche tecniche della fotoresistenza e dalla quantità di luce che la colpisce.
con un semplice programma come questo, puoi leggere sulla seriale i valori restituiti
int Pin = A0;
int Valore = 0;
void setup() {
Serial.begin(9600); // configurazione seriale
pinMode( Pin, INPUT); // configurazione pin
}
void loop() {
Valore = analogRead(Pin); // lettura valore
Serial.print("Valore = " );
Serial.println(Valore); // Invio valore
delay(1000);
}
cosi puoi rilevare i valori e fare un programmino tipo :
int Pin = A0;
int Valore = 0;
void setup() {
Serial.begin(9600);
pinMode( Pin, INPUT);
}
void loop() {
Valore = analogRead(Pin);
if(Valore <= ???){
// inserisce quello che vuoi
} else if(Valore > ??? || Valore <=&&&&){
// metti quello che voui
} else {
// Altrimenti attivi quello che vuoi
}
delay(1000); // tempi di attesa tra una lettura e la successiva a piacere
}
Mi sembra di essere stato chiaro.
P.s. se su Google scrivi arduino fotoresistenza ottieni molte più informazioni di quelle che hai ottenuto qui.
SteColle:
Si scusate mi si è cancellato per errore..Spiego meglio..Quando i valori del sensore vanno da 1023 a 500 decrescendo voglio che la luce del mio LED diminuisca di intensità..mentre quando vanno da 500 a 1023,crescendo quindi, la luce del mio LED aumenti di intensità.
I valori di incremento o decremento non devono dipendere dal valore del sensore ma sono già stati stabiliti (quindi non devo utilizzare il remap sul valore del sensore).
Spero di essere stato chiaro adesso..
grazie a tutti
forse è meglio se spieghi quel che devi realizzare. Da quello che dici nella seconda frase, a me pare che ci sia proporzionalità tra valore sensore e luce del led.
Non capisco perchè dici di non poter usare un remap del valore del sensore.
Per sapere se cresce e decresce devi memorizzare il valore del sensore e confrontarlo con il vecchio valore (logicamente la prima volta non puoi avere un "vecchio" valore, a meno di leggerlo nel setup)
Se i valori di 500 e 1023 sono reali, e non due numeri buttati a caso io farei così.
#define LED 9;
#define Pin A0;
void setup() {
pinMode(Pin, INPUT);
pinMode(LED, OUTPUT);
}
void loop() {
Valore = analogRead(Pin); // Leggo il valore della fotoresistenza
Brightness = Valore-513; // Imposto il valore massimo di Brightness a 510 (1023-513)
Brightness = Brightness/2; // Imposto il valore massimo di Brightness a 255 (510/2)
if (Brightness < 0) Brightness = 0; // Imposto il valore minimo di Brightness a 0
analogWrite(LED, Brightness); // Passo il tutto all'output
delay(100);
}
Come ti diceva nid, in altro modo devi creare una variabile OldValore, con la quale confronti Valore e poi agisci di conseguenza.
valore = analogRead(Pin);
se valore > xxx
se valore > oldvalore
aumenta luminosità
oldvalore = valore
se valore < oldvalore
diminuisci luminosità
oldvalore = valore
altrimenti spegni led