Code:
	#include "asuro.h"
#include <string.h>
#include <math.h>
//prototypen
void Haus(int iStil, unsigned char iSpeed);
void MyTurn ( int winkel, unsigned char iSpeed);
int main(void)
{
  Init();
  Encoder_Init();
  //Senden von ICH beginne!
  SerWrite("\n\r",2);
  //        123456789012345678901234567890123456789012
  SerWrite("Hallo Chef, ich beginne mit dem Programm! ",42);
  SerWrite("\n\r",2); 
  SerWrite("Taster 1: Go 100",16);
  SerWrite("\n\r",2); 
  SerWrite("Taster 2: Turn 90",17);
  SerWrite("\n\r",2); 
  SerWrite("Taster 3: Haus1",15);
  SerWrite("\n\r",2); 
  SerWrite("Taster 4: Haus2",15);
  SerWrite("\n\r",2); 
  SerWrite("Taster 5: Haus3",15);
  SerWrite("\n\r",2); 
  SerWrite("Taster 6: Haus4",15);
  SerWrite("\n\r",2); 
  
  
  //in sw_pressed ist der gedrückte Schalter hinterlegt
  //dazu wird PollSwitch abgefragt  
  int sw_pressed;
  
  
  while (1) {
	
	//solange keine Taste gedrückt wird
	while((sw_pressed = PollSwitch()) == 0x00); 
    
	//korrektur für die großen Tasternummern
	if (sw_pressed >4) sw_pressed++;
	//Tastenabfrage
	switch(sw_pressed) {
		case 1: 
			//         1 234567890
			SerWrite("\n\rTaster 1", 10); 
			Go (100, 150);
			break;				  
		case 2: 
			//         1 234567890
			SerWrite("\n\rTaster 2", 10); 
			MyTurn (90, 150);
			break;	 
		case 4: 
			//         1 234567890123456
			SerWrite("\n\rTaster 4: Haus1", 17);
			//Haus(Größe-1..4,Speed)
			Haus(1,150); 
			break;			  
	    case 8:  
			//         1 234567890123456
			SerWrite("\n\rTaster 4: Haus2", 17);
			//Haus(Größe-1..4,Speed)
			Haus(2,150);
			break;		
		case 16:
			//         1 234567890123456
			SerWrite("\n\rTaster 4: Haus3", 17);
			//Haus(Größe-1..4,Speed)
			Haus(3,150);
			break;		
		case 32:
			//         1 234567890123456
			SerWrite("\n\rTaster 4: Haus4", 17);
			//Haus(Größe-1..4,Speed)
			Haus(4,150);
			break;		  } //end switch
	
	
	//mal 300 ms warten
	Msleep(300);
	sw_pressed=0;
	
} //end while (1)
  
// Nie vergessen, reine Vorsichtsmassnahme..
  while(1){}
  return 0;
} // end int main()
void Haus(int iStil, unsigned char iSpeed)
{
//Definition der Seitenlänge und Winkel (DEFAULT)
int iSeite=30;
int iWinkel_Dach1=45;
	switch(iStil) {
		case 1: 
			//         1 234567890
			SerWrite("\n\rForm 1", 8);
			iSeite=100;
			iWinkel_Dach1= 45;
			break;
		case 2: 
			//         1 234567890
			SerWrite("\n\rForm 2", 8);
			iSeite=150;
			iWinkel_Dach1= 45;
			break;
		case 3: 
			//         1 234567890
			SerWrite("\n\rForm 3", 8);
			iSeite=100;
			iWinkel_Dach1= 30;
			break;	
		case 4: 
			//         1 234567890
			SerWrite("\n\rForm 4", 8);
			iSeite=200;
			iWinkel_Dach1= 30;
			break;				
	} //end switch
float Diagonale=sqrt(2)*iSeite;
int iDiagonale= (int)Diagonale;
int iWinkel_Dach2= 2* (90-iWinkel_Dach1);
int iWinkel_Dach3= 90-iWinkel_Dach1;
int iDach=(iSeite/2)/cos(iWinkel_Dach1/180*3.1415926535);
SerWrite("\n\r",2);
//        12345678901234567890
SerWrite("Seite: ",7);
PrintInt(iSeite);
SerWrite("\n\r",2);
//SerWrite("Diagonale: ",12);
//PrintInt(Diagonale);
//SerWrite("\n\r",2);
SerWrite("int Diagonale: ",16);
PrintInt(iDiagonale);
SerWrite("\n\r",2);
SerWrite("Dach: ",6);
PrintInt(iDach);
SerWrite("\n\r",2);
SerWrite("Winkel1: ",9);
PrintInt(iWinkel_Dach1);
SerWrite("\n\r",2);
SerWrite("Winkel2: ",9);
PrintInt(iWinkel_Dach2);
SerWrite("\n\r",2);
SerWrite("Winkel3: ",9);
PrintInt(iWinkel_Dach3);
SerWrite("\n\r",2);
	//solange keine Taste gedrückt wird
	//         1 234567890123
	SerWrite("\n\rpress a key",13);
	SerWrite("\n\r",2);	
	while((PollSwitch()) == 0x00); 
// es geht los (Seite 1)
Go(iSeite, iSpeed);
// drehen und Dach (Seite 2)
MyTurn(iWinkel_Dach1, iSpeed);
Go(iDach, iSpeed);
// drehen und Dach (Seite 3)
MyTurn(iWinkel_Dach2, iSpeed);
Go(iDach, iSpeed);
// drehen und Seite 4
MyTurn((90-iWinkel_Dach1+90), iSpeed);
Go(iSeite,iSpeed);
//drehen und Seite 5
//Linksdrehung 45- 180
MyTurn(-135, iSpeed);
Go(iDiagonale,iSpeed);
//drehen und Seite 6
//Rechtsdrehung 90+45
MyTurn(135, iSpeed);
Go(iSeite,iSpeed);
//drehen und Seite 7
//Rechtdrehung
MyTurn(135, iSpeed);
Go(iDiagonale,iSpeed);
//drehen und Seite 8
//Rechtsdrehung
MyTurn(135, iSpeed);
Go(iSeite,iSpeed);
} //end Void (Haus)
void MyTurn ( int iWinkel, unsigned char iSpeed)
{
int iStep=1;
int iRest=0;
int iLauf=0;
	if (iWinkel>80)
	{
		iStep=iWinkel/60;
		iRest=iWinkel - iStep*60;
		for (iLauf; iLauf<iStep; iLauf++)
		{
			Turn(60,iSpeed);
		}
		Turn (iRest, iSpeed);
	} //endif (abs(winkel)>80)
	else
	{
		Turn(iWinkel, iSpeed);
	}
	
}
 gruß
Lesezeichen