Hallo,
ich versuche gerade einen Zubehördecoder mit der nmraDcc.lib zu erstellen. Das schalten der Ausgänge funktioniert schon.
Was ich nicht hin bekomme, ist das zurück lesen der CV's. Das Schreiben funktioniert. Der ACK-Impuls wird nicht generiert. Im Seriellen Monitor kommt keine Anzeige "ACK".
Meine Zentrale ist eine Ecos.
Kann mir jemand helfen?
Micha
#include <NmraDcc.h>
#define DCC_PIN 2
#define ACK_PIN 5
#define RED_LED 4
#define GREEN_LED 3
#define DECODER_ADDR 521
NmraDcc Dcc;
void notifyDccAccTurnoutOutput(uint16_t Addr, uint8_t Direction, uint8_t OutputPower) {
if(Addr == DECODER_ADDR) {
if(Direction == 0) {
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, LOW);
} else {
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, HIGH);
}
}
Serial.print("Address: "); Serial.println(Addr);
Serial.print("Direction: "); Serial.println(Direction);
Serial.print("OutputPower: "); Serial.println(OutputPower);
Serial.print("CV 51: "); Serial.println(Dcc.getCV(51));
Serial.println("--------------------");
}
void notifyCVAck(void) {
Serial.println("ACK");
digitalWrite(ACK_PIN, HIGH);
delay(8);
digitalWrite(ACK_PIN, LOW);
}
void setup() {
Serial.begin(115200);
pinMode(ACK_PIN, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, HIGH);
Dcc.pin(digitalPinToInterrupt(DCC_PIN), DCC_PIN, false);
Dcc.init(MAN_ID_DIY, 2, FLAGS_DCC_ACCESSORY_DECODER | FLAGS_OUTPUT_ADDRESS_MODE, 0);
Dcc.setCV(CV_ACCESSORY_DECODER_ADDRESS_LSB, DECODER_ADDR & 0xFF);
Dcc.setCV(CV_ACCESSORY_DECODER_ADDRESS_MSB, DECODER_ADDR >> 8);
}
void loop() {
Dcc.process();
}