[戻る]
過去ログ [ 0001 ]
過去ログ:     ワード検索: 条件: 表示:

タイトル
記事No
投稿日
投稿者
参照先
カラーセンサからのデータ取得
214
: 15/05/11-09:42
vb初心者 <n57ysk@yahoo.co.jp>

カラーセンサ(S9706)のデータ取得に躓いている者です。

[開発環境]
PIC18F4620 + C18

[プログラムの概要]
カラーセンサ+フルカラーLEDを用いた電子工作を考えています。
次のサイトを参考にさせていただいております。
http://www.picfun.com/Sensor/equipj83.html

1. manual mode
外付け可変抵抗を3つ用意し、可変抵抗のつまみを回すとフルカラーLEDの色が変化するモード
2. auto mode
カラーセンサを用いて、カラーセンサで読み取った値をフルカラーLEDの色に反映させるモード

1.に関しては、動作が確認できています。
2.に関して、カラーセンサのデータ取得を試みていますが、Color Sensor処理内の動作ができていません。

コードを添付したかったのですが、長文の為、メールを頂けると幸いです。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
カラーセンサからのデータ取得
216
: 15/05/13-14:35
vb初心者 <n57ysk@yahoo.co.jp>

次のコードをC18コンパイラ用に記述するとどうなりますか。
教えていただけると助かります。
とくに、bit_set, bit_clearの部分が理解できていません。

unsigned long ColorIn(void)
{
int i, Value;
unsigned long sData;

sData = 0; // データリセット
for(i=0; i<12; i++) // 12ビット分繰り返し
{
output_high(CK); // CKをHigh
Value = input(DATA); // データ1ビット入力
output_low(CK); // CKをLow
if(Value == 1) // ビットチェック
bit_set(sData, i); // 1の場合
else
bit_clear(sData, i); // 0の場合
}
return(sData); // 取得データを返す
}
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: カラーセンサからのデータ
217
: 15/05/13-15:36
avo <kazuchiyo@hotmail.com>

こんにちは

>とくに、bit_set, bit_clearの部分が理解できていません。
CCS Cコンパイラーのビルトイン関数(オリジナルの関数)です。
(C18コンパイラーには同等の関数は用意されていないようです)

この関数は変数の任意のビットを1もしくは0にします。
bit_set(sData, i)では『sDataのi番目のビットを1にする』となります。

CCS Cコンパイラーのヘルプ(抜粋)には下記のように記載されています。
bit_clear(var, bit)
This function is the similar to: var &= ~(1<<bit);

bit_set(var, bit)
This function is the similar to: var |= (1<<bit);

当てはめてみれば、C18でも同じ事ができると思います。
ググれば、そのほかのやり方も見つかると思います。

> sData = 0; // データリセット
> for(i=0; i<12; i++) // 12ビット分繰り返し
> {
> output_high(CK); // CKをHigh
> Value = input(DATA); // データ1ビット入力
> output_low(CK); // CKをLow
> if(Value == 1) // ビットチェック
> bit_set(sData, i); // 1の場合
> else
> bit_clear(sData, i); // 0の場合
> }
> return(sData); // 取得データを返す
> }
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
カラーセンサからのデータ[解決]
218
: 15/05/13-16:35
vb初心者 <n57ysk@yahoo.co.jp>

avo様

ありがとうございます。
無事解決できました。
▲pagetop

- WebForum -