以前購入して、まだ未作成のまま放置状態にある、スイッチサイエンスのLCDシールドキットであるが、そろそろ作らなくてはと考え中。
組み立て方はこちら
2013年11月29日金曜日
2013年11月25日月曜日
PSoC 5LP
トランジスタ技術 増刊 「ARM PSoCで作るMyスペシャル・マイコン」が出ました。
フルスペック版!PSoC 5LP CY8C5868AXI-LP035 基板付きです。
やっと出ました。12月1日発行となってましたが、本日書店で発見しました。
即、購入です。みなさんも、お買い逃がしなく。
P44 : 第4章 PSoC 5LP コンポーネント図鑑
P112 : 第10章 USB UART通信の実験
P121 : 第11章 IIR フィルタで正弦波を発生させる
2013-12-08 追記: Win8.1(64bit)では,PSoC Creatorを標準インストールしても,DVK_Prog5のUSBデバイス・ドライバが動作しませんでした。
下記サイトを参照して,USBデバイス・ドライバを更新すればOKです。
http://japan.cypress.com/?id=4&rID=77018
フルスペック版!PSoC 5LP CY8C5868AXI-LP035 基板付きです。
やっと出ました。12月1日発行となってましたが、本日書店で発見しました。
即、購入です。みなさんも、お買い逃がしなく。
P44 : 第4章 PSoC 5LP コンポーネント図鑑
P112 : 第10章 USB UART通信の実験
P121 : 第11章 IIR フィルタで正弦波を発生させる
2013-12-08 追記: Win8.1(64bit)では,PSoC Creatorを標準インストールしても,DVK_Prog5のUSBデバイス・ドライバが動作しませんでした。
下記サイトを参照して,USBデバイス・ドライバを更新すればOKです。
http://japan.cypress.com/?id=4&rID=77018
2013年11月16日土曜日
プラモ作成ツール
私のプラモ作成ツールは以下のものです。
タミヤ ペイントブース : これを選んだ理由は、フィルタが使い捨てではなく何回か洗えば再利用できるところです。しかし、塗装するエリアが狭いのが少々難点といえば難点です。私にはこれがベストな選択でした。室内での塗装では必須アイテムだと思います。家族に塗装の飛沫で迷惑をかけることは出来ないからです。結構遠くまで塗装の飛沫は飛んでいきます。換気も大切です。必ず換気はしましょう。
エアプラシ : 写真のは、WAVEのスーパーエアブラシ・0305です。ノズルが0.3mmと0.5mmで交換可能です。ほとんどのプラモデルならこれでOKです。
この他には、プロコンBOYFWAダブルアクション0.2mmノズルも持ってます。こちらは、あまり使用する機会がありません。まだ、宝の持ち腐れ状態です。MAX塗りができるようになると面白くなると思います。
コンプレッサ : 最後にエアテックスのエアーパワーコンプレッサーAPC-006Nです。タンク容量が3.5リットル、最高圧力約0.55Mpa(5.5kgf・cm²)で長時間の使用でも安定してます。
2013年11月14日木曜日
プラモデルの思い出
自分が、小学校、中学校時代は、プラモデルの全盛期だったと思います。高校でファミコンが出てきてから、プラモデルは衰退の一途を辿ります。当時あった5軒ほどの近所のプラモ屋は現在一軒も残ってません。学校から帰ると、お金は無いのにプラモ屋へ行ってショーウインドーに飾ってある塗装完成したプラモデルを時間が経つのも忘れて見入っていたのを思い出します。
しかし、この頃のプラモデル作成は、ほとんど接着剤でくっつけて、ハイ完成が殆どでした。
塗装するのは、ガンプラが出てきたときからだと思います。今みたいに、エアブラシやコンプレッサを買えたら別ですが、当時エアボンベや塗料等、プラモ以外を購入するための十分なお金がなかったのですから、しょうがないですね。プラモデル作って、何が面白いんだと言われますが、やっぱり、モノ作りが好きなんでしょうね。作ってるときは、集中してますので、他のことは考えなくてすみます。そんな私の、プラモデル関係の蔵書です。越智信善さんの本です。ブログの更新もされていないようで、今はどのように活躍されているのでしょう。また、プラモつくろうの新番組が作られるのなら、是非とも出演して、素晴らしいお手前を拝見したいと思います。
しかし、この頃のプラモデル作成は、ほとんど接着剤でくっつけて、ハイ完成が殆どでした。
塗装するのは、ガンプラが出てきたときからだと思います。今みたいに、エアブラシやコンプレッサを買えたら別ですが、当時エアボンベや塗料等、プラモ以外を購入するための十分なお金がなかったのですから、しょうがないですね。プラモデル作って、何が面白いんだと言われますが、やっぱり、モノ作りが好きなんでしょうね。作ってるときは、集中してますので、他のことは考えなくてすみます。そんな私の、プラモデル関係の蔵書です。越智信善さんの本です。ブログの更新もされていないようで、今はどのように活躍されているのでしょう。また、プラモつくろうの新番組が作られるのなら、是非とも出演して、素晴らしいお手前を拝見したいと思います。
2013年11月13日水曜日
ガンプラ 旧ザク(その1)
今更ですが、ガンプラです。思い起こせば、中学校時代、近所のプラモ屋に買いに行っても、いつも売り切れてたんです。旧ザクです。メインのガンダムじゃありません。そしてやっと買って作っている最中で投げ出しました。当然、当時のは手元にありません。再度購入して、現在作成中です。
完成すればおよそ30年ぶりになるでしょう。そして、作成中です。
完成すればおよそ30年ぶりになるでしょう。そして、作成中です。
2013年11月9日土曜日
Raspberry PiでI2C LCD(その3)
ようやく、I2Cデバイス(LCD)にcでアクセスするプログラムを作成しました。
コンパイル後、実行するとI2C(LCD)デバイスであるMI2CLCD-01の液晶に「Hello I2C!」が
表示されるハズ。
<以下ソース>
#include
#include
#include
#define LCD_PORT (0x3e) // 液晶コントローラのI2Cアドレス
#define LCD_CMD (0x00) // 液晶コントローラのコマンドアドレス
#define LCD_DATA (0x40) // 液晶コントローラのデータアドレス
// グローバル変数
char currentMessage[17]; // 現在液晶に表示中のメッセージ
// 関数プロトタイプ宣言
int initMI2CLCD(void); // MI2CLCD-01の初期化
int writeLCD(int fd, char *message); // 液晶にメッセージを表示
int showMSG(int fd, char *temp); // 文字列を表示
int main(void){
int fdMI2CLCD; // MI2CLCD用ファイルディスクリプタ
char temp[17]; // 表示用文字列
currentMessage[0] = 0x00;
// MI2CLCD-01の初期化
if ((fdMI2CLCD = initMI2CLCD()) == -1){
printf("MI2CLCD-01の初期化に失敗");
return 1;
}
while(1){
strcpy(temp, "Hello I2C!");
showMSG(fdMI2CLCD, temp);
delay(1000);
}
return 0;
}
// MI2CLCD-01の初期化
// 引数:void
// 戻値:int ファイルデスクリプタ(初期化失敗時は-1を返す)
int initMI2CLCD(void){
int fd; // コントローラのファイルデスクリプタ
// 液晶コントローラを初期化し、コントローラにアクセスするための
// ファイルディスクリプタを取得。
// 初期化失敗時は-1を返して終了。
if((fd = wiringPiI2CSetup(LCD_PORT)) == -1) return fd;
// 初期化コマンドの送出。
// アドレス0x00に書き込むと、コマンドとして扱われる(コマンドモード)
// 0x00 は LCD_CMD として定義
// Function Set (機能設定)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b00111000); // 8ビットモード、2行表 示
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b00111001); // 命令テーブルを選択
// Internal OSC frequency (内部クロック周波数)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b00010100); // 1/5バイアス,183Hz
// Contrast Set (low byte) (コントラスト設定)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b01111000); // 末尾4bitで指定
// Power/ ICON control/ Contrast Set
// パワー/アイコン制御/コントラスト設定
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b01011111); // アイコンの表示 on
// ブースター回路 on
// 内部フォロワ ・モードのコントラスト設定
// Follower Control (フォロワ回路制御)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b01101010); // フォロワ回路 on
delay(250); // 電圧安定まで待つ
// Display ON (表示ON/OFFコントロール)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b00001111); // ディスプレイon
// カーソル表示 on
// ブリンク表示 on
// Clear Display (表示をクリア)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b00000001);
delay(2);
// Entry Mode Set (エントリ・モード設定)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b00000110); // カーソル右移動
return fd;
}
// 液晶2行目にメッセージを表示。既存メッセージを上スクロール
// 引数:int ファイルデスクリプタ
// :char* 表示メッセージ(最大16文字)
// 戻値:int 現時点では常に0
int writeLCD(int fd, char* message){
int i;
char buf[17];
// 2行目の表示内容を1行目にコピー
// 液晶の現在の表示状態は読み込めないため、
// グローバル変数 currentMessage を1行目に表示して代用
strcpy(buf, currentMessage);
// Set DDRAM Address (DDRAMアドレス設定)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b10000000); // 1行目を指定
for (i = 0; buf[i] != 0x00; i++){
// アドレス0x40に書き込むと表示データとなる
// 0x40 は LCD_DATA として定義
wiringPiI2CWriteReg8(fd, LCD_DATA, buf[i]);
}
// 2行目に新たなメッセージを表示させる
strcpy(buf, message);
// Set DDRAM Address (DDRAMアドレス設定)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b11000000); // 2行目を指定
for (i = 0; buf[i] != 0x00; i++){
wiringPiI2CWriteReg8(fd, LCD_DATA, buf[i]);
}
// 新たなメッセージをグローバル変数に代入
strcpy(currentMessage, message);
return 0;
}
// 液晶に文字を表示
// 引数:int ファイルデスクリプタ
// :char[] 表示させる文字列
// 戻値:int 現時点では常に0
int showMSG(int fd, char *temp){
char strMsg[17]; // 表示用文字列
// 液晶表示用の文字列生成
sprintf(strMsg, "%s\n", temp); // 表示用文字列作成
// 液晶に表示
writeLCD(fd, strMsg);
return 0;
}
コンパイル後、実行するとI2C(LCD)デバイスであるMI2CLCD-01の液晶に「Hello I2C!」が
表示されるハズ。
<以下ソース>
#include
#include
#include
#define LCD_PORT (0x3e) // 液晶コントローラのI2Cアドレス
#define LCD_CMD (0x00) // 液晶コントローラのコマンドアドレス
#define LCD_DATA (0x40) // 液晶コントローラのデータアドレス
// グローバル変数
char currentMessage[17]; // 現在液晶に表示中のメッセージ
// 関数プロトタイプ宣言
int initMI2CLCD(void); // MI2CLCD-01の初期化
int writeLCD(int fd, char *message); // 液晶にメッセージを表示
int showMSG(int fd, char *temp); // 文字列を表示
int main(void){
int fdMI2CLCD; // MI2CLCD用ファイルディスクリプタ
char temp[17]; // 表示用文字列
currentMessage[0] = 0x00;
// MI2CLCD-01の初期化
if ((fdMI2CLCD = initMI2CLCD()) == -1){
printf("MI2CLCD-01の初期化に失敗");
return 1;
}
while(1){
strcpy(temp, "Hello I2C!");
showMSG(fdMI2CLCD, temp);
delay(1000);
}
return 0;
}
// MI2CLCD-01の初期化
// 引数:void
// 戻値:int ファイルデスクリプタ(初期化失敗時は-1を返す)
int initMI2CLCD(void){
int fd; // コントローラのファイルデスクリプタ
// 液晶コントローラを初期化し、コントローラにアクセスするための
// ファイルディスクリプタを取得。
// 初期化失敗時は-1を返して終了。
if((fd = wiringPiI2CSetup(LCD_PORT)) == -1) return fd;
// 初期化コマンドの送出。
// アドレス0x00に書き込むと、コマンドとして扱われる(コマンドモード)
// 0x00 は LCD_CMD として定義
// Function Set (機能設定)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b00111000); // 8ビットモード、2行表 示
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b00111001); // 命令テーブルを選択
// Internal OSC frequency (内部クロック周波数)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b00010100); // 1/5バイアス,183Hz
// Contrast Set (low byte) (コントラスト設定)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b01111000); // 末尾4bitで指定
// Power/ ICON control/ Contrast Set
// パワー/アイコン制御/コントラスト設定
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b01011111); // アイコンの表示 on
// ブースター回路 on
// 内部フォロワ ・モードのコントラスト設定
// Follower Control (フォロワ回路制御)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b01101010); // フォロワ回路 on
delay(250); // 電圧安定まで待つ
// Display ON (表示ON/OFFコントロール)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b00001111); // ディスプレイon
// カーソル表示 on
// ブリンク表示 on
// Clear Display (表示をクリア)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b00000001);
delay(2);
// Entry Mode Set (エントリ・モード設定)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b00000110); // カーソル右移動
return fd;
}
// 液晶2行目にメッセージを表示。既存メッセージを上スクロール
// 引数:int ファイルデスクリプタ
// :char* 表示メッセージ(最大16文字)
// 戻値:int 現時点では常に0
int writeLCD(int fd, char* message){
int i;
char buf[17];
// 2行目の表示内容を1行目にコピー
// 液晶の現在の表示状態は読み込めないため、
// グローバル変数 currentMessage を1行目に表示して代用
strcpy(buf, currentMessage);
// Set DDRAM Address (DDRAMアドレス設定)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b10000000); // 1行目を指定
for (i = 0; buf[i] != 0x00; i++){
// アドレス0x40に書き込むと表示データとなる
// 0x40 は LCD_DATA として定義
wiringPiI2CWriteReg8(fd, LCD_DATA, buf[i]);
}
// 2行目に新たなメッセージを表示させる
strcpy(buf, message);
// Set DDRAM Address (DDRAMアドレス設定)
wiringPiI2CWriteReg8(fd, LCD_CMD, 0b11000000); // 2行目を指定
for (i = 0; buf[i] != 0x00; i++){
wiringPiI2CWriteReg8(fd, LCD_DATA, buf[i]);
}
// 新たなメッセージをグローバル変数に代入
strcpy(currentMessage, message);
return 0;
}
// 液晶に文字を表示
// 引数:int ファイルデスクリプタ
// :char[] 表示させる文字列
// 戻値:int 現時点では常に0
int showMSG(int fd, char *temp){
char strMsg[17]; // 表示用文字列
// 液晶表示用の文字列生成
sprintf(strMsg, "%s\n", temp); // 表示用文字列作成
// 液晶に表示
writeLCD(fd, strMsg);
return 0;
}
2013年11月2日土曜日
I2C電流・電圧・電力計モジュール(INA226)
I2C電流・電圧・電力計モジュール(INA226)を購入しました。
太陽光の電力測定、自作電源の電力表示、バッテリーモニタなどI2Cによるモニタリングができそうです。
【仕様】
電流 測定範囲 : -20A〜+20A ※付属の端子台を用いた場合 10A程度まで
分解能 : 1.25mA
精度 : 1%以下
測定位置 : ハイサイド・ローサイドどちらでも測定可能
電圧 測定範囲 : 0V〜36V
分解能 : 1.25mV
電力 測定範囲 : -720W〜+720W
分解能 : 25mW
ICの電源電圧 : 3.0V〜5V
変換時間 : 140μs〜8.244msまで選択可能
アイソレート : I2C側とはアイソレート(絶縁)されない
電流測定用シャント抵抗 : 0.002Ω ±1% 50ppm/℃
サイズ : 約13x21mm
2014-2-27追記:ストロベリーLinuxさんはまだ在庫あるみたいです。
http://strawberry-linux.com/catalog/items?code=12031
太陽光の電力測定、自作電源の電力表示、バッテリーモニタなどI2Cによるモニタリングができそうです。
【仕様】
電流 測定範囲 : -20A〜+20A ※付属の端子台を用いた場合 10A程度まで
分解能 : 1.25mA
精度 : 1%以下
測定位置 : ハイサイド・ローサイドどちらでも測定可能
電圧 測定範囲 : 0V〜36V
分解能 : 1.25mV
電力 測定範囲 : -720W〜+720W
分解能 : 25mW
ICの電源電圧 : 3.0V〜5V
変換時間 : 140μs〜8.244msまで選択可能
アイソレート : I2C側とはアイソレート(絶縁)されない
電流測定用シャント抵抗 : 0.002Ω ±1% 50ppm/℃
サイズ : 約13x21mm
http://strawberry-linux.com/catalog/items?code=12031
I2Cモータードライバモジュール(DRV8830)
I2Cモータードライバモジュール(DRV8830)を購入しました。
ピンヘッダ、端子台はハンダしました。これでDCモータをI2Cでコントロールできます。
ピンヘッダ、端子台はハンダしました。これでDCモータをI2Cでコントロールできます。
【仕様】
モーターの種類 : ブラシ付きモーター(マブチモーター、ギアードモータなど)
動作電圧範囲 : DC3Vから6.8V ※インターフェース電圧とモータ電圧は共通
最大駆動電流 : 1A
駆動方式 : PWM ※効率80から95%程度
オン抵抗 : 最大0.45Ω
スリープ電流 : 0.3μA
アイソレート : 制御端子とモータ間はアイソレート(絶縁)されない
サイズ : 23x16mm
登録:
投稿 (Atom)







