ich hab ein einfachen hexadezimal-drehcodierschalter. Den wollte ich auslesen und für jede zahl bzw. Buchstabe ein anderes delay haben (reicht aber auch erst mal die Zahlen und Buchstaben des Schalters am seriellen Monitor anzuzeigen) hab zuerst an ein Switch-Case oder If-Befehl gedacht. Bin noch ziemlicher Anfänger. Hat einer nh Idee wie ich das realisiere? Danke schon mal
die Dinger haben doch meistens einen Pin (C) der je nach Stellung mit den anderen 4 Pins verbunden wird.
Also bei "0" mit keinem, bei "1" mit dem 1. Pin, bei "2" mit dem 2. Pin, bei "3" mit Pin 1 und 2 verbunden ist.
1 = 0001
2 = 0010
3 = 0011
4 = 0100 ...
Du musst also die 4 Datenpins des Schalters mit 4 Pins des Arduino auslesen.
Da der Arduino PullUps hat, den gemeinsamen Pin (C) auf GND, dann hast Du bei "0" an einem Pin eine logische "1" an Pin 1 oder 2 oder 3 oder 4 je nach Schalterstellung. Es gibt auch Schalter mit umgekehrter Logik.
Du musst also die 4 Datenpins des Schalters mit 4 Pins des Arduino auslesen.
Da der Arduino PullUps hat, den gemeinsamen Pin (C) auf GND, dann hast Du bei "0" an einem Pin eine logische "1" an Pin 1 oder 2 oder 3 oder 4 je nach Schalterstellung.
Gruß André
also ich denke mal ich lese die Pins mit digitalRead aus. wie bekomme ich die ausgelesenen werte dann ins delay?
wie HotSystems schon geschrieben hat versuchst Du das am besten erst mal mit if ...else...
Die 4 Eingänge würde ich erst mal einlesen und auf bool Werte schreiben.
Die Tabelle nach der du vorgehen must um dann die 4 bool loisch verunden,kannst Du dem Datenblatt entnehmen. Inerhalb der if klammer kannst Du dann machen was Du willst und z.B. eine Variable mit einem Wert versorgen.
der Schnipsel unten ist nicht komplett !!!
IDE / Hilfe / Referenz da findest Du alles.
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
// ist nicht komplett !!!
bool w1 = !digitalRead(pin3); // invertiert lesen damit positive Logik usw. für w2,w3,w4
if (w1 && !w2 && !w3 && !w4) {
wert = 1;
}
else (w1 && w2 && !w3 && !w4) {
wert = 2;
}
}