Go Down

Topic: [gelöst] Daten aus der Seriellen(USB) Schnittstelle lesen und in Datei schreiben (Read 1 time) previous topic - next topic

Erl1

Hallo,

dies ist mein erster Post hier, daher eine kurze Vorstellung: Bin 43Jahre, Elektriker(ein wenig SPS), seit ca.6 Jahren Linux auf dem Desktop ...
und seit gestern habe ich einen Arduino  (Fritzing StarterKit mit Arduino UNO) :)

Gut...ich kann mittels eines LM35 meine Zimmertemperatur auf ttyACM0 schicken.
Nun sollen die Daten in eine Datei geschrieben werden. Dazu habe ich "Processing" installiert.

Hier der Arduino Code... der funktioniert.
Code: [Select]
//declare variables
float tempC;
int tempPin = 0;

void setup()
{
Serial.begin(9600); //opens serial port, sets data rate to 9600 bps
}

void loop()
{
tempC = analogRead(tempPin);           //read the value from the sensor
tempC = (5.0 * tempC * 100.0)/1024.0;  //convert the analog data to temperature

Serial.println(tempC);

delay(1000);                           //wait one second before sending new data
}

Und hier der Processing Code...der schreibt mir die Datei "data.txt", diese ist allerdings leer.
Code: [Select]
import processing.serial.*;
Serial mySerial;
PrintWriter output;
void setup() {
  mySerial = new Serial( this, Serial.list()[0], 9600 );
  output = createWriter( "data.txt" );
}
void draw() {
   if (mySerial.available() > 0 ) {
        String tempC = mySerial.readString();
        if ( tempC != null ) {
             output.println( tempC );
        }
   }
}


Ich habe tatsächlich nicht alles verstanden was dort passiert
und hoffe mir kann geholfen werden.

Danke
Erl

EDIT: Es geht  :D ... Ich musste die Schnittstelle einstellen. http://www.arduino.cc/playground/Interfacing/LinuxTTY hat mir geholfen.

Udo Klein

Ich nehm dazu immer ein bischen Python.

Code: [Select]

#!/usr/bin/python
# -*- coding: utf-8 -*-

import serial
import sys

if len(sys.argv) != 3:
    print "Please specify a port and a baudrate, e.g. %s /dev/ttyUSB0 115200" % sys.argv[0]
    sys.exit(-1)

ser = serial.Serial(sys.argv[1], sys.argv[2])

while 1:
sys.stdout.write(ser.readline())
Check out my experiments http://blog.blinkenlight.net

Erl1

Processing habe ich auch ersteinmal weggelasse.
Ich mache es jetzt ganz einfach:
Code: [Select]
cat /dev/ttyACM0 >daten.txt

Go Up