Pages: [1]   Go Down
Author Topic: Arduino und Python  (Read 1142 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Moin,

ich habe ein kleines und eben so seltsames Problem. Ich habe auf meinem Arduino UNO folgenes Script laufen:

Code:
int data = 0;
int ledPin = 13;

void setup()
{               
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}


void loop()
{
   data = Serial.read();
   
    if(data == 5)
    {
     digitalWrite(ledPin, HIGH);
    }
    if(data == 0)
    {
     digitalWrite(ledPin, LOW);
    }
}

Wenn ich jetzt folgenes in der Python (2.5) Befehlszeile tue, kann ich die LED an bzw ausschalten.



Wenn ich jetzt aber den gleichen Code in ein Script packe und das ausführe, läuft es nicht. ._.

Code:
import sys
import serial
import time
port = 'COM3'
ser = serial.Serial(port)
time.sleep(2)
ser.write(chr(5))
ser.close()

Kennt jemand die Lösung? Ist hat sicher was mit den verschiednen Typen zu tun.. wenn ihr wisst was ich meine..
Ich bin am verzweiflen... Ich will doch nur meinem Arduino Variablen vom Rechner übergeben... (Strings u.a.)

Valium

Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Probier mal den Aufruf Deines Scriptes mit "python -vvv SCRIPTNAME-py" etwas "gesprächiger zu machen. Evtl. erzählt ja python wo der Schuh drückt.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Probier mal den Aufruf Deines Scriptes mit "python -vvv SCRIPTNAME-py" etwas "gesprächiger zu machen. Evtl. erzählt ja python wo der Schuh drückt.

Hier die Ausgabe, ich kann kann da keine Fehler rauslesen.
Im Board kommt ja auch was an, aber etwas anderes als wenn ich das direkt über die Befehlszeile mache..

Ausgabe: http://www.heypasteit.com/clip/0BEU
Logged

Offline Offline
God Member
*****
Karma: 10
Posts: 721
42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

und was kommt an?
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

und was kommt an?

Weiß ich nicht...
Wenn neben den Serial Monitor laufen lassen, kann Python den Port nicht benutzen....
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich hab's!
Es liegt an am dem ser.close(). Soblad das ausgeführt wird, wird der Arduino resetet. Ergo geht auch die LED aus.

Ist es normal das der Arduino resetet wenn eine serielle Verbindung auf gebaut bzw geschlossen wird?
Wenn ja, kann man das verhindern?
Logged

Offline Offline
God Member
*****
Karma: 10
Posts: 721
42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das Problem hatte ich mal mit einem LCD-Sketch der seriell mit Linux gequatscht hat... hat mich auch sehr aufgeregt, hab dann ein wenig gegoogelt und gefunden, dass das schließen der verbindung Einen Reset durchführt - und man einen Kondensator oder Widerstand(?) auf die seriellpins geben muss oder einen widerstand auslöten... ich bring es nichtmehr ganz zusammen, aber ich such morgen mal.
« Last Edit: May 04, 2012, 02:22:42 am by Marcus W » Logged


Offline Offline
God Member
*****
Karma: 10
Posts: 721
42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Habs gefunden:

http://arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection

Wow... fast alles richtig gehabt: beim Diecemila reicht ein 120Ohm Widerstand, beim Uno ein 10µF Kondensator zwischen Reset und 5V bzw. Reset und Ground
« Last Edit: May 04, 2012, 02:25:18 am by Marcus W » Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Habs gefunden:

http://arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection

Wow... fast alles richtig gehabt: beim Diecemila reicht ein 120Ohm Widerstand, beim Uno ein 10µF Kondensator zwischen Reset und 5V bzw. Reset und Ground

Hey, vielen Dank. smiley-grin
Kann es dadurch probleme geben wenn man neue Skaches hochläd?
Logged

Offline Offline
God Member
*****
Karma: 10
Posts: 721
42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vor dem Hochladen musst du die umbauten wieder rückgängig machen - oder falls du dich zu der Brechstangenvariante den auslötens entscheidest - den reset drücken um hochzuladen. Das Prinzip des hochladens beim Arduino mach eben genau das: Er zieht den DTR auf Low um den Arduino zuresetten, läd hoch, resettet nochmal -  beim auf- und abbau einer seriellen Verbindung wird der DTR ebenfalls auf Low gesetzt - und das unterdrückst du durch die Baumaßnahmen.

EDIT:
Bei der einfachen variante (Widerstand bzw. Cap) kannst du zusätzlich ja einen Schalter/Taster/Jumper in die Schaltung einbauen, der einfach die Druchleitung unterbricht.
« Last Edit: May 04, 2012, 03:21:34 am by Marcus W » Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vor dem Hochladen musst du die umbauten wieder rückgängig machen - oder falls du dich zu der Brechstangenvariante den auslötens entscheidest - den reset drücken um hochzuladen. Das Prinzip des hochladens beim Arduino mach eben genau das: Es benutzt das DTR um den Arduino zum Resetten zu bringen läd hoch, resettet nochmal - und das unterdrückst du durch die Baumaßnahmen.

EDIT:
Bei der einfachen variante (Widerstand bzw. Cap) kannst du zusätzlich ja einen Schalter/Taster/Jumper in die Schaltung einbauen, der einfach die Druchleitung unterbricht.

Hab's grad mit nem 22µF Cap probiert, läuft!
Das mit dem Reseten hatte ich grad selbst gelesen, werde wohl zu einem Kippschalter greifen.

Liebe Grüße,
Valium
Logged

Pages: [1]   Go Up
Jump to: