Hilfe beim programmieren bei Stepp Motor mit Taster.

Hallo allerseits,

Leider bin ich ein ziemlicher Neuling auf diesen Gebiet und komm einfach nicht mehr weiter beim programmieren von einen Stepp Motor der mit einen Taster schaltbar ist.

Aber hier eine genauere Erklärung meines vorhaben:
Ich will mir einen 3D Laserscanner bauen und dazu soll der LASER [1] mit einen Tastendruck eine bestimmte Position abfahren und wenn wer diese erreicht hat dann soll sich ein zweiter LASER[2] einschalten und der andere ausschalten.
Bei erneutes Drücken des Tasters soll der eingeschaltete LASER[2] wieder eine bestimmte Position abfahren und den anderen LASER[1] einschalten und dann soll alles wieder von vorne beginnen.

Ich habe jetzt schon mal das mit den Taster mit die LASER und den Stepp Motor.

Hier mal die Programmierung des SteppMOTORS

// SteppMOTOR Pin Belegung
#define pin1 8
#define pin2 9
#define pin3 10
#define pin4 13

#define delaytime 8 //Stepptime

void setup() {
  //intialize the 8 pin as output:
  pinMode(pin1, OUTPUT);
  pinMode(pin2, OUTPUT);
  pinMode(pin3, OUTPUT);
  pinMode(pin4, OUTPUT);
}

void loop() {
  int numberOfSteps = 150;
  step_OFF();         //turning all coils off
  while(numberOfSteps>0){
    forward();        //going forward
    numberOfSteps -- ;//counting down the number of steps
  }
  delay(2000);

  step_OFF();          //turning all coils off
  numberOfSteps = 150;
  while(numberOfSteps>0){
    backward();        //going backward
    numberOfSteps -- ; //counting down the number of steps
  }
  delay(2000);
}

Zweites Tap von SteppMOTOR

void Step_A(){
  digitalWrite(pin1, HIGH);//turn on coil 1
  digitalWrite(pin2, LOW);
  digitalWrite(pin3, LOW);
  digitalWrite(pin4, LOW);
}

void Step_B(){
  digitalWrite(pin1, LOW);
  digitalWrite(pin2, HIGH);//turn on coil 2
  digitalWrite(pin3, LOW);
  digitalWrite(pin4, LOW);
}

void Step_C(){
  digitalWrite(pin1, LOW);
  digitalWrite(pin2, LOW);
  digitalWrite(pin3, HIGH);//turn on coil 3
  digitalWrite(pin4, LOW);
}

void Step_D(){
  digitalWrite(pin1, LOW);
  digitalWrite(pin2, LOW);
  digitalWrite(pin3, LOW);
  digitalWrite(pin4, HIGH);//turn on coil 4
}

void step_OFF(){
  digitalWrite(pin1, LOW);
  digitalWrite(pin2, LOW);
  digitalWrite(pin3, LOW);
  digitalWrite(pin4, LOW);
}

//these functions run the above config in forward and reverse order
//the direction of a stepper motor depends on the order in which the coild are turned om.
void forward(){//one tooth forward
  Step_A();
  delay(delaytime);
  Step_B();
  delay(delaytime);
  Step_C();
  delay(delaytime);
  Step_D();
  delay(delaytime);
}

void backward(){//one tooth backward
  Step_D();
  delay(delaytime);
  Step_C();
  delay(delaytime);
  Step_B();
  delay(delaytime);
  Step_A();
  delay(delaytime);
}

Und hier mal die Programmierung der Tasten mit den LASERS

const int buttonPin = 1;    
const int LASER1 =  6;
const int LASER2 = 7;
int merker=0;

int buttonState = 0;
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


void setup() 
  { lcd.begin(16, 2);
    pinMode(LASER1, OUTPUT);
    pinMode(LASER2, OUTPUT);    
    pinMode(buttonPin, INPUT);
    Serial.begin(9600);
  }

void loop()
{
   buttonState = digitalRead(buttonPin);

  if ((buttonState == HIGH)&&(merker==0)) 
    { lcd.clear();
      lcd.print("OBEN");  
      digitalWrite(LASER1, HIGH); 
      digitalWrite(LASER2, LOW);
      merker=1;
    } 
   
  if ((buttonState == LOW)&&(merker==1)) 
    {   
      merker=2;
    } 
    
  if ((buttonState == HIGH)&&(merker==2)) 
    {  lcd.clear(); 
       lcd.print("UNTEN");
       digitalWrite(LASER1, LOW);
       digitalWrite(LASER2, HIGH); 
       merker=3;
    }
   if ((buttonState == LOW)&&(merker==3)) 
    {   
       merker=0;
    } 
       
    Serial.print("Merker= ");
    Serial.println(merker);
}

Ich hoffe es schafft wer diese zweit Programme zusammenzufügen. ;D ;D ;D

LG Gerald