Hallo,
ich benötige Hilfe für ein Schulprojekt, in dem ich die Daten einer digitalen Messuhr von KS Tools mithilfe von einem USB Kabel auslesen.
Da ich noch keine großen Kenntnisse mit der Arduino Programmierung habe, habe ich ChatGPT um Rat gebeten, aber keine wirklich hilfreiche Antwort bekommen.
Ich habe folgenden Code verwendet:
// Arduino Pin-Belegung
const int rxPin = 0; // RX-Pin des Arduino, an den die Messuhr angeschlossen ist
const int txPin = 1; // TX-Pin des Arduino, an den die Messuhr angeschlossen ist
const int ledPin = 13; // Pin des Arduino, an dem die LED angeschlossen ist
void setup() {
// Serielle Kommunikation mit einer Baudrate von 9600 starten
Serial.begin(9600);
// Messuhr initialisieren
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
// LED-Pin als Ausgang festlegen
pinMode(ledPin, OUTPUT);
}
void loop() {
// Messdaten von der Messuhr lesen
String messdaten = leseMessdaten();
// Messdaten über die serielle Schnittstelle senden
Serial.println(messdaten);
// LED blinken lassen
blinkLed();
// Eine kurze Verzögerung, um die serielle Übertragung zu stabilisieren
delay(100);
}
String leseMessdaten() {
// Puffer zum Speichern der gelesenen Daten
char buffer[32];
memset(buffer, 0, sizeof(buffer));
// Bits von der Messuhr lesen und in den Puffer schreiben
for (int i = 0; i < 31; i++) {
// Die Messuhr über den TX-Pin anweisen, das nächste Bit zu senden
digitalWrite(txPin, HIGH);
delayMicroseconds(100);
// Das gelesene Bit vom RX-Pin lesen und im Puffer speichern
buffer[i] = digitalRead(rxPin) == HIGH ? '1' : '0';
// Die Messuhr über den TX-Pin anweisen, zur nächsten Bit-Position zu wechseln
digitalWrite(txPin, LOW);
delayMicroseconds(100);
}
// String erstellen und führende Nullen entfernen
String messdaten = String(buffer);
messdaten.trim();
return messdaten;
}
void blinkLed() {
digitalWrite(ledPin, HIGH); // LED einschalten
delay(500); // Eine halbe Sekunde warten
digitalWrite(ledPin, LOW); // LED ausschalten
delay(500); // Eine halbe Sekunde warten
}
Ausgeschrieben bekomme ich dabei nur einser, teilweise ändert sich die Ausgabe bei Betätigen der Messuhr. Ich habe das Prinzip der Messuhrdaten verstanden, bekomme aber nichts nennenswertes heraus..
Da ich absolut neu auf dem Gebiet bin bräuchte ich hierbei Hilfe von Profis wie euch. Wäre das möglich?
Gibt es weitere Informationen die ihr hierzu benötigt?