Go Down

Topic: [Risolto] progetto scolastico sensori luce (Read 871 times) previous topic - next topic

revolver995

io pensavo a qualcosa di piu basilare , ad esempio arduino riconosce un segnale come high se è superiore a 2,5V e low se inferiore , quindi con una luce forte il sensore aumenta la resistenza creando una caduta di potenziale maggiore , e facendo cadere su arduino un voltaggio minore di 2,5 volt .... ora non posso usare solo il sensore perche sarebbe scomodo e mal regolabile ... e servirebbe una luce troppo forte per far aumentare la resistenza abbastanza da avere il voltaggio richiesto , quindi metto un trimmer regolabile che mi facilita il tutto .
Adesso spero mi abbiate seguito , la domanda è se io lascio il codice
Code: [Select]
int lux_a = 9 ;
if ((digitalRead (lux_a) == LOW ))
in caso incontrasse una luce e quindi il voltaggio si abbassa sotto i 2,5V arduino riconosce  quel segnale come low o devo fare a modo vostro ?

se riusciste a spiegarmi come usare le porte analogiche vi ringrazierei , cioè se ho ben capito mi basta mettere un trimmer e una fotoresistenza in serie e collegarle ad arduino ed alla terra , e poi tramite il comando Valore = analogRead(A0) lui mi dice il voltaggio , e successivamente gli dico
Code: [Select]
if (( valore < 2,5))
{ esegui azione
}


corregetemi se sbaglio

EnigmaAren92

#6
Feb 06, 2013, 04:39 pm Last Edit: Feb 06, 2013, 04:49 pm by EnigmaAren92 Reason: 1
Si hai capito (Sempre se testandolo è tutto ok) Comunque c'e solo un piccolo accorgimento da fare, cioè quei 2,5v che tu continui ad insistere.. Ti ho detto, collega tutto il tuo marchingegno pieno di  potenziometro resistenza e sensore, collegali all'analogico.. tramite un
Serial.println(Valore) Vedi quanto è il valore critico di luce (in modo tale che sai a quanto voltaggio corrisponde Se c'e luce/Se non c'e luce)
E poi basta scrivere quel valore al posto dei tuoi 2,5v..
Capito? Se vuoi una mano  vieni sul mio pc da qua ;) : https://join.me/364-507-266

revolver995

#7
Feb 06, 2013, 09:33 pm Last Edit: Feb 06, 2013, 10:35 pm by revolver995 Reason: 1
OK ho capito tutto , però un ultimissima cosa ,  XD prima riassumo quello che ho capito mi metto il mio bel sensore e il mio bel potenziometro collegato alla porta analogica , lo metto alla distanza che mi serve dalla luce e poi gli dico


Code: [Select]
int lux_a = A0 ;
void loop ()
{
Valore = analogRead(A0);
Seria.lPrintIn (valore)
}


ora , se io non ho lo schermo ne l interfaccia grafica , ma solo arduino UNO e il mio buon pc , come faccio a sapere il valore ? , e cosi facendo posso evitare il potenziometro , perche modificherei tutto dal pc ... se non dovesse andar bene

e poi questa stringa vale solo per la prima volta , una volta che ho il valore numerico come scrivo ?

io avevo pensato a
Code: [Select]

int lux_a = A0;                                  // 1234 è il valore che ho trovato prima
if (analogRead ,lux_a > 1234)
{
      esegui azione
}

mi chiarisco questi punti e poi ti lascio vivere in pace XD



leo72

Devi usare una variabile tampone e salvarci la lettura precedente.
Questa var la inizializzi al'avvio dello sketch con la lettura del pin, poi nel loop fai il confronto con la nuova lettura
Code: [Select]
int vecchiaLettura;
void setup() {
  vecchiaLettura = analogRead(A0);
....
}

void loop() {
  int tempLettura = analogRead(A0);
  if (tempLettura > vecchiaLettura) {
    vecchiaLettura = tempLettura;
    ....
  }
}

revolver995

nel codice.di sopra mi diceva che dovevo assegnare un pin a "valore" e gli ho dato il piedino 0 , ma sempmplicemente appuntarmi il numero che esce dal serial.printin in modo che posso modificarlo quando voglio lo posso fare ? mi rimame.piu comodo

Go Up