Difference between revisions of "U23 2008/Gruppe3"
< U23 2008
(→Code:) |
(→Code:) |
||
Line 32: | Line 32: | ||
//gewählte leds einschalten | //gewählte leds einschalten | ||
PORTC |= ((leds & 1) << PC4 ); //bits aus leds an die richtige stelle schieben | PORTC |= ((leds & 1) << PC4 ); //bits aus leds an die richtige stelle schieben | ||
− | PORTD |= ((leds & 2) << (PD3 - 1) ); //minus eins, weils in | + | PORTD |= ((leds & 2) << (PD3 - 1) ); //minus eins, weils in leds an der stelle 1 steht (von rechts) |
PORTD |= ((leds & 4) << (PD6 - 2) ); //... | PORTD |= ((leds & 4) << (PD6 - 2) ); //... | ||
PORTD |= ((leds & 8) << (PD7 - 3) ); | PORTD |= ((leds & 8) << (PD7 - 3) ); |
Revision as of 23:46, 25 August 2008
Gruppe3
Wir saßen an der linken Ecke des projizierten Bildes ;)
Mitglieder:
-mkr
-PyroGX
-whitenexx
-The Kenny (Macbook, Brille)
-Gordin
Code:
Es gab wohl mehrere Untergruppen, wir sollten alle unseren Code hier reinstellen.
Ich bin irgendwie zu blöd dafür, den Code richtig im Wiki einzufügen. - The-Kenny
Hab meinen Code jetzt auch mal reingestellt. Code ist bisschen größer aber man kann als Optionen außer an und aus auch toggle und nichtstun benutzen - Gordin
Code von mkr:
#include <avr/io.h> #include <util/delay.h> void set_leds(uint8_t leds) { //alle leds ausschalten PORTC &= ~_BV(PC4); PORTD &= ~_BV(PD3); PORTD &= ~_BV(PD6); PORTD &= ~_BV(PD7); //gewählte leds einschalten PORTC |= ((leds & 1) << PC4 ); //bits aus leds an die richtige stelle schieben PORTD |= ((leds & 2) << (PD3 - 1) ); //minus eins, weils in leds an der stelle 1 steht (von rechts) PORTD |= ((leds & 4) << (PD6 - 2) ); //... PORTD |= ((leds & 8) << (PD7 - 3) ); } int main(void) { uint8_t i = 0; //index der ledconf, die ausgegeben werden soll uint8_t delay_time = 200; //pause zwischen den ausgaben uint8_t ledconf[4] = { //array mit led zuständen 0b00001000, 0b00000100, 0b00000010, 0b00000001, }; // LED Output-Pins konfigurieren DDRC |= _BV(PC4); DDRD |= ( _BV(PD3) | _BV(PD6) | _BV(PD7) ); while(1) { if (i >= sizeof(ledconf)) //index darf maximal so graß sein, wie die anzahl der ledconf elemente - 1 i = 0; set_leds(ledconf[i]); i++; _delay_ms(delay_time); } }
Code von Gordin: hauptcode:
#include "rumpus_ledlib.c" //selbstgeschriebene kleine lib zum steuern der leds // 11 = led an 10 = led aus 01 = toggle 00 = nichtstun uint8_t kr[6] = { 0b11101010, 0b10110000, 0b00101100, 0b00001011, 0b00001110, 0b00111000 }; /*uint8_t kr[8] = { 0b10101010, 0b00000011, 0b00001100, 0b00110000, 0b11000000, 0b10000000, 0b00100000, 0b00001000 };*/ //Variablen für display() uint8_t led1 = 0b11000000; uint8_t led2 = 0b00110000; uint8_t led3 = 0b00001100; uint8_t led4 = 0b00000011; static void display(uint8_t led_config) { //übergibt nur die wichtigen bits an die led_X funktionen led_1(led_config & led1); led_2(led_config & led2); led_3(led_config & led3); led_4(led_config & led4); _delay_ms(100); } int main(void) { uint8_t i; while(1) { for (i = 0; i < sizeof(kr) ; i++) { // Größe des Arrays muss im Array stehen array[X]... display(kr[i]); } } }
rumpus_ledlib.c:
#include <avr/io.h> #include <util/delay.h> // Prototypen void led_1(uint8_t wastun); void led_2(uint8_t wastun); void led_3(uint8_t wastun); void led_4(uint8_t wastun); /* toggled alle leds */ /* auskommentieren zum benutzen 0o void led_toggleall() { DDRC = _BV(PC4); PORTC ^= _BV(PC4); DDRD = _BV(PD3) | _BV(PD6) | _BV(PD7); PORTD ^= _BV(PD3) | _BV(PD6) | _BV(PD7); }*/ /* Steuert led 1 0b11000000 = anschalten, 0b10000000 = ausschalten, 0b01000000 = toggle, 0b00000000 = nichts*/ void led_1(uint8_t wastun) { DDRC = _BV(PC4); switch (wastun) { case 0b10000000: PORTC &= ~_BV(PC4); //setzt alle werte, die schon da sind und nicht PC4 sind break; case 0b11000000: PORTC |= _BV(PC4); // setzt alle werte, die schon da sind und PC4 break; case 0b01000000: PORTC ^= _BV(PC4); // setzt alle werte, die schon da sind und tauscht PC4 } } /* Steuert led 2 0b00110000 = anschalten, 0b00100000 = ausschalten, 0b00010000 = toggle, 0b00000000 = nichts*/ void led_2(uint8_t wastun) { DDRD = DDRD | _BV(PD3); switch (wastun) { case 0b00100000: PORTD &= ~_BV(PD3); break; case 0b00110000: PORTD |= _BV(PD3); break; case 0b00010000: PORTD ^= _BV(PD3); } } /* Steuert led 3 0b00001100 = anschalten, 0b00001000 = ausschalten, 0b00000100 = toggle, 0b00000000 = nichts*/ void led_3(uint8_t wastun) { DDRD = DDRD | _BV(PD6); switch (wastun) { case 0b00001000: PORTD &= ~_BV(PD6); break; case 0b00001100: PORTD |= _BV(PD6); break; case 0b00000100: PORTD ^= _BV(PD6); } } /* Steuert led 4 0b00000011 = anschalten, 0b00000010 = ausschalten, 0b00000001 = toggle, 0b00000000 = nichts*/ void led_4(uint8_t wastun) { DDRD = DDRD | _BV(PD7); switch (wastun) { case 0b00000010: PORTD &= ~_BV(PD7); break; case 0b00000011: PORTD |= _BV(PD7); break; case 0b00000001: PORTD ^= _BV(PD7); } }
try this: einfach ein leerzeichen vor die Codezeile packen und es wird dementsprechend interpretiert. -obstfliege