Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Arduino Dojo
Search
suzakutakumi
March 30, 2021
0
17
Arduino Dojo
Arduino Unoを使った、マイコン初心者向けの資料です。
suzakutakumi
March 30, 2021
Tweet
Share
More Decks by suzakutakumi
See All by suzakutakumi
ピクロス作成の中間発表
suzakutakumi
0
89
しゅみろん
suzakutakumi
0
140
trap-search
suzakutakumi
0
38
Pyramid Makerの作成
suzakutakumi
0
20
マークダウンパーサーの自作
suzakutakumi
0
100
絵文字ジェネレータボットの作成
suzakutakumi
0
150
send_discord
suzakutakumi
0
46
独自ドメインについて
suzakutakumi
0
38
ESP32とAlexaを用いたエアコン制御
suzakutakumi
0
1.3k
Featured
See All Featured
Code Review Best Practice
trishagee
68
18k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Adopting Sorbet at Scale
ufuk
77
9.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Making Projects Easy
brettharned
116
6.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
The Invisible Side of Design
smashingmag
299
51k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Fireside Chat
paigeccino
37
3.5k
Transcript
Arduino Dojo
目次 1. マイコンとは 2. Arduino IDEのsetup 3. Lチカ 4. アナログ出力
5. ボタン入力1 6. ボタン入力2&シリアル通信 7. 時間処理
1. マイコンとは マイコン(マイクロコントローラ)は、電子回路をプログ ラムを用いて制御するのに使われるコンピュータであ る
1. Arduinoについて Arduinoはオンボード型のマイコンでUSBをさすだけで通信や電源供給などができると ても便利なモノです(Made in Italy) オープンソースハードウェアで、互換品などが多く出回っている
2. Arduino IDEのsetup(windows 10) Microsoft Storeからインストールしてください。
2. Arduino IDEのsetup(MacOS,Linux)
2. Arduino IDEのsetup(MacOS,Linux)
3. Lチカ まず最初にLEDをチカチカさせます。 0.5秒光る 0.5秒消える を繰り返すプログラム。
3-1. プログラム説明 void setup() { pinMode(5,OUTPUT); } void loop() {
digitalWrite(5,HIGH); delay(500); digitalWrite(5,LOW); delay(500); }
3-1-1. setup関数とloop関数 setup関数は電源を入れた時に、最初に1回だけ行われる関数 loop関数はsetup関数の後に行われ、繰り返し行われる setup関数 loop関数
3-1-2. pinMode関数 pinMode(ピン番号,OUTPUT or INPUT); Arduinoのピンの入出力を設定する。 例:pinMode(5,OUTPUT); 5ピンを出力ピンに設定する。
3-1-3. digitalWrite関数 digitalWrite(ピン番号,HIGH or LOW); 指定したピンから5Vを出力するorしない。 例:digitalWrite(7,HIGH); 7ピンから5Vを出力する。 例:digitalWrite(7,LOW); 7ピンから5Vを出力しない。
3-1-4. delay関数 delay(ミリ秒); 指定したミリ秒をプログラムを止める。 例:delay(500); 500msプログラムを止める
3-1-5. プログラム解説 void setup() { pinMode(5,OUTPUT); //5ピンを出力ピンにする } void loop()
{ digitalWrite(5,HIGH); //5ピンから5Vを出力する delay(500); //出力状態を維持して500ms止める digitalWrite(5,LOW); //5ピンから0Vを出力する delay(500); //出力状態を維持して500ms止める }
3-2-1. コンパイル 左上のチェックマークをクリックすることで、コンパイルを行える。 コンパイルを行うことで、プログラムコードが会っているか確かめられる。
3-2-2. 書き込み Arduinoにプログラムを書き込む 1. ArduinoとPCをUSBで繋げる 2. 上の[ツール]→[シリアルポート]からポートを選択 3. 左上の→マークをクリックして、コンパイル&書き込む
3-3-1. LEDについて LED(発光ダイオード)について LEDはアノードとカソードにかかる電圧差で光る アノード>カソード のときに光ります アノード カソード
3-3-2. 回路説明 前提:電源が5V LEDに1V,20mA このときの抵抗値を求める 抵抗にかかる電圧は4Vなので、 R=4/20m=200Ω
3-4. ブレッドボードについて ブレッドボードを使うと、 はんだ付けなどを使わずに 回路を簡単に組めます。 赤い線が書いてある所は 中で繋がっています。
3-5 回路の製作 右図を参考に回路を組んでみましょう ※USBを抜いて、回路を組むとよいでしょう 心配な人は近くのSAに確認して、 もらってください
3-6. プログラムを書き換えてみよう delayの中の数を書き換えることで、 点灯時間と消灯時間を変えられます。
4. アナログ出力 5Vだけじゃなく、それ以外の電圧も出力します。
4-1. プログラム説明 void setup() { pinMode(5,OUTPUT); } int i; void
loop() { for(i=0;i<256;i++){ analogWrite(5,i); delay(2); } for(i=255;i>=0;i--){ analogWrite(5,i); delay(2); } }
4-1-1. analogWrite関数 analogWrite(ピン,0~255); 0Vを0,5Vを255として、0V~5Vの間の電圧を出力できる ※ボートに波線のあるピンでしか使えません 例:analogWrite(5,51); 5ピンから1Vを出力する
4-1-2. PWMについて 5Vと0Vを高速で繰り返すことで、0V-5Vの間の電圧を出力できる 知らなくても使えるが、マイクロ秒など短い時間を扱う時は使用は控える 5V 0V 1 4
5. ボタン入力 タクトスイッチを押すとLEDが光る様にする
5-1. プログラム説明 #define BTN 3 #define LED 5 void setup()
{ pinMode(LED,OUTPUT); pinMode(BTN,INPUT); } void loop() { if(digitalRead(BTN)==LOW){ digitalWrite(LED,HIGH); delay(1000); digitalWrite(LED,LOW); } }
5-1-1. pinMode関数 pinMode(ピン,INPUT); 指定したピンを入力に設定する 例:pinMode(3,INPUT); 3ピンを入力に設定する
5-1-2. digitalRead関数 digitalRead(ピン); 指定したピンの入力をみます 例:if(digitalRead(3)==LOW) 3ピンへ電圧が入力されていない時、ifの中身が実行される
5-2-1. タクトスイッチについて ボタンを押すと赤の部分が繋がります 緑の部分は常に繋がっています
5-2-2. プルアップ回路 右の回路が入力の回路です 電圧計の部分がArduinoの入力になります ピン
5-2-2. プルアップ回路 実際に、Arduinoでやるとこうなります 抵抗には10kΩなど大きい抵抗を使います
5-2. 回路図
6. ボタン入力2&Serial出力 内部プルアップとシリアル通信を用いた出力をやります。
6-1. プログラム説明 #define BTN 3 #define LED 5 void setup()
{ Serial.begin(9600); pinMode(LED,OUTPUT); pinMode(BTN,INPUT_PULLUP); } void loop() { if(digitalRead(BTN)==LOW){ Serial.print(BTN); Serial.println(" pin is pressed!"); digitalWrite(LED,HIGH); delay(1000); digitalWrite(LED,LOW); } }
6-1-1. 内部プルアップについて マイコンの内部にプルアップ回路が入ることで、プルアップ回 路作る必要が無くなります。 pinMode(ピン,INPUT_PULLUP); 指定したピンの内部プルアップを有効にして入力にする 例:pinMode(3,INPUT_PULLUP);
6-1-2. Serialについて Arduinoはデバッグやモジュールと通信等のためにシリアル通信を用います 今回はUSBを介して、PCと通信をするために使います
6-1-3. Serial.begin Serial.begin(bps); シリアル通信を指定したbpsで開始します 例:Serial.begin(9600); シリアル通信を9600bpsで開始します
6-1-4. Serial.print,Serial.println Serial.print(変数 or 文字列); シリアル通信で、変数または文字列を送る(出力する) Serial.printlnは出力した後に改行が入る 例:Serial.print(“ON”); ONと送る
6-2. 回路製作 前回の回路から プルアップ回路を除く
6-3. シリアルモニタについて ArduinoIDEの右上にある🔍をクリック または、 上の[ツール]からシリアルモニタを選ぶ シリアルモニタには、Arduinoから送られてきた出力が見れます
7. シリアル入力 シリアルモニタからの入力に対して、Arduinoを動 作させる
7-1. プログラム説明 #define LED 5 void setup() { Serial.begin(9600); pinMode(LED,
OUTPUT); } void loop() { if (Serial.available() > 0) { int c = Serial.read(); if (c == 'H') { digitalWrite(LED, HIGH); } else if (c == 'L') { digitalWrite(LED, LOW); } } }
7-1-1. Serial.available Serial.available() シリアルで入力があるかどうか調べる 例:if(Serial.available()>0) 入力が会った場合,if文の中身を実行する
7-1-2. Serial.read Serial.read(); シリアルで送られてきた文字を受け取る 例:int c=Serial.read(); 送られてきた文字をcに代入する
7-2. シリアルモニタから入力 シリアルモニタの入力欄から’H’や’L’を入力して、 LEDの点灯を確認してみましょう
7-3. 回路図 最初の回路と同じです
8. 時間処理 別々のタイミングでプログラムを処理する方法を教えます
8-1. プログラム説明 #define RED 5 #define BLUE 13 void setup()
{ pinMode(RED, OUTPUT); pinMode(BLUE, OUTPUT); } unsigned long tR=millis(),tB=millis(); int INTERVAL_R=500,INTERVAL_B=3000; int outR=LOW,outB=LOW; void loop() { if(millis()-tR>=INTERVAL_R){ tR=millis(); outR=!outR; digitalWrite(RED,outR); } if(millis()-tB>=INTERVAL_B){ tB=millis(); outB=!outB; digitalWrite(BLUE,outB); } }
8-1-1. millis関数 millis(); Arduinoが起動してからのミリ秒数が取得できる 例:unsigned long t=millis(); tに現在の秒数がミリ秒単位で代入する
8-1-2. 仕組み説明 unsigned long tR=millis(); void loop() { if(millis()-tR>=100){ tR=millis();
outR=!outR; digitalWrite(RED,outR); } } tRが前に実行した時間 millis()-tRは 現在の時間ー全回実行した時間 になる 上のプログラムを組み合わせることで、delayを使わずに複数の処理が実行できる
8-2. 回路製作 最初の回路(LED複数ver)
9. アイデアソン AizuGeekDojoから持ってきたセンサやモジュールがあります。是非、活用してください。 また、何に使うかわからなかったら、お近くのSAに聞いてください。 Arduinoの他にもESP32やRaspberryPiもあります。