das mit den anderen pins hat nicht für die analoge abfrage der pins funktioniert. Nun habe ich 4 digitale GPIOS genommen (16,17,21,22) und frage diese mit dem code ab:
Code:
//board "node32s"
// RGB LED
#define ledPin_bl 19
#define ledPin_gn 23
#define ledPin_rt 5
//tastenfeld
#define taste_1 21
#define taste_2 22
#define taste_3 16
#define taste_4 17
//int ausgang_1 = 13;
boolean zustand_taste_1 = LOW;
boolean zustand_taste_2 = LOW;
boolean zustand_taste_3 = LOW;
boolean zustand_taste_4 = LOW;
#include <SoftwareSerial.h>
SoftwareSerial BTserial(18, 26); //9,10
void setup()
{
Serial.begin(115200);
// pinMode(ausgang_1, OUTPUT);
//tastenfeld
pinMode(taste_1, INPUT);
pinMode(taste_2, INPUT);
pinMode(taste_3, INPUT);
pinMode(taste_4, INPUT);
//RGB LED
pinMode(ledPin_bl, OUTPUT);
pinMode(ledPin_gn, OUTPUT);
pinMode(ledPin_rt, OUTPUT);
BTserial.begin(115200);
}
void loop()
{
zustand_taste_1 = digitalRead(taste_1);
zustand_taste_2 = digitalRead(taste_2);
zustand_taste_3 = digitalRead(taste_3);
zustand_taste_4 = digitalRead(taste_4);
if (zustand_taste_1 == HIGH)
{
digitalWrite(zustand_taste_1, HIGH);
BTserial.println("e");
digitalWrite(ledPin_bl, HIGH);
//digitalWrite(ledPin_rt, HIGH);
delay(500);
digitalWrite(ledPin_bl, LOW);
//digitalWrite(ledPin_rt, LOW);
delay(500);
Serial.println("taste 1 gedrückt");
delay(1000);
}
if (zustand_taste_2 == HIGH)
{
digitalWrite(zustand_taste_2, HIGH);
BTserial.println("f");
digitalWrite(ledPin_rt, HIGH);
delay(500);
digitalWrite(ledPin_rt, LOW);
delay(500);
Serial.println("taste 2 gedrückt");
delay(1000);
}
if (zustand_taste_3 == HIGH)
{
digitalWrite(zustand_taste_3, HIGH);
BTserial.println("g");
digitalWrite(ledPin_gn, HIGH);
delay(500);
digitalWrite(ledPin_gn, LOW);
delay(500);
Serial.println("taste 3 gedrückt");
delay(1000);
}
if (zustand_taste_4 == HIGH)
{
digitalWrite(zustand_taste_4, HIGH);
BTserial.println("h");
digitalWrite(ledPin_rt, HIGH);
digitalWrite(ledPin_gn, HIGH);
delay(500);
digitalWrite(ledPin_gn, LOW);
digitalWrite(ledPin_rt, LOW);
delay(500);
Serial.println("taste 4 gedrückt");
delay(1000);
}
}
die abfrage als solche funktioniert nun einwandfrei, ein anderes problem tauchte auf:
die tasten (es ist ein folientastenfeld) verhalten sich nun als induktive tasten, will heissen ich muss sie gar nicht drücken, sondern nur mit dem finger in die nähe kommen und schon schalten sie. Ist ungünstig, weil ich eine haptische rückmeldung über das drücken einer taste brauche
Ich glaube, die pins sind zu empfindlich. Wie kann ich diese empfindlichkeit reduzieren?
btw: wenn ich die pindefinition um "_PULLUP" ergänze, werden die tasten der reihe nach durchgeschaltet, ohne das man was tut...
Lesezeichen