Difference between revisions of "U23 2008/Gruppe3"

From C4 Wiki
Jump to: navigation, search
(Code:)
(Code:)
Line 119: Line 119:
 
  void led_3(uint8_t wastun);
 
  void led_3(uint8_t wastun);
 
  void led_4(uint8_t wastun);
 
  void led_4(uint8_t wastun);
void waitXsecs(uint8_t a);
 
 
   
 
   
 
  /* toggled alle leds  */ /* auskommentieren zum benutzen 0o
 
  /* toggled alle leds  */ /* auskommentieren zum benutzen 0o

Revision as of 19:40, 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 led 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