超ゆるゆる技術ブログ🌷

プログラミング勉強中です。

【Arduino】タクトスイッチ使ってみた

タクトスイッチでLEDを制御

f:id:dd15038:20180704004032j:plain
うねるジャンパワイヤ……。
タクトスイッチというスイッチを、オンやオフにすることでLEDを点けたり消したりしてみました。

タクトスイッチとは

軽く説明します🌱
f:id:dd15038:20180704004420j:plain
タクトスイッチは、そのボタンを押し、スイッチをオンにすれば電気を通す通電状態になり、離してスイッチをオフにすれば、電気が流れない絶縁状態になります。
これを利用すると、ボタンを押せばLEDは点灯、離せば消灯というふうな制御をすることができます。

f:id:dd15038:20180704004707j:plain
それと上の写真のように、ピンクの文字、青い文字の所がそれぞれ通電するようになっています。

プログラム

//タクトスイッチを接続するピン
const int switchPin = 2;
//LEDを接続するピン
const int ledPin = 13;

void setup() {
  //デジタル2番ピンを入力用として設定
  pinMode(switchPin, INPUT);
  //デジタル13番ピンを出力用として設定
  pinMode(ledPin, OUTPUT);
}

void loop() {
  //タクトスイッチの状態を取得
  int buttonState = digitalRead(switchPin);
  //タクトスイッチの状態をLEDに反映
  digitalWrite(ledPin, buttonState);
}

スケッチはこうです。
degitalRead()関数が、タクトスイッチが通電または絶縁状態かを読み取ります。
それを、degitalWrite()関数で、LEDへ伝えています。

回路図

f:id:dd15038:20180704010341p:plain
LEDはプラス極側をデジタル13番ピンへ、マイナス極側をブレッドボードのGNDへつないでいます。
タクトスイッチは電源の5Vと結果を入力するためのデジタル2番ピン、それとブレッドボードのGNDへつなぎます。
気を付けなければいけないのが、ブレッドボードのGNDは穴が2列あるけれど、通電はそれぞれの列ずつでしかしないこと。
だからいろいろなピンがGNDを使うには、同じ列のなかでつなげなくてはいけない😶

スイッチのようす

f:id:dd15038:20180704011502j:plain
ボタンを押しておらず、LEDも消えている状態です。

f:id:dd15038:20180704011548j:plain
ボタンを押しているので、LEDがキレイにぴかっと光ってます!

感想

今回はかなり苦戦しました。
特に回路。タクトスイッチの結果がちゃんとLEDへ反映されなくて、ガチャガチャ組みかえまくりました…😓
でもそれで、ブレッドボードのGNDは同じ列同士じゃないと通電しないことが思い知れてよかったです。
こんな一見単純なところでつまずくとは思いませんでしたが…。
何はともあれ、結果はうまくいってよかったので次もいろいろと挑戦していきます!!

【Arduino】Lチカやってみた③

明るくなったり暗くなったり

f:id:dd15038:20180702215307j:plain
今回はArduinoのスケッチ例から「fade」を使って動かしていきたいと思います。
これもLチカと呼んでいいのかな…?
まぁ、LEDが何かしら動作してればいいや😏

プログラム

//LEDを明るくしたり暗くする
//intでそれぞれ定義する
int led = 9;     //LEDの初期値が9
int brightness = 0;  //brightnessの初期値が0
int fadeAmount = 5; //fadeAmountの初期値が5

void setup() {
  //デジタルピン9番をLED出力設定
  pinMode(led, OUTPUT);
}

void loop() {
  //PWM波をデジタルピン9番にデューティ比brightness/255で出力
  analogWrite(led, brightness);

  //次のloop()実行時のbrightnessの値
  //fadeamountを加算していく
  brightness = brightness + fadeAmount;

  //brightnessの値が0以下または255以上であるときfadeAmountの符号反転
  if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount;
  }
  //最後に30ミリ秒待つ
  delay(30);
}

こんな感じです。
PWM(Pulse Width Modulation)波とは、スイッチのオンとオフのスピードを切り替える電圧の制御をする波のことです。
制御は、デューティ比という比率によって行われます。

このスケッチのデューティ比は、周期の最大値255÷brightnessの値と決められています。
brightnessの値は、ループ関数の中に書かれた条件と式によって変化を続けます。
このおかげでデューティ比もまたずっと変化するので、電力が強くなったり弱くなったりが繰り返されます。

そのためLEDも、明るくなったり暗くなったりし続けます。

回路図

f:id:dd15038:20180703005646p:plain
「Lチカやってみた①」とほとんど同じ回路ですが、つないでいるピンが違います。
今回はデジタル9番ピンを使っています。

実際のようす

f:id:dd15038:20180703012151g:plain
gif動画ですが…。
もわ~と明るくなったり暗くなったりを繰り返しています。
ホタルの光みたいですね。

感想

最初は難しいプログラムなのかなと思ったけど、わかれば簡単でした。
スケッチ例、他にもいろいろ試していきたいです。

【Arduino】Lチカやってみた②

LEDを交互に光らせてみたー

2種類のLEDを使って、Lチカをちょいレベルアップ。
f:id:dd15038:20180612012932j:plain

プログラム

void setup() {
  //新たにデジタル12番ピンを設定
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  //12番ピンにつながるLEDは点灯
  digitalWrite(12, HIGH);
  //13番ピンにつながるLEDは消灯
  digitalWrite(13, LOW);
  //ついでに時間を2000ミリ秒へ変えちゃった
  delay(2000);

  //12番ピンのLED消灯
  digitalWrite(12, LOW);
  //13番ピンのLED点灯
  digitalWrite(13, HIGH);
  delay(2000);
}

この間のプログラムにちょこっと書き加えたただけ。

回路図

f:id:dd15038:20180612003328p:plain
今回はふたつのLEDのマイナス極をそれぞれGNDへつなげる必要があるので、前回のようにひとつのワイヤでGNDピンへ直接つなぐことができません。
なのでブレッドボードにあるGND部分を利用します。
LEDのマイナス極とここをそれぞれワイヤでつなぎ、またこことArduinoのGNDピンとをつなぐと、電気がちゃんとめぐります!

実際に点けてみた

f:id:dd15038:20180612003734j:plain
12番ピンにつないだのが緑色のLED、
13番ピンにつないだのが赤色のLEDです。
今点灯しているのは緑色…。わかりづらいんですが😓
それぞれにつなげてある抵抗の値も違うので…。
緑色の抵抗値は10kΩ。

f:id:dd15038:20180628012235j:plain
拡大しました。
仄か~に光ってます。



f:id:dd15038:20180612004043j:plain
そして今点いているのが赤色のLEDです。すごくまぶしい!!
緑のLEDはちゃんと休んでます。
赤色の抵抗値は100Ωです。

今回の感想

だんだんArduino触るの慣れてきたかもです。
それとLEDとか抵抗とか、もっと部品をそろえていきたいなって思いました。

【Arduino】Lチカやってみた①

電子工作の第一歩 Lチカやってみよー

f:id:dd15038:20180608211549j:plain

プログラム

ほとんどArduinoの中に入ってるスケッチ例使っただけ。
ファイル>スケッチ例>01.Basics>Blinc

//起動時に一度だけ設定される
void setup() {
  //デジタル13番ピンを出力用として設定する
  pinMode(13, OUTPUT);
}

//繰り返し実行される
void loop() {
  //デジタル13番ピンをHIGHに設定してLEDを点灯
  digitalWrite(13, HIGH);
  //1000ミリ秒待つ(1秒止める)
  delay(1000);
  //デジタル13番ピンをLOWに設定してLEDを消灯
  digitalWrite(13, LOW);
  delay(1000);
}

これでLEDがちかちかします💡
deray();の()内をいろいろな数字に変えると面白い!

回路図

f:id:dd15038:20180608204819p:plain
LEDのアノード(+)を13番に、カソード(-)をGND(グランド)につながるように組みます。
※LEDの脚が長いほうがアノード、もう一方がカソードです。
アノードの前に抵抗100Ωをはさみ、LEDへの負担を軽くしておきました😉
13番からは電気が流れてくるので「+」、GNDはその名の通り地面に電気を放つということで「-」の役割です。

蛇足

f:id:dd15038:20180612000450j:plain
こうやって直接Arduinoにさしても反応はしますが、LEDが壊れやすくなるのであまりよくないです。

f:id:dd15038:20180612002551j:plain
あと抵抗値を10kΩに変えてみたもの。
光がしょぼい…。

今回の感想

LEDが思い通りに点く瞬間がとても楽しいです。