film digitaliseren met eenvoudige Arduino-code

Ja hoi,

' ben bezig met een telecine project met een Eumig filmprojector (Eumig 501 dual S) waarvan ik de originele motor m.b.v. wat handig toegepaste Mecano-reepjes heb vervangen door een NEMA 12v steppermotor die ik met de motordriver erbij, zélf heb bedraad én lopend heb gekregen :slight_smile: Een aparte digitale camera fotografeert dan de afzonderlijke filmbeeldjes

Alleen moet de centrale projector-as, om elk afzonderlijk filmbeeldje te kunnen fotograferen, een volmaakte omwenteling van 360 graden maken en met met het opgeven van een aantal steps in de Arduino code lukte dat bijna maar net niet helemaal Bijv vanwege slip van de snaar tussen de steppermotor-poelie en de centrale as van de projector of door andere mechanische invloeden en dan loopt de sluiter van de projector (de "vlinder") op de duur voor of achter op het moment dat deze sluiter het licht van de LED moet doorlaten naar het filmbeeldje en deze op de duur dan ook half of helemaal donker laat...

ik ben dus aangewezen op een switch - btw dat kan een microswitch zijn of een reedswitch (Hall switch zou ook nog kunnen?) - die de steppermotor even laat stoppen na de projectoras precies 360 graden te hebben laten draaien om ná het filmtransport en met de sluiter open de digitale camera het volgende filmbeeldje te kunnen laten fotograferen

alleen, zo'n switchje is fysiek zo geinstalleerd máár... hoe programmeer en vooral, hoe bedraad je je zoiets???, ik heb al een hele hoop Arduino code gevonden in mijn richting maar er staat vrijwel NERGENS bij hoe je de boel dan bedraad en ik wil mijn Arduino (uno) niet meteen opblazen natuurlijk :o

kortom, wie heeft een clue of en/of hint? al was het alleen maar om een drukknopje zoals een switch te programmeren en vooral! hoe zoiets te bedraden...

Met vriendelijke groet,

kees

Het aansluiten van een schakelaartje is simpel: tussen een I/O-pin en massa. In de sketch zet je de betreffende pin op INPUT_PULLUP en je leest 'm uit met digitalRead(switchPin).

byte switchPin = 2; // bijvoorbeeld, mag elke GPIO pin zijn

void setup() {
  pinMode(switchPin, INPUT_PULLUP);
}

void loop() {
  if (digitalRead(switchPin) == LOW) {
    // hier de code om de aandrijving te stoppen
  }
}

Maar, omdat timing hier erg belangrijk is, moet je misschien je toevlucht nemen tot het gebruik van een interrupt, vooral als de Arduino ook nog andere dingen moet doen. Maar probeer het eerst eens op deze manier?

Ja hoi Erik, alvast bedankt voor het meedenken en je idee!

alleen... als beginner snap ik bijna niks van je code :confused: , maar ik ben wel net bezig geweest uit te vinden hoe je een drukknop programmeert (en bedraad!) en dat werkt al (waar die weerstand precies voor is is me een compleet raadsel maar goed, dat komt later wel, al doende leer ik 8) )

bijgaand zie je de code waarmee m'n steppermotor (NEMA 17) werkt, als jij me vertelt waar precies ik de regels voor de microswitch neerzet (en hoe ik die bedraad met m'n breadboard) ben ik alweer een stuk verder :slight_smile:

en oh ja, nadat de switch m'n steppermotor heeft gestopt voor de 2 seconden pauze moet die motor wel weer gaan lopen na 2 of 3 seconden, hoe doe ik dat dan ondanks dat de switch op dat moment nog op "aan" staat?

Mvg,

kees

p.s. ik hoef geen professor summa cum laude in de Arduino-code te worden, ik wil de Arduino alleen maar gebruiken om het film digitaliseren te laten werken, wat ik er gaandeweg van leer is dan wel mooi meegenomen :wink:

stepper_oneRevolution_alleen_clockwise.ino (1.01 KB)

Kijk eens naar BasOnTech: https://arduino-lessen.nl/.
Scroll iets naar beneden voor de beginnerslessen.
Dit is de les over een drukknop: 🇳🇱 LED AAN/UIT MET DRUKKNOP - Arduino les #5 - YouTube

Ehh, die drukknop les heb ik natuurlijk al gedaan! :slight_smile: (zie boven, antwoord aan Erik) geen gebrek aan inzet van mijn kant hoor! En die beginnerslessen zijn ook prima maar er staat heel vaak geen schema bij hoe je een en ander dan bedraad op je breadboard en moet je er maar naar raden, dat kan link zijn voor de hardware dus dat vind ik wel een opvallend min-punt van Arduino (voor beginners dan...)

blijft mijn probleem dat ik de volgorde voor code-regels voor de microswitch en het draaien van de steppermotor in de void setup al niet eens weet laat staan hoe ik in de void loop dan een if then constructie of weet ik wat toepas, het moet uiteindelijk heel eenvoudig zijn maar kom er maar eens op... (zucht)

nog maar eens de voorwaarden voor het Arduino programmaatje:

1: steppermotor in filmprojector lopen

2: bij aanraken microswitch in de door steppermotor aangedreven filmprojector (= van microswitch-toestand 0 naar 1) motor stoppen

3: motor paar seconden niet lopen (voor maken foto filmbeeldje)

4 motor lopen

enz enz

Volgens mij is dit ook een daadwerkelijke "loop"

(Alleen staat de microswitch dan wsch nog op 1, hoe los je dat dan op??)

Er zijn hier vast wel slimpies die dit voor elkaar krijgen en het hoeft ook niet in één keer goed

Mvg,

kees

jouw stepper library is een blocking code ofwel hij doet dus bijvoorbeeld 200 stappen en dan gaat het programma verder. dat is niet slim, om even simpel te houden:
zet een stap met je motor ofwel zet je uitgangen goed, dat ligt een beetje aan wat voor driver ertussen zit zoals een L293 of een A4988 zijn erg verschillend.
kijk dan of het beeldje goed is waarschijnlijk niet en dus zet je weer een stap enz tot het beeldje goed is. dat kan het beste door te kijken of je door een tandje van de film heen kan kijken. maak dan een foto en draai dan verder. misschien moet je wel eerst even 200 stappen zetten en dan pas gaan kijken dan wordt het een stuk sneller.
tussen elke stap even wachten met delay want anders zet je 1 miljoen stappen per seconde en dat gaat niet.
als dit werkt kun je gaan kijken naar accelstepper die kan versnellen en vertragen etc.
Maar je bent goed bezig en je constateert ook precies waar het probleem ligt, ofwel laat het aantal stappen los en zoek naar een detectie,

Ik weet niet wat Bas je voorschotelt, maar dit is het allereerste wat je te zien krijgt in de Button.ino voorbeeld sketch.

/*
  Button

 Turns on and off a light emitting diode(LED) connected to digital
 pin 13, when pressing a pushbutton attached to pin 2.


 The circuit:
 * LED attached from pin 13 to ground
 * pushbutton attached to pin 2 from +5V
 * 10K resistor attached to pin 2 from ground

 * Note: on most Arduinos there is already an LED on the board
 attached to pin 13.


 created 2005
 by DojoDave <http://www.0j0.org>
 modified 30 Aug 2011
 by Tom Igoe

 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/Button
 */

Heel veel duidelijker kan ik het me niet voorstellen.
De commentaren staan er niet voor niets, en het is wel de bedoeling dat dat gelezen en begrepen word.
Zou je dat overslaan, mis je dus informatie, en bij de voorbeelden die je bij de IDE krijgt zeer zeker.

[edit]
Overigens is dit voorbeeld een van de eerste voorbeelden die je tegen zou moeten komen.
Daarom is 'ie zo eenvoudig mogelijk te begrijpen gehouden.
Je kunt een drukknop of schakelaar ook zonder externe weerstand gebruiken.
Daarvoor moet je in je sketch instellen dat je een interne weerstand wil gebruiken, maar die werkt precies andersom als de externe weerstand in dit voorbeeld.
Daarom moet je dan ook niet kijken of er een HIGH ontstaat bij het bedienen van de knop, maar een LOW.
Dat gaat een beetje tegen de intuïtie in, en kan daarom verwarrend zijn en das dan weer de reden dat er hier wel voor een externe weerstand is gekozen.
[/edit]

Ehh, Shooter hierboven zei: "jouw stepper library is een blocking code ofwel hij doet dus bijvoorbeeld 200 stappen"?

Hoe dan ook, ik gebruik de stepper library die met de Arduino.exe installatie wordt meegeleverd (er staat iets met stepper.h in de code) heeft dat maar 200 stappen dan? Kun je zo'n stappenmotor niet laten ronddraaien zónder vooraf opgegeven stappen? zodat ie alleen maar wordt onderbroken door de micro-switch en de daarbij behorende code? en dan weer doorloopt?...

(Weet je, ik kan ook wel een kant en klaar film-digitaliseer-ding kopen van Reflecta maar dat kost 435 euro of zo en je hebt een resolutie van maar 1440 x 900 pixels :frowning: Mijn digitale camera haalt met gemak meer dan het dubbele dus dan ga ik liever even door want ik maak dingen graag af anders is alle voorgaande moeite ook voor niks geweest...)

btw, in de huidige opstelling projecteer ik het filmbeeldje met het projector-objectief direct op de sensor van de camera :slight_smile: Door een neutrale kleur filter heen dan om de sensor te beschermen

mvg ,

kees

Ik denk eerder dat het getal 200 alleen een voorbeeld was. Wat "blocking code" betreft: daar wordt mee bedoeld dat de microcontroller pas verder gaat met uitvoeren van de volgende regel code nadat (in dit geval) de stepper fysiek klaar is. Dat kan dus even duren, en intussen gebeurt er niets; signalen op een input kunnen daardoor verloren gaan.

keithjansen:
...hoe doe ik dat dan ondanks dat de switch op dat moment nog op "aan" staat?

keithjansen:
(Alleen staat de microswitch dan wsch nog op 1, hoe los je dat dan op??)

Wanneer je aan die voorwaarde voldaan hebt, is die niet meer geldig, maar word de volgende voorwaarde geldig.
Ik denk dat de volgende voorwaarde dan is dat je gaat tellen tot de door jou gewenste stoptijd verlopen is.
Daarna ga je weer de motor in beweging brengen, maar dat is dan dus niet meer afhankelijk van het signaaltje (we gaan er nog maar even van uit dat dat nog steeds een switch is, is nu nog niet zo belangrijk).
Pas wanneer je gezien hebt dat de switch niet meer actief is, kun je gaan kijken of 'ie weer actief gaat worden.

Zoals anderen ook al gezegd hebben, je bent op de goede weg en denkt en handelt op een goede wijze.
Jouw stappen waarmee je je loop beschrijft zijn een prima werkwijze.
Maar het zijn best flinke stappen, en ik denk dat je er ook nog een paar mist.
Die missende stappen zijn gemakkelijk in de huidige stappen in te passen wanneer je ze gevonden hebt.
Je moet ze wel zelf bedenken want jij weet wat je precies wil en wij kunnen daar alleen maar naar raden.
De flinke stappen kun je ook nog eens nader bekijken.
Als je daar eens een paar keer over nadenkt, zul je vast zien dat je ze in nog kleinere (sub-)stapjes kunt hakken.
En dat waarschijnlijk nog een aantal malen.
Zo word je nog steeds geen professor, maar je denkt wel heel goed na over de processen die je wil (moet) doorlopen om je doel te bereiken.
En das nou juist het leuke aan de hobby wat mij betreft, je leert er van alles van (dus ook van de hobby die je al had in jouw geval).

ja die 200 is een voorbeeld, veel stappenmotoren hebben 200 /omwenteling. en ja bij stepper die dus standaard bij arduino zit gaat gewoon de motor stappen tot het getal, en de UNO wacht net zolang tot de stappen gedaan zijn. Bij accelstepper is dat dus niet zo, maar telkens als een run komt kijkt de steppersoftware of het tijd is om een stap te doen.

Volgens mij ben ik er al dichtbij met deze gekregen code :slight_smile: (dank je wel Frank H.) btw, hóe krijg je code in zo'n venstertje met schuifbalk?? :

zo dus :slight_smile:

/*
  Autheur:      Fun met Electronica
  Link:         https://training.funmetelectronica.nl/docs/arduino-basis/lessen/les-14-stappenmotor/  
  Beschrijving: Stappenmotor aansturen
  
  Aansluiting stappenmotor:
    1n1 = pin 8
    1n2 = pin 9
    1n3 = pin 10
    1n4 = pin 11
    --  = gnd
    +5v = +5v
*/
 
/*
  Een library en een paar constantes definiëren
*/
#include <Stepper.h>
#define STAPPEN_PER_MOTOR_OMWENTELING 32
#define STAPPEN_PER_TOTAAL_OMWENTELING1 2048 // 64 x 32 = 2048 = 1 omwenteling rechtsom
#define STAPPEN_PER_TOTAAL_OMWENTELING2 -1024 // -1024 = 0.5 omwenteling linksom
 
Stepper small_stepper(
  STAPPEN_PER_MOTOR_OMWENTELING,
  8,
  10,
  9,
  11);                  // stapenmotor variabele
int knop1 = 1;          // knop aan pin 1
int knop2 = 2;          // knop aan pin 2
int toestandknop1 = 0;  // knop1 variabele
int toestandknop2 = 0;  // knop2 variabele
int  TeMakenStappen;    // variabele voor aantal stappen
 
/*
  Het programmablok void setup wordt eenmaal beschreven
*/
void setup(){
  pinMode(knop1, INPUT);  //knop1 is input
  pinMode(knop2, INPUT);  //knop2 is input
}
 
/*
  Het programmablok void loop herhaalt zich keer op keer
*/
void loop(){
  toestandknop1 = digitalRead(knop1);                     // lees toestand knop1
  toestandknop2 = digitalRead(knop2);                     // lees toestand knop2
  if (toestandknop1 == HIGH) {
    TeMakenStappen  =  STAPPEN_PER_TOTAAL_OMWENTELING1 ;  // draai 1x rechtsom
    small_stepper.setSpeed(500);                          // zet de snelheid
    small_stepper.step(TeMakenStappen);                   // loop
  }else if (toestandknop2 == HIGH) {
    TeMakenStappen  =  STAPPEN_PER_TOTAAL_OMWENTELING2 ;  // draai 0,5 keer linksom
    small_stepper.setSpeed(500);                          // zet de snelheid
    small_stepper.step(TeMakenStappen);                   // loop
  }
}
 
/*
  Opdracht 1:
  Kom erachter wat er precies in de code gebeurd.
  Zoek op internet wat de stepper library heeft.
  Probeer een paar dingen te veranderen of toe te voegen.
*/

als ik de code van pin 1 op niet actief zet met "//" en van pin 2 het aantal te maken stappen op 0 zet ben ik er volgens mij ook erg dichtbij 8) maar o wee, er moet ook nog ergens een "delay" van 3 seconden in... wat nu? :art:

kortom, alle goede dingen komen langzaam :confused:

mvg,

kees

keithjansen:
hóe krijg je code in zo'n venstertje met schuifbalk?? :

Door er code-tags omheen te zetten: selecteer de code en klik op het "</>"-knopje.

Wat je delay betreft: op welk moment wil je die precies invoegen?

Ehh, onmiddelijk nadat de microswitch de steppermotor heeft doen stoppen Erik :slight_smile:

Mvg,

kees

UPDATE UPDATE UPDATE!!

laatst vermeldde schema net bedraad en geüpload en het werkt!

knop 1 laat stepper motor 2048 stappen rechtsom lopen en

knop 2 laat steppermotor 48 stappen linksom lopen (aantal stappen door mij aangepast om verschil te zien)

een en ander houdt in dat ik de code voor zowel de knoppen als voor de steppermotor werkend heb kunnen combineren in één complete code! Ons bent blij! :slight_smile: want weer een "step" verder jaja

nou die pauze nog :confused: ...

en die microswitch nog even in de projector frommelen, (ik denk dat ik toch maar zo'n Velleman reed dingetje koop: https://www.okaphone.com/artikel.asp?id=484585 die is net wat makkelijker te positioneren

Mvg,

kees

P.S.

uh-oh

knop 2 (1024 stappen counterclockwise) werkt niet zolang knop 1 niet klaar is m.a.w. knop 2 beinvloed knop 1 NIET door bijv. meteen de andere kant op te draaien

hoe laat ik de steppermotor sowieso lopen (met of zonder knop 1, dat geeft verder niet) en knop 2 de steppermotor meteen laten stoppen met een pauze er achteraan? en de loop dan weer van voren af aan?

Vertelll!!! jullie kunnen het!!! :slight_smile:

Dat zou dus zijn ná deze regels?

  if (toestandknop1 == HIGH) {
    TeMakenStappen  =  STAPPEN_PER_TOTAAL_OMWENTELING1 ;  // draai 1x rechtsom
    small_stepper.setSpeed(500);                          // zet de snelheid
    small_stepper.step(TeMakenStappen);                   // loop
  }else if (toestandknop2 == HIGH) {
    TeMakenStappen  =  STAPPEN_PER_TOTAAL_OMWENTELING2 ;  // draai 0,5 keer linksom
    small_stepper.setSpeed(500);                          // zet de snelheid
    small_stepper.step(TeMakenStappen);                   // loop
  }

Vraagje: kunnen knop1 en knop2 tegelijk ingedrukt zijn?

NB: Ik stel voor om de namen "knop1" en "knop2" te vervangen door resp. "knop1Pin" en "knop2Pin", dat is duidelijker.

En als je toch bezig bent: "STAPPEN_PER_TOTAAL_OMWENTELING1" en idem2 kunnen beter "STAPPEN_PER_TOTAAL_OMWENTELING_RECHTSOM" resp. "STAPPEN_PER_TOTAAL_OMWENTELING_LINKSOM" heten, dan zegt de naam tenminste precies waar het voor dient.

Deze regel (staat er twee keer in) lijkt mij weinig zin te hebben, de waarde is zo te zien altijd 500.

 small_stepper.setSpeed(500);

Beter verplaatsen naar void setup(), dan wordt 'ie eenmalig uitgevoerd.

/*
Het programmablok void setup wordt eenmaal beschreven
*/

Hier wordt ongetwijfeld bedoeld "eenmaal uitgevoerd". Puntjes op de i... :wink:

Ik zie nu ook (pas) dat je pin 1 gebruikt als input voor een knop. Maar op de Uno is dat de TX-pin van de seriepoort, en die kun je / mag je dus niet gebruiken! Verplaats de draden op pins1 en 2 even naar bv. 2 en 3!

Zo, dat houdt je wel even bezig, kan ik even gaan puzzelen over die delay().. :wink:

kortom, alle goede dingen komen langzaam :confused:

Geeft niet, als ze maar komen. :wink:

Ja hoi Erik :slight_smile: , alvast erg bedankt voor alle moeite en tijd die je aan mijn project hebt gespendeerd

De laatste sketch met de twee knoppen kan ik evt gebruiken om te leren hoe je steppermotor code en drukknop/microswitch code in één sketch kunt laten werken, dat is ook nodig want ik heb me laten wijsmaken dat in tegenstelling tot de Raspberry pi de Arduino maar één programma tegelijk kan draaien dus daar móeten alle functies dan ook in zijn samengevat

Noodzakelijke volgende stap in mijn leerproces is dat ik alle sketches maar eens uitprint op papier en de aparte regels of alinea's m.b.t. de verschillende functies uitknip en met elkaar vergelijk en een soort GGD m.b.t. de functies ontdek en, als alles meezit, ook nog een logische volgorde en ja, dat kan ook in de pc maar met papier kun je nou eenmaal sneller schuiven, combineren en alles overzien enz

Vanmorgen heb ik ook al code gevonden om de motor (met één, twee of drie knoppen? even vergeten) direct! linksom en rechtsom te laten draaien én ook direct te laten stoppen, ik was dus op zoek naar vooral die laatste functie

(Verder wordt de verleiding steeds groter om een kant en klaar digitaliseerding van 435 euro te kopen maar natuurlijk alleen om aan te kunnen tonen dat de mijne veel beter wordt :wink: hopelijk heb ik de mijne aan de draai vóórdat ik zo'n ding moet kopen koop)

Mvg

kees

P.S. vanmiddag bezig met printen, knippen (en plakken) van coderegels, heb al 5 sketches klaar :slight_smile:

dit is dus de in m'n vorige post genoemde sketch met drie direct werkende pushbuttons en een steppermotor 28BYJ-48

maar het is wel een super ONoverzichtelijk filmpje en deze meneer gebruikt ook nog eens twee dezelfde kleur draden (grijsbruin) voor twee verschillende knoppen en tot overmaat van ramp is een wiring diagram natuurlijk weer niet bijgesloten dan met onnodig lastig gedoe met een link waarna je het nog niet kan vinden... :frowning: , wat is dat toch met die wiring diagrams?? schamen Arduino en/of programmeurs/ontwikkelaars zich daar voor?

of die diagrams zijn er helemaal niet of je kunt er niet bij of het moet lastig, uiterst lastig (hou toch op...)

kortom, te onnodig lastig om deze sketch uit te voeren en je hebt hoogstens wat houvast aan de code zelf maar zover ben ik nog lang niet :frowning: ...

/*
 * This is Arduino code to control 28BYj-48 with ULN2003 board using
 3 push buttons.  STPB-1
 * Written by Ahmad Shamshiri for Robojax Robojax.com
 * on Feb 20, 2019 at 19:34 in Ajax, Ontario, Canada
 Watch the video instruction for this sketch: https://youtu.be/q-H7GbyX5ho
 
 STPB-1 Control Stepper 28BYJ-48 Push buttons using Arduino code CCW, CW STOP STPB-1
 STPB-2 Controlling Position of 28BYJ-48 Stepper Motor with 2 Push buttons STPB-2
 STPB-3 Controlling ONE Revolution of 28BYJ-48 Stepper Motor with 2 Push buttons STPB-3
 STPB-4 Send 28BYJ-48 Stepper Moor to any Angle  with 3 Push buttons STPB-4 CW, CCW and STOP
 
You can get the wiring diagram from my Arduino Course at Udemy.com
Learn Arduino step by step with all library, codes, wiring diagram all in one place
visit my course now http://robojax.com/L/?id=62

If you found this tutorial helpful, please support me so I can continue creating 
content like this. You can support me on Patreon http://robojax.com/L/?id=63
or make donation using PayPal http://robojax.com/L/?id=64

* 
 * Code is available at http://robojax.com/learn/arduino

 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been download from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>. 

*/

int Pin1 = 10;//IN1 is connected to 10 
int Pin2 = 11;//IN2 is connected to 11  
int Pin3 = 12;//IN3 is connected to 12  
int Pin4 = 13;//IN4 is connected to 13 
int switchCW  =2;//define input pin for CW push button
int switchStop=3;//define input pin for Stop push button
int switchCCW =4;//define input pin for CCW push button

 
int pole1[] ={0,0,0,0, 0,1,1,1, 0};//pole1, 8 step values
int pole2[] ={0,0,0,1, 1,1,0,0, 0};//pole2, 8 step values
int pole3[] ={0,1,1,1, 0,0,0,0, 0};//pole3, 8 step values
int pole4[] ={1,1,0,0, 0,0,0,1, 0};//pole4, 8 step values


int poleStep = 0; 
int  dirStatus = 3;// stores direction status 3= stop (do not change)

void setup() 
{ 
 pinMode(Pin1, OUTPUT);//define pin for ULN2003 in1 
 pinMode(Pin2, OUTPUT);//define pin for ULN2003 in2   
 pinMode(Pin3, OUTPUT);//define pin for ULN2003 in3   
 pinMode(Pin4, OUTPUT);//define pin for ULN2003 in4   
 
 pinMode(switchCW,INPUT_PULLUP);// CW push button pin as input
 pinMode(switchStop,INPUT_PULLUP);//Stop push button pin as input 
 pinMode(switchCCW,INPUT_PULLUP);//CCW push button pin as input

} 
 void loop() 
{ 
  
  if(digitalRead(switchCCW) == LOW) 
  {
    dirStatus =1;
  }else if(digitalRead(switchCW) == LOW)
  {
   dirStatus  = 2;  
  }else if(digitalRead(switchStop) == LOW)
  {
    dirStatus =3; 
  }
 if(dirStatus ==1){ 
   poleStep++; 
    driveStepper(poleStep);    
 }else if(dirStatus ==2){ 
   poleStep--; 
    driveStepper(poleStep);    
 }else{
  driveStepper(8);   
 }
 if(poleStep>7){ 
   poleStep=0; 
 } 
 if(poleStep<0){ 
   poleStep=7; 
 } 
 delay(1); 

}// loop



/*
 * @brief sends signal to the motor
 * @param "c" is integer representing the pol of motor
 * @return does not return anything
 * 
 * www.Robojax.com code June 2019
 */
void driveStepper(int c)
{
     digitalWrite(Pin1, pole1[c]);  
     digitalWrite(Pin2, pole2[c]); 
     digitalWrite(Pin3, pole3[c]); 
     digitalWrite(Pin4, pole4[c]);   
}//driveStepper end here

UPDATE OP UPDATE OP UPDATE...

zelfde meneer, lijkt overzichtelijk wiring diagram nu met verschillende kleuren voor elke verbinding

En toen had ik geen 3e pushbutton meer in huis :cry:

Mvg,

kees

Ehh Erik, ' ben een aantal dagen bezig geweest om codes te proberen met m'n oude 28BYJ-48 stappenmotortje maar de code voor dat motortje lijkt net even anders te zijn dan voor m'n NEMA 17 dus met die laatste ga ik nu weer door om het eenvoudig te houden :slight_smile:

Mvg

kees

dan wel een vraag, welke driver zit ertussen, en hoe stuur je die aan, want de canadees gebruikt enkel 5 Volt met vier spoelen, maar een NEMA motor heeft maar 2 spoelen en moet dus ook anders aangestuurd worden. dus gebruik je een L293 of een A4988 driver.
op de laatste hoef je alleen maar een puls te zetten vandaar de vraag, en teken het even dan snap je misschien wel vanzelf hoe het aangestuurd moet worden.
liefst in fritzing