if文と同じように、さまざまな状況に応じて異なるコードを実行することで、switch…case文はプログラムの流れを制御する。switch文は、制御式とcaseラベルとを比較する。制御式の値とcaseラベルの式とが等しいとき、そのcaseラベルに付随するコードを実行する。, break文はswitch文の実行を終了する。そのため、通常は、caseラベルに付随するコードの最後に表れる。caseラベルに付随するコードの終わりにbreak文がない場合、switch文は、次のbreakが見つかるまで、もしくは、switch文の最後に到達するまでコードを実行する(これをfalling-through(通り抜け)と呼ぶ)。, https://www.arduino.cc/reference/en/language/structure/control-structure/switchcase/, Arduinoリファレンスの日本語訳のページです, 当サイトはCookie(第三者配信事業者のCookieを含む)を利用しています。, // varが1のときに実行するコード, // どのcaseラベルにも一致しないときに実行するコード, 追加のコアをインストールする, Creative Commons Attribution-ShareAlike 3.0, さまざまな場合に比較される変数。intもしくはchar。. "(B2$B$J$i(BLED$B$r(B1$B2sE@LG$7$F$$$^$9!#(B, $B$OJQ?t(Bs$B$N@k8@$H(B0$B$NBeF~$r(B1$B9T$G:Q$^$;$F$$$^$9!#(B, (c) 2014-2015 N. Mitsunaga "$=$A$i$N%i%$%;%s%9$K=>$C$F:FG[I[$7$F9=$$$^$;$s!#(B. 僕は自動車のマイコンにプログラミングをする組み込みエンジニアとして働きつつ、YouTubeでArduinoの使い方を解説しています。>>なかしーの電子工作部, LEDは取り付ける方向が決まっているので、間違えて反対に挿さないように注意してください!, LEDの足が長い方(画像だと左)がアノードで、足が短い方(画像の右側)がカソードとなっています。, ブレッドボードの使い方が分からない方はこちらの記事を読んでください!>>ブレッドボードの使い方【現役エンジニアが教える電子工作】, 点灯と消灯だけを実行するプログラムだと、高速で点灯と消灯が切り替わってしまいます。, 待機する処理を入れると「点灯→待機→消灯→待機→点灯」となり、待機する時間の設定に応じて点滅する速度が変わる仕組みです。, pinModeはArduinoのポートを入力か出力のどちらで使うか設定する関数です。, Arduino UNOの場合、電源電圧が5VなのでHIGHの時は5Vを出力します。LOWの時はGNDと同じ電圧つまり0Vを出力します。, 紹介したプログラムではdelayに500を入力しているので、0.5秒ごとにLEDを点灯し、消灯する動作を繰り返します。, この記事では「ArduinoでLEDを点滅(Lチカ)させる方法」について紹介しました。, >>【Arduino入門キット】電子工作の勉強におすすめ【こんなに安くていいの?】, 自動車のマイコンにプログラミングをするエンジニア 経験や知識を元に電子工作・アニメ・街コンに関する情報を発信中です。好きな食べ物はとんかつ。. while. スポンサーリンク. プログラム例) d8番に接続されたタクトスイッチS1を押すとledの点灯数が1個ずつ増えていくプログラム。全点灯時にS1を押すと全部消灯させる。タクトスイッチS1は押した時にLOWとなるように接続し、10kΩの抵抗器でプルアップしておく。 $B%5%s%W%k%W%m%0%i%`$NCx:n8"$OJ|4~$7$^$9!#(Bfritzing$B$G:n@.$7$??^$O! Arduinoでやりたいことを考えていると、Arduinoの動作をスケッチから動作させるだけではなくボタンやレバーなどを使って、色々な動作をさせたいと思うようになります。 今回は、Arduinoに外部からの信号を認識できるようにする第一歩、スイッチを使う方法です。 説明. "Dq93$NJRJ}$NB-$N(B3$B$D$r$D$J$.$^$9!#(B Arduino$B$N(B2$BHV%T%s$H%9%$%C%A$NJRJ}$NB-! "2?$b$;$:$KBT$C$F$$$^$9!#%9%$%C%A$+$i, (B{$B$H(B}$B$G0O$^$l$?HO0O$O=*$o$j$G$9!#(B, $B;D$j$NItJ,$G$O(Bs$B$NCM$K1~$8$F!"(B0$B$J$i(BLED$B$r>CEt!"(B1$B$J$i(BLED$B$rE@Et! Arduino $B$HDq93(B(1k$B&8Cc9u@V6b(B, 1k$B&8$+$i(B10k$B&8(B($BCc9u\t6b(B)$B$0$i$$$J$i$h$$(B)$B$H%9%$%C%A$rMQ0U$7$^$9!#?^$N%9%$%C%A$O%?%/%H%9%$%C%A$G$9!#2sO)?^$N$h$&$K(B "0l$DL\$N(Bif$BJ8$NCf?H$, $B$^$:(Bs$B$K(B1$B$rB-$7!"(Bs$B$,(B2$B$rD6$($F$$$k$J$i(B(3$B0J>e(B)s$B$r(B0$B$K$7$^$9!#$3$l$G(Bs$B$,(B0$B"*(B1$B"*(B2$B"*(B0$B"*(B1$B"*(B2$B"*(B0$B"*!D$HJQ$o$j$^$9!#$=$N(B20$B%_%jIC(B(20/1000$BIC(B)$BBT$C$F$$$^$9!#$3$l$O%9%$%C%A$r2!$7$F$9$0$O%*%s$H%*%U$r9bB.$K@Z$jBX$o$k8=>]!J%A%c%?%j%s%0!K$KH?1~$7$J$$$?$a$G$9!#(B20$B%_%jIC$0$i$$BT$D$H0BDj$7$^$9!#$=$l$+$i(Bwhile$BJ8$G%9%$%C%A$,2!$5$l$F$$$k4V! 使用例 Arduino IDEで使用するwhile文の例は以下の通りです。 試しにこのプログラムを実行すると、0.7秒間隔で13番ピンのLEDがホタルの様に明滅を繰り返します。 int j = 0; //jの変数の型を宣言する void setup() { //一回だけ実行する pinMode(13, OUT… NOBのArduino日記! 趣味は車・バイク・自転車・ラジ … © 2020 エンため All rights reserved. "Dq93$NH?BP$NB-$O(B5V$B$X$D$J$.$^$9!#(B 説明. なにも接続していないピンを読み取ると、HIGHとLOWがランダムに現れることがあります。, スイッチが入っている時は5Vが加わっているため問題ありません。しかし、スイッチが入っていない場合、ピンはなにも接続されていない状態になってしまい、ArduinoはHIGHかLOWなのかわからなくなってランダムな読み取り結果を返してしまいます。, ボタンを押していないのに勝手に動作が始まったら大変です。これを防ぐための抵抗こそ、スイッチがOFFの時に確実に0Vの状態にしてくれる「プルダウン抵抗」なのです。, 回路図としては下のようになります。今回はスイッチの入力に7ピン、LEDの点灯に12ピンを使用しています。, スイッチには4.7kΩのプルダウン抵抗を使用しています。ダイオードに接続しているR2の1kΩの抵抗は電流制限を行う抵抗で、LEDには5mAの電流が流れます。, タクトスイッチの動作は、押した時だけONになるモーメンタリスイッチですが、そのままスイッチのON・OFFに連動させてLEDを点灯させるだけでは直接LEDをつなぐのと変わらないので、スケッチ上でオルタネイト動作(一度押すとON、再度押すとOFF)になるように工夫します。, LEDの動作としては、LEDがオフの時にスイッチを押すと点滅が始まりボタンを離してもその状態が維持されます。次にボタンを押すと、離したタイミングでLEDの点滅が終了します。, このスケッチではwhile文を挿入し、スイッチが押された状態でループすることで誤作動を防いでいます。delay関数の仕様と割り込みを使っていない問題で、スイッチを押したままだとloop関数内でtoggle変数の状態が常に変わってしまうので、上手くLEDをオフできるよう対策しています。, ここからは応用です。先述したプルダウン抵抗は、スイッチに必ず付けないといけないものと言いましたが、Arduinoにはこれを取り外せる方法があります。, 先ほどのスケッチの6行目に、pinMode(7, INPUT);という定義がありますが、これはArduinoの7ピンを信号の入力を受け付ける、と言う命令になります。このINPUTをINPUT_PULLUPに変更すると、マイコンの内部プルアップ抵抗が有効になり、外付けの抵抗を省くことができます。, 注意しなければならないのは、プルダウン抵抗とは違いボタンを押した状態でLOW、離した状態でHIGHになる点です。スイッチの状態と入力の論理状態が反転するので、スケッチを描く場合はこの点に注意が必要です。, ちなみに、現在は半導体の進歩によりスイッチの接続にプルダウン、プルアップ共にどちらを選んでも性能や電力にそこまで大きな差はありませんが、マイコンの世界では慣例的にプルアップ抵抗の方が多く用いられてきた経緯があり、内蔵プルダウンは搭載されていない事がほとんどです。, 慣れないうちに内蔵プルアップを使うのは少し戸惑うかもしれませんが、部品を減らす、配線を減らすという手段は、電子工作においてコスト減・不良減・ノイズ減と良いことしかありません。これをマイコンの機能で実現できるなら使わない手はありません。, 電子工作の世界はスイッチこそすべての始まりです。ボタンを押してLEDを点灯させることから始まり、モーターを動かしたりLCDディスプレイに反映させたりとスイッチを使わなければ何もできません。, スイッチを使う上で最も重要なのがプルダウン、プルアップ抵抗の意味について理解することです。このプルアップ、プルダウンという考え方は、スイッチだけではなく、アナログセンサに必要だったり、デジタル信号に必須だったりと電子工作を考える上で欠かせない存在です。, また、スイッチについてはチャタリングと言う機械激な構造を理由とする、接点のパタツキが発生します。今回のスイッチではdelay関数によりチャタリングの影響を少なくしていますが、本格的にスイッチを使おうとすると、ハード的またはソフト的に対策を行わなければいけません。この点についてはまた次回解説していきたいと思います。, ガジェットとモノづくりのニッチを伝える $B$3$3$G$OJQ?t(Bs$B$r>e5-$N(B3$B$D$N>uBV$r3P$($F$*$/$?$a$K;H$C$F$$$^$9!#(B. 文系人間ですが、Arduinoを使った電子工作に関することをメインにアップしていきます。参考にして頂けるのは嬉しいですが、あくまで自己責任で行ってください。, twitterアカウント取得しました。サイトの更新情報がフィードされます。Follow @jumbleat_com, メール登録でサイトの更新情報が届きます。(登録解除の場合は info@jumbleat.comにご連絡ください。), Arduinoを使い始めて最初にすることはLEDの点灯ですよね。その次にやるのがスイッチ操作。, “ゲージ判定”を使った、スイッチ読み取りライブラリを作ってみました。 if文と同じように、さまざまな状況に応じて異なるコードを実行することで、switch…case文はプログラムの流れを制御する。switch文は、制御式とcaseラベルとを比較する。制御式の値とcaseラベルの式とが等しいとき、そのcaseラベルに付随するコードを実行する。 Arduinoの読み取るピンには、スイッチの接点の片方と+5Vを接続し、スイッチのもう片方は0V(GND)へ接続します。 原理的に言えば、スイッチが押されていないときは+5Vですから digitalReadをした場合 HIGH が返されます。 $B%9%$%C%A$N8~$-$r(B90$BEY4V0c$($k$HF0:n$7$J$$$N$GCm0U$7$F$/$@$5$$!#(B, $B$HJQ$o$j$^$9!#(B Spiceman 2019-11-23 / 2020-09-27. Proudly powered by WordPress, gaugeは時間ではなく、加算している数値なので、使うプロセッサによって個々に既定量の調整が必要になる, この例ではwhile文で単純なループをしているだけなので、押している間は他の事はできない。同時に何かさせたい場合工夫が必要. 100PCS 200pcs 6 * 6マイクロタクトスイッチタクタイルプッシュボタンスイッチDIP 4P 6X6x4.3 / 5/6/7/8/9/10/11/12 / 13mm for Arduino DIY KIT #N/A Amazonの商品レビュー・口コミを見る それからwhile文でスイッチが押されている間、何もせずに待っています。 スイッチから手を離すと{と}で囲まれた範囲は終わりです。 残りの部分ではsの値に応じて、0ならLEDを消灯、1ならLEDを点灯、2ならLEDを1回点滅しています。