Gast
#2000839
Hallo folgendes Problem. Ich möchte mit meinem Atmega8 mehrere LEDs leuchten lassen. 1) Wie mache ich das? 2) Brauche ich einfach den Code nacheinander zum "Starten" der Leds eingeben, und sie alle leuchten dann gleichzeitig? Ich gebe mal ein Anfangs Code von mir: #include <avr/io.h> #define F_CPU 1000000UL #include <util/delay.h> void main (void) { DDRB |= (1<<PB0); //Ausgänge festlegen PB und PD für Fußg.// //Rest für normale Ampeln// DDRD |= (1<<PD7); DDRD |= (1<<PD6); DDRD |= (1<<PD5); DDRC |= (1<<PC5); DDRC |= (1<<PC4); DDRC |= (1<<PC3); DDRC |= (1<<PC2); DDRC |= (1<<PC1); DDRC |= (1<<PC0); do { PORTD ^= (1<<PD7); //gelbe Fußgangerampeln blinken _delay_ms(5000); PORTC ^= (1<<PC4); //gelbe Autoampeln 1 blinken _delay_ms(5000); PORTC ^= (1<<PC1); //gelbe Autoampeln 2 blinken _delay_ms(5000); //Autoampeln 1 und 2 leuchten gelb PORTC ^= (1<<PC4); _delay_ms(500); PORTC ^= (1<<PC1); _delay_ms(500); //GElb aus PORTD |= (1<<PD7); //alle Ampeln sind aus PORTC |= (1<<PC4); PORTC |= (1<<PC1); PORTB ^= (1<<PB0); _delay_ms(500); //Fußgänger 1 Rot Ein PORTD ^= (1<<PD6); //Fußgänger 2 Rot Ein _delay_ms(500); PORTC ^= (1<<PC5); //Auto 1 Rot Ein _delay_ms(500); PORTC ^= (1<<PC2); //Auto 2 Rot Ein _delay_ms(500); PORTC ^= (1<<PC4); //Auto A1 und A3 kommt gelb dazu _delay_ms(500); PORTD |= (1<<PD6); // Fußgänger 2,4,6,8 rot aus PORTD ^= (1<<PD5); //Fußgänger 2 GRÜN Ein _delay_ms(500); ------------------------- Wie man vllt. erkennt handelt es sich um eine Ampelschaltung. Nach einer bestimmten Zeit sollen sich die jeweiligen LEDs aufhören zu leuchten, und andere sollen leuchten. (wie bei einer Kreuzung) Also laut meinem Quellcode, ist das ja wie eine LED blinken lasse, aber mithilfe der Zeit kann ich doch die Pausendauer einstellen, somit hat es doch den Anschein, dass die Ampeln dann leuchten, oder? Bitte helft mir...bin noch ziemlicher Anfänger in C.