if
ifは指定した条件を満たした場合にのみ、その後のプログラムを実行する。https://www.arduino.cc/en/Reference/If
if (someVariable > 50) { // do something here }
下記のような書き方でもOK
if (x > 120) digitalWrite(LEDpin, HIGH); if (x > 120) digitalWrite(LEDpin, HIGH); if (x > 120){ digitalWrite(LEDpin, HIGH); } if (x > 120){ digitalWrite(LEDpin1, HIGH); digitalWrite(LEDpin2, HIGH); } // all are correct
elseは条件を満たさなかった場合に実行する内容も記述できる。https://www.arduino.cc/en/Reference/Else
if (pinFiveInput < 500) { // action A } else { // action B }
else ifと続けることで、別の条件を続けて記述することが出来る。
if (pinFiveInput < 500) { // do Thing A } else if (pinFiveInput >= 1000) { // do Thing B } else { // do Thing C }
条件に合った場合、そのブロックのコードが実行され他は無視される。条件に合うものがない場合、elseのブロックが実行される。
チュートリアル
https://www.arduino.cc/en/Tutorial/ifStatementConditional
for
for文は{}で囲まれた記述を繰り返す。
例えば値を少しずつ増加して、一定のところで繰り返すのをやめる。
データやピンの配列と組み合わせて使われることが多い。
https://www.arduino.cc/en/Reference/For
Example
// Dim an LED using a PWM pin
int PWMpin = 10; // LED in series with 470 ohm resistor on pin 10
void setup()
{
// no setup needed
}
void loop()
{
for (int i=0; i <= 255; i++){
analogWrite(PWMpin, i);
delay(10);
}
}
forはまず()に;で区切った3つの部分がある。
for (initialization; condition; increment)
上記の例では、(変数iを0に初期化; iが255以下であること; iに加算する)となり、iが0から255まで増加したところで繰り返すのをやめる。
{}にはanalogWriteが記述されているので、この場合PWMpin(10番ピン)の出力が0.01秒ごとに増加し、2.55秒後に終了。(forはloop{}にあるので、この動作を繰り返すことになる)
forループの反復
https://www.arduino.cc/en/Tutorial/ForLoopIteration
Operator Symbol
Arduinoでプログラムを作るときに、演算子で条件などを表す必要がある。
数式とは異なる使い方をするので注意する。
【 = 】
=は、代入演算子(assignment operator)で、右側の値を左の変数に入れる。
Example
int sensVal; // declare an integer variable named sensVal
sensVal = analogRead(0); // store the (digitized) input voltage at analog pin 0 in SensVal
【 == != < > <= >= 】
if文などで使われる比較演算子。
==は数学でいう「=」のように等号として使う。
【 && || ! 】
if文などで使われる論理演算子。
&&はAND、||はOR、!はNOT
【 ++ -- 】
++は加算代入で変数に1を加える。 --は-1
後に++がつく場合は、1は加えるが、返すのは古い値になる。
Syntax
x++; // increment x by one and returns the old value of x ++x; // increment x by one and returns the new value of x
Examples
x = 2; y = ++x; // x now contains 3, y contains 3 y = x--; // x contains 2 again, y still contains 3
【 += -= *= /= %= &= |= 】
+=は元の変数に右の値を加える。
Examples
x = 2; x += 4; // x now contains 6 x -= 3; // x now contains 3 x *= 10; // x now contains 30 x /= 2; // x now contains 15 x %= 5; // x now contains 0
7 Segment LED Count Up
とりあえず0から9までの数字をカウントしてみる。
void setup(){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void loop(){
//0を表示
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
delay(1000);
//1
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
delay(1000);
//2
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
delay(1000);
//3
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
delay(1000);
//4
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(1000);
//5
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(1000);
//6
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(1000);
//7
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
delay(1000);
//8
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(1000);
//9
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
delay(1000);
}
7 Segment LED Display
もっとも単純なディスプレイで、数字を表示する。
7セグメントLEDはそれぞれのLEDに端子がついていて、Arduinoのプログラムで個別に点灯(消灯)することで電光掲示板のようになる。
void setup(){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
}
void loop(){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}
2と3のピンから出力して右端の二つのLEDを光らせると、数字の1になる。
同じように全てのセグメントを光らせると、数字の8になる。
7セグメントLEDの真ん中の端子は上下ともカソード(またはアノード)になっていて、各端子共通のGND(または+)となっている。
Variable
プログラムのコードを書くのに重要なのが「変数(Variable)」。
電卓のメモリ機能のように計算結果を一時的に記憶して、それに名前をつけることで、後々呼び出せるようになる。
Example
int ledPin = 13;
Syntax
int var = val;
- var - your int variable name
- val - the value you assign to that variable
intは変数で使われるデータ型(Deta Type)で最も基本的なもので、整数の値を扱うことが出来る。
Circuit Board
ブレッドボードは半田ごて(soldering iron)を使わずに、ワイヤーを抜き差しすればいいので、試作には向いているが、製品化する場合は基板に半田付けした方がいい。
ブレッドボードの場合と同じように部品を電気的に繋いでいけばいいが、ユニバーサル基板(universal circuit board)の場合、個々の穴は全く繋がっていないため、自由に部品を配置できる一方、スズメッキ線やリード線などを使って上手に配線する必要がある。