第1回
変数・型・演算子
プログラムでデータを扱う方法を理解する。
変数
int count = 0;int:型count:変数名0:初期値
変数は「名前を付けた箱」であり、型はその箱に入れられるものの種類を表す。
基本的な型
int
float
double
char
bool| 型 | 扱うもの | 例 |
|---|---|---|
int | 整数 | int count = 0; |
float | 小数(単精度) | float temperature = 25.5f; |
double | 小数(倍精度) | double pi = 3.14159; |
char | 1文字 | char c = 'A'; |
bool | 真偽(true / false) | bool isOn = false; |
マイコンでの注意
型のサイズは環境によって異なる場合があるため、必要に応じて次のような型も紹介する。
int8_t
uint8_t
int16_t
uint16_t
int32_t
uint32_t算術演算
+
-
*
/
%比較演算
==
!=
<
>
<=
>=論理演算
&&
||
!| 演算子 | 意味 | 例 |
|---|---|---|
&& | かつ | if (a >= 10 && b < 5) |
|| | または | if (a == 0 || b == 0) |
! | 否定 | if (!isOn) |
動かして確かめる
演習に入る前に、まずこのサンプルを動かして結果を見る。追加の部品は要らない。光るのはボードに載っている内蔵LEDで、それ以外はシリアルモニタの出力で確かめられる。code/examples/01-variables/を開き、pio run -t uploadで書き込んでからpio device monitorで出力を見る(手順と、外付けのLEDなどをつなぐ場合は開発環境にまとめてある)。
// 第1回:変数・型・演算子
// 値をシリアルモニタに出して、型と演算子のふるまいを目で確かめる。
#include <Arduino.h>
void setup() {
Serial.begin(115200);
delay(1000); // シリアルモニタが繋がるのを待つ
int count = 7;
int divisor = 2;
float temperature = 23.5f;
char grade = 'A';
bool isHot = false;
Serial.println("--- 変数と型 ---");
Serial.print("count = ");
Serial.println(count);
Serial.print("temperature = ");
Serial.println(temperature);
Serial.print("grade = ");
Serial.println(grade);
Serial.println("--- 割り算 ---");
Serial.print("7 / 2 = ");
Serial.println(count / divisor); // 3(小数は切り捨てられる)
Serial.print("7 % 2 = ");
Serial.println(count % divisor); // 1
Serial.print("7 / 2.0f = ");
Serial.println(count / 2.0f); // 3.50
Serial.println("--- 比較と論理 ---");
isHot = temperature >= 30.0f;
Serial.print("temperature >= 30.0f = ");
Serial.println(isHot); // 0(false は 0 と表示される)
Serial.print("20 < t && t < 30 = ");
Serial.println(20.0f < temperature && temperature < 30.0f); // 1
Serial.println("--- 型の大きさ(バイト)---");
Serial.print("int : ");
Serial.println(sizeof(int));
Serial.print("float : ");
Serial.println(sizeof(float));
Serial.print("double : ");
Serial.println(sizeof(double));
Serial.print("char : ");
Serial.println(sizeof(char));
Serial.print("bool : ");
Serial.println(sizeof(bool));
Serial.print("uint8_t : ");
Serial.println(sizeof(uint8_t));
}
void loop() {
}--- 変数と型 ---
count = 7
temperature = 23.50
grade = A
--- 割り算 ---
7 / 2 = 3
7 % 2 = 1
7 / 2.0f = 3.50
--- 比較と論理 ---
temperature >= 30.0f = 0
20 < t && t < 30 = 1
--- 型の大きさ(バイト)---
int : 4
float : 4
double : 8
char : 1
bool : 1
uint8_t : 1確かめること。
7 / 2が3になっている。整数どうしの割り算では小数が捨てられる7 / 2.0fは3.50になる。片方を小数で書けば結果も小数になるtrueは1、falseは0として表示されるintは4バイト。これは環境によって変わることがあるtemperatureを書き換えて、>= 30.0fの行が1に変わることを確かめる
演習:温度が30度以上ならLEDを点灯する
float temperature = 32.0;
if (temperature >= 30.0) {
// LED ON
}- まずは
temperatureを固定値で書き、しきい値を変えて動作を確認する - 余裕があれば
Serial.println()で値を出力してみる