Arduino 入門
番外編 23
【演算子 まとめ】
こんにちは管理人のomoroyaです。
arduino 入門 番外編はarduinoの基本的なことを解説している記事です。
本記事は、Arduinoで使用する演算子についてです。
Arduino初心者の方向け編です。
基本的項目のためすっ飛ばしていましたが・・・
スケッチ(プログラミング)する上での基本中の基本なのでサクッと覚えてしまいましょう。
演算子はその名の通り演算するためのものです。
例えば「A==B」。
AとBが等しいかを比較しています。
演算子は大きく分けて・・・
- 代入演算子
- 算術演算子(代入演算子に算術が加わったもの)
- 比較演算子
- ブール演算子(論理演算子)
- ビット演算子
- 複合演算子
があります。
管理人はプログラマーの専門家というわけではありません。
気が向いたときにテキストを開き、ネットを調べ自己学習。
管理人にとってはブログ記事が自己学習のノートです。
書くことによって頭の中が整理できる。
arduino自身のこと、スケッチ(コード、プログラム)を少しづつ理解して行きましょう。
いやいや、arduinoを早速始めたいんだ!というかたは下記の入門編からお読みください。
Arduino入門編の解説にて使用しているArduinoは互換品です。
互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
正規品(Arduino UNO R3)の本体単品がほしい方はこちらとなります。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
演算子 基本解説
では、さっそく演算子について解説。
一つ一つ解説していきます。
- 代入演算子
- 算術演算子
- 比較演算子
- ブール演算子(論理演算子)
- ビット演算子
- 複合演算子
代入演算子
名前の通り、代入するための演算子。
スケッチでも最初にでてくる演算子です。
注意点としては、算数の=ではないということ!
等しいということを表していません!
あくまでも、右辺の値を左辺に格納してくださいとう命令です。
演算子 | 説明 |
---|---|
= | A = B AにBを代入します。 |
算術演算子(代入演算子でもある)
名前の通り、計算するための演算子。
こちらもArduinoを始めてすぐにでてくる演算子です。
注意点としては、算術演算子も代入演算子であるということ。
右辺の計算結果を左辺に格納してくださいとう命令です。
演算子 | 説明 | 補足 複合演算子で表すことが可能 |
---|---|---|
+ | A = A + B A+BをAへ代入します。 |
A += B |
– | A = A- B A-BをAへ代入します。 |
A -= B |
* | A = A* B A*BをAへ代入します。 |
A *= B |
/ | A = A / B A/BをAへ代入します。 |
A /= B |
% | A = A % B A%BをAへ代入します。 |
A %= B |
pow | A = pow(A , B) AのB乗をAへ代入 |
ー |
「C = A + B」と説明した方がわかりやすいですが、わざと「A = A + B」と解説しています。
あくまでも「右辺の計算結果を左辺に格納してくださいとう命令」であるからこそ「A = A + B」と記述できるわけです。
マイコンへの命令であって、算数ではないということです!
比較演算子
名前の通り、右辺と左辺を比較する演算子。
こちらもArduinoを始めてすぐにでてくる演算子です。
if文、while文などと一緒に使うことが多い演算子。
演算子 | 使用例 | 真/偽 |
---|---|---|
== | A == B | AとBが等しい場合は真 |
!= | A != B | AとBが等しくない場合は真 |
< | A < B | AがB未満の場合は真 (AとBが等しい場合は偽) |
> | A > B | AがBを超える場合は真 (AとBが等しい場合は偽) |
<= | A <= B | AがB以下の場合は真 (AとBが等しい場合は真) |
>= | A >= B | AがB以上の場合は真 (AとBが等しい場合は真) |
イメージ的にはこちらは算数と同じ考えでOK。
「==」が算数の「=」に相当します。
ブール演算子(論理演算子)
こちらは論理に関する演算子。
こちらは、Arduino初心者でプログラミングも初心者の場合はあまり見慣れないかもしれない演算子。
マイコンの世界では基本の演算子です。
演算子の左辺と右辺が真の場合は真になります。
演算子 | 使用例 | 真/偽 |
---|---|---|
&& | (A >= 1) && (A < 5) | Aが1以上かつAが5未満 真 |
|| | (A == 1) || (A == 5) | Aが1またはAが5 真 |
! | !(A == 1) | Aが1でない 真 |
ビット演算子
こちらはbitに関する演算子。
こちらも、Arduino初心者でプログラミングも初心者の場合はあまり見慣れない演算子。
マイコンの世界では基本の演算子です。
演算子の左辺と右辺が真の場合は真になります。
演算子 | 使用例 A:B0101(5@10進) B:B1011(11@10進) |
補足 |
---|---|---|
& | A & B 結果:B0001(1) |
論理積(AND) |
| | A | B 結果:B1111(15) |
論理和(OR) |
^ | A ^ B 結果:B1110(14) |
排他的論理和(XOR) |
~ | ~ A 結果:B1010(10) |
否定・反転(NOT) |
<< 左シフト |
A >> 1 結果:B1010(10) |
指定した数だけ左へシフト |
>> 右シフト |
A << 1 結果:B0010(2) |
指定した数だけ右へシフト |
複合演算子
名前の通り、演算が複数ある演算子。
こちらも、Arduino初心者でプログラミングも初心者の場合はあまり見慣れない演算子。
マイコンの世界では基本の演算子です。
一部は算術演算子のところで説明済みになります。
演算子 | 使用例 | 真/偽 |
---|---|---|
++ | A++ ++A |
Aを返した後1をプラス 1をプラスした後Aを返す |
– – | A- – – -A |
Aを返した後1をマイナス 1をマイナスした後Aを返す |
+= | A += B | A = A+B |
-= | A -= B | A = A -B |
*= | A *= B | A = A * B |
/= | A /= B | A = A / B |
&= | A &= B | A = A & B |
|= | A |= B | A = A | B |
まとめ
「Arduino 入門 番外編 23 【比較演算子 まとめ】」
スケッチ(プログラミング)するうえで基本の演算子をおさらいしてみました。
基本ですが、ときには見返さないと忘れていたり、そういえばということが見つかるかもしれません。
次回の「番外編 24」もArduinoの基本的なこと、スケッチのことを記事にしていきます。
最後に
疑問点、質問などありましたら気軽にコメントください。
この電子部品の解説をしてほしい!などなどなんでもOKです。
リンク切れ、間違いなどあればコメントいただけると助かります。
Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。
Arduino入門編、Arduino入門編2で使用しているUNOはAmazonにて購入可能です。
Arduino入門編では互換品を使用。
Arduinoはオープンソース。
複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
学習用、遊び用、お試し用には安価な互換品がおすすめです。
ELEGOO UNO キット レベルアップ チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用
上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
Amazonでお得に買う方法
Amazonでお得に購入するならAmazon Mastercard、Amazonギフト券がおすすめです。
時期により異なりますが、様々なキャンペーンを実施しています。
\Amazonギフト券/
Amazonギフトカード キャンペーン
\Amazon Mastercard お申込み/
Amazon Mastercard 申し込み
いずれの場合もプライム会員である方がお得!!
\Amazon Prime 30日間の無料会員を試す/
無料会員登録
コメント
万徳 佳威 () より:
2023年6月19日 5:10 PM のコメントを提出した者です。
文章を書いている途中で、変換確定の時に急にページが提出に変わってしまい迷惑をお掛けしました。
昨日のスケッチですが、同じ事を繰り返している性か分からなくなってしまい、簡易テストをする為に作った内容です。
pinMode(13,INPUT); // オルタネータ Ⅼ端子 が HIGH になると、pinMode(8,OUTPUT); // セルモータ スタータ S/W が OFF となり、セルモーターがOFF すると言う事を考えて書いている内容でしたが、まともに動かずに簡易テストを試みましたが思い通りには行きません。
アドバイスがあれば宜しくお願い致します。
コメントありがとうございます。
pinの値を読み取り、そのピンがLowなのかHighなのか判定したいのであれば
if文のところは、
digitalRead(3) == HIGH
などと記述する必要があるかと考えます。
以下のスケッチで悩んでいます。
//————–PSSS_prog.ino = プッシュスタートスイッチシステム プログラム—————
void setup() { // 各ポート設定
pinMode(13,INPUT); // オルタネータ Ⅼ端子
pinMode(12,INPUT); // クラッチ S/W
pinMode(10,INPUT); // ブレーキペタル S/W
pinMode(9,INPUT); // サイドブレーキ S/W
pinMode(8,OUTPUT); // セルモータ スタータ S/W
pinMode(7,OUTPUT); // イルミネーション ILM (スモール等)
pinMode(5,OUTPUT); // イグニション IG S/W
pinMode(2,OUTPUT); // イグニション ACC S/W
pinMode(3,INPUT); // プッシュスタートスイッチ D3
} //
void loop() { //
if (3==HIGH && 12==HIGH && 10==HIGH && 9==HIGH && 13==LOW){//
digitalWrite(5,LOW); //
digitalWrite(8,HIGH); //
} //
else(3==LOW && 12==HIGH && 10==HIGH && 9==HIGH && 13==HIGH);{//
digitalWrite(5,HIGH); //
digitalWrite(8,LOW); //
} //
}
D3 が、プッシュスイッチで、一瞬しか押さない為に D8 のスタータースイッチがすぐに OFF してしまうと考えて、自己励磁回路で2個のリレーを使用する事を考えていました。
あまり考えるより、シミュレートして結果を見ればと言う事で、上のスケッチを書いてみましたが、D5 D8 両方ともに点灯しっぱなしになってしまい頭を捻っています。
アドバイスがあれば宜しくお願い致します。