ich bin neu hier im Forum und fange direkt mal an worum es geht.
Ich lese mit einem Adruino die Sensor Daten eines Hygrometers aus. Diese habe ich im Sketch des Adruinos schon in Prozent umgewandelt.
Jetzt wollte ich mit der gegenstelle, aktuell mein Notebook, die Daten mit Python empfangen und bearbeiten.
Bisher empfange ich die Daten und nun habe ich es geschafft das die Ergebnisse auch alle in eine output.txt gespeichert werden. Weiteres habe ich später vor. Nur denke ich das mein aktuelles Python Skript nicht wirklich korrekt ist, auch wenn es gerade funktioniert. Vieleicht mag da ja mal jemand rüber schauen.
Python code:
Code: Alles auswählen
import serial
serial_port = 'com3';
baud_rate = 9600;
datei_name = "output.txt";
datei = open("output.txt", "a+")
ser = serial.Serial(serial_port, baud_rate)
while True:
line = ser.readline()
line = line.decode("utf-8")
print(line)
datei.write(line)
datei.close()
datei = open("output.txt", "a+")
"datei = open("output.txt", "a+")"
Ich habe allerdings das Gefühl das dieser Code fusch ist und man es bestimmt nicht so macht.
Ich bin gespannt auf eure Ratschläge.

Zur Vollständigkeit hier nochmal der Adruino Sketch:
Code: Alles auswählen
#include "SevSeg.h" //Die vorher hinzugefügte Library laden
SevSeg sevseg; //Ein sieben Segment Objekt initialisieren
const int dry = 830; // value for dry sensor
const int wet = 430; // value for wet sensor
void setup()
{
Serial.begin(9600);
byte numDigits = 3; //Hier wird die Anzahl der Ziffern angegeben
byte digitPins[] = {2, 3, 4, 5}; //Die Pins zu den Ziffern werden festgelegt
byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; //Die Pins zu den //Segmenten werden festgelegt
sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins);
}
void loop()
{
int sensorVal = analogRead(A0);
// Sensor has a range of 430 to 830
// We want to translate this to a scale or 0% to 100%
int percentageHumididy = map(sensorVal, wet, dry, 100, 0);
static unsigned long timer = millis();
if (millis() >= timer) {
timer += 1000;
sevseg.setNumber(percentageHumididy, -1); //Hier können wir nun die gewünschte Zahl eintragen.
Serial.print(percentageHumididy);
Serial.println("%");
}
sevseg.refreshDisplay(); // Dieser Teil lässt die Nummer auf dem Display
//erscheinen.
sevseg.setBrightness(100); //Hier kann die Helligkeit des Displays angepasst
//werden. In einem Bereich von 0-100 wobei 100 das Hellste ist. 0 bedeutet
//jedoch nicht dass das Display komplett dunkel ist. Für die Anzeige einer Zahl
//ist allein die "sevseg.refreshDisplay();" Zeile verantwortlich
}
Schöne Grüße
Stevo Es