Go Down

Topic: "IF" tra segnale analogico e digitale (Read 4991 times) previous topic - next topic

Iz2rpn


uwefed


ma è quello che voleva


Lui voleva un ritardo di spegnimento ma non un ritardo di lettura del segnale di pilotaggio. Il tuo codice non controlla se il pin di uscita é H o L e percui aspetta ogni volta che trova il segnale a L

Ciao Uwe


astru_bale

l'out di Arduino sul fotoaccoppiatore, è fatto così:


uwefed

Il circuito del optocoppler é giusto.

Ritornando al problema col digitalRead del uscita.
Che tensione misuri sul pin di arduino dove hai attacato l'optocoppler.
Quel codice del relpy  #15 funziona se scolleghi l' optocoppler dal piedino di Arduino?

Ciao Uwe


uwefed


Non ho capito scusa :P

Il tuo codice, ogni volta che legge un valore maggiore di 50, aspetta 3 secondi.
Nel "if (rx_val < 50)" deve esserci un maggiore e non un minore.
Questo ritardo di 3 secondi ha come consequenza che un valore maggiore di 50 viene rilevato non subito ma in media dopo 1,5 secondi (fino a un massimo di 3 secondi)
Ciao Uwe


gingardu


eccolo:
Code: [Select]

int cmd_tx = 5;
int analogPin = 3;
int rx_val = 0;


void setup()
{
  pinMode(cmd_tx, OUTPUT);

}

void loop()
{
    rx_val = analogRead(analogPin);
   
   
    if (rx_val > 50) { digitalWrite(cmd_tx, HIGH); } //se il valore analogico è > di 50, metto a 1 l'output cmd_tx
    if ((rx_val < 50) && digitalRead(cmd_tx) == HIGH) {  //se il valore analogico è < di 50, e cmd_tx è a 1
        delay(3000);                                                     //attendo 3 secondi
        digitalWrite(cmd_tx, LOW);                                //scrivo a zero cmd_tx
}

}





secondo me quando si fa "l'accoppiata" di   maggiore di con minore di bisognerebbe mettere   =>   al posto di >    oppure <=   al posto <
che sarebbero uguale o maggiore di     oppure uguale o minoredi

questo evita incertezze nel caso il valore sia proprio 50
Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Iz2rpn

si anche ma il mio codice non era giusto cmq :)

Go Up