Hey,
ich hab an einem A. UNO per I2C einen PCF8574AP hängen, den ich für Tastereingänge benutzen möchte. Aber ich hab das Problem, das ich im moment nur immer einen Taster gleichzeitig ausgelesen bekomme. Ich bräuchte aber das auch mehrere Taster gleichzeitig gedrück sein können und ich aulesen kann welche genau gedrückt sind.
Siehe Beispiel Code wo immer nur ein Taster auslesbar ist, wenn da ein zweiter gedrückt ist bräuchte ich ja "tausende" IF Abfragen Kombinationen !?
Hat jemand ne Idee wie ich das "kompakt" hinbekommen kann ?
Bin noch sehr neu in der µC Welt :~
Gruß
Jens
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define inputexpander B0111000 // Adresse des PCF8574 hier: PCF8574AP mit allen 3 Adress-Pins nach GND
#define outputexpander B0111001 // Adresse des PCF8574 hier: PCF8574AP mit A0 auf Hight, A2+3 auf GND
byte x=0;
byte y=0;
byte a=0;
void setup()
{
Wire.begin();
lcd.begin(16, 2);
Serial.begin(9600);
}
void loop()
{
Wire.beginTransmission(outputexpander); //Begin the transmission to PCF8574
Wire.write(B00000000); //Send the data to PCF8574
Wire.endTransmission(); //End the Transmission
Wire.requestFrom(inputexpander,1);
if(Wire.available()) //If the request is available
{
x=Wire.read(); //Receive the data
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(x,BIN);
Serial.println(x,BIN);
}
if(x<255) //If the data is less than 255
{
if (x==254) { lcd.setCursor(0, 0); lcd.print("Taster 1"); }; //P0
if (x==253)
{
Wire.beginTransmission(outputexpander); //Begin the transmission to PCF8574
Wire.write(B00010000); //Send the data to PCF8574
Wire.endTransmission(); //End the Transmission
};
}
delay(1000);
}