Go Down

Topic: Indicatore direzione moto (Read 1 time) previous topic - next topic

torn24

Quote
@torn24, effettivamente i led fanno un po di confusione, se ad esempio è acceso il SX e premo il dx si accendono entrambi, e l'emergenza una volta accesa ripremendo il suo tasto non si spegne.
Faccio queste considerazioni solo per far vedere che vi sto seguendo, non per altro...ci mancherebbe.
Di solito in un programma che faccio su qualsiasi dispositivo, provo vedo come si comporta e correggo,
con arduino non lo faccio mai perché non vado a costruire il circuito.

Provo a correggere i difetti, poi se vuoi provare e dirmi come funziona.



Code: [Select]



#define LEDSX 7
#define LEDDS 8
#define PULSANTESX 9
#define PULSANTEDS 10
#define EMERGENZA 11
unsigned long previousMillis = 0;
unsigned long currentMillis;
const long interval = 500;
byte flagLEDSX = 0, flagLEDDS = 0, flagEMERGENZA=0;
void setup() {
  pinMode(LEDSX, OUTPUT);
  pinMode(LEDDS, OUTPUT);
  pinMode(PULSANTESX, INPUT);
  pinMode(PULSANTEDS, INPUT);
  pinMode(EMERGENZA, INPUT);

}
void loop() {
  /* LETTURA STATO TRE PULSANTI */
  if (digitalRead(PULSANTESX) == LOW) { //se il pulsante è premuto
    flagLEDSX = !flagLEDSX; // inverto il valore di flag
    flagLEDDS=0; // se premo il pulsante sinistra è disattivato quello destra
    delay(200); //attendo che il dito si stacchi dal pulsante
  } else if (digitalRead(PULSANTEDS) == LOW) { //se il pulsante è premuto
    flagLEDDS = !flagLEDDS; //inverto il valore
    flagLEDSX=0;// se premo il pulsante destra è disattivato quello sinistra
    delay(200); //attendo che il dito si stacchi dal pulsante
  } else if (digitalRead(EMERGENZA) == LOW) { //se emergenza è premuto
      flagEMERGENZA=!flagEMERGENZA; // inverto lo stato di emergenza
      /*Se premo emergenza lampeggiono tutti e due, ripremendo si spengono */
      flagLEDSX = flagEMERGENZA; flagLEDDS = flagEMERGENZA;
      delay(200); //attendo che il dito si stacchi dal pulsante
  }
  /********************************************/

  /* GESTIONE LAMPEGGIO */

  if (flagLEDSX && flagLEDDS == 0) {
    lampeggio(1); // lampeggia il led di sinistra
  } else if (flagLEDSX == 0 && flagLEDDS == 1) {
    lampeggio(2); //lampeggio led  destra
  } else if (flagLEDSX == 1 && flagLEDDS == 1) {

    lampeggio(3); // lampeggio entrambi i led

  }else if( flagLEDSX==0 && flagLEDDS==0){// SPEGNE I LED

        digitalWrite(LEDDS, LOW);
        digitalWrite(LEDSX,LOW);


  }
}
int lampeggio(int x) {
  currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    if (ledState == LOW) {
      ledState = HIGH;
    } else {
      ledState = LOW;
    }
    switch (x) {
      case 1:
        digitalWrite(LEDDS, LOW); // il led destra è spento
        digitalWrite(LEDSX, ledState); //il led sinistra lampeggia
        break;
      case 2:
        digitalWrite(LEDSX, LOW); // il led sinistra è spento
        digitalWrite(LEDDS, ledState); //il led destra lampeggia
        break;
      case 3:
        digitalWrite(LEDDS, ledState); // il led destra lampeggia
        digitalWrite(LEDSX, ledState); //il led sinistra lampeggia
        break;
    }

  }
}





Standardoil

Faccio queste considerazioni solo per dimostrare che vi sto seguendo, non per altro...ci mancherebbe.

@Nelson, hai detto che hai trovato l'errore, ma non so se hai corretto il tuo schetch, se no è perchè vuoi che io studi su? Perchè ancora non va.

Intando porto a termine il mio...e poi ho anche lo schetch di docdoc da sviluppare, ciao a tutti.
ho citato solo una parte,
Giù stai seguendo troppe strade
Hai un solo problema, decidi come risolverlo e vai diritto per la TUA strada
Altrimenti non ne esci
Hai tre indicazioni, vedi tu quale seguire...
Per quanto riguarda il mio errore: ti ho gia indicata la soluzione, vedi tu se ti ci ritrovi
Per quanto riguarda il pullup Pulldown:
Se non sai come modificare il programma a seconda di cosa vuoi fare....
È ora di impararlo!
Non presurrò più la buona fede di chi:
NON indenta o USA la classe string o NON esegue le ricerche
Troppe volte e' stato segnalato che è sbagliato, quindi se si comportano così NON sono in buona fede

Non bado a studenti, che copino altrove

torn24

Offtopic

Non vorrei che si pensasse che posto una soluzione con la convinzione che sia la soluzione migliore!
Sul forum ci sono ingegneri elettronici e persone che per lavoro programmano, non mi illudo di fornire soluzioni migliori della loro :)
Posto la mia soluzione per due motivi, uno perché problemi semplici trovo divertente provare a risolverli,
secondo motivo, poiché sono un autodidatta forse da parte di un non esperto è più facile capire la mia soluzione che usa concetti base del linguaggio C.

Stilita

#33
May 07, 2019, 11:48 am Last Edit: May 07, 2019, 12:02 pm by Stilita
Ho seguito la mia strada, come consigliatomi, funziona perfettamente.
Non ho usato i comandi che suggerivate voi, sono a livello principante
però li sto studiano.

Lo sketch usa 1892 byte (5%) dello spazio disponibile per i programmi.

Ho ridondato le funzioni, ecco perchè è venuto un po lunghetto, ma non so se postarlo, ho paura
di qualche "caxxiatone"  :)

Ps: un karma a tutti voi...è il minimo, grazie.
...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

docdoc

Già che ci sono dico a docdoc che il suo funziona, e domani ci studio per completarlo con gli altri 2 pulsanti.
Ovviamente il tutto è per farti imparare a gestire quel codice, in linea di massima dovresti duplicare la parte di gestione del primo pulsante e relativo blinking del led, ed aggiungere il terzo pulsante il quale deve semplicemente gestire le due variabili "blinking" (attivandole o disattivandole entrambe).
Appena hai fatto le prime prove, se hai problemi posta il nuovo codice e descrivi il problema riscontrato.

PS: @standardoil e @torn24, vi prego, se provate a fare voi il programma completo per i 3 pulsanti, il nostro amico non impara (quasi) nulla.. ;)
Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

docdoc

Ho ridondato le funzioni, ecco perchè è venuto un po lunghetto, ma non so se postarlo, ho paura
di qualche "caxxiatone"  :)
Se lo metti nei tag "code" non c'è problema, se il forum ti dice che è troppo lungo, postalo come allegato (ma non credo sia necessario).
Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

Stilita

#36
May 07, 2019, 12:07 pm Last Edit: May 07, 2019, 12:25 pm by Stilita
PS: @standardoil e @torn24, vi prego, se provate a fare voi il programma completo per i 3 pulsanti, il nostro amico non impara (quasi) nulla.. ;)

Non imparo perchè ci sto studiando poco...e comunque quello che ho fatto funziona bene, e non è eccessivamente lungo, 5% a fronte del 4% di Standaroil.

...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

docdoc

Non imparo perchè ci sto studiando poco...e comunque quello che ho fatto funziona bene, e non è eccessivamente lungo, 5% a fronte del 4% di Standaroil.
Non è una questione di percentuali, ma se "fai" impari, se copiaincolli ed esegui, no.. ;)
Dipende ovviamente se VUOI realmente imparare (che ti serve sia per migliorare ed estendere eventualmente questo progetto, ma anche per farne altri) o se vuoi invece l'oggetto funzionante e basta...
Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

Standardoil

Ho seguito la mia strada, come consigliatomi, funziona perfettamente.
Non ho usato i comandi che suggerivate voi, sono a livello principante
però li sto studiano.

dai posta che siamo curiosi...
Non presurrò più la buona fede di chi:
NON indenta o USA la classe string o NON esegue le ricerche
Troppe volte e' stato segnalato che è sbagliato, quindi se si comportano così NON sono in buona fede

Non bado a studenti, che copino altrove

Stilita

#39
May 07, 2019, 04:48 pm Last Edit: May 07, 2019, 04:53 pm by Stilita
Non è una questione di percentuali, ma se "fai" impari, se copiaincolli ed esegui, no.. ;)
Dipende ovviamente se VUOI realmente imparare (che ti serve sia per migliorare ed estendere eventualmente questo progetto, ma anche per farne altri) o se vuoi invece l'oggetto funzionante e basta...
Non ho fatto il copia\incolla, ho usati comandi facili alla mia portata, e l'ho fatto a modo mio.
L'unico aiuto che ho messo in atto è  che non ricordavo che chiamata una funzione lei torna da sola al loop.(vedi primo post)
Non spero d' imparare di più di quel poco che so (ci provo...ma...) perchè faccio qualche progettino ogni 6 mesi, dimenticherei.
E poi quì non si tengono corsi, ma si danni aiuti e spunti(ed è quello che ho avuto in questi mesi).
Grazie.




...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

docdoc

Non ho fatto il copia\incolla, ho usati comandi facili alla mia portata, e l'ho fatto a modo mio.
Si, io non mi riferivo a te ma ai codici "pronti" che ti hanno postato... ;)

Quote
Non spero d' imparare di più di quel poco che so (ci provo...ma...) perchè faccio qualche progettino ogni 6 mesi, dimenticherei.
Non ti sottovalutare. :) E comunque si impara SEMPRE. Tutti. Imparare qualcosa di nuovo significa progredire, e non è neanche detto che non ti serva più.

Quote
E poi quì non si tengono corsi, ma si danni aiuti e spunti(ed è quello che ho avuto in questi mesi).
Eh, certo, appunto, quello che volevo darti io... ;) Ma non "codice pronto"...






Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

Standardoil

Il mio non era codice pronto, conteneva un errore
E comunque lo OP non ha ancora postato
Vabbe'
Non presurrò più la buona fede di chi:
NON indenta o USA la classe string o NON esegue le ricerche
Troppe volte e' stato segnalato che è sbagliato, quindi se si comportano così NON sono in buona fede

Non bado a studenti, che copino altrove

docdoc

Il mio non era codice pronto, conteneva un errore
Peggio ancora.. ;)

Dai, scherzo... Scherzi a parte, ovviamente il tuo intervento è apprezzabilissimo, ci mancherebbe, ma se io gli metto un codice parziale proprio con l'intenzione di farlo ragionare e verificare cosa ho cambiato e quindi di farglielo espandere per gestire 2 led e poi il terzo pulsante, credo che sia meglio proseguire così, anche per non fargli confondere le idee, no? ;)

Almeno questa è la mia idea di questo forum, poi ci sono alcuni (non parlo né di te né di stilita) che invece si seccano se gli si cerca di insegnare qualcosa e vorrebbero che qualcuno gli dia codice pronto (e magari lamentarsi se ci sono errori, nonostante si sia tutti "umani"), per cui cerco di evitare di andare troppo oltre con le modifiche. ;)

Ora sentiamo se e come ha espanso il codice, e vediamo (io, te, torn24...) di dargli una mano "conclusiva". :D

Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

Standardoil

ma i miei "errori" sono spesso "voluti"
se uno capoisce come lavora il programma capisce anche l'errore, anzi, gli salta all'occhio
è una diversa maniera per "formare", poi sono disposto a discutere che non è il massimo...
Non presurrò più la buona fede di chi:
NON indenta o USA la classe string o NON esegue le ricerche
Troppe volte e' stato segnalato che è sbagliato, quindi se si comportano così NON sono in buona fede

Non bado a studenti, che copino altrove

Stilita

Per ora l'ho fatto sulla falsariga di quello che ho gia postato, solo ridondato a 3 pulsanti.
Per curiosità,  sapete se le frecce devono avere un tempo di lampeggio normato?
E comunque basta rilevarlo da un veicolo omologato.

Lo so che mi spronate , del resto come faccio io con i piu giovani dove lavoro.

...non sapete quanto ho cercato...pfui pfui
prima di rivolgermi al forum...

Go Up