Ich gebe ja zu, dass mir nicht immer ganz klar ist, was in so einem Programm abläuft, aber das
i = simpleui.getUInt();
simpleui.toString(i, buffer, 20);
char *number_string = buffer;
stammt nicht von mir, sondern ist Bestandteil eines Menüs aus dem Englischsprachigen Forum. Sei es wie es will, ich lasse das jetzt erstmal, da ich auf diesen Weg sicher bin, Integers zu erhalten und diese umbenennen zu können.
Ich stehe aber jetzt wieder da wie die Kuh vorm Berg.
Habe mal nach viel lesen und Vergleich mit anderen Programmen, versucht, den ersten Programmpunkt (shoot) in das Menu einzubinden. Funktioniert aber nicht:
-
In void shoot() wird "Fotos" über Serial.println nicht angezeigt (wenn ich das an anderer Stelle anzeigen lasse, funktioniert das)
-
void shoot() wird nicht gestartet (was evtl. damit zu tun haben kann, dass "Foto" hier leer ist).
Hinweis: zum starten von shoot und weiteren Funktionen wird eine zweite Tasterreihe an A1 verwendet.
Bitte um eure geschätzte Hilfe. Hier das bisherige Menu.
#include <Stepper.h>
#include <LiquidCrystal.h>
#include <SimpleUI16x2.h>
//CONFIGURATION/////////////////////////////////////////////
LiquidCrystal lcd(8,9,4,5,6,7);
SimpleUI16x2 simpleui(&lcd,getButton);
//Pins fuer Schrittmotor
int motorPin1 = 0; // Blue - 28BYJ48 pin 1
int motorPin2 = 1; // Pink - 28BYJ48 pin 2
int motorPin3 = 2; // Yellow - 28BYJ48 pin 3
int motorPin4 = 3; // Orange - 28BYJ48 pin 4
// Red - 28BYJ48 pin 5 (VCC)
int ledPin = 13; //Ausloeser fuer kamera
int sensorPin = A1;
int sensorValue = 0;
unsigned int x;
unsigned int Fotos;
#define STEPS 2048 //Number of steps per revolution
//The pin connections need to be 4 pins connected
// to Motor Driver In1, In2, In3, In4 and then the pins entered
// here in the sequence 1-3-2-4 for proper sequencing of 28BYJ48
Stepper small_stepper(STEPS, motorPin1, motorPin3, motorPin2, motorPin4);
int Steps2Take;
//Drucktasten für Menuwahl und Zahleneingabe. Ggf anpassen.
uint8_t getButton(){
int adc_key_in = analogRead(0);
if (adc_key_in > 790) return BUTTON_NONE;
if (adc_key_in < 50) {
return BUTTON_RIGHT;
}
if (adc_key_in < 195) {
return BUTTON_UP;
}
if (adc_key_in < 350) {
return BUTTON_DOWN;
}
if (adc_key_in < 555) {
return BUTTON_LEFT;
}
if (adc_key_in < 790) {
return BUTTON_SELECT;
}
return BUTTON_NONE;
}
//////////////////////////////////////////////////////////////
void setup(){
simpleui.write("Hello","World!");
delay(1000);
simpleui.write("Hold any button");
simpleui.waitButton();
simpleui.write("Release Button");
simpleui.waitButtonRelease();
simpleui.clear();
delay(1000);
Serial.begin(9600);
}
void loop(){
char buffer[20];
uint16_t i;
char* menu[] = {"Input Fotos", "Input Schritte", 0}; //last entry has to be 0
switch(simpleui.showMenu("titel",menu)){
case 0:
{
i = simpleui.getUInt();
simpleui.toString(i, buffer, 20);
//char in int konvertieren
char *number_string = buffer;
unsigned int Fotos = atoi (number_string);
simpleui.write(buffer);
simpleui.waitButton();
}
break;
}
sensorValue = analogRead(sensorPin);
if (sensorValue <50)
{
shoot();
}}
void shoot()
{
for (unsigned int x=0; x<Fotos; x++)
Serial.println(Fotos);
{
delay(500);
digitalWrite(ledPin, HIGH); //Kamera Auslösen
delay(200);
digitalWrite(ledPin, LOW); //Auslöseverzögerung SVA abwarten
delay(500);
small_stepper.setSpeed(8); // max.14
Steps2Take = 50; // Rotate CW 1 step 0.49µm
small_stepper.step(Steps2Take);
delay(5); //Wartezeit für Blitzaufladung und Bildspeicherung
}}
Danke für Eure Hinweise
Bernhard