Goededag,
Na het lezen van vast gezette topic van MAS3 hierboven in ben ik aan het stoeien gegaan met millis ipv Delay, topic Blink Without Delay. In programma zelf ook aan spelen geweest en begrijp dat als bij voorbeeld led uit is dat x millis later led weer aan gaan en daarna weer uit ect ect.
Ook de topic Using Millis timing for beginners guide is een leuke topic en ook daar snap ik het een en ander wel. Maar nu probeer ik dat te gebruiken in mijn stappenmotor programma. Hierin is een msDelay nog in verwerkt en wil daar vanaf omdat ik beide motor tegelijk wil draaien, of kunnen draaien.
Deze stappen motors werken nu, zoals programma er nu uit ziet perfect, zowel aantal stappen, snelheid, ect (deze motors worden gebruikt voor miniatuur movinghead lichteffecten). Fotos zal ik een deze dagen even plaatsen voor het idee.
Je ziet tussen deze stappen de msDelay zitten met waarde van 50. Dat gaat prima.
Maar nu snap ik gewoon niet hoe ik dit moet vervangen met Millis. Ik vind het erg moeilijk, ook omdat de msDelay vaker voorkomt en niet alle msDelay hetzelfde zijn. Kan iemand mij hier in helpen?
De huidige goed werkende code met msDelay:
int Pin0 = 11; //Head/LED Motor
int Pin1 = 10; //Head/LED Motor
int Pin2 = 9; //Head/LED Motor
int Pin3 = 8; //Head/LED Motor
int Pin4 = 7; //Vork Motor
int Pin5 = 6; //Vork Motor
int Pin6 = 5; //Vork Motor
int Pin7 = 4; //Vork Motor
int msDelay1 = 50;
int msDelay2 = 60;
int msDelay3 = 90;
void setup(void)
{
pinMode(Pin0, OUTPUT); //Output Head/LED motor pin
pinMode(Pin1, OUTPUT); //Output Head/LED motor pin
pinMode(Pin2, OUTPUT); //Output Head/LED motor pin
pinMode(Pin3, OUTPUT); //Output Head/LED motor pin
pinMode(Pin4, OUTPUT); //Output Vork Motor
pinMode(Pin5, OUTPUT); //Output Vork Motor
pinMode(Pin6, OUTPUT); //Output Vork Motor
pinMode(Pin7, OUTPUT); //Output Vork Motor
}
void loop() {
for (byte i = 0; i < 5; i++) //Head/LED Motor 300 graden met de klok mee draaien
function1();
for (byte i = 0; i < 5; i++) //Head/LED Motor 300 graden tegen de klok in draaien
function2();
for (byte i = 0; i < 5; i++) //Vork Motor 300 graden met de klok mee draaien
function3();
for (byte i = 0; i < 5; i++) //Vork Motor 300 graden tegen de klok in draaien
function4();
}
void function1() //Head/LED Motor 300 graden met de klok mee draaien met delay waarde 50
{
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(msDelay1);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(msDelay1);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(msDelay1);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
delay(msDelay1);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
delay(msDelay1);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
delay(msDelay1);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
delay(msDelay1);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
delay(msDelay1);
}
void function2() //Head/LED Motor 300 graden tegen de klok in draaien met delay waarde 50
{
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
delay(msDelay1);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
delay(msDelay1);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
delay(msDelay1);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
delay(msDelay1);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(msDelay1);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(msDelay1);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(msDelay1);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
delay(msDelay1);
}
void function3() //Vork Motor 300 graden met de klok mee draaien met delay waarde 60
{
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
delay(msDelay2);
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
delay(msDelay2);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
delay(msDelay2);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, LOW);
delay(msDelay2);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, LOW);
delay(msDelay2);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, HIGH);
delay(msDelay2);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, HIGH);
delay(msDelay2);
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, HIGH);
delay(msDelay2);
}
void function4() //Vork Motor 300 graden tegen de klok in draaien met delay waarde 90
{
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, HIGH);
delay(msDelay3);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, HIGH);
delay(msDelay3);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, LOW);
delay(msDelay3);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, LOW);
delay(msDelay3);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
delay(msDelay3);
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
delay(msDelay3);
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
delay(msDelay3);
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, HIGH);
delay(msDelay3);
}