※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

defineの使いどころ


ここではdefineの使いどころについて書きます。
ライントレーサくらいだとそうでもないですが、
おそらく、マウスともなるとdefineを使いこなさないと
プログラムを書ききれないんじゃないかなぁと思います。

例によって構文とかは適当に調べてください。

定義文としてのdefineを説明します。
マクロは使いたいときに使えばいいんじゃないかなぁと。


定数を定義しておく

プログラムの中に定数を書く事があると思います。
ライントレーサをPWMで動かしている場合、ifやswitch文の中で変数に
if(~~){
 	speed_right = 500;
 	speed_left  = 900;
 }
 
のように定数をそのまま書いているんじゃないでしょうか。
一箇所ならまだ良いのですが、おそらく上手い具合に走らせるには
おそらく、5箇所くらい(もっと?)記述する必要が出てきます。


さらには、色々と調整しないといけないので、書き換えが非常に面倒です。
そんな時には、
#define SPD_LOW 200; //遅い
 #define SPD_MED 500; //中くらい
 #define SPD_HI  800; //速い

 …
 …
 
 if(~~){
	speed_right = SPD_MED;
	speed_left  = SPD_LOW;
 }
 
 if(~~){
	speed_right = SPD_HI;
	speed_left  = SPD_HI;
 }
 
 …
 …
 

のようにしておけば、上の3つを弄るだけで調整ができます。
ついでに、プログラムの意味がわかりやすくなります。
※何をdefineしたか忘れると悲惨なので注釈をつけておいたほうが良いです。



ポートやレジスタなどを定義しておく

P8.DR.BIT.B1 = 0;
 
なんて一々書くのが面倒臭い事がありますよね。
ついでに、どのポートに何が繋がっているのか忘れてしまうと、
配線を確認したり、色々と面倒な作業があります。
そこで、

#define LED0 P8.DR.BIT.B0 //左LED
 #define LED1 P8.DR.BIT.B1 //中LED
 #define LED2 P8.DR.BIT.B2 //右LED

 #define MOTOR_R_1 P3.DR.BIT.B0
 #define MOTOR_R_2 P3.DR.BIT.B1
 #define MOTOR_L_1 P3.DR.BIT.B2
 #define MOTOR_L_2 P3.DR.BIT.B3
 


のようにしておくと配線を忘れてしまっても、
それらしい名前でdefineしてあるのでプログラムを書く事ができます。
当然、ソースコードも読みやすくなります。


ので、適切な名前でdefineして使うようにしましょう。