Hallo zusammen,
ich taste mich langsam in einzelnen Blöcken an mein aktuelles Projekt ran und bin momentan etwas irritiert:
Ich habe 8 Taster via PCF8574 und I2C am Uno hängen und schalte damit 8 Ausgänge vom Uno, dabei Toggle ich die Ausgänge damit die Taster wie Schalter funktionieren.
So weit so gut, wenn ich allerdings den SerialMonitor (IDE 1.0.1) öffne werden alle bereits eingeschalteten Ausgänge abgeschaltet.
Ist das normal?
Und wenn ja, was passiert bei einer anderen Kommunikation auf der seriellen Schnittstelle, dasselbe? Denn dann hätte ich ein massives Problem, da die Ausgänge später außerdem noch über die serielle Schnittstelle per DMX via MAX485 geschaltet werden sollen. Oder habe ich einfach nur in meinem Testsketch Murks gebaut?
#include <Wire.h>
#define acPCF (0x20)
byte acInputs = 0;
int i;
void setup() {
Serial.begin(9600);
Wire.begin();
for (i=2; i<=9; i++) {
pinMode(i, OUTPUT);
}
}
void loop() {
readACdata();
}
void readACdata() {
Wire.requestFrom(acPCF, 1);
if (Wire.available()) {
acInputs = Wire.read();
delay(200); //debouncing ?
}
Serial.println(acInputs, BIN);
setOut(acInputs);
}
void setOut(byte inputs) {
for (i=0; i<=8; i++) {
if (bitRead(inputs,i) == 0) {
if (digitalRead(i+2) == LOW) { //toggle
digitalWrite(i+2, HIGH);
} else {
digitalWrite(i+2, LOW);
}
}
}
}
Und gleich noch eine Frage zum debouncing, wo setze ich da an? Die momentane Stelle mit dem delay(200)? oder woanders? Irgendwie werde ich da nicht so richtig glücklich damit.
Wäre evtl. ein Hardwaredebouncing - grade im Hinblick, daß ja auch noch die DMX-Leserei dazukommt evtl. vernünftiger?
Grüßle Bernd