Pi:Co Classic2 製作記(移行中)

2015年新人研修 マイクロマウス編(27)

こんにちは。

本日は2色LEDを用いて関数化の勉強をしました。

書いたプログラムはこちらです↓

#include "iodefine.h"
#include "portdef.h"

void LED(int A){

if(A&0x01){
	LED0=1;
}else{
	LED0=0;
}
if(A&0x02){
	LED1=1;
}else{
	LED1=0;
}
if(A&0x04){
	LED2=1;
}else{
	LED2=0;
}

if(A&0x08){
	LED3=1;
}else{
	LED3=0;
}

}

int PWM_LED(int H,int L,int A){

int j,i;

	for(j=0; j<0xff; j++){
	
//	     	LED0 = LED1 = LED2 = LED3 = 1;		//LED点灯
			LED(A);
	    	for(i = 0; i < L; i++);		//時間待ち(空ループ)
//	       	LED0 = LED1 = LED2 = LED3 = 0;	 	//LED消灯		
			LED(0x00);
	    	for(i = 0; i < H; i++);		//時間待ち(空ループ)
	    }

        return(L*100)/(L+H);	
}

void PURPLE_LED(int D);

void main(void)
{
	int i;
	int j;
			
	j=0x08;
	
	PFC.PEIORL.WORD = 0x003f;	//LEDの繋がっているポートを出力に設定

	//LEDを点滅させる
	
	
	while(1)	//無限ループ
	{
		int C;
		
	       C=PWM_LED(1000,9000,0x0f);
	       PURPLE_LED(C);

	       C=PWM_LED(2500,7500,0x0c);
	       PURPLE_LED(C);
	
	       C=PWM_LED(5000,5000,0x06);
	       PURPLE_LED(C);
	
	       C=PWM_LED(7500,2500,0x3);
	       PURPLE_LED(C);
	
	       C=PWM_LED(9000,1000,0x09);
	       PURPLE_LED(C);	
		
	}	
}
  
void PURPLE_LED(int D){
			
	if((0<=D)&&(D>25)){
		LED4=1; LED5=0;
	}else if((D>=25)&&(D<50)){
		LED5=1;LED4=0;
	}else{
		LED4=LED5=1;
			
	}
}

なかなか光らせることができず苦労しましたがご覧のように最終的に光らせることができました。

IMG_0801_R

voidは関数の呼び出した側になんの情報も返さないことを指します。
なのでreturnする必要のないときに用います。

今日はヒントを出してもらっていたにも関わらずエラーばかりでした。
でも今日は一生懸命エラーの箇所を探して修正しました。
いくつか自力で見つけて修正できたときは嬉しかったです!
以前は修正箇所見つけても何が間違っているのかさっぱりわからなかったので(笑)

最後に本日のオフショットです。

IMG_0792_R

IMG_0793_R

IMG_0795_R

IMG_0796_R

タイトルとURLをコピーしました