Pages: 1 2 3 [4] 5   Go Down
Author Topic: [Risolto] Blink con millis() lettura PPM con pulseIn() Ritardi e Problemi  (Read 4430 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Faraday Member
**
Karma: 46
Posts: 5834
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mettendo solo questo spezzone funziona tutto
mentre mettendo tutto il resto posso dire amen
questo vuol dire semplicemente che e' sbagliato il tuo codice completo, visto che questo spezzone, che e' quello al quale sei arrivato con i consigli datoti, ti funziona bene.
Non vedo come ti si possa correggere l'altra parte di codice se tu posti solo quella che funziona.
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

se guardi qualche post prima c'è il codice completo e ben specificato....
Logged

0
Offline Offline
Faraday Member
**
Karma: 46
Posts: 5834
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

scusa sono cotto, non sto' seguendo bene la cosa,
spero qualcuno un attimo piu' fresco dia uno sguardo al codice, visto che la parte difficile con millis ti funziona, il resto deve essere una sciocchezza, magari qualche misera parentesi graffa fuori posto  smiley
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

lo spero, io me lo sono riletto non sai quante volte e nella mia ignoranza mi sembra tutto ok
quasi quasi pensavo di riscrivere tutto cambiando qualche metodo bhu....
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22640
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Visto che fai un sacco di pulseIn e che basi tutto il codice sui valore restituiti da essi, fai un po' di debug stampando sulla seriale ciò che leggi, per capire dove si infila il tuo codice.
Logged


Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

leo potresti gentilmente farmi un esempio pratico?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22640
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dopo la serie di PulseIn, stampa sulla seriale i valori di val1, val2, val3 ecc...
Poi metti anche dei Serial.print in ogni if per vedere se e dove il codice va e dove invece salta.
Es.:
if (millis()>50 && millis()<100) digitalWrite(led1,HIGH);

diventa
if (millis()>50 && millis()<100) {
  Serial.println("1");
  digitalWrite(led1,HIGH);
}
Logged


0
Offline Offline
Faraday Member
**
Karma: 46
Posts: 5834
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho trovato un primo problema
Code:
int luciPosIn = 0;
int fariLungIn = 1;

questo non va bene, 0 e 1 devi lasciarli liberi per la seriale (usb-->pc)
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22640
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ho trovato un primo problema
Code:
int luciPosIn = 0;
int fariLungIn = 1;

questo non va bene, 0 e 1 devi lasciarli liberi per la seriale (usb-->pc)
Difatti.
Ma basta che sposti le utente su 2 pin analogici.
Logged


Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora ho fatto una prova non so neanche io per quale motivo ma m'è venuta d'istino

eliminando questa parte di codice il lampeggio riprende a funzionare regolermente anche se poi ovviamente non va più tutto il resto

Code:
val1 = pulseIn(luciPosIn, HIGH);
  val2 = pulseIn(fariLungIn, HIGH);
  val3 = pulseIn(frecceIn, HIGH);
  val4 = pulseIn(lampIn, HIGH); //Possibile non necessario!!
  val5 = LOW;
  
  stopInS = digitalRead(stopIn);
  retroInS = digitalRead(retroIn);

questo spezzone è inserito nel void loop

quindi mi sorge la domanda, cosa è sbagliato? e se c'è un altro metodo

ovviamente le porte 0 e 1 le ho liberate
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22640
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E' sbagliato il fatto che la pulseIn è una funzione che ferma l'esecuzione del codice in attesa del verificarsi dell'evento da misurare oppure per timeout della funzione stessa. Il timeout è impostato di default a 1 secondo, se non ricordo male, per cui con 4 pulseIn il tempo massimo di arresto dello sketch può, in teoria arrivare anche a 4 secondi se nessuno dei 4 segnali viene rilevato.
Logged


Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quindi se rileva tutti i segnali pulseIn anche se non della misura dell'if tutto il programma dovrebbe andare senza problemi?
Logged

Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora collegati tutti i pulseIn e la situazione migliora molto, il lampeggio + o - va e cioè 1 led lampeggia come dovrebbe invece l'altro si perde i 50ms di pausa

alternativa a pulseIn che genera meno problemi?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22640
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non so se la causa di tutti i tuoi problemi sia la pulseIn, io ti ho solo chiarito come la pulseIn interagisce col tuo codice.

Alternative alla pulseIn? Dipende.
La pulseIn serve a leggere l'intervallo di tempo che passa fra 2 fronti di un segnale. Ti serve proprio questa cosa?
Logged


Offline Offline
Jr. Member
**
Karma: 3
Posts: 86
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

devo leggere un segnale ppm di una ricevente da modellismo ed il pulseIn è l'unico strumento che conosco per leggere suddetto segnale
Logged

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