O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

5.901 visualizações

Publicada em

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

Publicada em: Tecnologia
  • Seja o primeiro a comentar

ロボットシステム学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

×