Go Down

Topic: Problema di programmazione. (Read 2 times) previous topic - next topic

nid69ita

Come suggerito giustamente da uwefed mi sembra importante mettere un pò di Serial.println per debuggare il progamma.
Mettili dopo ogni istruzione (soprattutto nelle istruzioni condizionali) stampando anche il valore delle variabili.

nel setup()
Code: [Select]

Serial.begin(9600);
Serial.println("Fase 1");


poi nel loop()
Code: [Select]

  Serial.println("Fase 2");
  setGatePos();
  Serial.println("Fase 3");
  distFissa=IR.getDistanceCentimeter();
  Serial.println("Fase 4 distFissa="); Serial.print(distFissa);
  newvar=analogRead(pinPul);
  Serial.println("Fase 5 newvar="); Serial.print(newvar);
  if (newvar>900)
  { Serial.println("Fase 5 if vero");
    distVariabile=IR.getDistanceCentimeter();
    Serial.println("Fase 6 distVariabile="); Serial.print(distVariabile);
    openGate();
     ...etc...
my name is IGOR, not AIGOR

PaoloP

Ciao,
perchè stacchi il servo dopo averlo mosso?
Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Akira_Garashi


Un consiglio: abituati ad usare millis() al posto di delay, ne vedo diversi...
In questo modo eviti di bloccare tutto il micro, quindi letture del sensore e movimento del servo compresi


ma millis() non ritorna un valore finito di tempo da quando il programma è partito? non saprei come usarlo al posto di delay() non mi sembra la stessa cosa.
Neglected emotions lead to catastrophic voyage on the other side.
Gojira

Akira_Garashi


Ciao,
perchè stacchi il servo dopo averlo mosso?


ciao,
lo stacco per essere sicura che finita l'azione (se magari ci sono parti di programma che funzionano male) il servo non continui a ruotare magari accumulando tensione e rompendosi. Dici che potrebbe essere sbagliato?
Neglected emotions lead to catastrophic voyage on the other side.
Gojira

leo72



Un consiglio: abituati ad usare millis() al posto di delay, ne vedo diversi...
In questo modo eviti di bloccare tutto il micro, quindi letture del sensore e movimento del servo compresi


ma millis() non ritorna un valore finito di tempo da quando il programma è partito? non saprei come usarlo al posto di delay() non mi sembra la stessa cosa.

delay() ti ferma il programma. Il programa non fa nient'altro finché non è passato il tempo prestabilito.
Con millis puoi fare la stessa cosa con un semplice if. Guardati lo sketch di esempio allegato all'IDE "Blink Without Delay".

Go Up