# Anfänger benötigt Hilfe beim Code - Kameraslider (Loop anstatt 1 Durchgang)

**URL:** <https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555>\
**Category:** Deutsch\
**Created:** [January 17, 2025, 12:01am UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555 "2025-01-17T00:01:52Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![djlonewolf](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/djlonewolf/32/1164060_2.png) [@djlonewolf](https://forum.arduino.cc/u/djlonewolf)\
**Post date:** [January 17, 2025, 12:01am UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/1 "2025-01-17T00:01:52Z")

</div>

Hallo ihr lieben, ich bin absoluter Anfänger und kenne mich absolut nicht mit Programmierung aus, ein wenig versteh ich wenn ich den Sketch sehe was da passieren soll.  
Ich habe jetzt einen Kameraslider aus Youtube ([https://www.youtube.com/watch?v=iszZNNzIRAg&list=PPSV](https://www.youtube.com/watch?v=iszZNNzIRAg&list=PPSV)) komplett nachgebau und auch den bereitgestellten Sketch genutzt, soweit funktioniert alles perfekt aber ich habe das Problem, dass der ganze Ablauf nur 1x durchläuft und man dann wieder komplett neustarten muss.  
Ich würde aber nach einstellung meiner gewünschten Parameter einen Loop bzw eine Endlosschleife benötigen.

Grundprinzip ist:

- Power On
- Slider fährt auf schiene durch einen Schrittmotor zum Homingtaster iund aktiviert diesen
- Setup beginnt
- festlegen des Xin und Xout Punktes des Motors also wo der Sliderlos fährt und endet
- festlegen des Yin und Yout Punktes des 2. Motors der den Kamerawinkel festlegt
- danach einstellung der Geschwindigkeit
- Start
- Programm läuft ein mal ab (benötige hier den Loop/ Endlosschleife)oder was notfalls auch gehen würde (anzahl der Durchgänge einstellbar machen von 1 bis 1000 oder so)
- danach wird finish angezeigt und ich bin wieder am Ausgangspunkt wo ich alles neu einstellen muss. (Das brauch ich nicht!! Soll einfach laufen bis ich Reset (sozusagen Reebot Arduino) drücke oder Stromzufuhr deaktiviertt wird.)

Hier Mein Schaltplan:

 ![Schematic](https://europe1.discourse-cdn.com/arduino/original/4X/a/1/7/a17115fd6374c8cb26bd6b55ffcf357688426464.jpeg)

hier der Sketch:

```arduino
// Sketch for CamSlider
// 06/04/2019 by RZtronics <raj.shinde004@gmail.com>
// Project homepage: http://RZtronics.com/
///////////////////////////////////////////////////////////////////////////////////////
//Terms of use
///////////////////////////////////////////////////////////////////////////////////////
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//THE SOFTWARE.
///////////////////////////////////////////////////////////////////////////////////////

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <AccelStepper.h>
#include <MultiStepper.h>
#include "bitmap.h"

#define limitSwitch 11
#define PinSW 2
#define PinCLK 3  
#define PinDT 8
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

AccelStepper stepper2(1, 7, 6); // (Type:driver, STEP, DIR)
AccelStepper stepper1(1, 5, 4);

MultiStepper StepperControl; 

long gotoposition[2]; 

volatile long XInPoint=0;
volatile long YInPoint=0;
volatile long XOutPoint=0;
volatile long YOutPoint=0;  
volatile long totaldistance=0;
int flag=0; 
int temp=0;
int i,j;
unsigned long switch0=0;
unsigned long rotary0=0;
float setspeed=200;
float motorspeed;
float timeinsec;
float timeinmins;
volatile boolean TurnDetected;  
volatile boolean rotationdirection;  

void Switch()  
{
 if(millis()-switch0>500)
 {
 flag=flag+1;
 }
 switch0=millis();
}

void Rotary()  
{
delay(75);
if (digitalRead(PinCLK))
rotationdirection= digitalRead(PinDT);
else
rotationdirection= !digitalRead(PinDT);
TurnDetected = true;
delay(75);
}

void setup() 
{
  Serial.begin(9600);
  stepper1.setMaxSpeed(3000);
  stepper1.setSpeed(200);
  stepper2.setMaxSpeed(3000);
  stepper2.setSpeed(200);
  
  pinMode(limitSwitch, INPUT_PULLUP);
  pinMode(PinSW,INPUT_PULLUP); 
  pinMode(PinCLK,INPUT_PULLUP); 
  pinMode(PinDT,INPUT_PULLUP);  
  
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 
  display.clearDisplay();
  
  // Create instances for MultiStepper - Adding the 2 steppers to the StepperControl instance for multi control
  StepperControl.addStepper(stepper1);
  StepperControl.addStepper(stepper2);

  attachInterrupt (digitalPinToInterrupt(2),Switch,RISING); // SW connected to D2
  attachInterrupt (digitalPinToInterrupt(3),Rotary,RISING); // CLK Connected to D3
   
  // display Boot logo
  display.drawBitmap(0, 0, CamSlider, 256, 128, 1); ////Updated from (0, 0, CamSlider, 128, 64, 1) to (0, 0, CamSlider, 256, 128, 1)
  display.display();
  delay(2000);
  display.clearDisplay(); 
  
  Home(); // Move the slider to the initial position - homing
  
}

void Home()
{
  stepper1.setMaxSpeed(3000);
  stepper1.setSpeed(200);
  stepper2.setMaxSpeed(3000);
  stepper2.setSpeed(200);
  if(digitalRead(limitSwitch)==1)
  {
    display.drawBitmap(0, 0, Homing, 256, 128, 1); //Updated from (0, 0, Homing, 128, 64, 1) to (0, 0, Homing, 256, 128, 1)
    display.display(); 
  }
  
  while (digitalRead(limitSwitch)== 1) 
  {
    stepper1.setSpeed(-3000);
    stepper1.runSpeed();
    
 }
  delay(20);
  stepper1.setCurrentPosition(0);
    stepper1.moveTo(200);
    while(stepper1.distanceToGo() != 0)
    {
      stepper1.setSpeed(3000);
      stepper1.runSpeed();
    }
    stepper1.setCurrentPosition(0);
    display.clearDisplay();
}

void SetSpeed()
{
  display.clearDisplay();
  while( flag==6)
  {
  if (TurnDetected)  
  {
        TurnDetected = false; // do NOT repeat IF loop until new rotation detected
        if (rotationdirection) 
        { 
         setspeed = setspeed + 30;
        }
        if (!rotationdirection) 
        { 
         setspeed = setspeed - 30;        
         if (setspeed < 0) 
        { 
         setspeed = 0;
        }
        }

          display.clearDisplay();
          display.setTextSize(1); //Edited from "2" to "1"
          display.setTextColor(WHITE);
          display.setCursor(52,0); // Edited from (30,0) to (52, 0)
          display.print("Speed");
          motorspeed=setspeed/80;
          display.setCursor(40,9); // Edited from (5,16) to (40, 9)
          display.print(motorspeed);
          display.print(" mm/s");   
          totaldistance=XOutPoint-XInPoint;
          if(totaldistance<0)
            {
              totaldistance=totaldistance*(-1);
            }
            else
            {
              
            }
          timeinsec=(totaldistance/setspeed);
          timeinmins=timeinsec/60;
          display.setCursor(54,17); // Edited from (35,32) to (54, 17)
          display.print("Time");
          display.setCursor(41,25); // Edited from (48,48) to (41, 25)
          if(timeinmins>1)
          {
          display.print(timeinmins);
          display.print(" min");
          }
          else
          { 
          display.print(timeinsec);
          display.print(" sec");
          }
          display.display();
  }
          display.clearDisplay();
          display.setTextSize(1); //Edited from "2" to "1"
          display.setTextColor(WHITE);
          display.setCursor(52,0); // Edited from (30,0) to (52, 0)
          display.print("Speed");
          motorspeed=setspeed/80;
          display.setCursor(40,9); // Edited from (5,16) to (40, 9)
          display.print(motorspeed);
          display.print(" mm/s");   
          totaldistance=XOutPoint-XInPoint;
           if(totaldistance<0)
            {
              totaldistance=totaldistance*(-1);
            }
            else
            {
              
            }
          timeinsec=(totaldistance/setspeed);
          timeinmins=timeinsec/60;
          display.setCursor(54,17); // Edited from (35,32) to (54, 17)
          display.print("Time");
          display.setCursor(41,25); // Edited from (48,48) to (41, 25)
          if(timeinmins>1)
          {
          display.print(timeinmins);
          display.print(" min");
          }
          else
          { 
          display.print(timeinsec);
          display.print(" sec");
          }
          display.display();
  }
 
}

void stepperposition(int n)
{
  stepper1.setMaxSpeed(3000);
  stepper1.setSpeed(200);
  stepper2.setMaxSpeed(3000);
  stepper2.setSpeed(200);
  if (TurnDetected)  
  {
        TurnDetected = false; // do NOT repeat IF loop until new rotation detected
     if(n==1)
     {
        if (!rotationdirection) 
        { 
          if( stepper1.currentPosition()-500>0 )
          {
          stepper1.move(-500);
          while(stepper1.distanceToGo() != 0)
            {
              stepper1.setSpeed(-3000);
              stepper1.runSpeed();
            }
          }
            else
            {
                while (stepper1.currentPosition()!=0) 
                 {
                      stepper1.setSpeed(-3000);
                      stepper1.runSpeed();
                 }
            }
        }

        if (rotationdirection) 
        { 
          if( stepper1.currentPosition()+500<61000 )
          {
          stepper1.move(500);
          while(stepper1.distanceToGo() != 0)
            {
              stepper1.setSpeed(3000);
              stepper1.runSpeed();
            }
          }
          else
          {
            while (stepper1.currentPosition()!= 61000) 
             {
                  stepper1.setSpeed(3000);
                  stepper1.runSpeed();
    
             } 
          }
        }
     }
     if(n==2)
     {
       if (rotationdirection) 
       { 
         stepper2.move(-15); //Updated from -100 to -15
         while(stepper2.distanceToGo() != 0)
           {
             stepper2.setSpeed(-3000);
             stepper2.runSpeed();
           }      
       }
        if (!rotationdirection) 
       { 
         stepper2.move(15); //Updated from 100 to 15  
         while(stepper2.distanceToGo() != 0)
           {
             stepper2.setSpeed(3000);
             stepper2.runSpeed();
           } 
       }
     }
     }
} 

void loop()
{ 
  //Begin Setup
  if(flag==0)
  {
    display.clearDisplay();
    display.drawBitmap(0, 0, BeginSetup, 256, 128, 1); //Updated from (0, 0, BeginSetup, 128, 64, 1) to (0, 0, BeginSetup, 256, 128, 1)
    display.display(); 
    setspeed=200;
  }
  
  //SetXin
  if(flag==1)
  {
    display.clearDisplay();
    display.setTextSize(1); //Edited from "2" to "1"
    display.setTextColor(WHITE);
    display.setCursor(40,14); //Edited from (10, 28) to (40, 14)
    display.println("Set X In");
    display.display(); 
    while(flag==1)
    {
    stepperposition(1); 
    }
    XInPoint=stepper1.currentPosition();
  }
  //SetYin
  if(flag==2)
  {
    display.clearDisplay();
    display.setTextSize(1); //Edited from "2" to "1"
    display.setTextColor(WHITE);
    display.setCursor(40,14); //Edited from (10, 28) to (40, 14)
    display.println("Set Y In");
    display.display(); 
    while(flag==2)
    {
    stepperposition(2);
    }
    stepper2.setCurrentPosition(0);
    YInPoint=stepper2.currentPosition();
  }
  //SetXout
  if(flag==3)
  {
    display.clearDisplay();
    display.setTextSize(1); //Edited from "2" to "1"
    display.setTextColor(WHITE);
    display.setCursor(40,14); //Edited from (10, 28) to (40, 14)
    display.println("Set X Out");
    display.display(); 
    while(flag==3)
    {
    stepperposition(1);
    Serial.println(stepper1.currentPosition());
    }
    XOutPoint=stepper1.currentPosition();
    
  }
  //SetYout
  if(flag==4)
  {
    display.clearDisplay();
    display.setTextSize(1); //Edited from "2" to "1"
    display.setTextColor(WHITE);
    display.setCursor(40,14); //Edited from (10, 28) to (40, 14)
    display.println("Set Y Out");
    display.display();
    while(flag==4)
    {
    stepperposition(2);
    }
    YOutPoint=stepper2.currentPosition();
    display.clearDisplay();
        
    // Go to IN position
    gotoposition[0]=XInPoint;
    gotoposition[1]=YInPoint;    
    display.clearDisplay();
    display.setCursor(38,14); //Edited from (8, 28) to (38, 14)
    display.println(" Preview ");
    display.display(); 
    stepper1.setMaxSpeed(3000);
    StepperControl.moveTo(gotoposition);
    StepperControl.runSpeedToPosition();
  }

  //Display Set Speed
  if(flag==5)
  {
    display.clearDisplay();
    display.setCursor(38,14); //Edited from (8, 28) to (38, 14)
    display.println("Set Speed");
    display.display();  
  }
  //Change Speed
  if(flag==6)
  {
    display.clearDisplay();
    SetSpeed();
  }
  //DisplayStart
  if(flag==7)
  {
    display.clearDisplay();
    display.setCursor(50,14); //Edited from (30, 27) to (30, 14)
    display.println("Start");
    display.display();
  }
  //Start
  if(flag==8)
  { 
    display.clearDisplay();
    display.setCursor(45,14); //Edited from (20, 27) to (45, 14)
    display.println("Running");
    display.display();
    Serial.println(XInPoint);
    Serial.println(XOutPoint);
    Serial.println(YInPoint);
    Serial.println(YOutPoint);

    gotoposition[0]=XOutPoint;
    gotoposition[1]=YOutPoint;
    stepper1.setMaxSpeed(setspeed);
    StepperControl.moveTo(gotoposition);
    StepperControl.runSpeedToPosition();
    flag=flag+1;
  }
  //Slide Finish
   if(flag==9)
   {
    display.clearDisplay();
    display.setCursor(45,14); //Edited from (24, 26) to (45, 14)
    display.println("Finish");
    display.display();
   }
  //Return to start
   if(flag==10)
   {
    display.clearDisplay();
    Home();
    flag=0;
   }  
}

```

---

<div class="post-metadata">

**Author:** ![djlonewolf](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/djlonewolf/32/1164060_2.png) [@djlonewolf](https://forum.arduino.cc/u/djlonewolf)\
**Post date:** [January 17, 2025, 12:03am UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/2 "2025-01-17T00:03:17Z")

</div>

![Slider](https://europe1.discourse-cdn.com/arduino/original/4X/0/2/5/025f9c6faf3a44715e4e17d95b4d887c3b66b290.gif)

---

<div class="post-metadata">

**Author:** ![zwieblum](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/zwieblum/32/427702_2.png) [@zwieblum](https://forum.arduino.cc/u/zwieblum)\
**Post date:** [January 17, 2025, 8:50am UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/3 "2025-01-17T08:50:38Z")

</div>

Mach' in deinen `if (flagh==9)) ...`-Block ein `flag=10;` rein.

---

<div class="post-metadata">

**Author:** ![djlonewolf](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/djlonewolf/32/1164060_2.png) [@djlonewolf](https://forum.arduino.cc/u/djlonewolf)\
**Post date:** [January 17, 2025, 6:32pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/4 "2025-01-17T18:32:28Z")

</div>

Okay das versteh ich gerade boch nicht sorry wie gesagt bin absoluter programmier anfänger.  
Soweit ich das verstehe ist das unter //Start mit if(flag==8) der Programmablauf also wo die Motoren hin und her laufen oder?

Und das darunter ab slide Finish könnte ich ja auch eigentlich einfach löschen da es da ja keine bewegung mehr gibt oder versteh ich das falsch ?

Und ich dachte um eine Endlose hin und her bewegung zu bekommen kann ich eine void loop funktion nutzen ??

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [January 17, 2025, 6:45pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/5 "2025-01-17T18:45:30Z")

</div>

> [@djlonewolf](#):
>
> (Das brauch ich nicht!! Soll einfach laufen bis ich Reset (sozusagen Reebot Arduino) drücke oder Stromzufuhr deaktiviertt wird.)

Das heisst, nach dem die Endpunkte und Koorrdinaten festgelegt sind, soll das Ding einfach hin und her fahren?

Das Problem ist, dass Du `flag` sowohl zwischendurch als auch mit einer Funktion `Switch()` veränderst.  
Davon abgesehen, das der Name ungeschickt gewählt ist.  
Da müsste man sich einarbeiten, was davon tatsächlich gebraucht wird.  
Aber es ist nicht unmöglich, das aufzulösen und ggfls. ein wenig aufzuräumen.

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [January 17, 2025, 6:48pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/6 "2025-01-17T18:48:21Z")

</div>

> [@zwieblum](#):
>
> `if (flagh==9)) ...`-Block ein `flag=10;`

Dann eher in dem Block `if (flag == 8)`  
die letzte Zeile  
`flag = flag +1;`  
ändern in `flag = 10;`

---

<div class="post-metadata">

**Author:** ![djlonewolf](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/djlonewolf/32/1164060_2.png) [@djlonewolf](https://forum.arduino.cc/u/djlonewolf)\
**Post date:** [January 17, 2025, 8:11pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/7 "2025-01-17T20:11:07Z")

</div>

Ganz genau! so soll es einfach hin und her fahren !

Flag und Switch versteh ich nicht so richtig.

Könntest du mir da helfen ? Vllt kann ich da auch noch was lernen.  
Weil der Code wurde zum projekt einfach bereit gestellt und ich soll es irgendwie umsetzen hauptsache es funktioniert relativ schnell so in der art.

---

<div class="post-metadata">

**Author:** ![djlonewolf](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/djlonewolf/32/1164060_2.png) [@djlonewolf](https://forum.arduino.cc/u/djlonewolf)\
**Post date:** [January 17, 2025, 8:13pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/8 "2025-01-17T20:13:12Z")

</div>

Was genau würde das Ändern nur der letzten Zeile in Flag=10; ändern ?

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [January 17, 2025, 8:26pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/9 "2025-01-17T20:26:37Z")

</div>

Wenn `flag == 8` true ist, dann durchläuft er die Phase "Running".  
Am Ende `flag = flag +1` wird flag dann 9 und damit wird automatisch als nächstes "Finish" ins display geschrieben und erst dann passiert möglicherweise was, wenn man in den Funktionsblock flag mit 10 besetzt -\> Was dazu führt, dass `Home()`ausgeführt wird und das flag auf 0 gesetzt.

Das heisst 9 kann ausgelassen werden und nach 8 kommt 10.

Ich muss mir aber erstmal ansehen, was da tatsächlich passiert, weil mir noch nicht klar ist, was switch und rotary da wann machen 🙂 Aber das wird...

---

<div class="post-metadata">

**Author:** ![djlonewolf](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/djlonewolf/32/1164060_2.png) [@djlonewolf](https://forum.arduino.cc/u/djlonewolf)\
**Post date:** [January 17, 2025, 8:38pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/10 "2025-01-17T20:38:24Z")

</div>

Okay das ist verständlich erklärt Danke.

Ja das wäre sehr nett und hilfreich.

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [January 17, 2025, 8:55pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/11 "2025-01-17T20:55:44Z")

</div>

Ok, ich habs hier auf dem Tisch.  
Lässt Du mir mal noch die bitmap.h zukommen?  
Sonst wird das nix richtiges, Ich rate ungern, was da drin steckt.

---

<div class="post-metadata">

**Author:** ![djlonewolf](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/djlonewolf/32/1164060_2.png) [@djlonewolf](https://forum.arduino.cc/u/djlonewolf)\
**Post date:** [January 17, 2025, 9:35pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/12 "2025-01-17T21:35:33Z")

</div>

Das kann ich leider erst morgen früh machen da Laptop auf arbeit steht. Wie soll ich dir die schicken geht das hier irgendwie oder als Drive link ?

---

<div class="post-metadata">

**Author:** ![djlonewolf](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/djlonewolf/32/1164060_2.png) [@djlonewolf](https://forum.arduino.cc/u/djlonewolf)\
**Post date:** [January 17, 2025, 9:42pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/13 "2025-01-17T21:42:26Z")

</div>

Ah jab sie doch hier noch gefunden

Hier kannst du sie aus meiner Drive laden

> **[bitmap.h](https://drive.google.com/file/d/1Qa5akAcWyNrhAa5Pf6RfL2rcG6siCgZV/view?usp=drivesdk)**
>
> Google Drive file.

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [January 18, 2025, 9:54pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/14 "2025-01-18T21:54:20Z")

</div>

Also ich werd nicht so richtig schlau, wann da was abläuft.  
Zum einen wird mit irgendeinem Interrupt, der vermutlich von irgendeinem Taster ausgelöst wird, `flag` weiter geschaltet, dann aber auch im Code selbst.

Was ist das für ein Button und was hat der Rotary-Encoder für eine Funktion?  
Kannst Du sagen, welche der Schritte da was machen und was Du brauchst?

---

<div class="post-metadata">

**Author:** ![djlonewolf](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/djlonewolf/32/1164060_2.png) [@djlonewolf](https://forum.arduino.cc/u/djlonewolf)\
**Post date:** [January 18, 2025, 10:11pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/15 "2025-01-18T22:11:43Z")

</div>

- also beim Anschalten fährt der slider zum Endlagentaster und aktiviert diesen
- auf dem bildschirm steht homing und wenn er betätigt ist bein setup
- dann drückt man auf den Rotary Encoder und der bildschirm sagt Set X in also den Startpunkt der Siderfahrt festlegen, durch drehen am Encoder -dann wieder auf den Encoder drücken
- dann Set Y in legt den Winkel der Kamera fest durch drehen am encoder und dann wider bestätigen durch drücken auf den Encoder
- das selbe dann für die 2. Endlage für beide Motoren
- dann folgt Speed und man dreht für die gewünschte geschwindikeit auch den encoder und bestätigt durch Draufdrücken
- und dann kommt Start und wenn man auf den encoder drückt fährt das vorher eingestellte Programm die Endlagen in der Geschwindigkeit ab
- leider aber nur 1 mal

---

<div class="post-metadata">

**Author:** ![djlonewolf](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/djlonewolf/32/1164060_2.png) [@djlonewolf](https://forum.arduino.cc/u/djlonewolf)\
**Post date:** [January 18, 2025, 10:13pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/16 "2025-01-18T22:13:31Z")

</div>

und mein ziel ist es ebend das das eingestellte programm dauerhaft läuft also nicht nach einer fahrt wieder aufhört.

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [January 18, 2025, 10:19pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/17 "2025-01-18T22:19:15Z")

</div>

ok, jetzt habs ichs wohl verstanden 😉  
Das, was da als "setup" gekennzeichnet ist, ist die Vorgabe 🤦‍♂️

Die Aufgabe ist die Einstellung bezubehalten und nach dem anfahren des Endpunktes wieder das homing zu machen, aber ohne das setup.  
Und danach sofort wieder anzufahren.

Das sollte machbar sein .

---

<div class="post-metadata">

**Author:** ![djlonewolf](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/djlonewolf/32/1164060_2.png) [@djlonewolf](https://forum.arduino.cc/u/djlonewolf)\
**Post date:** [January 18, 2025, 10:21pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/18 "2025-01-18T22:21:43Z")

</div>

ja genau so aber ermuss nicht Homing machen da ja Startpunkt auch festgelegt wird

homing ist nur für das erste Hochfahren sozusagen damit der Slider ebend sozusagen auf Position 0 steht und alles andere wird ja dann festgelegt

---

<div class="post-metadata">

**Author:** ![djlonewolf](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/djlonewolf/32/1164060_2.png) [@djlonewolf](https://forum.arduino.cc/u/djlonewolf)\
**Post date:** [January 18, 2025, 10:23pm UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/19 "2025-01-18T22:23:10Z")

</div>

er soll also nur zwischen den festgelegten Werten für Xin und Xout und Yin und Yout hin und her fahren

---

<div class="post-metadata">

**Author:** ![my\_xy\_projekt](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/my_xy_projekt/32/810062_2.png) [@my\_xy\_projekt](https://forum.arduino.cc/u/my_xy_projekt)\
**Post date:** [January 19, 2025, 7:03am UTC](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555/20 "2025-01-19T07:03:53Z")

</div>

Versuch mal flag 8 und 9 gegen den folgenden Codeteil zu tauschen.  
Vielleicht tuts ja was....

```arduino
  if (flag == 8)
  {
    display.clearDisplay();
    display.setCursor(45, 14); //Edited from (20, 27) to (45, 14)
    display.println("Running");
    display.display();
    Serial.println(XInPoint);
    Serial.println(XOutPoint);
    Serial.println(YInPoint);
    Serial.println(YOutPoint);
    gotoposition[0] = XOutPoint;
    gotoposition[1] = YOutPoint;
    stepper1.setMaxSpeed(setspeed);
    StepperControl.moveTo(gotoposition);
    StepperControl.runSpeedToPosition();
    flag++;
  }
  //Slide Finish
  if (flag == 9)
  {
    display.clearDisplay();
    display.setCursor(45, 14); //Edited from (24, 26) to (45, 14)
    display.println("Finish");
    display.display();
    gotoposition[0] = XInPoint;
    gotoposition[1] = YInPoint;
    stepper1.setMaxSpeed(setspeed);
    StepperControl.moveTo(gotoposition);
    StepperControl.runSpeedToPosition();
    flag--;
  }
```

Wenn das was tut, dann werd ich den Spaghetticode aufräumen 🙂

[Next page](https://forum.arduino.cc/t/anfanger-benotigt-hilfe-beim-code-kameraslider-loop-anstatt-1-durchgang/1343555.md?page=2)
