/*
Forum: https://forum.arduino.cc/t/alkoholtestsensor-ze29a-c2h5oh-mit-arduino-verbinden-und-daten-lesen/1344484
Wokwi: https://wokwi.com/projects/420536876646490113
*/
const byte status = 0x31; // Werte von 0x31 bis 0x37 sind definiert
void setup() {
Serial.begin(115200); // Für die Kommunikation mit dem PC
Serial1.begin(9600);
Serial2.begin(9600);
Serial.println("Initialisierung des Sensors...");
delay(2000); // Wartezeit für Stabilisierung
}
void loop() {
// Sende Befehl zum Lesen des Status
byte command[] = {0xFF, 0x01, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A};
Serial2.write(command, sizeof(command));
delay(100);
// Empfange Antwort
if (Serial1.available()) {
byte response[9];
Serial1.readBytes(response, 9);
// Hier zum Testen
response[2] = status;
Serial.println("Antwort des Sensors:");
for (int i = 0; i < 9; i++) {
Serial.print("0x");
Serial.print(response[i], HEX);
Serial.print(" ");
}
Serial.println();
// Auswertung der Statusdaten
if (response[2] == 0x31) {
Serial.println("Sensor ist im Leerlauf.");
} else if (response[2] == 0x32) {
Serial.println("Sensor im Aufwärmmodus.");
} else if (response[2] == 0x33) {
Serial.println("Sensor wartet auf Blasen.");
} else if (response[2] == 0x34) {
Serial.println("Sensor im Blasmodus.");
} else if (response[2] == 0x37) {
Serial.println("Sensor zeigt Testergebnisse an.");
} else {
Serial.println("Unbekannter Status.");
}
}
delay(1000);
}