Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

stringa da eseguire solo una volta

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteMassimoB, Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[11] Re: stringa da eseguire solo una volta

Messaggioda Foto Utentedanielealfa » 31 dic 2019, 18:53

nel setup lo fa una volta solo,
a me serve che lo faccia in un preciso loop e per una volta solo, che nel momento che cambio loop, si azzeri e ritornando nel loop specifico si ripeta una volta
Avatar utente
Foto Utentedanielealfa
228 2 4 7
Expert
Expert
 
Messaggi: 1205
Iscritto il: 27 mag 2009, 22:51

0
voti

[12] Re: stringa da eseguire solo una volta

Messaggioda Foto Utentexyz » 31 dic 2019, 19:03

Ho riletto l'ultimo post più volte, francamente non si capisce cosa deve fare il programma.

Una possibile soluzione: fare un diagramma a stati e scrivere il modo corretto il codice che lo implementi.
Avatar utente
Foto Utentexyz
6.105 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1618
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[13] Re: stringa da eseguire solo una volta

Messaggioda Foto Utentewruggeri » 31 dic 2019, 19:08

xyz ha scritto:Una possibile soluzione: fare un diagramma a stati e scrivere il modo corretto il codice che lo implementi.


Direi l'unica soluzione, visto che il richiedente non riesce a dirci cosa vuole fare... :roll:
Rispondo solo a chi si esprime correttamente in italiano e rispetta il regolamento.
Se non conosci un argomento, non parlarne.
Gli unici fatti sono quelli dimostrabili, il resto è opinione.
Non sono omofobo, sessista, leghista o analoghe merdate.
Avatar utente
Foto Utentewruggeri
5.277 2 8 13
Master EY
Master EY
 
Messaggi: 1087
Iscritto il: 25 nov 2016, 18:46

0
voti

[14] Re: stringa da eseguire solo una volta

Messaggioda Foto Utentedanielealfa » 31 dic 2019, 19:47

allora, ho vari loop , li chiamo loop 1, loop2, loop 3, etc.
in ogni uno di essi ha un insieme di funzioni ,che vanno.al suo interno,
vi metto un serialprint,fino qui e' chiaro?
questo serial print deve scrivere su seriale una volta sola.
diciamo ciao 1 associato al loop 1,ciao2 associato a ciao2 , loop3 associato a loop3.etc
quando cambio i loop ogni volta invia un serial print,ogni volta ,per una volta che cambio loop,
cosi e' piu' chiaro
Avatar utente
Foto Utentedanielealfa
228 2 4 7
Expert
Expert
 
Messaggi: 1205
Iscritto il: 27 mag 2009, 22:51

0
voti

[15] Re: stringa da eseguire solo una volta

Messaggioda Foto Utentewruggeri » 31 dic 2019, 19:51

Onestamente, no :roll:

Se mostrassi, nell'ordine, il codice che hai scritto per implementare le funzionalità che vorresti e un esempio dell'output che ti aspetteresti in risposta a un qualche input probabilmente capiremmo di più.
Rispondo solo a chi si esprime correttamente in italiano e rispetta il regolamento.
Se non conosci un argomento, non parlarne.
Gli unici fatti sono quelli dimostrabili, il resto è opinione.
Non sono omofobo, sessista, leghista o analoghe merdate.
Avatar utente
Foto Utentewruggeri
5.277 2 8 13
Master EY
Master EY
 
Messaggi: 1087
Iscritto il: 25 nov 2016, 18:46

0
voti

[16] Re: stringa da eseguire solo una volta

Messaggioda Foto UtenteMarcoD » 31 dic 2019, 19:55

Non sono certo, poco in arduino è documentato. ma probabilmente, se comandi il serial.print più rapidamente di quanto viene scritto, dopo un poco si riempe un serbatoio O_/ all'interno del driver arduino e lo sketch si pianta.
Avatar utente
Foto UtenteMarcoD
6.656 4 8 13
Master EY
Master EY
 
Messaggi: 2796
Iscritto il: 9 lug 2015, 16:58
Località: Torino

0
voti

[17] Re: stringa da eseguire solo una volta

Messaggioda Foto Utenterichiurci » 31 dic 2019, 20:02

daniele, sforzati di essere più chiaro nei tuoi post.

Comunque...se come sembra nel tuo esempio in ogni loop parte un conteggio (variabile i) potresti legare la scrittura a una condizione, per esempio scrivere solo se (if) i=1 o altro valore
Avatar utente
Foto Utenterichiurci
28,4k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7794
Iscritto il: 2 apr 2013, 16:08

0
voti

[18] Re: stringa da eseguire solo una volta

Messaggioda Foto Utentedanielealfa » 31 dic 2019, 20:17

questo e' una parte del codice,
ci sono ;void ripple,void ripple2, ed altri.
un serial print che mi dice dove mi trovo.
e che come risposta mi da il nome del void
Codice: Seleziona tutto
void ripple() {

    if (currentBg == nextBg) {
      nextBg = random(256);
    }
    else if (nextBg > currentBg) {
      currentBg++;
    } else {
      currentBg--;
    }
    for(uint16_t l = 0; l < NUM_LEDS; l++) {
      leds[l] = CHSV(currentBg, 255, 50);         // strip.setPixelColor(l, Wheel(currentBg, 0.1));
    }

  if (step == -1) {
    center = random(NUM_LEDS);
    color = random(256);
    step = 0;
  }

  if (step == 0) {
    leds[center] = CHSV(color, 255, 255);         // strip.setPixelColor(center, Wheel(color, 1));
    step ++;
  }
  else {
    if (step < maxSteps) {
      Serial.println(pow(fadeRate,step));

      leds[wrap(center + step)] = CHSV(color, 255, pow(fadeRate, step)*255);       //   strip.setPixelColor(wrap(center + step), Wheel(color, pow(fadeRate, step)));
      leds[wrap(center - step)] = CHSV(color, 255, pow(fadeRate, step)*255);       //   strip.setPixelColor(wrap(center - step), Wheel(color, pow(fadeRate, step)));
      if (step > 3) {
        leds[wrap(center + step - 3)] = CHSV(color, 255, pow(fadeRate, step - 2)*255);     //   strip.setPixelColor(wrap(center + step - 3), Wheel(color, pow(fadeRate, step - 2)));
        leds[wrap(center - step + 3)] = CHSV(color, 255, pow(fadeRate, step - 2)*255);     //   strip.setPixelColor(wrap(center - step + 3), Wheel(color, pow(fadeRate, step - 2)));
      }
      step ++;
    }
    else {
      step = -1;
    }
  }

  LEDS.show();
  delay(50);
}


int wrap(int step) {
  if(step < 0) return NUM_LEDS + step;
  if(step > NUM_LEDS - 1) return step - NUM_LEDS;
  return step;
}


void one_color_allHSV(int ahue, int abright) {                // SET ALL LEDS TO ONE COLOR (HSV)
  for (int i = 0 ; i < NUM_LEDS; i++ ) {
    leds[i] = CHSV(ahue, 255, abright);
  }
}


void ripple2() {
   if (BG){
    if (currentBg == nextBg) {
      nextBg = random(256);
    }
    else if (nextBg > currentBg) {
      currentBg++;
    } else {
      currentBg--;
    }
    for(uint16_t l = 0; l < NUM_LEDS; l++) {
      strip.setPixelColor(l, Wheel(currentBg, 0.1));
      }
  } else {
    for(uint16_t l = 0; l < NUM_LEDS; l++) {
      strip.setPixelColor(l, 0, 0, 0);
      }
  }


  if (step == -1) {
    center = random(NUM_LEDS);
    color = random(256);
    step = 0;
  }



  if (step == 0) {
    strip.setPixelColor(center, Wheel(color, 1));
    step ++;
  }
  else {
    if (step < maxSteps) {
      strip.setPixelColor(wrap(center + step), Wheel(color, pow(fadeRate, step)));
        if (step > 3) {
        strip.setPixelColor(wrap(center + step - 3), Wheel(color, pow(fadeRate, step - 2)));
         }
      step ++;
    }
    else {
      step = -1;
    }
  }
  strip.setBrightnes
Avatar utente
Foto Utentedanielealfa
228 2 4 7
Expert
Expert
 
Messaggi: 1205
Iscritto il: 27 mag 2009, 22:51

0
voti

[19] Re: stringa da eseguire solo una volta

Messaggioda Foto Utentedanielealfa » 31 dic 2019, 20:24

si ho provato ma per azzerare la variabile i quando esco e renderla nuovamente a 0 non so come fare
ho anche provato cosi , ma diventa bloccante il resto del programma
Codice: Seleziona tutto
if (!cmdExec) {
serialprint("ciao")
cmdExec = true;
}
Avatar utente
Foto Utentedanielealfa
228 2 4 7
Expert
Expert
 
Messaggi: 1205
Iscritto il: 27 mag 2009, 22:51

1
voti

[20] Re: stringa da eseguire solo una volta

Messaggioda Foto Utentelucaking » 1 gen 2020, 9:12

danielealfa ha scritto:..... come risposta mi da il nome del void

Aridaje....
Semmai ti da il nome della funzione.
Avatar utente
Foto Utentelucaking
983 2 5 8
Expert
Expert
 
Messaggi: 871
Iscritto il: 29 mag 2015, 14:28

Precedente

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti