Hallo Zusammen,
ich habe einen Frästisch mit automatischer Höhenverstellung gebaut.
Mein Problem ist, dass der Antrieb in der Bewegung stockt sobald ein Wert an das I2C Display übermittelt wird.
Ich habe versucht das Problem in dem Video darzustellen.
Danke vorab für die Hilfestellung.
Hier ist der Code
#include <AH_EasyDriver.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
AH_EasyDriver stepper(200,8,9);
int StepCounter = 0;
int Stepping = false;
int counter = 0;
long previousMillis = 0;
long interval = 1000;
void setup() {
lcd.init();
lcd.init();
lcd.backlight();
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(10, OUTPUT);
stepper.setSpeedRPM(50);
}
void loop() {{
if (digitalRead(4) == HIGH and digitalRead(2) == LOW)
{stepper.setSpeedRPM(50);
stepper.move(1);
counter = counter + 1;}
if (digitalRead(5) == HIGH and digitalRead(3) == LOW)
{stepper.setSpeedRPM(50);
stepper.move(-1);
counter = counter - 1;}
if (digitalRead(7) == HIGH and digitalRead(2) == LOW)
{stepper.setSpeedRPM(50);
stepper.move(1);
//lcd.setCursor(0,0);
//lcd.print(" FRAESERWECHSEL ");
//lcd.setCursor(0,1);
//lcd.print(" WARTEN ");
}
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval)
{
previousMillis = currentMillis;
{
lcd.setCursor(7,1);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print(" Routerlift ");
lcd.setCursor(0,1);
lcd.print("Hoehe :");
lcd.setCursor(8,1);
lcd.print(counter/100);
lcd.setCursor(11,1);
lcd.print("mm ");
} }
if (digitalRead(6) == HIGH)
{
lcd.setCursor(0,0);
lcd.print(" KALIBRIERUNG ");
delay(100);
lcd.setCursor(0,1);
lcd.print(". ");
delay(100);
lcd.setCursor(0,1);
lcd.print("..");
delay(100);
lcd.setCursor(0,1);
lcd.print("...");
delay(100);
lcd.setCursor(0,1);
lcd.print("....");
delay(100);
lcd.setCursor(0,1);
lcd.print(".....");
delay(100);
lcd.setCursor(0,1);
lcd.print("......");
delay(100);
lcd.setCursor(0,1);
lcd.print(".......");
delay(100);
lcd.setCursor(0,1);
lcd.print("........");
delay(100);
lcd.setCursor(0,1);
lcd.print(".........");
delay(100);
lcd.setCursor(0,1);
lcd.print("..........");
delay(100);
lcd.setCursor(0,1);
lcd.print("...........");
delay(100);
lcd.setCursor(0,1);
lcd.print("............");
delay(100);
lcd.setCursor(0,1);
lcd.print(".............");
delay(100);
lcd.setCursor(0,1);
lcd.print("..............");
delay(100);
lcd.setCursor(0,1);
lcd.print("...............");
delay(100);
lcd.setCursor(0,1);
lcd.print("................");
delay(100);
lcd.setCursor(0,0);
stepper.move(-100);
delay(100);
stepper.move(+100);
delay(100);
lcd.print(" BEREIT ");
delay(1000);
counter = 0 ;}
if (digitalRead(7)== HIGH and digitalRead(2) == HIGH )
{digitalWrite(10, HIGH);
lcd.setCursor(0,0);
lcd.print(" FRAESERWECHSEL ");
lcd.setCursor(0,1);
lcd.print(" BEREIT ");
delay(10000);}
else
{digitalWrite(10, LOW);}
}}