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
15
Arduino Dojo
Arduino Unoを使った、マイコン初心者向けの資料です。
suzakutakumi
March 30, 2021
Tweet
Share
More Decks by suzakutakumi
See All by suzakutakumi
ピクロス作成の中間発表
suzakutakumi
0
87
しゅみろん
suzakutakumi
0
120
trap-search
suzakutakumi
0
36
Pyramid Makerの作成
suzakutakumi
0
17
マークダウンパーサーの自作
suzakutakumi
0
98
絵文字ジェネレータボットの作成
suzakutakumi
0
130
send_discord
suzakutakumi
0
43
独自ドメインについて
suzakutakumi
0
33
ESP32とAlexaを用いたエアコン制御
suzakutakumi
0
1.2k
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
460
33k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Music & Morning Musume
bryan
46
6.3k
Rails Girls Zürich Keynote
gr2m
94
13k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
GitHub's CSS Performance
jonrohan
1030
460k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
Speed Design
sergeychernyshev
25
720
Code Reviewing Like a Champion
maltzj
521
39k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
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もあります。