前回の内容 マイクロコンピュータにおけるプログラミング PC上で作成 コンパイル マイコンに転送 実行 プログラムを用いて外部の装置を動作させる LED turnonled turnoffled LCD printf プログラムを用いて外部の装置の状態を読み取る プッシュスイッチ getpushsw

Similar documents
今回の内容 マイクロコンピュータにおけるプログラミング 機器の中に組み込まれる ロボット 自動車 家電 などいろいろな分野で利用 プログラムを用いて外部の装置を動作させる マイコンから の出力 発光ダイオード Light Emitting Diode 液晶ディスプレイ Liquid Crystal

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

正転時とは反対に回転する これが逆転である 図 2(d) の様に 4 つのスイッチ全てが OFF の場合 DC モータには電流が流れず 停止する ただし 元々 DC モータが回転していた場合は 惰性でしばらく回転を続ける 図 2(e) の様に SW2 と SW4 を ON SW1 と SW3 を O

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

スライド 1

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ

情報処理Ⅰ演習

Microsoft Word - no11.docx

DCモータの制御

Microsoft Word - Training10_プリプロセッサ.docx

C プログラミング 1( 再 ) 第 4 回 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 1

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

PowerPoint プレゼンテーション

<4D F736F F F696E74202D F4B87555F A838B B F5F91E63189F12E >

スライド 1

プログラミング実習I

情報処理演習 B8クラス

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

Microsoft PowerPoint - CproNt02.ppt [互換モード]

2006年10月5日(木)実施

プログラミング基礎

Taro-テキスト.jtd

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Microsoft Word - no202.docx

Microsoft PowerPoint - 計算機言語 第7回.ppt

PowerPoint プレゼンテーション

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

赤外線レーザー 360 距離センサ XV-11 LIDAR Sensor 取り扱い説明書 もくじ お使いになるまえに 各部のなまえと扱い方 2 使い方 (Processing GUI で使う ) 必要なソフトのインストール 3 接続方法 3 GUI の操作方法 4 使い方 ( ロボットに組み込む )

Microsoft PowerPoint - program.ppt [互換モード]

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

Microsoft PowerPoint - 4.pptx

プログラミング基礎

Microsoft PowerPoint - C言語の復習(配布用).ppt [互換モード]

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

Studuinoプログラミング環境

Taro-再帰関数Ⅲ(公開版).jtd

NCB564個別00版

2. 仕様 電源 :USB バスパワー (USB 入力の 5V 電源を使用します ) 出力 : 3.5mm ステレオジャック アナログステレオ出力 最大 20mArms 対応ヘッドホンインピーダンス 1Ω~500Ω RCA ピンジャック アナログ 2ch 出力 (L R) ラインレベル ヘッドホンア

三菱電機マイコン機器ソフトウエア株式会社

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ

CプログラミングI

Prog1_12th

Microsoft PowerPoint - prog08.ppt

プログラミング入門1

プログラミング実習I

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Microsoft PowerPoint - prog07.ppt

CMOS リニアイメージセンサ用駆動回路 C10808 シリーズ 蓄積時間の可変機能付き 高精度駆動回路 C10808 シリーズは 電流出力タイプ CMOS リニアイメージセンサ S10111~S10114 シリーズ S10121~S10124 シリーズ (-01) 用に設計された駆動回路です セン

解答編 第 7 章実数型の計算と標準数学関数 演習問題 7.1 文法事項 1 ) 暗黙の型変換とは何か答えなさい 代入演算子 (=) や算術演算子 (+,-,*,/,%) では 2 つの演算項のデータ型が揃っている事が必要です 2 つの演算項のデータ型が異なる場合 可能ならば 演算項のデータ型を変換

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

kiso2-09.key

1. 入力した文字列を得る 1.1. 関数 scanf() を使う まずは関数 scanf() を使ったプログラムを作ってみましょう 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: #include<stdio.h> #define SIZE 128 main(

Ver.1-5 Date レゾルバ変換器 (R/D 変換器 ) R D 1416 取扱説明書 レゾルバデジタル変換器 (RD1416) サーボテクノ株式会社 神奈川県相模原市中央区相模原 TEL: FAX:

< F2D B838A835882CC8CF68EAE2E6A7464>

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

スライド 1

< F2D834F838C A815B A CC>

Microsoft Word - no103.docx

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

Microsoft Word - 実験4_FPGA実験2_2015

講習No.12

Report#2.docx

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

C#の基本2 ~プログラムの制御構造~

ファイル入出力

スライド 1

Taro-リストⅠ(公開版).jtd

Report#2.docx

Arduinoで計る,測る,量る

memo

HDLトレーナーサンプルプログラム説明書

memo

DVIOUT

memo

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

4-4 while 文 for 文と同様 ある処理を繰り返し実行するためのものだが for 文と違うのは while 文で指定するのは 継続条件のみであるということ for 文で書かれた左のプログラムを while 文で書き換えると右のようになる /* 読込んだ正の整数値までカウントアップ (for

Microsoft PowerPoint - ca ppt [互換モード]

Microsoft Word - Cプログラミング演習(3)

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

Taro-ファイル処理(公開版).jtd

物質工学科 田中晋

スライド 1

プログラミング基礎

Microsoft PowerPoint ppt

モータ HILS の概要 1 はじめに モータ HILS の需要 自動車の電子化及び 電気自動車やハイブリッド車の実用化に伴い モータの使用数が増大しています 従来行われていた駆動用モータ単体のシミュレーション レシプロエンジンとモータの駆動力分配制御シミュレーションの利用に加え パワーウインドやサ

Java講座

Microsoft PowerPoint - C_Programming(3).pptx

iCLR

Taro-ポインタ変数Ⅰ(公開版).j

メソッドのまとめ

みんなの Arduino 入門 課題と演習 本資料は みんなの Arduino 入門 を使っている方々への課題 ( 演習含む ) を参考としてま とめたものです 本書の理解度の確認と今後のステップアップのためにご利用下さい ( 最終更新日 :2014 年 4 月 25 日 ) 株式会社タブレイン T

Microsoft PowerPoint - 5Chap15.ppt

- VHDL 演習 ( 組み合せ論理回路 ) 回路 半加算器 (half adder,fig.-) 全加算器を構成する要素である半加算器を作成する i) リスト - のコードを理解してから, コンパイル, ダウンロードする ii) 実験基板上のスイッチ W, が, の入力,LED, が, の出力とな

CMOS リニアイメージセンサ用駆動回路 C CMOS リニアイメージセンサ S 等用 C は当社製 CMOSリニアイメージセンサ S 等用に開発された駆動回路です USB 2.0インターフェースを用いて C と PCを接続

Microsoft PowerPoint ppt

Transcription:

ものづくり基礎工学 情報工学分野

前回の内容 マイクロコンピュータにおけるプログラミング PC上で作成 コンパイル マイコンに転送 実行 プログラムを用いて外部の装置を動作させる LED turnonled turnoffled LCD printf プログラムを用いて外部の装置の状態を読み取る プッシュスイッチ getpushsw ディップスイッチ getdipsw スイッチの状態によって関数の戻り値が変わる 戻り値の値を変数に代入する int dip; 状態に応じて動作を変える if文 2 dip=getdipsw( )

今回の内容 物理量を読み取る装置の利用 A/D変換器 マイコンに内蔵されている 距離センサ プログラムを用いて外部の装置を動作させる モータ 状態に応じて動作を変える 2つ以上の場合に分ける 外部の状況に応じた機器の制御 3

A/D変換器を用いた電圧計 H8/3048F ONE マイコン 乾電池 A/D変換器 距離センサ 0 1 1022 1023 電圧値に変換 LCD 0.00 5.00 マイコンに内蔵されたA/D変換器を利用する 得られた整数値をプログラムで電圧値に変換して LCDに表示する 4

A/D変換器 A/D = Analog to Digital A/D変換器 連続 電圧値 アナログ 整数値 ディジタル とびとび 離散 範囲内のどのような値も取り得る 無限大の情報量 0~1023の範囲の値 210通り=10[bit]の分解能 プログラムで利用できない プログラムで利用できる 入力された電圧値に応じた整数値を出力する センサ 電圧を出力する からの 情報を受け取って処理できる 5

A/D変換器を用いた電圧計 リスト4.2.1 06battery.c #define avnum 1000 void main(void) { double v; 電圧 実数 を保存 するための変数の宣言 引数で指定した回数変換し 平均を取る 細かな変動を取り除く 1000と記述されているのと同じ initmicon(); clearscreen(); while(1){ v=getvoltage(avnum); gotoxy(0,0); printvoltage(v); 6 #define avnum 1000 電圧値をA/D変換する A/D変換値を電圧値に変換 する 電圧値を返す LCDに表示

マザーボード上のコネクタ 電源用コネクタ GND 5V 外部の装置に電源を供給する GND 電圧の基準 5V GNDに対して5[V]を出力する CN1 コネクタ1 ピン番号 CN2 1 2 10 CN2 19 20 この位置は16番ピン CN2 16と表わす CN3 CN1 CN2 CN3は外部の装置 とマイコンの間で信号 小さな 電流を伴う電圧の変化 のやり 取りを行なうために用いる 7

電池ケースの接続 ー課題4.1(1) ー GND 黒色の導線はこの列のいずれかに 単3形乾電池 5V +極 電池 ケース 1 2 ピン番号 8 極 10 CN2 19 20 赤色の導線はここに 12番ピン CN2 12

距離センサの接続 ー課題4.1(2) ー GND 黒色の導線はこの列のいずれかに 赤色の導線はこの列のいずれかに 5V 1 2 10 CN2 19 20 緑色の導線はここに 12番ピン CN2 12 9

距離センサの入出力端子と動作 5V 動作用の電圧を 加える 入出力電圧の基準 = GND Vo 距離に応じた電圧が 出力される 赤外線が出ている 携帯電話のカメラや ディジタルカメラで見ると 光って見える 反射された 赤外線を受ける 受光された赤外線の位置 から距離を計算する 10

測定の方法 ー課題4.1(2) ー 距離センサ 11 A4版の紙 実験テキストも 同じ大きさ

誤差と誤差率の計算 ー課題4.1(2)[iv]ー 誤 差 誤差 測定値 真の値 測定値と真の値の大小関 係によって符号が変わる 課題4.1(2)では A4長辺の長さ=29.7[cm] 誤差率 誤差 誤差率 [%] = 100 真の値 測定値 真の値 = 100 真の値 正の誤差 率 測定値が真の値より大きい 負の誤差 率 測定値が真の値より小さい 誤差と誤差率には符号がつくことに注意する 12

有効数字 有効数字 信頼の置けない桁以下を四捨五入し 打ち切って表した値 例 2.85 真の値は2.845以上2.855未満の範囲にある 有効数字の桁数 2.85 有効数字3桁 0.0285 有効数字3桁 先頭の0は有効数字ではない 0.002850 有効数字4桁 末尾の0は有効数字である 有効数字の桁数は 小数点以下の桁数とは意味が異なる. 信頼の置ける桁数 相対的な誤差の大きさ 13 絶対的な誤差の大きさ

誤差を含む値の計算 和と差 誤差が最も大きい数値を調べ その末位よりも1位下まで 計算し 最後の桁を四捨五入する 例 一旦 1.89を1.890と 1.89 0.523 = 1.367 = 1.37 誤差が最も大きい値 小数第3位は信用できない みなして計算 四捨五入 積と商 有効数字の桁数が最も少ない数値を調べ それよりも桁数が1 桁余分になるように計算し 最後の桁を四捨五入する 例 31.4 29.7 = 1.057 = 1.06 有効数字の桁数を 31.4 29.7 に 四捨五入 合わせる 3桁 14 0.5 29.7 = 0.016 = 0.02 有効数字の 桁数を0.5に 合わせる 1桁 一旦 1桁余分に計算

課題4.1(2)における計算 電圧から計算される距離 小数第1位まで求める 誤 差 計算した距離 真の値とも小数第1位まで求められている ので 小数第1位まで求める 誤差の大きさによって有効数字の桁数が変わる 例 誤差が1.2[cm] 有効数字2桁 誤差が0.8[cm] 有効数字1桁 誤差率 求めた誤差によって有効数字の桁数が変わる この課題では 真の値は有効数字3桁であるので 誤差が有効数字2桁 誤差率も有効数字2桁となる 誤差が有効数字1桁 誤差率も有効数字1桁となる 15

距離センサとA/D変換器を用いた距離計 H8/3048F ONE マイコン 距離センサ 電圧を出力 A/D変換器 0 1 1022 1023 電圧値に変換 0.00 5.00 LCD 距離に変換 距離センサによって 距離に応じた電圧を生成させる マイコンに内蔵されたA/D変換器を利用する 測定された電圧から距離を計算する メーカ発行のデータシートによる 16

距離センサとA/D変換器を用いた距離計 ーリスト4.2.2 07distance.c #define avnum 1000 void main(void) { int i,data,distance; double v; initmicon(); clearscreen(); while(1){ v=getvoltage(avnum); gotoxy(0,0); printvoltage(v); この部分はリスト4.2.1と同じ 1000回A/D変換をして電圧の 平均値をLCDに表示する 距離センサの 出力電圧 電圧値から距離を 求める処理 distance=calcdistance(v); gotoxy(0,1); printf("distance:%4d cm",distance); 17 計算して求めた距離をLCDに表示する

モータ実験基板 IN1 モータ制御用信号1 モータ実験基板 IN2 モータ制御用信号2 モータ これらの電圧の組み合わせで モータを制御する GND ロータリーエンコーダ 回転角度センサ モータの回転角度を 検出する 本実験では使わない 18 5V モータ モータコント ロールIC ロータリー エンコーダ用の電源 モータコントロールIC モータドライバ モータの回転を制御する モータを駆動するための 大きな電流を切り替える

モータ実験基板の接続 GND GND 逆転 CCW モータ実験基板 5V 5V IN1 CN3 15 正転 CW 19 IN2 CN3 16

モータの制御(1) リスト4.2.3 08motor1.c void main(void) { initmicon2(); while(1){ /*Motor0 高速正転と停止*/ gotoxy(0,0); printf("motor0: 100"); 高速正転 drive(0,100); 高速正転したまま待つ waitms(1000); gotoxy(0,0); printf("motor0: drive(0,0); waitms(1000); 0"); 停止 停止したまま待つ 20

モータ制御関数 drive(モータ実験基板の番号, モータの出力 ); 制御するモータ実験基板の番号 0 IN1とIN2をCN3 15とCN3 16に接続 1 IN1とIN2をCN3 17とCN3 18に接続 100~100の範囲の整数で指定 符号 回転の向き 正の値 正転 負の値 逆転 絶対値 回転の速度 0は停止 回転の向きの定義 逆転 CCW 21 正転 CW

ディップスイッチによるモータの制御 リスト4.2.5 10motor3.c ディップスイッチの状態を void main(void) 記憶するための変数の宣言 { int dip; ディップスイッチの 状態を読み取り initmicon2(); while(1){ dipには0~255の整数 dip=getdipsw(); 値が代入される drive(0,dip); gotoxy(0,0); dipの値に応じて回転 printf("dip=%3d",dip); この場合正転または停止 22

2つの場合に分けて処理を行なう if else if~elseのひな形 if( 条件式 ) { 条件が満たされた場合の処理 else { 条件が満たされない場合の処理 条件が満たされた 場合の処理 条件の判断 23 条件が満たされ ない場合の処理 条件が満たされ ない場合は何も しない if文

3つ以上の場合に分けて処理を行なう if else if else if~else if~elseのひな形 if( 条件式1 ) { 条件式1が満たされた場合の処理 else if( 条件式2 ) { 条件式1が満たされず 条件式2が見たされた場合の処理 else if( 条件式3 ) { 条件式1 2が満たされず 条件式3が見たされた場合の処理 else { 上記の条件がすべて 満たされない場合の処理 24 if~else if文

課題4.5のプログラム例1 void main(void) { ヒント(2) int dip; プッシュスイッチの状態を記憶するための変数を宣言 initmicon2(); ヒント(1) while(1){ プッシュスイッチの状態を読み込み dip=getdipsw(); ヒント(4) ヒント(5) if( S0のみが押された ) { ヒント(3) モータ0をdipで指定された速度で正転 ヒント(4) else if( S2のみが押された ) { モータ0をdipで指定された速度で逆転 else { ヒント(5) モータ0停止 ヒント(5) gotoxy(0,0); printf("dip=%3d",dip); 25

課題4.5のプログラム例2 void main(void) { int dip,speed; プッシュスイッチの状態を記憶するための変数を宣言 initmicon2(); while(1){ プッシュスイッチの状態を読み込み dip=getdipsw(); if( S0のみが押された ) { dipで指定された速度で正転するよう speedの値を設定 else if( S2のみが押された ) { dipで指定された速度で逆転するよう speedの値を設定 else { 停止するようspeedの値を設定 モータ0をspeedの値に応じて回転させる gotoxy(0,0); printf("dip=%3d speed=%3d",dip,speed); 26

課題4.6 表のようにまとめる スイッチを押してから離したとき モータの動作はどのように 変わるか powerが スイッチを押す前と比較する という解答は 不可 スイッチを押す前のモータの状態 正 転 逆 転 停 止 変数の値の変化 を問うているの ではない S0 S1 表のようにスイッチを操作したとき モータの動作はどう なるか あらかじめモータを回転させておく スイッチを押し続けたとき スイッチを押してから離したとき S2 S3 27

2個のモータ実験基板と距離センサの接続 ーリスト4.2.7 12distanceMotor.c ー 距離センサ 5V 5V 距離センサ モータ基板0 5V 5V モータ基板0 GND GND 距離センサ GND GND モータ実験基板0 28 モータ基板1 5V 5V モータ実験基板1 モータ基板0 IN1 CN3 15 モータ基板0 IN2 CN3 16 距離センサ Vo CN2 12 モータ基板1 IN1 CN3 17 モータ基板1 GND GND モータ基板1 IN2 CN3 18