Go Down

Topic: Azzerare la funzione millis() (Read 12634 times) previous topic - next topic

leandro78

no no, è chiarissimo quello che hai detto, ma nel mio caso a denominatore non ho un intero ma un double per come l'ho definito io...infatti la prima versione del programma funziona..è nella seconda che c'è qualche problema che non riesco ad individuare...forse è la funzione delayMilliseconds a dare qualche problema non capisco...eppure l'ho ottenuta con delle semplici conversioni direttamente dalla prima, non riesco a capire dove sta il problema...

qsecofr


no no, è chiarissimo quello che hai detto, ma nel mio caso a denominatore non ho un intero ma un double per come l'ho definito io...infatti la prima versione del programma funziona..è nella seconda che c'è qualche problema che non riesco ad individuare...forse è la funzione delayMilliseconds a dare qualche problema non capisco...eppure l'ho ottenuta con delle semplici conversioni direttamente dalla prima, non riesco a capire dove sta il problema...

ahh si hai ragione... ho fatto confusione.


ma perchè il SALI aumenta il ritardo?  Non dovrebbe andare in accellerazione e quindi diminuire i tempi morti?

altra cosa... vedo currentMillis ma tu stai lavorando con i micros.... non ti conviene mettere i micros anche in questo test?
...comunque vedo che tieni alti gli intervalli a 100 millisecondi quindi non dovrebbe essere questo che ti infastidisce.... può succedere che il tuo upDelayTime superi in qualche modo i 100.000 microsecondi e pertanto ti ritrovi ad ogni step già a dover aggiornare?




Code: [Select]


if (currentMillis - previousMillis > interval) {
      previousMillis = currentMillis; 
      upDelayTime += ritardo;
    }
    digitalWrite(motorPin1, HIGH); 
    digitalWrite(motorPin2, LOW);
    digitalWrite(motorPin3, HIGH); 
    digitalWrite(motorPin4, LOW); 
    delayMicroseconds(upDelayTime);



...un'altra cosa io non capisco come ti funziona la funzione di discesa... per me la tua procedura dovrebbe tenere una velocità costante con delay 2 e poi improvvisamente bloccarsi quando hai superato i 150(?) cicli.

PaoloP

#47
Dec 06, 2012, 01:13 pm Last Edit: Dec 06, 2012, 01:21 pm by PaoloP Reason: 1

Ma hai collegato il motore direttamente ai pin di Arduino o stai usando un driver?

Qui trovi le librerie del modulo di Adafruit (http://www.robot-italy.com/it/adafruit-motor-stepper-servo-shield-for-arduino-kit-v1-0.html) --> http://www.ladyada.net/make/mshield/download.html
C'è anche una libreria specifica per far accelerare e decelerare lo stepper.


Hai provato questa libreria?
Doc  --> http://www.open.com.au/mikem/arduino/AccelStepper/
Code --> https://github.com/adafruit/AccelStepper
Zip --> http://www.open.com.au/mikem/arduino/AccelStepper/AccelStepper-1.27.zip

Username8

ciao, io vorrei che grazie alla funzione millis() e dopo aver ricevuto il mio comando tramite easyvr shield 2.0, i motori del mio robottino si fermassero. qualche idea?

nid69ita

ciao, io vorrei che grazie alla funzione millis() e dopo aver ricevuto il mio comando tramite easyvr shield 2.0, i motori del mio robottino si fermassero. qualche idea?
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:
- qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- qui le pinout delle varie schede by xxxPighi: Pinout
- qui una serie di link generali utili: Link Utili
my name is IGOR, not AIGOR

Username8

grazie ma l'avevo gia fatto sul mio vecchio account quindi mi scocciava ripresentarmi
comunque ho conoscenze abbastanza elevate in programmazzione e elettronica

Go Up