Hallo zusammen,
ich habe ein Problem. Ich möchte gerne eine Folientastatur abfragen. Da das Programm leider viel zu groß ist, habe ich hier ein kleines Beispiel, dass den Fehler zeigt. An PIN 6 ist der “SELECT”-Button angeschlossen. Mit diesem Taster möchte ich vom Automatikmodus in die “PAUSE” wechseln. Wenn ich diesen drücke, dann lande ich augenblicklich wieder in dem Automatikmodus. Ich verstehe nicht woran es liegt. Die Tastatur-Function liefert Zähler = 0 bei keinem Tastendruck. Der Wert muss mind. 25 erreichen, damit ein Sprung durchgeführt wird.
Vielen Dank für die Hilfe!
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int counter =0; //Hilfszähler
int buttonState = 0; //Variable für die Taster
int buttonnumber; // welcher Button soll abgefragt werden?
int Button; //Button;
int button; //Button;
const int AUTO = 2; // Pin an dem die AUTO Taste angeschlossen ist
const int MENU = 3; // Pin an dem die MENÜ Taste angeschlossen ist
const int LEFT = 4; // Pin an dem die LEFT Taste angeschlossen ist
const int RIGHT = 5; // Pin an dem die RIGHT Taste angeschlossen ist
const int SELECT = 6; // Pin an dem die SELECT Taste angeschlossen ist
const int ONOFF = 7; // Pin an dem die ONOFF Taste angeschlossen ist
const int LED = 8; // Pin an dem die LED angeschlossen ist
unsigned long lastDebounceTime = 0; // the last time the output pin was toggled
unsigned long debounceDelay = 50; // the debounce time; increase if the output flickers
int ledState = HIGH; // the current state of the output pin
int lastButtonState = LOW; // the previous reading from the input pin
void setup()
{
//Initialisieren des Displays
lcd.init();
//Aktivieren der Hintergrundbeleuchtung
lcd.backlight();
pinMode(AUTO, INPUT); //AUTO
pinMode(MENU, INPUT); //MENU
pinMode(LEFT, INPUT); //LEFT
pinMode(RIGHT, INPUT); //RIGHT
pinMode(SELECT, INPUT); //SELECT
pinMode(ONOFF, INPUT); //ON/OFF
pinMode(LED, OUTPUT); //LED
}
void loop()
{
//**************************************************************************************************
Automatikmodus:
Button= SELECTBUTTON2(SELECT);
//DEBUG
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print(Button);
lcd.setCursor(5, 0);
lcd.print(SELECT);
lcd.setCursor(10, 0);
lcd.print("AU");
if (Button>25)
{
Button=0;
goto PAUSE;
}
delay(100);
goto Automatikmodus;
//Pause Menü
PAUSE:
lcd.setCursor(0, 0);
lcd.print("PAUSE ");
digitalWrite(LED, HIGH);
lcd.print(SELECT);
button=SELECTBUTTON2(SELECT);
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print(Button);
lcd.setCursor(5, 0);
lcd.setCursor(10, 0);
lcd.print("P1");
if (button>25);
{
button=0;
goto Automatikmodus;
}
delay(100);
goto PAUSE;
} //Ende VOID Main!!!!!!!!!!!!!
int SELECTBUTTON2 (int addr)
{
int reads;
int Erg;
Erg=0;
reads = digitalRead(addr);
if (reads==LOW)
{
wiederholen:
reads = digitalRead(addr);
if (reads==LOW)
{
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(Erg);
delay (10);
Erg=Erg+1;
goto wiederholen;
}
return Erg;
}
Erg=0;
delay (10);
return Erg;
}