Pages: [1] 2   Go Down
Author Topic: Einsteigerfrage Example "Blink"  (Read 1450 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich habe vor einen Sketch fuer eine bestimmte Funktion zu entwickeln. Als Anfänger habe ich zuerst mal versucht eines der Beispiele (Blink) zum Laufen zu bringen. Aber leider scheitere ich schon dabei. Die LED blinkt nicht! Weder die eingebaute an Pin 13, noch eine andere an jedem beliebigen Pin. Die LEDs leuchten dauernd.
Hardware: Arduiono Uno Rev. 3
Software : Arduino 1.0 unter SuSE Linux 12.1

Hier mal der Code aus dem Beispiel "Blink", der nicht so funktioniert wie er sollte:
Code:
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */

void setup() {               
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);     
}

void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(1000);              // wait for a second
}

Dann habe ich 2 serielle Ausgaben eingefuegt, um im Serial Monitor zu sehen ob ueberhaupt ein programmablauf stattfindet:
Code:
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */

void setup() {               
  Serial.begin(9600);
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);     
}

void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  Serial.println("Eingeschaltet"); 
  digitalWrite(13, LOW);    // set the LED off
  delay(1000);              // wait for a second
  Serial.println("Ausgeschaltet"); 
}

Und nun, oh Wunder, es funktioniert. Die LEDs blinken und die Ausgabe im Serial Monitor (Eingeschaltet/Ausgeschaltet) ist auch korrekt. Es ist ja schön, das es funktioniert, aber ich wuerde das Ganze dann doch gerne verstehen.
Deshalb meine Frage:
Kann mir jemand sagen, wo mein Fehler ist?

Gruß
Christoph
Logged

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

Der erste Sketch sollte eigentlich auch funktionieren. Bist Du sicher, das der korrekt übertragen wurde? Wie hast Du denn die "externe" LED angeschlossen?
Logged

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

mkl0815 hat recht.

Der erste Sketch Funktioniert, habe den Code 1:1 kopiert und kurz auf einen Uno V3 gespielt, die interne LED (Pin 13) blinkt.
Lass Dich nicht von solchen Dingen runterziehen, versuchs doch nochmal.

PS: Dein zweiter Sketch schreibst du besser so, dann stimmt auch der Text zu der LED:

Code:
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */

void setup() {                
  Serial.begin(9600);
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);    
}

void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  Serial.println("Eingeschaltet");  
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  Serial.println("Ausgeschaltet");  
  delay(1000);              // wait for a second
}

:-)

Gruss Kay
« Last Edit: May 16, 2012, 12:13:08 pm by Ketchup » Logged

Neuss
Offline Offline
Full Member
***
Karma: 1
Posts: 200
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich meine, ich hätte mal gehört, dass es unter Linux Probleme mit der delay()-Funktion geben kann (abhängig von der Compiler-Version und der Version der Libraries). Allerdings treten die nicht auf, wenn zusätzlicher Code zum Blink-Sketch dazugepackt wird.

Siehe auch: http://www.shredzone.de/cilla/page/344/arduino-auf-fedora-15-einrichten.html

@Ketchup: Hast du den ersten Blink-Sketch unter Windows oder unter einem Linux ausprobiert?

Wolfgang
Logged

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

@Ketchup: Hast du den ersten Blink-Sketch unter Windows oder unter einem Linux ausprobiert?

In Windows.
Linux habe ich nicht zum Testen.

Kay
Logged

Neuss
Offline Offline
Full Member
***
Karma: 1
Posts: 200
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

In Windows.

Könnte also daran liegen, dass mx55 SuSE-Linux verwendet und dieses Problem nur bei der Linux-Compiler/Library-Version (und da eventuell auch nur bei Arduino 1.0) auftritt.
« Last Edit: May 16, 2012, 12:33:20 pm by voithian » Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 260
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Doofe Frage: Aber wie genau hast du die LED angeschlossen?
Logged

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

wenn er sie auf pin 13 angeschlossen hat müsste doch der vorwiderstand der internen led reichen
Logged


Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 270
Posts: 21850
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das Gerücht hält sich hartnäckig. Auf PIN 13 ist seit dem Arduino Diecimila inbegriffen kein Widerstand mehr!!!! Wenn Du dort eine LED ohne Vorwiderstand anschließt machst Du praktisch einen Kurzschluß der weder der LED noch dem ATmega auf die Dauer gut bekommt.
Grüße Uwe
« Last Edit: May 16, 2012, 03:16:09 pm by uwefed » Logged

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

Hallo,
zuerst einmal danke fuer die Antworten.
Ich werde mal versuchen zusammenfassend zu antworten.
Ich habe natuerlich verschiedene Versuche angestellt.
Zuerst der Originalcode aus dem Example. Ohne zusätzlich angeschlossene Led.
Resultat: Die eingebaute Led zeigt Dauerlicht.
Dann habe ich eine zusätzliche LED (ueber einen 1 KOhm Widerstand) auch an Pin 13 angeschlossen.
Resultat: Beide Leds zeigen Dauerlicht.
Nun habe ich den Code dahingehend abgeändert, das nicht mehr Pin 13, sondern Pin 10 geschaltet wird und dort die externe LED (mit Vorwiderstand) angeschlossen.
Resultat: Die eingebaute Led ist aus (wie es ja auch sein sollte). Die externe LED zeigt Dauerlicht.
Nun habe ich die beiden Ausgaben eingefuegt.
Code:
Serial.println("Eingeschaltet");
Serial.println("Ausgeschaltet");
Habe aber vergessen im Setup nachfolgendes einzufuegen:
Code:
  Serial.begin(9600);
Anfängerfehler. Interessanterweise wurde das aber ohne Fehlermeldung kompiliert.
Resultat: Die externe LED blinkt. Allerdings keine Ausgabe auf dem Serial Monitor (wie zu erwarten). Diesen Fehler habe ich dann aber recht schnell gefunden.
Ich werde mir jetzt mal den oben angegebenen Link anschauen. Weiterhin habe ich hier noch ein Win XP in einer virtuellen Maschine (Virtual Box). Dort werde ich morgen Arduino installieren und schauen was passiert, wenn ich das Example von dort aus uploade.

Gruß
Christoph
Logged

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

Hallo,

ich habe nun ein paar Tests durchgefuehrt und es scheint sich wirklich um ein Problem mit dem Cross-Compiler und/oder den Binutils unter Linux zu handeln.
Analog zu dem workaround hier:
http://arduino.cc/forum/index.php/topic,68512.0.html
sieht mein (funktionierender) "Blink"-Code nun so aus:
Code:
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
int Pin13 = 13;
void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(Pin13, OUTPUT);    
}

void loop() {
  digitalWrite(Pin13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(Pin13, LOW);    // set the LED off
  delay(1000);              // wait for a second
}

Wenn ich die Pinnummer in einer globalen Variable speichere und dann diese benutze, funktioniert alles wie beabsichtigt.

Gruß
Christoph
Logged

im Neckartal
Offline Offline
Jr. Member
**
Karma: 0
Posts: 60
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also ich würde da nicht pauschal von "Linux" reden,
unter Ubuntu 12.04 (64-bit) blinkt dein Ursprungssketch nämlich munter vor sich hin ...

Grüßle Bernd
Logged

Theoretisch gibt es keinen Unterschied zwischen Theorie und Praxis ...

Neuss
Offline Offline
Full Member
***
Karma: 1
Posts: 200
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also ich würde da nicht pauschal von "Linux" reden,
unter Ubuntu 12.04 (64-bit) blinkt dein Ursprungssketch nämlich munter vor sich hin ...
Diese Version ist ja auch ziemlich neu. Mag sein, dass hier irgendwie eine andere/neuere/schönere/bessere Version der Libraries/Compiler/binutils installiert wird. Darin liegt ja das Problem wohl generell.

Gruß
Wolfgang
Logged

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

Hallo,

Also ich würde da nicht pauschal von "Linux" reden,
unter Ubuntu 12.04 (64-bit) blinkt dein Ursprungssketch nämlich munter vor sich hin ...
da hast du sicher recht, war eine unzulässige Pauschalisierung von mir.
Ich berichtige also:
Unter opensuse 12.1, Linux 3.1.10-1.9-desktop #1 SMP PREEMPT Thu Apr 5 18:48:38 UTC 2012 (4a97ec8) i686 GNU/Linux (Ausgabe von uname -srvmo) funktioniert es nicht so wie erwartet.
Und nun gehe ich mich wieder mit dem Arduino beschäftigen, das Teil ist nämlich eine wirklich interessante Sache.

Gruß
Christoph
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3071
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dann guck dir doch gleich das "Blink without delay()" Beispiel an, damit du dir delay() gar nicht erst angewöhnst... smiley-wink

Arduino mit loop - Zeiten im Millisekunden - Bereich oder schneller ist einfach besser.
Logged

Pages: [1] 2   Go Up
Jump to: