2008年9月29日月曜日

S9706

デジタルカラーセンサです。
秋月でなんとなく買ってきました。

PSoCの勉強がてらこれを使ってなんか作ってみます。
ありきたりな感じに・・・カラーセンサからのデータを
フルカラーLEDに反映させると。

まずはデータ取得。
データシートから・・・
ある程度の時間計測してから各色12bitづつクロックを入れればデータが取れるようね。
適当に書いてみる。

//初期化
PRT1DR &= 0b00000000; //すべてL
//Range設定
PRT1DR |= 0b00000010; //RangeをH
nop(500);
//測光
PRT1DR |= 0b00011000;//測光開始
nop(5000);
PRT1DR &= ~0b00011000;//測光終了
nop(1);
//赤データ取り込み
for(r=0;r<=11;r++){
PRT1DR |= 0b00000100; //CKをH
nop(9);
rd = (PRT1DR >>7) & 0b00000001;
nop(1);
PRT1DR &= ~0b00000100; //CKをL
nop(10);
rd2 = rd2 + (rd <<>
}

とりあえずこんなんで取れてる模様。
ビットシフトを初めて使ってみたw
前から存在は知ってていまいち使いどころが不明だなぁと思ってたんだけど
マイコンとかCPUに近いところだとすげぇなコレって感じで有用ですw
あとは取れたデータをPWMにそのまま入れてみます。
んで、できたのがコレ。
#include // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#include

void nop(int count){
int i;
for(i = 0; i < count; i++){
}
}

void main(){
int r;
int rd;
int rd2;
int g;
int gd;
int gd2;
int b;
int bd;
int bd2;
char red[];
char green[];
char blue[];
LCD_Start();

//初期化
PRT1DR &= 0b00000000; //すべてL
//Range設定
PRT1DR |= 0b00000010; //RangeをH
nop(500);
//測光
PRT1DR |= 0b00011000;//測光開始
nop(5000);
PRT1DR &= ~0b00011000;//測光終了
nop(1);
//赤データ取り込み
for(r=0;r<=11;r++){
PRT1DR |= 0b00000100; //CKをH
nop(9);
rd = (PRT1DR >>7) & 0b00000001;
nop(1);
PRT1DR &= ~0b00000100; //CKをL
nop(10);
rd2 = rd2 + (rd << r);
}
//緑データ取り込み
for(r=0;g<=11;g++){
PRT1DR |= 0b00000100; //CKをH
nop(9);
gd = (PRT1DR >>7) & 0b00000001;
nop(1);
PRT1DR &= ~0b00000100; //CKをL
nop(10);
gd2 = gd2 + (gd << g);
}
//青データ取り込み
for(b=0;b<=11;b++){
PRT1DR |= 0b00000100; //CKをH
nop(9);
bd = (PRT1DR >>7) & 0b00000001;
nop(1);
PRT1DR &= ~0b00000100; //CKをL
nop(10);
bd2 = bd2 + (bd << b);
}
//表示
itoa(red,rd2,10);
LCD_Position(1,0);
LCD_PrString(red);

PWM16_1_WritePeriod(4095);
PWM16_1_WritePulseWidth(rd2);
PWM16_2_WritePeriod(4095);
PWM16_2_WritePulseWidth(gd2);
PWM16_3_WritePeriod(4095);
PWM16_3_WritePulseWidth(bd2);

PWM16_1_Start();
PWM16_2_Start();
PWM16_3_Start();
}

かなり適当です。LCD表示はRだけだし・・・
各色の調整してないから白にならないし・・・
それは今後の課題ってことでw


2008年9月16日火曜日


机が狭くなってきたんで、PC用と工作用に分離。
写真は工作用。

2008年9月5日金曜日

DMM


Agilentの34401Aを買いましたー
前の3478Aより一桁増えて6.5桁でっす。

2008年9月3日水曜日

4月頃の机の様子。