aansluiten meerdere stappenmotors
24 berichten
• Pagina 3 van 3 • 1, 2, 3
Re: aansluiten meerdere stappenmotors
Ja als we van die 5 eens 500 maken werkt ook, echter draait hij complete rondjes dan, dat hoeft hij namelijk niet, sterker mag hij niet.
Die 5 staat wel goed.
Probleem voor mij is wel echter de timer, blink without delay, ik snap de functie Delay, simpel gezegd zet hij alles stil, dat wil je niet, ook het If led = off then turn on met aantal mm secondes is ook nog te begrijpen, echt implanteren in deze sketch is kom ik niet echt uit.
Denk dat ik de lichten in elkaar ga lijmen en dit later maar eens bekijken, sommige dingen zijn met lezen en rekenen soms iets te hoog gegrepen voor me. hoe simpel het misschien voor ander ook mag zijn, dan zal er een voorbeeld met uitleg komen wilt ik dit snappen.
Zoals gezegd is het even test zodat ik weet wat de motors doen voor ik het in elkaar zet, echter niet 1 maar de movinghead tellen 2 motors:
Die 5 staat wel goed.
Probleem voor mij is wel echter de timer, blink without delay, ik snap de functie Delay, simpel gezegd zet hij alles stil, dat wil je niet, ook het If led = off then turn on met aantal mm secondes is ook nog te begrijpen, echt implanteren in deze sketch is kom ik niet echt uit.
Denk dat ik de lichten in elkaar ga lijmen en dit later maar eens bekijken, sommige dingen zijn met lezen en rekenen soms iets te hoog gegrepen voor me. hoe simpel het misschien voor ander ook mag zijn, dan zal er een voorbeeld met uitleg komen wilt ik dit snappen.
Zoals gezegd is het even test zodat ik weet wat de motors doen voor ik het in elkaar zet, echter niet 1 maar de movinghead tellen 2 motors:
- Code: Alles selecteren
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 msDelay = 50;
void setup(void)
{
pinMode(Pin0, OUTPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
pinMode(Pin5, OUTPUT);
pinMode(Pin6, OUTPUT);
pinMode(Pin7, OUTPUT);
}
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()
{
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(msDelay);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(msDelay);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(msDelay);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
delay(msDelay);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
delay(msDelay);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
delay(msDelay);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
delay(msDelay);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
delay(msDelay);
}
void function2()
{
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
delay(msDelay);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
delay(msDelay);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
delay(msDelay);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
delay(msDelay);
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(msDelay);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(msDelay);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
delay(msDelay);
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
delay(msDelay);
}
void function3()
{
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
delay(msDelay);
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
delay(msDelay);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
delay(msDelay);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, LOW);
delay(msDelay);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, LOW);
delay(msDelay);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, HIGH);
delay(msDelay);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, HIGH);
delay(msDelay);
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, HIGH);
delay(msDelay);
}
void function4()
{
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, HIGH);
delay(msDelay);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, HIGH);
delay(msDelay);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, LOW);
delay(msDelay);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, LOW);
delay(msDelay);
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
delay(msDelay);
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
delay(msDelay);
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
delay(msDelay);
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, HIGH);
delay(msDelay);
}
:(
Advertisement
Re: aansluiten meerdere stappenmotors
Nog even aan stoeien gewees vanmorgen maar loopt echt stuk, zie niet meer zitten hoe de aanpak loop met millis
- Code: Alles selecteren
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
unsigned long startMillis;
unsigned long currentMillis;
const unsigned long period1 = 50; //de waarde van millisecondes
const unsigned long period2 = 60; //de waarde van millisecondes
const unsigned long period3 = 90; //de waarde van millisecondes
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
startMillis = millis(); //Start millis
}
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
{
currentMillis = millis(); //Haal huidige tijd op
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
}
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);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
if (currentMillis - startMillis >= period1) //Hier pauzeren, stoppen en doorgaan of....
}
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);
if (currentMillis - startMillis >= period2) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
if (currentMillis - startMillis >= period2) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
if (currentMillis - startMillis >= period2) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, LOW);
if (currentMillis - startMillis >= period2) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, LOW);
if (currentMillis - startMillis >= period2) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, HIGH);
if (currentMillis - startMillis >= period2) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, HIGH);
if (currentMillis - startMillis >= period2) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, HIGH);
if (currentMillis - startMillis >= period2) //Hier pauzeren, stoppen en doorgaan of....
}
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);
if (currentMillis - startMillis >= period3) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, HIGH);
if (currentMillis - startMillis >= period3) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, LOW);
if (currentMillis - startMillis >= period3) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, LOW);
if (currentMillis - startMillis >= period3) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, LOW);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
if (currentMillis - startMillis >= period3) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
if (currentMillis - startMillis >= period3) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, LOW);
if (currentMillis - startMillis >= period3) //Hier pauzeren, stoppen en doorgaan of....
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, LOW);
digitalWrite(Pin6, LOW);
digitalWrite(Pin7, HIGH);
if (currentMillis - startMillis >= period3) //Hier pauzeren, stoppen en doorgaan of....
}
Re: aansluiten meerdere stappenmotors
Zoals beloofd zou ik nog even wat fotos plaatsen voor het idee.
als ik verder kom met programmeren dan plaats ik video ook nog even
als ik verder kom met programmeren dan plaats ik video ook nog even
Re: aansluiten meerdere stappenmotors
prima bezig, echter die timer moet in de loop komen,
in de arduino zit een teller die elke milliseconde met 1 opgehoogd wordt.
dus als je een timer wilt gebruiken dan zet je in een variabele de begintijd. dan kijk je in de loop of de if (millis()-begintijd > gewenstetijd ){begintijd=millis(); stapplus();}
in de functie stapplus doe je 1 stap handigste is een case hier dus 8 cases en dan spring je dus naar een case en die voer je uit, dan een break en dan kom je weer in de loop terecht.
de loop gaat dan heel erg snel, en je kunt dus veel meer tegelijk, door telkens een functie aan te roepen als een tijd gedaan is.
ofwel je zet een stap in 10 microseconden, en dan ga je wat anders doen want zo snel is een stappenmotor niet.
in de arduino zit een teller die elke milliseconde met 1 opgehoogd wordt.
dus als je een timer wilt gebruiken dan zet je in een variabele de begintijd. dan kijk je in de loop of de if (millis()-begintijd > gewenstetijd ){begintijd=millis(); stapplus();}
in de functie stapplus doe je 1 stap handigste is een case hier dus 8 cases en dan spring je dus naar een case en die voer je uit, dan een break en dan kom je weer in de loop terecht.
de loop gaat dan heel erg snel, en je kunt dus veel meer tegelijk, door telkens een functie aan te roepen als een tijd gedaan is.
ofwel je zet een stap in 10 microseconden, en dan ga je wat anders doen want zo snel is een stappenmotor niet.
paul deelen
shooter@home.nl
shooter@home.nl
24 berichten
• Pagina 3 van 3 • 1, 2, 3
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten