LED Lauflicht

Hallo Leute, bin ein totaler Neuling in der Arduino-Welt.
Nachdem ich die ersten paar Kapitel des Buches "Arduino für Einsteiger" durch habe und auch verstanden habe, wollte ich bevor es weiter geht, mal selbst etwas ausprobieren und ein LED-Lauflicht schreiben.

Jedoch, wenn ich den Sketch auf den Arduino (Arduino UNO) übertrage, leuchtet die 1. LED schwach, die 2. LED noch schwächer und ansonsten passiert rein gar nichts....

Ich weiß nicht, wo mein Fehler liegt. :frowning:

LED's sind jeweils am Ausgang (Pin 0-4) angeschlossen und über einen 150 Ohm Widerstand auf GROUND geführt.

Ich hoffe auf rasche Antwort und bedandke mich schonmal im Vorraus. :slight_smile:

 int LED1 = 0 ;
 int LED2 = 1 ;
 int LED3 = 2 ;
 int LED4 = 3 ;
 int LED5 = 4 ;
 
 int del = 200 ;


void setup ()

{

 pinMode (LED1, OUTPUT) ; 
 pinMode (LED2, OUTPUT) ; 
 pinMode (LED3, OUTPUT) ; 
 pinMode (LED4, OUTPUT) ; 
 pinMode (LED5, OUTPUT) ;  
  
}


void loop ()

{
  
  digitalWrite (LED1, HIGH) ;
  delay (del) ;
  digitalWrite (LED1, LOW) ;
  delay (del) ;
  
  digitalWrite (LED2, HIGH) ;
  delay (del) ;
  digitalWrite (LED2, LOW) ;
  delay (del) ;
  
  digitalWrite (LED3, HIGH) ;
  delay (del) ;
  digitalWrite (LED3, LOW) ;
  delay (del) ;
  
  digitalWrite (LED4, HIGH) ;
  delay (del) ;
  digitalWrite (LED4, LOW) ;
  delay (del) ;
  
  digitalWrite (LED5, HIGH) ;
  delay (del) ;
  digitalWrite (LED5, LOW) ;
  delay (del) ;
  
  
}

--> Problem behoben, habe einfach mal Pin 8-12 gewählt und tada, es funktioniert.

Aber wieso funktioniert das ganze nicht, wenn ich mit pin 0 beginne?

Auf Pins 0 und 1 liegt die serielle Schnittstelle, die über einen extra µC mit USB verbunden ist

Serenifly:
Auf Pins 0 und 1 liegt die serielle Schnittstelle, die über einen extra µC mit USB verbunden ist

Und ?
Dass man Pin 0 / 1 nicht nutzen sollte, damit man zum Testen Serial.print verwenden kann, ist klar,
aber warum es bei Aljonator nicht funktioniert, ist mir nicht klar.

Jedoch, wenn ich den Sketch auf den Arduino (Arduino UNO) übertrage, leuchtet die 1. LED schwach, die 2. LED noch schwächer und ansonsten passiert rein gar nichts....
LED's sind jeweils am Ausgang (Pin 0-4) angeschlossen und über einen 150 Ohm Widerstand auf GROUND geführt.

Und warum Pins 2 .. 4 gar nicht funktionieren ist noch unklarer.

--> Problem behoben, habe einfach mal Pin 8-12 gewählt und tada, es funktioniert.
Aber wieso funktioniert das ganze nicht, wenn ich mit pin 0 beginne?

Gute Frage. Ich würde mal alle 20 Pins des UNO testen. Sieht für mich nach einem defekten Arduino aus.
Oder ein Kontakt-Problem im Steckbrett ( das solls auch geben )
Oder bei dem der davor sitzt ... :wink:

@ Aljonator
Welche Vorwiderstände verwendest Du in serie zu den LED?
Grüße Uwe

Hallo, ich hab die LED's über einen 150 Ohm-Wiederstand auf die Minuspotential-Leiste geführt, da den Ground des Arduinos angeschlossen. Ich ben gelernter Elektroniker für Betriebstechnik, also Elektrokenntnisse sind schon vorhanden. :wink: :slight_smile:
Nur was Arduino und Mikrocontroller angeht, bin ich halt ein totaler Neuling, habe lediglich Programmierkenntnisse durch Step7 und ein klein wenig in DELPHI.

Zu den Pins 0 & 1 : Im Buch (Arduino für Einsteiger" werden die Pins 0-13 als frei belegbare digitale Ein- / Ausgangspins beschrieben.
Sprich, das sollte doch trotzdem funktionieren und da zu meinem Sketch niemand was geschrieben hat und er mit den Pins 8-12 funktioniert, gehe ich mal davon aus, dass er keinen Fehler enthält.

Arduino defekt? :astonished:

Aber vielen Dank schonmal, für die bisherigen Antworten. :slight_smile:

Liebe Grüße :slight_smile:

BlinkenLight - Udo hat 20 Leds an einem Uno, natürlich ohne multiplexen.
( Die 6 Analogen können auch digitalWrite )

Klar muss ( sollte ) das gehen.

Hallo!
...kein Defekt am UNO, wenn die "Hardware während des Aufspielens an Pin 0/1 montiert ist,
wirds mit der Übertragung nichts...die Leds nach dem Aufspielen montiert ,sollte funktionieren.

mfg Martin

Aljonator:
Hallo, ich hab die LED's über einen 150 Ohm-Wiederstand auf die Minuspotential-Leiste geführt, da den Ground des Arduinos angeschlossen.

Einer für alle oder alle für einen? :wink: :wink: :wink:
Jedes LED hat einen Widerstand?

Aljonator:
Ich ben gelernter Elektroniker für Betriebstechnik, also Elektrokenntnisse sind schon vorhanden. :wink: :slight_smile:

Das können wir nicht wissen :wink: :wink: :wink:

Aljonator:
Zu den Pins 0 & 1 : Im Buch (Arduino für Einsteiger" werden die Pins 0-13 als frei belegbare digitale Ein- / Ausgangspins beschrieben.
Sprich, das sollte doch trotzdem funktionieren und da zu meinem Sketch niemand was geschrieben hat und er mit den Pins 8-12 funktioniert, gehe ich mal davon aus, dass er keinen Fehler enthält.

Die LED auf Pin 0 und 1 müßten funktionieren nur könnte der USB-Seriell Wandler sprich ATmega16U2 dazwischenfunken und die LED schwach leuchten.

Noch ne blöde Frage: Die LED sind richtigherum angeschlossen?

Entschuldige die blöden Fragen; Die hochtechnologischen Fehlergründe sind mir ausgegangen und bevor wir an Übernatührliche Fehlergründe denken, klopfen wir mal die einfachsten Sachen ab.

Kannst Du uns ein gutes Foto vom aufbau geben?

Grüße Uwe

Ich hab eine Widerstand für alle genommen (2x 300 Ohm, mangels einzelnem 150 Ohm), da ich die LED's in diesem Sketch nicht zusammen sondern immer nacheinander ansteuern möchte. Sprich es leuchten nie 2 zur selben Zeit.

Richtig gepolt sind sie auch, Anode = + und Kathode = -/Masse. Ansonsten würde der exakt selbe Sketch und Aufbau, oder andere Sketches ja an Pin 8-12 auch nicht funktionieren. :wink:

Ich hoffe die beiden Fotos sind ausreichend. :slight_smile:

@ Martin:

Ich werde das ganze an Pin 0-4 wieder testen und die LED's während des Übertragens nicht anschließen.
Spielt es denn eine Rolle, ob man den Arduino über USB, oder den 9-Volt Anschluss speist? Also hinsichtlich der Funktion der Pins 0 & 1 ??

Vielen Dank schonmal, für die tolle Hilfestellung, bzw. den Versuch mir zu helfen. :slight_smile: :slight_smile:

Liebe Grüße :slight_smile:

Der Aufbau mit den Widerständen ist schon etwas grenzwertig! Rot, ohne jetzt das Datenblatt deiner LED zu kennen würde ich bei 20mA mit ~220Ohm bestücken. Scheint hier aber nicht zwingend das Problem zu sein.

USB oder 9Volt spielt nur eine untergeordnete Rolle. Die Pins 0 & 1 werden auch beim Start des Controllers soweit ich weiß angesprochen, sofern der Bootloader drauf ist. Sinnvoll ist es, diese freizulassen. A0 - A5 bieten sich auch noch als Ausgänge an.

Oh je, so kann das ja nichts werden! :wink:
Schau dir nochmal an, wie die Löcher des Steckbretts intern verbunden sind.

Die beiden Leisten jeweils rechts und links sind nicht umsonst blau für GND und rot für VCC gekennzeichnet. Bau die ganze Schaltung nochmal neu auf und achte auch darauf, dass jede LED ihren eigenen Vorwiderstand hat. So wie's aktuell aussieht kann es passiert sein, dass du entweder eine oder mehrere LED durch Überstrom zerstört hast oder gar die Arduinopins beschädigt hast. Und als Vorwiderstand für herkömmliche LEDs bieten sich Widerstände der Größenordnung 220-500 Ohm an, wie mein Vorredner ja schon bemerkt hat.

Der Aufbau auf dem Steckbrett ist zwar etwas Phantasievoll aber für diese Schaltung nicht unbedingt falsch.

Jedes LED braucht seinen eigenen Vorwiderstand.
Auch 300 Ohm für jedes LED gehen gut.
Außerdem haben LED in verschiedene Farben verschiedene Durchflußspannungen. Wenn Du eine rote und eine gelbe LED paralellschaltest dann leuchtet nur die rote weil sie 0,2V bis 0,4V weniger Spannung braucht um zu leuchten als die gelbe.

Grüße Uwe

@MGOS : Ich weiß schon, wie das Steckbrett intern aufgebaut ist, wo ich Kontakt habe und wo nicht. Ich frage mich gerade, ob ich entweder zu blöd bin, oder manche nicht richtig lesen oder mittendrin eingestiegen sind. :cold_sweat:

In keinster Weise böse gemeint! :slight_smile:

  1. Dass ich die Belegung des Steckbretts in Bezug auf Farben (+/- Kontaktbahn) nicht sinngemäß nutze, ist mir schon klar, dennoch ist der Aufbau nicht falsch ?! :stuck_out_tongue:

  2. Klar, wenn man LED's zusammen schaltet, sollte auf jeden Fall jede einen eigenen Vorwiderstand haben, Parallelschaltung, Widerstand, Stromverteilung und so...
    --> Ich schalte sie aber nicht zusammen, sondern jede zu einem anderen Zeitpunkt, in sofern sollte es keine Rolle spielen?! :slight_smile:
    --> Da ich am Arduino Ausgang eine Spannung von 5V habe und meine LED laut Datenblatt bei 2V einen Strom von 20 mA aufnimmt, reicht nach Adam Riese und URI genau ein 150 Ohm Widerstand ?! :stuck_out_tongue: :smiley:

  3. Habe ich wie schon mehrmals erwähnt, nur Probleme wenn ich Pin 0 & 1 nutze. Bei allen andern Pins nicht, bei exakt gleichem Schaltungsaufbau, wie der auf den Fotos. :slight_smile:

Um jetzt zu meiner eigentlichen Frage zurückzukommen ! :smiley:

Liegt es einfach nur daran, dass man Pin 0 & 1 nicht nutzen sollte? wie sschulewolter meint, oder steckt das Problem sonst wo? ...und wenn, wieso sind sie als I/O-Pins aufgeführt, wenn es dadurch zu Komplikationen kommen kann? :disappointed_relieved:
Ich fühle mich da gerade etwas überfordert :frowning:

Tx (Sender/Ausgang) und Rx (Empfänger/Eingang) sind genauso IO wie die anderen Ports, jedoch mit Sonderfunktionen, wie bei einigen anderen Ports auch.

Nicht nutzen, meinte ich nicht direkt. Aber es kommt schnell zu Komplikationen, wenn an Pin 0 und 1 Relais angeschlossen sind und die nicht vor dem Upload abgesteckt sind. Denn für den Upload wird bei dir zwischen den beiden Controllern die Serielle Schnittstelle genutzt. Datenübertragung besteht aus vielen 1 und 0'en. Was das Relais dann macht, sollte ersichtlich sein.

Du hast bereits deine Leds abgeklemmt beim Upload, wenn ich das richtig verstanden habe. Theoretisch sollte es damit keine Probleme geben, da du Sketch intern auch nicht die Serielle Schnittstelle für das Debuggen nutzt.

Kann mir die nicht funktionierenden Pins 0 und 1 nur durch einen defekt vorstellen, das würde aber auch bedeuten dass der Upload nicht mehr geht. Ganz davon abgesehen, solltest du, solange Ports frei sind, auf andere zugreifen.
Ohne die Serielle Schnittstelle (Pin0, Pin1) stehen dir noch 11 IOs auf der oberen Reihe zur Verfügung (2 - 13). Desweiteren ebenfalls als IOs nutzbar sind immer noch die Analogen Inputs. Das sind lediglich normale IOs, die die zusätzliche ADC-Funktion haben. Das wäre mit A0 - A5 6 weitere Pins.
Somit hast du die Möglich direkt mit dem Arduino 17 Leds zu betreiben.
http://www.pighixxx.com/pgdev/Temp/ARDUINO_V2.png

Wenn du mehr Pins benötigt, ist das direkte Ansteuern der falsche Weg. Dann kannst du besser auf ShiftRegister zurückgreifen. Ua. wären das 74HC595 sowie TLC5916, welche mit 3 Arduino Pins etwa 48 Leds antreiben können. Alternativen gibt es genug, TLC5916, WS2811 ....

Hallo!
Am besten RX/TX als "Spares" betrachten, auf jeden Fall beim Testen.
Eigentlich sollte man auch A4 und A5 ausgrenzen ,wenn auch der I2C Bus mal benutzt werden soll.
11,12,13 bei der Verwendung von SPI ...bin dann schnell auf den Mega umgestiegen um mehr "Luft zu haben".
...17 Leds find ich schon etwas viel vom Gesamtstrom her, mehr als 150mA an den Ports sollte man ja nicht direkt ?

Liegt die Lösung doch so nah...einfach 0 und 1 ab , laden , anstecken , check it all out..für mich ja der Reiz an der Sache.

mfg Martin

A4/A5 sind wirklich nur auszugrenzen, wenn man I2C in betracht zieht, was hier aber nicht der Fall zu sein scheint. Die SPI Pins kann man weglassen, wenn man über ICSP programmieren will, ist hier auch nicht der Fall. Somit gibt es nichts, was dagegen spricht, diese Ports auch zu nutzen.

Die 17 Leds sollen ja laut dem TE nicht gleichzeit geschaltet sein. Bezüglich der Maximal Ratings gebe ich dir soweit Recht. Ich vermeide es, überhaupt "Lasten" an den Arduino zu schalten! Leds werden idR über ein Shiftregister(zB. TLC5916) gesteuert, welches seine eigene Versorgungsspannung bekommt. Bei den WS2811 Shiftregistern liegt lediglich zum DIN nur ein zusätzlicher Ground zum Arduino.

Wunderbar, damit ist mir auf jeden Fall mal geholfen. :slight_smile: Vielen Dank!
Dann weiß ich bescheid und werde dies in Zukunft beachten.

Das sind halt Dinge, die ich ales Neuling nicht weiß und in meinem schlauen Buch standen die auch nicht. :expressionless:

Jedoch, Problem besteht weiterhin, hatte das getestet, gleicher Aufbau, nur halt Pins 0-4, beim Upload Pin 0 & 1 frei gelassen.
Sobald ich sie nach dem Upload aufstecke, leuchtet die LED an Pin 0 dauerhaft, bzw. flackert leicht, während die anderen 4 LED's der Reihe nach an und aus gehen. Komisch, komisch :confused:

 int LED1 = 0 ;
 int LED2 = 1 ;
 int LED3 = 2 ;
 int LED4 = 3 ;
 int LED5 = 4 ;
 int Startknopf = 7 ;
 
 int del = 200 ;
 
 int Schalterzustand = 0 ;
 int Schalterzustand_old = 0 ;
 int Start = 0 ;


void setup ()

{

 pinMode (LED1, OUTPUT) ; 
 pinMode (LED2, OUTPUT) ; 
 pinMode (LED3, OUTPUT) ; 
 pinMode (LED4, OUTPUT) ; 
 pinMode (LED5, OUTPUT) ;
 pinMode (Start, INPUT) ; 
  
}


void loop ()

{
  
  Schalterzustand = digitalRead (Startknopf);
  
  if ((Schalterzustand == 1) && (Schalterzustand_old == 0)) 
    {
     Start = 1 - Start ;
     delay (200) ; 
    }
   

  Schalterzustand_old = Schalterzustand ;
      
  if (Start == 1) 
    {
      digitalWrite (LED1, HIGH) ;
      delay (del) ;
      digitalWrite (LED1, LOW) ;
      delay (del) ;
  
      digitalWrite (LED2, HIGH) ;
      delay (del) ;
      digitalWrite (LED2, LOW) ;
      delay (del) ;
  
      digitalWrite (LED3, HIGH) ;
      delay (del) ;
      digitalWrite (LED3, LOW) ;
      delay (del) ;
  
      digitalWrite (LED4, HIGH) ;
      delay (del) ;
      digitalWrite (LED4, LOW) ;
      delay (del) ;
  
      digitalWrite (LED5, HIGH) ;
      delay (del) ;
      digitalWrite (LED5, LOW) ;
      delay (del) ;
    }
    
   /*else
     {
       digitalWrite (LED1, LOW) ;
       digitalWrite (LED2, LOW) ;
       digitalWrite (LED3, LOW) ;
       digitalWrite (LED4, LOW) ;
       digitalWrite (LED5, LOW) ;
     }
   */
    
   
 
}

Eine schöne Erklärung was beim Reset/Upload via Bootloader und danach mit Pin 0 / 1 passiert, hat Udo
in seinem Blog "Basic Sketch - Bare Minimum" beschrieben.

Basiert zwar auf einem alten Uno mit FT232RL und LED via 1k an D13 (atmega328 - PB5), aber...

Although trivial on the surface they will shed some light on behavior that might be unexpected for all but the most experienced Arduino experts.

Hört sich komisch an. Würde ja eigentlich bedeuten, dass der Arduino Daten empfängt, hast du einen 7-12V NT gerade zur Hand? Wenn ja, steck den mal beim Arduino ein und zieh USB.

Alternativ geht auch ein HandyNT mit USB Ausgang, welches du an den USB hängst ohne den PC.

Also habe ne 9V Batterie dran gehangen und USB abgezogen, hab kein NT zur Hand, aber kommt ja aufs selbe raus.

Der problemstatus ist allerdings auch der selbe. :stuck_out_tongue:
LED an Pin 0 leuchtet dauerhaft, sobald ich das Lauflicht starte, flackert sie dauerhaft und die anderen laufen schön durch. :open_mouth: