おとうさんといっしょに遊ぶ初めてのマイコン
(Arduinoのスケッチ書き方)

〔メインページに戻る〕


Arduinoのプログラミング(スケッチ)を書く場合の基本文法のみ記述しておきます。
ここではArduinoでのC 言語シーげんごの使い方を軽くふれます、詳しい使い方は他のサイトを参考にして下さい。

スケッチの基本スタイル書き方

スケッチの基本スタイル

こちらの《C言語記述の基本構造》でも説明していますね、読んでおきましょう。

とりあえずぅ、コンパイルと書き

とにかく下記スケッチをArduinoIDEにコピー&貼り付けをしてコンパイルを行ってみましょう。
---------------------------------------------------------------------------------
int i ;
void setup() {
     Serial.begin(9600) ;      // パソコンとシリアル通信の準備を行う
     i = 0 ;                   // 変数のiに0をセットする
}
void loop() {
     i = i + 1 ;               // 変数のiに1を足す
     Serial.println(i) ;       // 変数iの値をパソコン(IDE)に送る
     delay(1000) ;             // 約1秒かんかくで処理を繰り返し実行させる
}
---------------------------------------------------------------------------------
スケッチ1  @ArduinoボードとパソコンをUSBケーブルで
  つなぎます。
 A上のスケッチをArduinoIDEにコピーします。
  (またはスケッチをキー入力します)
 B「コンパイルと書きみ」ボタンをクリックします
  (終わるまで少し待ちましょう)
 C左図下側のように正常におわればOKです。
  (エラーがあった場合は入力ミスをチェック)
 D「シリアルモニタ」ボタンをクリックします。
  下図のように変数 i の内容が1秒毎に表示
  されます。
  シリアルモニタ

Arduino 日本語リファレンス

こちらにArduinoで使用出来るC言語の説明が書いてあります、合わせて見ておきましょう。

変数とは

変数は、そのまま"変わる数値"のいみで計算したデータなどをきおくさせて置く場所です、 きおくさせて置く場所の変数には名前をつけます。

変数を使う場合は、名前を英数字で下のように宣言します。
intインテ i ; ← これは名前は i で、整数の値をきおくさせますよと宣言しています。
        (きおく出来る数値のはんいは-32768〜32767までです)
unsignedアンシグニード intインテ data1 ; ← これは名前はdata1で、符号なし整数として宣言しています。
                 (きおく出来る数値のはんいは0〜65535までです、負数はきおく出来ない)

なので、きおくさせて置く場所はきおくする数値のはんいがあるので注意がひつようです。
その他のきおく場所宣言についてはArduino 日本語リファレンスの"データ型"を見ましょう。

変数の初期化(代入)

i = 0 ; ← これで変数 i に数値の0をきおくさせています。
          かならず変数は初期値の数値をきおくさせましょう。

計算( 算術演算子 さんじゅつえんざんし)

コンピュータでデータの計算を行う場合は(たし算)と(ひき算)と(かけ算)と(わり算)を使います。
i = 5 + 1 ; ← これは5+1の計算の結果(6)を変数 i に記憶させています。
i = i + 1 ; ← これはi+1を計算しその結果をふたたび変数 i に記憶させています。
              ( i が6だったとすると計算後、 i はふたたび7をきおくしなおす事になります)
また、i++ ;と記述されている場合は、i = i + 1 ;と同じ意味です。
下のような計算があった場合

int a ;
int data1,data2 ;

data1 = 10 ;
data2 = 3 ;

a = data1 / data2 ;  // ここで10÷3は3.333だがC言語では3となり.333は切り捨てられます
切り捨てたくない場合はきおく場所の宣言で float フロート宣言(float a)を行います。

 制御文 せいぎょぶん

制御文とは指定した判断条件に応じてプログラムの実行する流れを変える文法です。

 I F イフ

下のように記述した場合
int a ;

a = 10 ;

if (a == 10) {      // ここでaの変数は10なのか?としらべています
     a = 0 ;        // aが10であったらこの行が実行されます。
}
と、aが10の時だけ a = 0 ; が実行されaは0と処理されます。 では、次のように記述した場合は
int a ;

a = 5 ;

if (a == 10) {      // ここでaの変数は10なのか?としらべています
     a = 0 ;        // aが10であったらこの行が実行されます。
} else {
     a = 1 ;        // aが10でない時にこの行が実行されます。
}
と、elseエルス文を記述するとaが10以外の時に a = 1 ; が実行されaは1と処理されます。
 a >  10 ; // aが10以上(11,12,13,......)の時と判断
 a >= 10 ; // aが10以上、10もふくむ(10,11,12,13,......)の時と判断
他に < , <= , != など有りますがこれを 比較演算子 ひかくえんざんしといいます。
詳しくはArduino 日本語リファレンスを見ましょう。

 for フォー

指定した判断条件の間だけ{ }内の記述されたプログラムをり返します。

for (初期化 ; 条件式 ; 計算式) {
 // り返し実行される文を書く ;
}

@ まずfor文の実行される前に”初期化”の所が1回だけ実行されます。
A 次に”条件式”が実行され”条件式”に当てはまるなら{ }内の記述された文が実行されます。
 (当てはまらないなら }の次から処理が開始されます)
B そして、{ }内の記述された文が実行された最後に”計算式”が実行されます。
AとBを”条件式”が当てはまらなくなるまでり返します。

下のような記述の場合
int i ;

for (i=0 ; i < 10 ; i++) {   // iが10より小さいなら{ }内の処理を行う
     Serial.println(i) ;     // シリアルモニタに変数iの内容を表示する
     delay(1000) ;           // 1秒経ったら処理を繰り返す
}

@ i=0 を実行する
A i<10 を実行する
  (1回目はiは0なので{ }内の処理を行う )
B Serial.println(i) ; と delay(1000) ; が実行される
C i++ ( i = i + 1 と同じ事です)を実行する、ここでiは1( i = 0 + 1 )となる
D Aから処理を繰り返す
  ( iが9になるまで繰り返しiが10になったら繰り返しを終了する)
ほかにくりかえす文として while フォワイル文が有ります。
ほかの制御文はArduino 日本語リファレンスを見ましょう。




【きむ茶工房ガレージハウス】
Copyright (C) 2006-2012 Shigehiro Kimura All Rights Reserved.