Hallo erst mal an alle,
ich heiße Jürgen bin 50 Jahre und purer Anfänger in der ArduinoWelt
Warum ich Hilfe brauche... ich bastle gerade an einem Turntable für die 360° Fotografie und der Arduino Uno macht nicht was ich will
Ich möchte ein Menü am LCD ausgeben, wo ich wählen kann wie viele Photos ich schießen möchte... 8/12/24/32 etc. Der Schrittmotor fährt mir dann die Schritte/Positionen an.. klappt ohne Menü bereits bestens.
Soooo... ich hab da jetzt 4 Taster... UP/DOWN/SELECT und den einen Taster(für weiteres Photo) für den nächsten Schritt an zu fahren.
Heißt, ich wähle im Menü "Programm 24"... also 24 Photos... dann schieße ich das erste Photo... drücke dann den Taster um das zweite Photo zu schießen usw. (am Ende sollte er dann wieder ins Menü zurück)
Ich weis nicht wie, ich das anpacken soll?? Vielleicht hat jemand nur eine Ansatz für mich
Hier mal der Versuch Sketch:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Menueführung
int upButton = 7;
int downButton = 6;
int selectButton = 4;
int menu = 1;
int LEDblau = 13; // CNC Shield Spin Dir nur zum testen
// Stepper und Pins
int ENA = 8; // EnabelPin
int STP = 2; // StepPin
int DIR = 5; // DIR Uhrzeigersinn
int stepCounter;
int steps;
// Taster für Start der Umdrehungen/Schritte / am Shield GND = GND rechts unten
int TasterStart = 3; // Pin am CNC Shield Y-Achse STP
int ZaehlerStart = 0; // Zahler für TasterStart
int set = 0; // Merker
////////////////////////////////////////////////////////////
void setup() {
// Stepper Pins setzen
pinMode(ENA, OUTPUT); // Enable ENA
pinMode(STP, OUTPUT); // Step STP
pinMode(DIR, OUTPUT); // Richtung DIR
digitalWrite(ENA,LOW);
// Led und Taster für WeiterSchritt
pinMode(LEDblau, OUTPUT); // Led
pinMode(TasterStart, INPUT); // Taster der die Schritte am Stepper auslöst
digitalWrite(TasterStart, HIGH); // Taste geöffneter
// LCD und Menütasten
lcd.init();
lcd.backlight();
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
pinMode(selectButton, INPUT_PULLUP);
updateMenu();
}
void loop() {
if (!digitalRead(downButton)){
menu++;
updateMenu();
delay(100);
while (!digitalRead(downButton));
}
if (!digitalRead(upButton)){
menu--;
updateMenu();
delay(100);
while(!digitalRead(upButton));
}
if (!digitalRead(selectButton)){
executeAction();
updateMenu();
delay(100);
while (!digitalRead(selectButton));
}
}
void updateMenu() {
switch (menu) {
case 0:
menu = 1;
break;
case 1:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(">Programm 8 Photos");
lcd.setCursor(0, 1);
lcd.print(" Programm 12 Photos");
lcd.setCursor(0, 2);
lcd.print(" Programm 24 Photos");
lcd.setCursor(0, 3);
lcd.print(" Programm 32 Photos");
break;
case 2:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Programm 8 Photos");
lcd.setCursor(0, 1);
lcd.print(">Programm 12 Photos");
lcd.setCursor(0, 2);
lcd.print(" Programm 24 Photos");
lcd.setCursor(0, 3);
lcd.print(" Programm 32 Photos");
break;
case 3:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Programm 8 Photos");
lcd.setCursor(0, 1);
lcd.print(" Programm 12 Photos");
lcd.setCursor(0, 2);
lcd.print(">Programm 24 Photos");
lcd.setCursor(0, 3);
lcd.print(" Programm 32 Photos");
break;
case 4:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Programm 8 Photos");
lcd.setCursor(0, 1);
lcd.print(" Programm 12 Photos");
lcd.setCursor(0, 2);
lcd.print(" Programm 24 Photos");
lcd.setCursor(0, 3);
lcd.print(">Programm 32 Photos");
break;
case 5:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(">Programm 64 Photos");
lcd.setCursor(0, 1);
lcd.print(" Programm 94 Photos");
lcd.setCursor(0, 2);
lcd.print(" Programm 193 Photos");
lcd.setCursor(0, 3);
lcd.print(" Programm 360 Grad");
break;
case 6:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Programm 64 Photos");
lcd.setCursor(0, 1);
lcd.print(">Programm 94 Photos");
lcd.setCursor(0, 2);
lcd.print(" Programm 193 Photos");
lcd.setCursor(0, 3);
lcd.print(" Programm 360 Grad");
break;
case 7:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Programm 64 Photos");
lcd.setCursor(0, 1);
lcd.print(" Programm 94 Photos");
lcd.setCursor(0, 2);
lcd.print(">Programm 193 Photos");
lcd.setCursor(0, 3);
lcd.print(" Programm 360 Grad");
break;
case 8:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Programm 64 Photos");
lcd.setCursor(0, 1);
lcd.print(" Programm 94 Photos");
lcd.setCursor(0, 2);
lcd.print(" Programm 193 Photos");
lcd.setCursor(0, 3);
lcd.print(">Programm 360 Grad");
break;
case 9:
menu = 8;
break;
}
}
void executeAction() {
switch (menu) {
case 1:
action1();
break;
case 2:
action2();
break;
case 3:
action3();
break;
case 4:
action4();
break;
case 5:
action5();
break;
case 6:
break;
case 7:
action7();
break;
case 8:
action8();
break;
}
}
//// void actionX()
///////////////// 8 Photos /////////////////
void action1() {
steps = 80;
lcd.clear();
lcd.setCursor(0,0);
lcd.print(">Executing #8");
lcd.setCursor(0, 1);
lcd.print(steps);
if (!digitalRead(TasterStart) == LOW && set == 0) {
ZaehlerStart++;
lcd.setCursor(6,3);
lcd.print( ZaehlerStart );
set=1;
}
if (!digitalRead(TasterStart) == HIGH && set == 1) {
delay(500);
set=0;
}
for(stepCounter = 0; stepCounter < steps; stepCounter++)
{
// LED blinkt
digitalWrite(LEDblau, HIGH);
delay(500);
digitalWrite(LEDblau, LOW);
delay(500);
// Stepper
digitalWrite(STP,HIGH);
delayMicroseconds(500);
digitalWrite(STP,LOW);
delayMicroseconds(500);
}
}
///////////////// 12 Photos /////////////////
void action2() {
steps = 12;
lcd.clear();
lcd.print(">Executing #12");
lcd.setCursor(0, 1);
lcd.print(steps);
delay(1500);
}
void action3() {
steps = 24;
lcd.clear();
lcd.print(">Executing #24");
lcd.setCursor(0, 1);
lcd.print(steps);
delay(1500);
}
void action4() {
lcd.clear();
lcd.print(">Executing #32");
delay(1500);
}
void action5() {
lcd.clear();
lcd.print(">Executing #64");
delay(1500);
}
void action6() {
lcd.clear();
lcd.print(">Executing #94");
delay(1500);
}
void action7() {
lcd.clear();
lcd.print(">Executing #193");
delay(1500);
}
void action8() {
lcd.clear();
lcd.print(">Executing #360 Grad");
delay(1500);
}
Ich weis, könnte sicher besser programmiert sein, aber ich bin ja erst noch am START
Bitte, nehmt mich nicht zu sehr in die Mangel
Vielen Dank für die Tips.
Gruß
Jugii