Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ロボットシステム学2015第3回

5,917 views

Published on

Arduinoの使い方の簡単な解説。シミュレータでの実習。

Published in: Technology
  • Be the first to comment

ロボットシステム学2015第3回

  1. 1. ロボットシステム学 第3回 上田隆一
  2. 2. 本日の内容 • Arduino • Arduinoのシミュレータ – 手を動かしましょう Oct. 7, 2015 ロボットシステム学 2
  3. 3. Arduinoの概要 • AVRマイコンを搭載したマイコンボード – ATmega328P – オープンソースハードウェア • 仕様が公開されている • 2005年イタリア発 – 学生向けの プロトタイピングシステム Oct. 7, 2015 ロボットシステム学 3
  4. 4. Arduinoの構成(Arduino Unoの場合) • ブレッドボード等で回路を試作しやすいような配慮 • もちろん試作だけでなくシステムでの利用も可 • Arduinoでプログラミングしてマイコンを外して利用可 • 部品 – マイコン(AVR): ATmega328P – ピンソケット • マイコンの端子とつながっていてジャンパー線が挿せる – USBソケット: シリアル通信・電源の供給 Oct. 7, 2015 ロボットシステム学 4
  5. 5. ピンソケットの配置 • ほぼマイコンと直結されている • マイコンから遠い側の配置 – 0〜13のディジタルI/O • 「~」がついているものはPWMの機能が利用可能 • 0,1番(TX、RX)はシリアル通信にも使える – GND: グラウンド – AREF: アナログ入力の基準電圧入力用 Oct. 7, 2015 ロボットシステム学 5
  6. 6. • マイコンから近い側の配置 – A0〜A5: アナログ入力(ADコンバータ) – Vin: 外部電源の線と直結 – 3.3V: レギュレータからの電源供給 • 最大電流はボードの購入先の資料で 確認のこと(オープンソースハードなので) – 5V: USBあるいはレギュレータからの電源供給 – RESET: リセット – IOREF: ボードの電圧を出す(外から3.3Vか5Vを判別するため) Oct. 7, 2015 ロボットシステム学 6
  7. 7. Arduinoの構成(ソフトウェア) • 生身のマイコンにつきものの面倒臭さの除去 – 予めブートローダが書き込まれている – ブートローダの役割 • 電源を入れたときに既存のスケッチを起動 • PC側からプログラム(Arduino用語でスケッチと呼ぶ)を 受信したら、フラッシュメモリに書き込んで起動 Oct. 7, 2015 ロボットシステム学 7
  8. 8. Arduinoを使う場合/使わない場合 • Arduinoの欠点 – ボードを使うと生身のマイコンより面積をとる – 完全にマイコンをコントロールしたい場合には マイコンのこともArduinoのことも知る必要がある • 特に割り込み回り • 生身のマイコンを使うかArduinoの方法に従うか – とりあえずArduinoみたいな簡単なもので困ったら 生身のマイコンを使えばよい – 使わない人がいたら理由をよく聞くと勉強になる Oct. 7, 2015 ロボットシステム学 8
  9. 9. プログラムを動作させるまでの流れ • PCでArduinoのIDEを ダウンロード・インストール – https://www.arduino.cc/en/Main/Software – IDE: integrated development environment (統合開発環境) Oct. 7, 2015 ロボットシステム学 9
  10. 10. • コードを書く – IDE上/エディタ – コードはファイルと同名のディレクトリに保存される • Arduinoのポートを選択 • コンパイル&転送 – IDEの画面上の矢印ボタンを押す – 勝手に動き出す Oct. 7, 2015 ロボットシステム学 10
  11. 11. Arduinoのプログラム例 • LEDを点滅させる最も簡単なもの – リポジトリ – コードの簡単な解説 • setup関数 – 最初に1回だけ呼ばれる • loop関数 – 繰り返し呼ばれる • 13番ピンの電圧のHIGH/LOW(5V/0V)でLEDが光る Oct. 7, 2015 ロボットシステム学 11
  12. 12. ポイント • 13番ピンの入出力の方向を指定 – マイコンがINPUT/OUTPUTを切り替えられるので • digitalWriteという関数で電圧(HIGH/LOW)を変更 Oct. 7, 2015 ロボットシステム学 12
  13. 13. シミュレータを使って確認 • やること – シミュレータ( 123D CIRCUITS)で今の回路と 等価なものを作成 – ただしLEDに抵抗をつけましょう Oct. 7, 2015 ロボットシステム学 13
  14. 14. アナログ出力の使い方 • 3, 5, 6, 9, 10, 11番ピンはPWMを 内部で行ってくれる • PWM(pulse width modulation, パルス幅変調) – ディジタル出力の電圧を短時間に周期的に切り替え – HIGHの時間とLOWの時間を加減することで 平均で消費される電力を増減 Oct. 7, 2015 ロボットシステム学 14
  15. 15. PWMの例(LEDの光量調整) • アナログ出力の例の前に・・・ – ディジタル出力でもPWMはできる • 左: HIGH:LOW = 19:1(デューティー比: 19/20) • 右: HIGH:LOW = 1:19(デューティー比: 1/20) – 面倒なこと • 周期の短さに限界 (※ 50Hzより長いとチラつく) • ループを一つ占拠 Oct. 7, 2015 ロボットシステム学 15
  16. 16. • アナログ出力を使う – 回路とコードの例 – ポイント • analogWrite関数を用いる • 0 から 255 の整数値でデューティー比を与える Oct. 7, 2015 ロボットシステム学 16
  17. 17. アナログ入力 • 回路とコードの例 – 光センサから読んだ値とLEDの明るさの連動 • ポイント – analogRead関数でピンへの電圧を読み取る • 0が0V、1023が5Vに対応 – analogWriteへの入力は0から255までなので、 A0から読んだ値は4で割る – シミュレータで作ってみましょう Oct. 7, 2015 ロボットシステム学 17
  18. 18. 補遺: チャタリング • チャタリング: 微小時間に HIGH 状態と LOW 状態が細かく振動 • シミュレータのスイッチは チャタリングしないので注意 • 例 – 右の回路で チャタリング を起こすコード – シミュレータ Oct. 7, 2015 ロボットシステム学 18
  19. 19. 次回以降 • 次週: Arduinoでモータを扱う – 123D Circuitsを使った課題を出します • 次々週以降: Linuxにシフトしていきます – Raspberry Pi – ROS Oct. 7, 2015 ロボットシステム学 19

×