Pages: 1 2 [3]   Go Down
Author Topic: "IF" tra segnale analogico e digitale  (Read 4011 times)
0 Members and 1 Guest are viewing this topic.
Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma è quello che voleva
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 252
Posts: 21283
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non ho capito scusa smiley-razz
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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



* tlp.JPG (22.85 KB, 739x485 - viewed 26 times.)
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 252
Posts: 21283
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 252
Posts: 21283
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non ho capito scusa smiley-razz
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
Logged

Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ora ho capito grazie smiley
Logged

Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

eccolo:
Code:
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
Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Varese
Offline Offline
God Member
*****
Karma: 8
Posts: 585
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si anche ma il mio codice non era giusto cmq smiley
Logged

Pages: 1 2 [3]   Go Up
Jump to: