PowerPoint プレゼンテーション

Similar documents
PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Studuinoプログラミング環境

mbed_library_study_meeting_v1.0.key

CM-3G 周辺モジュール拡張技術文書 MS5607センサ(温度、気圧)

スライド 1

untitled

Nios II - PIO を使用した I2C-Bus (2ワイヤ)マスタの実装

パーツリスト 組み立て前にすべてのパーツがそろっているかご確認ください 種類 品番 数 種類 品番 数 基板 I2C LCD 1 コンデンサ 0.1uF (104) 積層セラミック 1 IC ATtiny コンデンサ 10uF 電解 1 半固定抵抗 10~50kΩ 1 コネクタ IC ソ

AN15880A

thesis.dvi

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

電気的特性 (Ta=25 C) 項目 記号 条件 Min. Typ. Max. 単位 読み出し周波数 * 3 fop khz ラインレート * Hz 変換ゲイン Gc ゲイン =2-5 - e-/adu トリガ出力電圧 Highレベル Vdd V -

MPL115A

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

FreeBSD 1

CM-3G 周辺モジュール拡張技術文書 INA226センサ(電流、電圧、電力)

program.dvi

RFID RFID + ) (RFID IC transponder) RFID Tag Antenna wired-line Reader Ethernet/ RS232c Antenna RFID Tag Reader id command id interrogation id radio s

スライド 1

untitled

スライド 1

電力線重畳型機器認証技術

スライド 1

スライド 1

64bit SSE2 SSE2 FPU Visual C++ 64bit Inline Assembler 4 FPU SSE2 4.1 FPU Control Word FPU 16bit R R R IC RC(2) PC(2) R R PM UM OM ZM DM IM R: reserved

スライド 1

NJM78L00S 3 端子正定電圧電源 概要 NJM78L00S は Io=100mA の 3 端子正定電圧電源です 既存の NJM78L00 と比較し 出力電圧精度の向上 動作温度範囲の拡大 セラミックコンデンサ対応および 3.3V の出力電圧もラインアップしました 外形図 特長 出力電流 10

超初心者用

PIC倒立振子

64 3 g=9.85 m/s 2 g=9.791 m/s 2 36, km ( ) 1 () 2 () m/s : : a) b) kg/m kg/m k

Microsoft Word - SU1202教本(Disp)原稿.docx

81 /******************************************************************************/ 82 /* スレーブアドレスの設定 */ 83 /*****************************************

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

joho07-1.ppt

”ƒ.pdf

Nios® II HAL API を使用したソフトウェア・サンプル集 「Modular Scatter-Gather DMA Core」

TOS7200 CD-ROM DUT PC 1.0X p.15 NEMA Vac/10 A [85-AA-0003] m : CEE7/7 : 250Vac/10 A [85-AA-0005] : GB1002 : 250Vac/10A [ ] 2016

1. UART について UART は Universal Asynchronous Receiver Transmitter の頭文字をとったもので 非同期シリアル通信と呼ばれます シリアル通信とは 一本の信号線でデータをやりとりするために 1bit ずつデータを送出することをいいます データを受

Microsoft Word - PIC-USBマイコンボード_v1-02@WEB公開用資料.docx

DUSx200 シリーズコントローラ I2C インターフェース仕様書

回路図 部品表 部品番号 型番 個数 U PIC6F823 I/ST (TSSOP 4pin) R 00Ω (/0W, 608) R2 - R9 360Ω (/0W, 608) 8 C μf (25V, 608) LED LN56RA CN ロープロファイルピンソケット CN2 ロープロファイルピン

CoIDE 用 STM32F4_UART2 の説明 V /03/30 STM32F4 Discovery の非同期シリアル通信ポート UART2 の送受信を行うプログラムです Free の開発ツール CoIDE で作成したプロジェクトサンプルです プログラムの開始番地は 0x08000

cover_1103V-0Y.pmd

1 機能概要 複数ペリフェラル ( デバイスと呼びます ) を並行動作させて その IO 完了などのイベントを1カ所で待ち合わせて イベントドリブン処理を可能にします イベントは16 個を扱えます シーケンス処理を組めるように 特定のイベントだけ選別して待ち合わせる機能があります 待ち合わせるときに

r07.dvi

AKI-PIC16F877A開発キット (Ver1

ohp07.dvi

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

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

RX600 & RX200シリーズ アプリケーションノート RX用仮想EEPROM

SDC_SDIO_STM32F4 の説明 2013/09/17 SDIO インターフェースで SD カードをアクセスするプログラムのプロジェクトサンプルです FAT でファイルアクセスするために FatFs( 汎用 FAT ファイルシステム モジュール ) を使用しています VCP(USB 仮想 C

920MHzLPWA無線モジュール IM920のご紹介

GR-SAKURA-SAのサンプルソフト説明

NJU72501 チャージポンプ内蔵 圧電用スイッチングドライバ 概要 NJU72501はチャージポンプ回路を内蔵し 最大で3V 入力から 18Vppで圧電サウンダを駆動することができます このチャージポンプ回路には1 倍 2 倍 3 倍昇圧切り替え機能を備えており 圧電サウンダの音量を変更すること

NL-22/NL-32取扱説明書_操作編

untitled

フロントエンド IC 付光センサ S CR S CR 各種光量の検出に適した小型 APD Si APD とプリアンプを一体化した小型光デバイスです 外乱光の影響を低減するための DC フィードバック回路を内蔵していま す また 優れたノイズ特性 周波数特性を実現しています

AN-1077: ADXL345 Quick Start Guide

CCD リニアイメージセンサ用駆動回路 C CCD リニアイメージセンサ (S11155/S ) 用 C は 当社製 CCDリニアイメージセンサ S11155/S 用に開発された駆動回路です S11155/S11156-

HA17458シリーズ データシート

型名 RF007 ラジオコミュニケーションテスタ Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation RF007SDK-M001 RF007SDK-M001 参考資料 1

1

高速度スイッチングダイオード

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

Microsoft Word - SU1204教本(Driver)原稿.docx

表 信号端子 端子名 入出力 機能 DTR 出力 COM ポート DTR (Data Terminal Ready Control Output / Handshake Signal) RXD 入力 COM ポート RXD (Receiving Asynchronous Data Input) TX

【注意事項】RXファミリ 組み込み用TCP/IP M3S-T4-Tiny

表 示 制 御 16 文 字 2 行 の 表 示 が 可 能 ですが, 内 部 アドレスと LCD 画 面 とは 連 続 したアドレスに 配 置 されていませ ん A +0B +0C +0D +0E +0F +40

3 5 動作試験 変調せず超音波を出し続ける (DC 出力) と, 最初の 15 秒程度は ピーーー という高周波音が聞こえ, そ れから ブブブブ というノイズが混ざり始めた. DC 出力の超音波焦点を電子秤に照射したところ, 最初は 0.60 g と表示されるものの, ノイズが混ざり始めると 0

MAX IIデバイスのIEEE (JTAG)バウンダリ・スキャン・テスト

tri_s_tg12864_vcp の説明 2014/02/05 飛石伝ひ CPU 基板 の LCD TG12864 の表示プログラムです 漢字表示 (JIS208) を行うことができます USB の VCP ( 仮想 COM ポート ) を使用して非同期シリアル通信により 表示試験を行うことができ

3. スイッチ設定 ( 表 3) モジュール SW4 SW5 C1 OFF 下 (GND) C2 OFF 下 (GND) C3 OFF 下 (GND) C4 OFF 下 (GND) C5 OFF 上 (R/-W) C6 ON 下 (GND) 使用するモジュールに応じて, スイッチを切り換えて下さい.

JAXA key

橡Pro PDF

Transcription:

ワイヤレスモーショントランスミッタ 小型実装版 日用品の中に収納 : ケースは,100 円の柄杓 ( ひしゃく ) 柄杓は, 水を汲む部分 ( 合 ) を切り離し, 柄のみを利用.

ワイヤレスモーショントランスミッタ 小型実装版 I2C コネクタ PIC 16F1827 無線モジュール TOCO Wireless Engine TWE-001-Lite PICKit3 ICP コネクタ (5P) Lipo バッテリー 3.3V レギュレータ TA48M033 オペアンプ ( レール 2 レール ) JRC7032 アンテナ ( 空中線 : 無線技術用語 )

ワイヤレスモーショントランスミッタ 小型実装版 TOCO Wireless Engine TWE-001-Lite 図無線モジュール 20~30 年前の基板なので半田の のり が悪い. 図使用基板 ( 片面スルーホール ) I2C コネクタ 図基板への実装 ( 配線面 ) I2C コネクタを装備したので LC ディスプレイを用い, 現場で容易に動作確認できる. 図熱収縮チューブで保護 ICP ケーブル I2C コネクタ 図基板への実装 ( 部品面 ) メモ : I2C コネクタを装備したので, 磁気センサーや, 温度, ジャイロ, 気圧センサーなどを接続でき, 応用範囲が広がった. 通信アプリ書き込み基板のトワイライタと受信用 TWE-Lite IP を含めて, 費用はおよそ 5500 円であった. ただし,PIC 開発費を除く. メモ :2015.10.16(Fri.) 今回は 以下の様に修正した. 電源 1 cell Lipo 用ミニコネクタに変更 ICP : In Circuit erial Programming 小型 5P コネクタ増設 3 軸磁気センサーを用いて, 個々の値を送信することとした. 重力加速度を用いた手法も実験の予定.

ワイヤレスモーショントランスミッタ 小型実装版 AXL345 V C L A G N HMC5883L V G C N L A AQM1602XA V C L A G N AQM0802A V C L A G N AQM0802A, AQM1602A は, 表示容量が異なるものの, 仕様はほとんど同様であるため 制御ソフトはそのまま利用可能. アンテナの長さ l= λ /4 (λ: 波長 ) 3kΩ 2 1 2 3 4 I2C λ = c / f = 12.49 [cm] c : 光速 (2.998 10 8 m /s) f : 周波数 (2.4 10 9 Hz) + 3.3~6.6V 3.3V l = λ /4 = 31.25 [mm] BP(38.4kbps) 4kΩ 1kΩ 測定可能電圧範囲 3.3~6.6V Blue TA48M033 1 2 Vin Vout 3 GN 1µF 3.3V 0.1µF 50V 22µF 6.3V V A RX V TX CL PIC16F1827 1µF 1kΩ V V JRC7032 GN V CC TX RX - 最大入力電圧は 29V ここでは 3 軸の磁束密度 (Gaus) を送 (Transmit) っているが,Rate の向上を考慮し, 2 軸のみとするなど, 実践に当たっては適宜修正している. Z (gaus) Y (gaus) X (gaus)

ワイヤレスモーショントランスミッタ送信プログラム 受信側の駆動用にラジコンサーボを想定している. そのため繰り返し周期 (Rate) は 15~16ms とした. 本プログラムはこの Rate を得るために delay 関数を用いてる. ちなみにインターナルタイマをも実験したが 目に見えては改善されない. これは,PIC の clock(16mhz) とシリアルの速度 38.4kbps が関係している. このため外部タイマによる制御も実験の予定である. // PIC16F1827 Motion Trans 2015.10.26,27 M.T // Use I2C Port <<- HMC5883L, AXL345, AQM1602XA... // AQM0802A & AQM1602XA is command compatible // ===> AQM0802A Akizuki @320 // ===> AQM1602XA Akizuki @550 // UART ===> TWE-Lite IP #include<16f1827.h> #device AC=10 #include<math.h> #fuses INTRC_IO,NOWT,NOPROTECT,NOMCLR,BROWNOT // #use delay(clock=16000000) #use i2c(mater,a=pin_b1,cl=pin_b4,fat,noforce_w) #use R232(PARITY=N, BAU=38400,XMIT=PIN_B5, RCV=PIN_B1) // i2c slave addresses #define HMC5883L_WRT_AR 0x3C #define HMC5883L_REA_AR 0x3 // ACM1602 // #define LC_A 0xA0 // ACM1602 lave Address // AQM0802A #define LC_A_AQM 0x7C // AQM0802 lave Address // AQM W/R Mode val #define LC_CM_AQM 0x80 // Instruction Write Mode #define LC_AT_AQM 0xC0 // ata Write Mode #define line_1_aqm 0x00 // first line #define line_2_aqm 0xC0 // second line = 0x80 + 0x40 // Register addresses #define HMC5883L_CFG_A_REG 0x00 #define HMC5883L_CFG_B_REG 0x01 #define HMC5883L_MOE_REG 0x02 #define HMC5883L_X_MB_REG 0x03 // mtsw 21014.11.11 #define HMC5883L_TR 0x09 //tatus Register A #define HMC5883L_IRA 0x0A //Identification Register A = 0x48 #define HMC5883L_IRB 0x0B //Identification Register B = 0x34 #define HMC5883L_IRC 0x0C //Identification Register C = 0x33 void LC_com_AQM(unsigned char cmd); void LC_Clear_AQM(); void LC_etline_AQM(unsigned char line); void LC_init_AQM(); void LC_data_AQM(unsigned char data); void LC_space_AQM(int8 n); ///////////////////////////////////////////////// void AT_init(); void AT_data(unsigned char data); void AT_cmd(unsigned char data); ///////////////////////////////////////////////// static int16 d1,d2,d3,d4,d5; // Effect only this position // void hmc5883l_write_reg(int8 reg, int8 data); int8 hmc5883l_read_reg (int8 reg); void hmc5883l_read_data(); void disp_val(int16 x, int8 mod); typedef struct{ int16 x; int16 y; int16 z; hmc5883l_result; // This global structure holds the values read // from the HMC5883L x,y,z registers. hmc5883l_result compass = {0,0,0; // ========================================== void main(){ int16 AC; char title1[17] = "Motion Transmitt"; double xx, yy, zz, deg; int16 degree, x, y, z; char cnt; delay_ms(1000); LC_init_AQM(); LC_Clear_AQM(); // Infuluence to ACM160 LC_etline_AQM(line_1_AQM); for(cnt=0 ; cnt < 16; cnt++){ LC_data_AQM( title1[cnt]); printf("motion Transmitt"); setup_adc_ports(0x80); setup_adc(ac_clock_internal); delay_ms(2000); printf("%1c",0x0d); printf(" "); printf("%1c",0x0d); while(1){ hmc5883l_write_reg(hmc5883l_cfg_a_reg, 0x70); //0x70 CC=0x70 hmc5883l_write_reg(hmc5883l_cfg_b_reg, 0x80); //0xA0 CC=0xA0 hmc5883l_write_reg(hmc5883l_moe_reg, 0x00); //0x00 CC=0x00 hmc5883l_read_data(); xx = x = (compass.x ^ 0xFFFF); // Reverse ign yy = y = (compass.y ^ 0xFFFF); // Reverse ign zz = z = compass.z; if( x & 0x8000 ){ x *= -1; if( y & 0x8000){ y *= -1; //deg = 57.30*ATAN(yy/xx) + 90; //deg = 57.30*ATAN(xx/yy); if( x > 0){ if( y & 0x8000){ y *= -1; //deg = 57.30*ATAN(xx/yy) + 180;

ワイヤレスモーショントランスミッタ送信プログラム //deg = 57.30*ATAN(yy/xx) + 270; x *= 10; y *= 10; z *= 10; //degree = deg * 10; //LC_Clear_AQM(); //LC_etline_AQM(line_1_AQM); //delay_ms(1); //printf(" rx "); disp_val(x,0); printf(";"); disp_val(y,0); printf(";"); //disp_val(z,0); // mod = 2 >>> EUART Only //printf(":"); printf("%1c",0x0d); //printf(" Var "); //disp_val(degree,1); // mod = 0 >>> ACM1602 //set_adc_channel(0); //delay_us(50); //AC = 1.9995*3.265*read_adc(); // mall Type //AC = 1.9995*2.9*read_adc(); // evelop. //AC = 1.9995*3.25*read_adc(); //LC_etline_AQM(line_2_AQM); //disp_val(ac, 0); //printf("%1c",0x3b); //delay_ms(50);// 0x3b == ';' End of line //printf("%1c",0x0d); //delay_ms(50); //LC_data_AQM(" V"); delay_ms(15); // Low level routines for HMC5883L void hmc5883l_write_reg(int8 reg, int8 data){ i2c_write(hmc5883l_wrt_ar); i2c_write(reg); i2c_write(data); int8 hmc5883l_read_reg(int8 reg){ int8 retval; i2c_write(hmc5883l_wrt_ar); i2c_write(reg); // mtsw i2c_write(hmc5883l_rea_ar); retval = i2c_read(0); return(retval); void hmc5883l_read_data(){ int8 x_lsb; int8 y_lsb; int8 z_lsb; int8 x_msb; int8 y_msb; int8 z_msb; i2c_write(hmc5883l_wrt_ar); i2c_write(hmc5883l_x_mb_reg); // Point to X-msb register = 0x03 //delay_ms(1); // mtsw i2c_write(hmc5883l_rea_ar); x_msb = i2c_read(); x_lsb = i2c_read(); z_msb = i2c_read(); z_lsb = i2c_read(); y_msb = i2c_read(); y_lsb = i2c_read(0); // Combine high and low bytes into 16-bit values. compass.x = make16(x_msb, x_lsb); compass.y = make16(y_msb, y_lsb); compass.z = make16(z_msb, z_lsb); // AQM0802 & AQM1602XA // void LC_com_AQM(unsigned char cmd){ int16 u_t=20; //delay_ms(1); i2c_write(lc_a_aqm); //delay_us(u_t); // lave Address // Command Mode i2c_write(lc_cm_aqm); //delay_us(u_t); i2c_write(cmd); //delay_us(u_t); // end Command //delay_ms(1); void LC_Clear_AQM(){ LC_com_AQM(0x01); delay_ms(20); void LC_etline_AQM(unsigned char line) { LC_com_AQM(line); void LC_init_AQM(){ delay_ms(60); LC_com_AQM(0x38); LC_com_AQM(0x39); LC_com_AQM(0x14); LC_com_AQM(0x70); LC_com_AQM(0x56); LC_com_AQM(0x6c); delay_ms(300); LC_com_AQM(0x38); LC_com_AQM(0x0c); LC_com_AQM(0x01); delay_ms(2); // Internal OC frequency // Contrast // Power/ICON/Contrast Control // Follow Control // isplay ON/OFF Control // Clear isplay

ワイヤレスモーショントランスミッタ送信プログラム void LC_data_AQM(unsigned char data){ int16 u_t=26; //delay_us(100); //delay_ms(1); i2c_write(lc_a_aqm); //delay_us(u_t); // lave Address i2c_write(lc_at_aqm); //delay_us(u_t); // ata Out Code i2c_write(data); //delay_us(u_t); // end Command //delay_us(100); //delay_ms(1); void LC_space_AQM(int8 n){ int8 cnt; cnt = 0; while(cnt++ < n){ LC_data_AQM(' '); void disp_val(int16 x, int8 mod){ int8 sw; #ifdef ZERO if( x == 0xFFFF){ printf("ox FFFF"); if( x & 0x8000){ // Minus? printf("-"); x = ( x ^ 0xFFFF)+1; printf(" "); #endif // isp igits #ifdef ZEROUP sw = 0; if(d1 == 0x30){ d1 = 0x20; if( (d2 == 0x30)&&(sw == 0)){ d2 = 0x20; if((d3 == 0x30)&&(sw == 0)){ d3 = 0x20; if((d4 == 0x30)&&(sw == 0)){ d4 = 0x20; #endif //printf("%1c",d1); delay_ms(t_wait); printf("%1c",d2); //delay_ms(t_wait); //printf("%1c",0x2e); //delay_ms(t_wait); // 0x2c ==> '.' printf("%1c",d3); //delay_ms(t_wait); printf("%1c",d4); //delay_ms(t_wait); printf("%1c",d5); //delay_ms(t_wait); d5 = x % 10 + 0x30; d4 = x % 10 + 0x30; d3 = x % 10 + 0x30; d2 = x % 10 + 0x30; d1 = x % 10 + 0x30

ワイヤレスモーショントランスミッタ送信プログラム タイマを用いた Rate 時間の生成 // PIC16F1827 Motion Trans 2015.10.26 // Use Internal Timer // Use IIC Port <<- HMC5883L, AXL345, AQM1602XA... // AQM0802A & AQM1602XA is command compatible // ===> AQM0802A Akizuki @320 // ===> AQM1602XA Akizuki @550 // UART ===> TWE-Lite IP #include<16f1827.h> #device AC=10 #include<math.h> #fuses INTRC_IO,NOWT,NOPROTECT,NOMCLR,BROWNOUT // #use delay(clock=16000000) #use i2c(mater,a=pin_b1,cl=pin_b4,fat,noforce_w) #use R232(PARITY=N, BAU=38400,XMIT=PIN_B5, RCV=PIN_B1) // i2c slave addresses #define HMC5883L_WRT_AR 0x3C #define HMC5883L_REA_AR 0x3 // ACM1602 // #define LC_A 0xA0 // ACM1602 lave Address // AQM0802A #define LC_A_AQM 0x7C // AQM0802 lave Address // AQM W/R Mode val #define LC_CM_AQM 0x80 // Instruction Write Mode #define LC_AT_AQM 0xC0 // ata Write Mode #define line_1_aqm 0x00 // first line #define line_2_aqm 0xC0 // second line = 0x80 + 0x40 // Register addresses #define HMC5883L_CFG_A_REG 0x00 #define HMC5883L_CFG_B_REG 0x01 #define HMC5883L_MOE_REG 0x02 #define HMC5883L_X_MB_REG 0x03 // mtsw 21014.11.11 #define HMC5883L_TR 0x09 //tatus Register A #define HMC5883L_IRA 0x0A //Identification Register A = 0x48 #define HMC5883L_IRB 0x0B //Identification Register B = 0x34 #define HMC5883L_IRC 0x0C //Identification Register C = 0x33 void LC_com_AQM(unsigned char cmd); void LC_Clear_AQM(); void LC_etline_AQM(unsigned char line); void LC_init_AQM(); void LC_data_AQM(unsigned char data); //void LC_space_AQM(int8 n); ///////////////////////////////////////////////// void AT_init(); void AT_data(unsigned char data); void AT_cmd(unsigned char data); ///////////////////////////////////////////////// void disp_val(int16 x, int8 mod); static int16 d1,d2,d3,d4,d5; // Effect only this position // static int16 icount; static int16 degree, x, y, z; #define TIC_1ms 0xee #INT_TIMER0 void intval(){ icount++; if(icount>=18){ disp_val(x,0); printf(";"); disp_val(y,0); printf(";"); disp_val(z,0); printf(":"); printf("%1c",0x0d); icount = 0; set_timer0(tic_1ms); // mod = 2 >>> EUART Only // 1ms void hmc5883l_write_reg(int8 reg, int8 data); int8 hmc5883l_read_reg (int8 reg); void hmc5883l_read_data(); void disp_val(int16 x, int8 mod); typedef struct{ int16 x; int16 y; int16 z; hmc5883l_result; // This global structure holds the values read // from the HMC5883L x,y,z registers. hmc5883l_result compass = {0,0,0; // ========================================== void main(){ int16 AC; char title1[17] = "Motion Transmitt"; double xx, yy, zz, deg; char cnt; icount = 0; setup_timer_0(rtcc_internal RTCC_IV_256); set_timer0(tic_1ms); // 1ms enable_interrupts(int_timer0); enable_interrupts(global); delay_ms(1000); LC_init_AQM(); LC_Clear_AQM(); // Infuluence to ACM1602 LC_etline_AQM(line_1_AQM); for(cnt=0 ; cnt < 16; cnt++){ LC_data_AQM( title1[cnt]); printf("motion Transmitter"); setup_adc_ports(0x80); setup_adc(ac_clock_internal); delay_ms(2000); while(1){ hmc5883l_write_reg(hmc5883l_cfg_a_reg, 0x70); //0x70 CC=0x70 hmc5883l_write_reg(hmc5883l_cfg_b_reg, 0x80); //0xA0 CC=0xA0 hmc5883l_write_reg(hmc5883l_moe_reg, 0x00); //0x00 CC=0x00 hmc5883l_read_data();

xx = x = (compass.x ^ 0xFFFF); // Reverse ign yy = y = (compass.y ^ 0xFFFF); // Reverse ign zz = z = compass.z; if( x & 0x8000 ){ x *= -1; if( y & 0x8000){ y *= -1; //deg = 57.30*ATAN(yy/xx) + 90; //deg = 57.30*ATAN(xx/yy); if( x > 0){ if( y & 0x8000){ y *= -1; //deg = 57.30*ATAN(xx/yy) + 180; //deg = 57.30*ATAN(yy/xx) + 270; x *= 10; y *= 10; z *= 10; // Low level routines for HMC5883L void hmc5883l_write_reg(int8 reg, int8 data){ i2c_write(hmc5883l_wrt_ar); i2c_write(reg); i2c_write(data); ワイヤレスモーショントランスミッタ送信プログラム int8 hmc5883l_read_reg(int8 reg){ int8 retval; i2c_write(hmc5883l_wrt_ar); i2c_write(reg); // mtsw i2c_write(hmc5883l_rea_ar); retval = i2c_read(0); return(retval); void hmc5883l_read_data(){ int8 x_lsb; int8 y_lsb; int8 z_lsb; int8 x_msb; int8 y_msb; int8 z_msb; i2c_write(hmc5883l_wrt_ar); i2c_write(hmc5883l_x_mb_reg); // Point to X-msb register = 0x03 //delay_ms(1); // mtsw i2c_write(hmc5883l_rea_ar); x_msb = i2c_read(); x_lsb = i2c_read(); z_msb = i2c_read(); z_lsb = i2c_read(); y_msb = i2c_read(); y_lsb = i2c_read(0); // Combine high and low bytes into 16-bit values. compass.x = make16(x_msb, x_lsb); compass.y = make16(y_msb, y_lsb); compass.z = make16(z_msb, z_lsb); タイマを用いた Rate 時間の生成 // AQM0802 & AQM1602XA // void LC_com_AQM(unsigned char cmd){ //int16 u_t=20; //delay_ms(1); i2c_write(lc_a_aqm); //delay_us(u_t); // lave Address // Command Mode i2c_write(lc_cm_aqm); //delay_us(u_t); i2c_write(cmd); //delay_us(u_t); // end Command //delay_ms(1); void LC_Clear_AQM(){ LC_com_AQM(0x01); delay_ms(20); void LC_etline_AQM(unsigned char line) { LC_com_AQM(line); void LC_init_AQM(){ delay_ms(60); LC_com_AQM(0x38); LC_com_AQM(0x39); LC_com_AQM(0x14); LC_com_AQM(0x70); // Contrast LC_com_AQM(0x56); LC_com_AQM(0x6c); delay_ms(300); LC_com_AQM(0x38); LC_com_AQM(0x0c); LC_com_AQM(0x01); delay_ms(2); void LC_data_AQM(unsigned char data){ //int16 u_t=26; // Internal OC frequency // Power/ICON/Contrast Control // Follow Control // isplay ON/OFF Control // Clear isplay //delay_us(100); //delay_ms(1); i2c_write(lc_a_aqm); //delay_us(u_t); // lave Address i2c_write(lc_at_aqm); //delay_us(u_t); // ata Out Code

ワイヤレスモーショントランスミッタ送信プログラム タイマを用いた Rate 時間の生成 i2c_write(data); //delay_us(u_t); // end Command //delay_us(100); //delay_ms(1); //void LC_space_AQM(int8 n){ // int8 cnt; // cnt = 0; // while(cnt++ < n){ // LC_data_AQM(' '); // // void disp_val(int16 x, int8 mod){ int8 sw; #ifdef ZERO if( x == 0xFFFF){ printf("ox FFFF"); if( x & 0x8000){ // Minus? printf("-"); x = ( x ^ 0xFFFF)+1; printf(" "); #endif d5 = x % 10 + 0x30; d4 = x % 10 + 0x30; d3 = x % 10 + 0x30; d2 = x % 10 + 0x30; d1 = x % 10 + 0x30; // isp igits #ifdef ZEROUP sw = 0; if(d1 == 0x30){ d1 = 0x20; if( (d2 == 0x30)&&(sw == 0)){ d2 = 0x20; if((d3 == 0x30)&&(sw == 0)){ d3 = 0x20; if((d4 == 0x30)&&(sw == 0)){ d4 = 0x20; #endif //printf("%1c",d1); delay_ms(t_wait); printf("%1c",d2); //delay_ms(t_wait); //printf("%1c",0x2e); //delay_ms(t_wait); // 0x2c ==> '.' printf("%1c",d3); //delay_ms(t_wait); printf("%1c",d4); //delay_ms(t_wait); printf("%1c",d5); //delay_ms(t_wait); if(mod == 0){ //LC_data_AQM(d1); //LC_data_AQM(d2); //LC_data_AQM('.'); //LC_data_AQM(d3); //LC_data_AQM(d4); //LC_data_AQM(d5);