- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 10

Thema: Beginner Problem, LED steuern?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    12.04.2013
    Beiträge
    13

    Beginner Problem, LED steuern?

    Hallo Forum,
    ich beschreibe erst mein Vorhaben was ich ereichen wollte und dann zum Problem ok?

    Ich hab das Einsteiger Board von Olimex mit ATmega8 Controller, auf der Platine ist eine LED die ich mit dem "blink" Programm zum blinken bringen kann.
    Das geht, jetzt zum Problem:
    Ich hab auf das Board noch 2 weitere LEDs gelötet und wollte die der reihe nach ein/ausschalten:
    Rot->ein
    aus
    wait(1000)
    Gelb->ein
    aus
    wait(1000)
    Grün->ein
    aus
    wait(1000)

    das ganze dann in Schleife das mit 1000ms verzögerung.

    Wenn ich nur 2 (egal welche LEDs) "einschalte" funktioniert das wie ich mir das vorgestellt habe, aber sobald alle 3 angesprochen werden stimmt schon nicht.
    Das Problem ist das diese 3 LEDs zu schnell blinken, es ist eher ein "blinzeln" als blinken, als ob keine 1000ms Pause dazwischen wäre.
    Die grüne LED ist an PC1 und die gelbe ist am PC2 angschlossen, die Rote LED ist an PC5.
    Die gelbe LED hat einen Vorwiderstand von 150 Ohm, die Grüne auch, obwohl es laut berechnung 190 sein sollten (ist das ein grober Fehler?? falls ja, wieso funktioniert die grüne LED im 2er kombination, also mit nur 2 LEDs gehts)

    So,hier mein Versuch mit dem Sourcecode:
    Code:
    int main(void)
    {
     
    	DDRC |= (1<<PC5);
    	DDRC |= (1<<PC2);
    	//DDRC |= (1<<PC1); 
    
         while(1)
        {
            //TODO:: Please write your application code 
    	PORTC = 0b0100000; // Rote LED	
    	_delay_ms(1000);	//
    	PORTC = 0b0000000;
    	PORTC = 0b0000100;	// Gelbe LED
    	_delay_ms(1000);	//
    	PORTC = 0b0000000;
    /* wenn der Teil aktiv ist dann blinzeln die LEDs nur, das blinken ist so schnell das man es kaum als blinken definieren kann, eher blinzeln
    	PORTC = 0b0000010;	// Grüne LED
    	_delay_ms(1000);	//
    	PORTC = 0b0000000;
    */
        }
    }
    Mir ist klar das der Fehler bei mir liegt nur ich weiss nicht wo ich das vermasselt habe.

    Danke für jede Hilfe.
    micron
    Geändert von micron (20.09.2014 um 21:09 Uhr)

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    48
    Beiträge
    456
    Code:
    	PORTC = 0b0100000; // Rote LED	
    	_delay_ms(1000);	//
    	PORTC = 0b0000000;
    	PORTC = 0b0000100;	// Gelbe LED
    Das Problem ist einfach .... du überschreibst den Wert und machst keine Verknüpfung mit |= bzw &=

    PORTC=xxx. Setzt alle werte in diesem Register

    PORTC |= (1<<5); // setzt das 5te Bit und lässt alle anderen so wie sie sind
    PORTC &= ~(1<<5); // löscht das Bit 5 und lässt alle anderen so wie sie sind

    Gruß
    Georg

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    Hallo micron,

    WIE sind die LEDs angeschlossen?

    Normal ist, dass die LEDs zwischen Vcc und Port angeschlossen werden, da die Ports mehr Strom gegen GND ableiten können als gegen Vcc.

    Dann ist es aber so, dass eine "0" am Port die LED EIN und eine "1" AUS schaltet.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Zitat Zitat von Peter(TOO) Beitrag anzeigen
    Normal ist, dass die LEDs zwischen Vcc und Port angeschlossen werden, da die Ports mehr Strom gegen GND ableiten können als gegen Vcc.
    MfG Peter(TOO)
    Die neueren AVR (ATmega, ATTiny) können gleich viel Strom sourcen und sinken. Die Meinung LEDs und Sonstiges nach VCC schalten zu müssen hat sich aus der µC-Generation herübergerettet die nur Open-Collektor (OC) Ausgänge hatten.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    @Hubert,

    Und wie hat er die LED nun angeschlossen?

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Wenn seine Beschreibung stimmt und er tatsächlich mit "Rot->ein"beginnt, dann nach GND.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

Ähnliche Themen

  1. RNFBA Absolute Beginner
    Von mas im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 9
    Letzter Beitrag: 14.06.2011, 13:10
  2. Beginner, mehrer Fragen
    Von Thalhammer im Forum AVR Hardwarethemen
    Antworten: 34
    Letzter Beitrag: 03.12.2010, 21:29
  3. Beginner
    Von Thalhammer im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 21.05.2010, 19:20
  4. Beginner Code korrigieren
    Von onion im Forum Assembler-Programmierung
    Antworten: 23
    Letzter Beitrag: 21.08.2008, 23:01
  5. RGB LED Steuern
    Von luxor im Forum Elektronik
    Antworten: 21
    Letzter Beitrag: 08.12.2005, 09:57

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen