Hey Leute, ich möhte jetzt einen Sensor mit meinen Arduino Uno in der SimulIDE verbinden. Ausgwählt habe ich den DS1621. Zur Schaltplan- und Firmwareerstellung habe ich die dazugehörigen Datenblätter gelesen und mir von ChatGPT zur Überprüfung einen Entwurf zeichnen/programmieren lassen. Dieser ist im Bild 1 dargestellt. Darin ist zu erkennen, dass die Adresse des Sensor's (Slaves) über A0, A1 und A2 vorgegeben wird. Zur Kommunikation über I²C ist Pin3 und Pin4 mit SDA und SCL verbunden, wobei in beide Leitungen ChatGPT zwei PullUp-Widerstände gezeichnet hat (keine Ahnung, woher es diese Information hat, aber in den Datenblättern habe ich nichts dazu gefunden??). Der ermittelte Temperaturwert Tout wird ja über 2 Bytes dargestellt und habe ich demzufolge den digitalen Eingangspin 4 zugeführt. Ist das so richtig? Die Firmware sieht wie folgt aus: #include <Wire.h> #define DS1621_ADDR 0x48 #define CMD_START_CONVERT 0xEE #define CMD_READ_TEMP 0xAA #define CMD_ACCESS_CONFIG 0xAC void setup() { // put your setup code here, to run once: pinMode(4, INPUT); Serial.begin(9600); Wire.begin(); Serial.println("DS1621 Temperaturmessung startet"); Wire.beginTransmission(DS1621_ADDR); Wire.write(CMD_START_CONVERT); Wire.endTransmission(); } void loop() { // put your main code here, to run repeatedly: float temp = readTemperature(); int wert = digitalRead(4); Serial.print("Temperatur: "); Serial.print(temp); Serial.println(" °C"); } float readTemperature(){ int temp_high = 0; int temp_low = 0; Wire.beginTransmission(DS1621_ADDR); Wire.write(CMD_READ_TEMP); Wire.endTransmission(); Wire.requestFrom(DS1621_ADDR, 2); if (Wire.available()>=2) { temp_high= Wire.read(); temp_low= Wire.read(); } float temperature = temp_high; return temperature; } Stimmt diese oder sind die von ChatGPT generierten Lösungen mit Vorsicht zu genießen? Kann ich die Aktualwerte aus der Firmware beim Laufen der Simulation irgendwie abfragen? In SimulIDE/Arduino IDE habe ich keinen Reiter dazu gefunden? Vielen Dank euch!
Peter schrieb: > Stimmt diese Probiere es aus, dann weisst du es. > oder sind die von ChatGPT generierten Lösungen mit Vorsicht > zu genießen? Immer: ja. Auf die Ausgaben von LLM ist kein Verlass. Vin soll mit Sicherheit nicht mit GND verbunden werden. Das ergibt keinen Sinn. > Ausgwählt habe ich den DS1621. Der I2C Bus kann ohne Pull-Up Widerstände nicht funktionieren. 100 Ohm ist falsch. 1-3 mA sollen bei Low Pegel fließen, also eher etwa 3 kOhm Vermutlich verwendest du ein Modul das neben dem Chip auch Widerstände enthält.
:
Bearbeitet durch User
Peter schrieb: > Zur Kommunikation über I²C ist Pin3 und Pin4 mit SDA und SCL verbunden, I2C liegt beim UNO auf A4 und A5, nicht 3 und 4
Zwieschen die Ausgaben würde ich eine Pause einbauen. Die Werte in den Variablen "wert" und "temp_low" werden nicht genutzt. Aktiviere alle Compiler Warnungen, der meldet sowas meistens.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
