Hallo zusammen
Ich habe heute meinen ersten Sketch soweit fertig gestellt!
Da ich noch nicht so viel Erfahrung habe, will ich mich mal schlau machen, womit ich mein Sketch noch verbessern oder sogar erweitern könnte.
Die Hauptfunktionen sind bis jetzt:
Taster1:
Einfacher Klick: Geschwindigkeit des Schrittmotors in 4 Stufen durchzuschalten
Doppelklick: Den Weg den der Schlitten zurücklegt, auch in 4 Längen zu unterteilen
Langes Drücken: Funktion (noch) nicht belegt
Taster2:
Einfacher Klick: Motor startet in 1. Richtung / Sliderende kann nicht überfahren werden
Doppelklick: Motor startet in die 2. Richtung / Slideranfang kann nicht überfahren werden
Langes Drücken: Motor fährt auf die "Parkposition", also auf 0 in meinem Fall
Und hier der gesamte Sketch:
#include <LiquidCrystal.h>
#include <OneButton.h>
#include <Stepper.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int SPMU = 32;
Stepper myStepper(SPMU, 6,7,8,9);
int sped = 300;
int distance = 500;
int distancemax = 2000;
int distancestep = distancemax/4;
int gohome = 0;
OneButton button1 = OneButton(10,false);
OneButton button2 = OneButton(13,false);
//-------------------------------------------------------------------------------------------------------------
void setup() {
lcd.begin(16, 2);
pinMode(10,INPUT);
pinMode(13,INPUT);
button1.attachClick(Speed_Click);
button1.attachDoubleClick(Distance_Click);
button2.attachClick(forward_Click);
button2.attachDoubleClick(Back_Click);
button2.attachDuringLongPress(GoHome_Click);
}
//-------------------------------------------------------------------------------------------------------------
void loop() {
myStepper.setSpeed(sped);
//Speed Button
button1.tick();
delay(10);
//Start Button
button2.tick();
delay(10);
//Speed Screen Setup
lcd.setCursor(0, 0);
lcd.print("Speed");
lcd.setCursor(6, 0);
if (sped == 300)
{lcd.print("1/4");}
if (sped == 500)
{lcd.print("2/4");}
if (sped == 700)
{lcd.print("3/4");}
if (sped == 900)
{lcd.print("4/4");}
//Distance Screen Setup
lcd.setCursor(0, 1);
lcd.print("Move");
lcd.setCursor(6, 1);
if (distance == distancemax/4)
{lcd.print("1/4");}
if (distance == distancemax/2)
{lcd.print("2/4");}
if (distance == distancemax/4*3)
{lcd.print("3/4");}
if (distance == distancemax/1)
{lcd.print("4/4");}
//Total Distance Screen Setup
lcd.setCursor(10, 1);
lcd.print("--");
lcd.setCursor(13, 1);
if (gohome == 0)
{lcd.print("0/4");}
if (gohome == distancemax/4)
{lcd.print("1/4");}
if (gohome == distancemax/2)
{lcd.print("2/4");}
if (gohome == distancemax/4*3)
{lcd.print("3/4");}
if (gohome == distancemax/1)
{lcd.print("4/4");}
}
//-------------------------------------------------------------------------------------------------------
void Speed_Click(){
if (sped < 900)
{
sped = sped + 200;
}
else
{
sped = 300;
}
}
void Distance_Click() {
if (distance < 2000)
{
distance = distance + 500;
}
else
{
distance = 500;
}
}
void forward_Click(){
if (gohome + distance - 1 < distancemax)
{
myStepper.step(distance);
gohome = gohome + distance;
}
}
void Back_Click(){
if (gohome - distance +1 > 0)
{
myStepper.step(-distance);
gohome = gohome - distance;
}
}
void GoHome_Click(){
myStepper.step(-gohome);
gohome = 0;
}
Für das, dass es mein erster Sketch ist bin ich ziemlich zufrieden damit.
Würde mich sehr über Vorschläge freuen.