In einem Artikel habe ich eine interessante wie auch einfache Lösung gelesen, wie man viele Taster/Schalter über den Arduino einlesen kann, und dabei nur einen einzigen Pin belegt - ohne dafür zusätzlich Bauteile oder Hardware zu verwenden.
Die "Magie" hinter diesem kleinen Trick ist die Verwendung eines Spannungsteilers und dem differenzierten Einlesen des analogen Pins, der verwendet wird (siehe Schaltplan). Man erhält beim Drücken jedes Mikrotasters einen anderen Wert am Pin, da jeweils ein anderer Widerstandswert zwischen VCC und dem Pin angelegt ist. Um den Taster zu erkennen, prüft man nun einfach im Bereich, der zu erwarten ist. (Diese Werte müssen experimentell ermittelt werden.)
#define PIN_INPUT A1
void setup()
{
Serial.begin(9600);
}
void loop()
{
int pinValue = analogRead(PIN_INPUT);
Serial.print("Button ");
if (pinValue<1024 && pinValue>1015) {
Serial.print("1");
} else if (pinValue<550 && pinValue>500) {
Serial.print("2");
} else if (pinValue<350 && pinValue>320) {
Serial.print("3");
} else if (pinValue<270 && pinValue>240) {
Serial.print("4");
} else if (pinValue<220 && pinValue>190) {
Serial.print("5");
} else if (pinValue<180 && pinValue>160) {
Serial.print("6");
} else if (pinValue<155 && pinValue>130) {
Serial.print("7");
}
Serial.println(": " + String(pinValue));
delay(100);
}
zurück