aansluiten meerdere stappenmotors

Arduino shields
Berichten: 18
Geregistreerd: 27 Nov 2017, 11:00

Re: aansluiten meerdere stappenmotors

Berichtdoor djdeeno » 30 Jan 2018, 20:48

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:

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

Berichten: 18
Geregistreerd: 27 Nov 2017, 11:00

Re: aansluiten meerdere stappenmotors

Berichtdoor djdeeno » 31 Jan 2018, 11:52

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....
}

Berichten: 18
Geregistreerd: 27 Nov 2017, 11:00

Re: aansluiten meerdere stappenmotors

Berichtdoor djdeeno » 31 Jan 2018, 13:01

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


Afbeelding

Afbeelding

Afbeelding

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: aansluiten meerdere stappenmotors

Berichtdoor shooter » 31 Jan 2018, 23:19

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.
paul deelen
shooter@home.nl

Vorige

Terug naar Shields

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 6 gasten