忍者ブログ

ぶろぐ 個人的なものです。 内輪ネタ多数。 自分の気持ちをまとめています。 画像がうまく表示されない場合は 右クリック→「H」

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

進行状況

今日やったこと,出来事。
・いままで,ブレットボートで実験用の回路を組んでいたのを回路基板の上でやることに。
・赤外線通信の送信基板は正常稼働を確認。
・受信基板のLCDとPICマイコンの動作を確認。しかし,赤外線通信はいまだ成功せず。
・ローソンで買った100円のCUPNOODLEを食べる。←いまここ



徹夜かな…。

追記
9:00
なんか受光モジュールが壊れてるのかな?
やべぇ,どうしよう。予備があと一個しかない…。

10:00
んなわけなかった。単に設定ミス。申し訳ない。
12:00
2bitでの通信確認。お城で波形を見た。
PR

退化

赤外線通信ができません。代わりにLCDが使えるようになりました。

よっしー「シリアル通信ができてないんじゃないですか?関数少し変えたらできますよね?」

んなわけないだろ・・・・。
シリアル通信くらいもう習得済みだよ・・・。
だいたいその回路はシリアル通信の回路流用して作ったのに。
午前中にはちゃんとデータ(間違ってるけど)来てたんだから・・・。。


本来の表示
START!
1FF,2AA,35A,40F
来てるデータ
FFAA5A0F

実験回路
START!
1FF,2FF,3FF,4FF
来てるデータ
FFFFFFFF

ファイナルファンタジーでした。

日に日に退化してるんですけどどうしましょう。

赤外線つづき

通信できない原因がわかりました。
受信モジュールが52kHz用でした。 38kHzしかないと思ってた…。

モジュールを交換しても,通信はできません。
原因を調べていくとデバイスコードが一致しないようです。
それでも100回に1回は成功しないのかな…。

帰ってきた赤外線

赤外線通信は終わっていませんでした。
時間がたつと周期がずれて通信できなくなります。
安定させようとしてプログラムを書き直したのですが何度やってもできません。
見てみておかしいとこあったらコメントしてください。疲れました。
送信
#include<16F648A.h>
#fuses HS, NOWDT, PUT, NOPROTECT, BROWNOUT, MCLR, NOLVP, NOCPD
#use fast_io(A)
#use fast_io(B)
#use delay(clock=20000000)

//1bitの長さ494us

void init(void)
{
set_tris_a(0x00);
set_tris_b(0x00);

output_a(0x00);
output_b(0x00);
}

void high (void)
{
int j;
for(j=0; j<19; j++)
{
output_high(PIN_B7);
delay_us(13);
output_low(PIN_B7);
delay_us(13);
}
}

void low (void)
{
int j;
for(j=0; j<19; j++)
{
output_low(PIN_B7);
delay_us(13);
output_low(PIN_B7);
delay_us(13);
}
}
void bit (int wave)
{
int i;
for(i=0; i<8; i++)
{
if(bit_test(wave, i) == 1)
{
high();
}
else
{
low();
}

}
}

void send (int signal)
{ //スタートビット
const int startbit = 0xC0;
//デバイスコード
const int device = 0xaa;
//エンドビット
const int endbit = 0x0F;
//
int i,k,j;
//スタートビット送信
bit(startbit);
//デバイスコード送信
bit(device);
//データ送信
bit(signal);
//エンドビット送信
bit(endbit);
}

void main(void)
{
//LEDの数注意
const int data1 = 0x5A;
const int data2 = 0x05;
const int data3 = 0x00;

//初期化関数
init();

while(1)
{
send(data1);
/* delay_ms(1000);
send(data3);
delay_ms(1000);
send(data2);
delay_ms(1000);
send(data3);
delay_ms(1000);*/
}
}
受信
#include<16F648A.h>
#fuses HS, NOWDT, PUT, NOPROTECT, BROWNOUT, MCLR, NOLVP, NOCPD
#use fast_io(A)
#use fast_io(B)
#use delay(clock=20000000)


void init(void) //初期化のための関数
{
set_tris_a(0x00);
set_tris_b(0xFF);

output_a(0x00);
output_b(0x00);
}

int bitread (void) //データ受信関数
{
int i,wave;
wave=0;
for(i=0; i<8; i++){
if(input(PIN_B0))
{
bit_clear(wave, i); //赤外線送信のモジュールが負論理でデータが送られてくるので,反転して受信してあげる。
}
else
{
bit_set(wave, i);
}
delay_us(494);
}
return wave;
}

int recieve (void) //データの受信,判定関数
{
int judge1,signal;

//スタートビット
const int startbit = 0xC0;
//デバイスコード
const int device = 0xaa;
//エンドビット
const int endbit = 0x00;
while(PIN_B0)
{
continue;
}
delay_us(247);
if(input(PIN_B0)==0) //スタートビット受信
{
delay_us(497);
if(input(PIN_B0)==0)
{
delay_us(497);
//デバイスコード受信
judge1 = bitread();
//データ受信
signal = bitread();
//エンドビット受信
if(input(PIN_B0))
{
//デバイスコードが正しいかどうかの判定
//正しければmain関数に受信したデータを返す
if (judge1 == 0xaa)
{
return signal;
}
}
}
}
return 0;
}

void main(void)
{
int data;
init();
output_high(PIN_A0);
output_high(PIN_A1);
while(1)
{
data = recieve();
switch(data)
{
case 0x5A:
output_low(PIN_A1);
delay_ms(1000);
break;
case 0x05:
output_a(data);
break;
default: //何もこない,または該当しないデータが送られてきた場合の処理
output_high(PIN_A1);
break;
}
}
}

やっと・・・。

やっと赤外線通信ができました。
いろんな人から教わって,結局自分の書いたプログラムがいろいろと問題があったみたいで。
なんでもパルスを送るのに遅れが出てるのでうまく通信できてないと。
あとの問題は,初期化してない変数をif文の判定に使ってました。これはひどい。

ともあれ,赤外線通信ができたので,この後はモータードライバの作成とコントーローラーかな。
大変だー。

え,Bluetooth?いや赤いので回路作りますけどなにか。

お金ないんだよ!
Bluetoothは浅木研のやつとかstawberryLinuxのやつとか考えたんだけど,高いんだよね・・・。
http://www.robotsfx.com/robot/BlueMaster.html
http://strawberry-linux.com/catalog/items?code=18032

結局,送信と受信で2台買わないといけないから1万5000円以上になっちゃう。
バイトしてない学生にとっては非常に難しいです。

ばいとしたいなー。 時間が無いんだけれども。

久しぶりの更新なのはこれやってたのと,追試があったからです。
再試じゃないよ!追試だから!
理由は先日かかったインフルエンザ。リレンザが吸込みやすくてよかった。
そんなことで今日は終わります。では。
  1    2    3    4    5    6    7    8    9    10    11  

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

天気

最新コメント

[04/03 tenpoul]
[04/01 gear]
[03/27 tenpoul]
[03/27 gear]
[01/24 てんぱぁる]

最新トラックバック

プロフィール

HN:
てんぱぁる
年齢:
33
性別:
男性
誕生日:
1990/06/29
職業:
学生
趣味:
いろいろあるようでないけど強いて挙げるならパソコン? 

バーコード

ブログ内検索

カウンター

最古記事

FX NEWS


-外国為替-

忍者アド

忍者ブログ

[PR]

TemplateDesign by KARMA