ここでは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して使うようにしましょう。