Hi,
Ich versuche einen demultiplexer mit 3 Eingängen und 7 Ausgägen zu programmieren, leider klappt das irgentwie nicht. Die wahrheitstabelle soll so sein:
15 13 11 | 0 1 2 3 4 5 6
0 0 0 | 0 0 0 0 0 0 0
0 0 1 | 1 0 0 0 0 0 0
0 1 0 | 0 1 0 0 0 0 0
0 1 1 | 0 0 1 0 0 0 0
1 0 0 | 0 0 0 1 0 0 0
1 0 1 | 0 0 0 0 1 0 0
1 1 0 | 0 0 0 0 0 1 0
1 1 1 | 0 0 0 0 0 0 1
Ich habe dafür diesen code:
int wert = 0, wertv = 0;
void setup() {
// put your setup code here, to run once:
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(11, INPUT);
pinMode(13, INPUT);
pinMode(15, INPUT);
}
void loop() {
wert = 0;
if (digitalRead(11) == HIGH)
wert = wert + 1;
if (digitalRead(13) == HIGH)
wert = wert + 2;
if (digitalRead(15) == HIGH)
wert = wert + 4;
if (wert != wertv && wert >= 1) {
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(wert - 1, HIGH);
wertv = wert;
}
if (wert != wertv && wert == 0) {
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
wertv = wert;
}
}
Aber irgendwie funktioniert es noch nicht so, wie es soll...
Ich verwende einen Attiny 4313, Eingänge mit Pull Down widerständen.