Forum: Mikrocontroller und Digitale Elektronik Taster und LED


von ibot (Gast)


Lesenswert?

Hallo zusammen,
ich habe gerade erst angefangen mit der ic Programmierung.

Ich will über einen Taster eine LED ein bzw. ausschalten. Das 
funktioniert soweit auch. Aber warum schaltet sich die LED beim Start 
ein?

#include <avr/io.h>
#include <stdint.h>

#define F_CPU 1000000UL

#include <util/delay.h>


int main()
{
  //Ausgang
  DDRC = (1 << 5); /* Output */

  //Eingang
  DDRD &= ~(1 << 2); //Eingang
//  PORTD |= (1 << 2); //Pull-Up aktivieren

  int i;
  i = 0;

  PORTC &= ~(1 << PC5);


  while(1)
  {
    if ( !(PIND & (1<<PIND2)) )
    {
      if(i<1)
      {
        i = 1;
        PORTC |= (1 << PC5);
        _delay_ms(250);
      }
      else
      {
        i = 0;
        PORTC &= ~(1 << PC5);
        _delay_ms(250);
      }
    }
  }
  return 0;
}


Gruß,
Tobi

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Aber warum schaltet sich die LED beim Start ein?
Weil Strom durchfließt?

>  PORTC &= ~(1 << PC5);
Vermutlich liegt die mit einem Vorwiderstand gegen +5V?
Dann schaltet eine '0' am Port die LED ein.

von Gast (Gast)


Lesenswert?

Wie sind Taster und LED angeschlossen?

von heinz (Gast)


Lesenswert?

LED vielleicht als active low?

von ibot (Gast)


Lesenswert?

Danke für die super schnellen Antworten!

>>>  PORTC &= ~(1 << PC5);
>>Vermutlich liegt die mit einem Vorwiderstand gegen +5V?
>>Dann schaltet eine '0' am Port die LED ein.

Nun geht es... Danke, hätte ich auch selber drauf kommen können. 
Verwende das Einsteigerkit hier aus dem Shop.

Gruß,
Tobi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.