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

/home/users/2/deca.jp-mice/web/cgi/dokuwiki/data/pages/defineの使いどころ.txt · 最終更新: 2010/06/23 01:48 by member
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0