ルデコのブログ -5ページ目

プログラマブル赤外線リモコン送信機の製作②

32x64=2048通りのRC5リモコン信号を送れます、、と言っても一つづつ常用漢字を充てても十分なくらいの数量。機能の多いガラパゴス携帯電話の設定みたいにステージアップで選択するような無限大の事が出来る。 肝心なのは、作った作品の機能操作にどのアドレスとコマンドを使ったかと言う事。自分の今までの作品のRC5リモコン信号をどれを使ったのか記録して無いのでもう一度整理し直して誤動作が起きない様に考えてみる。

$ルデコのブログ

基板用DIPスイッチ 8Pでの設定 AVRマイコンATtiny2313A

  1P- PortD-5
  2P- PortD-4
  3P- PortD-3
  4P- PortD-2
  5P- PortA-0
  6P- PortA-1

エクセルで32x64=2048通りのRC5リモコン信号使用用途一覧表を作ってみた。
$ルデコのブログ

$ルデコのブログ

$ルデコのブログ

$ルデコのブログ

$ルデコのブログ

$ルデコのブログ

$ルデコのブログ

$ルデコのブログ


プッシュSWを8個で共通性のあるコントロールの規則性を作ってみようと思う。
基板用タクトスイッチ AVRマイコンATtiny2313A

  黒 SW1:1個 PortB-0
  白 SW2:1個 PortB-1
  赤 SW3:1個 PortB-2 
  水 SW4:1個 PortD-6
  橙 SW5:1個 PortB-6 
  黄 SW6:1個 PortB-5
$ルデコのブログ

10m位の距離でも伝達出来るので、赤外線LED[5mm] 2個使用の物も作ってみた。
トイラジコンの改造模してみようと思う。

AVRマイコンATtiny2313Aのプログラムは次回。

赤外線リモコン・プログラマブルイルミネーションLED

赤外線リモコン・プログラマブルイルミネーションLED

クリスマスツリーに飾り付け配線まで出来ずにブレッドボードのままクリスマスを迎えてしまいました。もうこのままで良いか。

イルミネーションプログラム

' **************************************************
' * ledpikapikaプログラム *
' * AVR is using ATtiny2313 S.Tsuda *
' * Basic Compiler is BASCOM-AVR *
' * Copyright By LEDeco 2012. 12.19 *
' **************************************************

$Regfile = "attiny2313.dat" 'AVRデバイスを"ATtiny2313"に設定
$crystal = 1000000 'クロック周波数を4MHzに設定。
$hwstack = 32 'ハードウェア・スタックの容量を設定。
$swstack = 8 'ソフトウェア・スタックの容量を設定。
$framesize = 24 'フレーム領域の容量を設定。


Config Porta = Output 'Portaの接続ポートを出力に設定する。
Config Portb = Output 'Portbの接続ポートを出力に設定する。
Config Portd.0 = Output 'Portd.0の接続ポートを出力に設定する。
Config Portd.1 = Output 'Portd.1の接続ポートを出力に設定する。
Config Portd.2 = Output 'Portd.2の接続ポートを出力に設定する。
Config Portd.3 = Output 'Portd.3の接続ポートを出力に設定する。
Config Portd.4 = Output 'Portd.4の接続ポートを出力に設定する。
Config Portd.5 = Output 'Portd.5の接続ポートを出力に設定する。

Config Rc5 = Pind.6 , Wait = 2000 '赤外線受信モジュールの接続ポートを設定する。
Dim Ads As Byte 'リモコンRC5コードのアドレス。(0 ~ 31)
Dim Cmd As Byte 'リモコンRC5コードのコマンド。(0 ~ 63)

Enable Interrupts

Dim R As Byte
Dim N As Byte
Dim M As Byte
Dim T As word
Dim s As word

Do
R = 0
T = 30
N = 1
s = 300

Porta = &B00000011
Portb = &B00000000
Portd = &B00111111
Wait 7

Portb = &B00000001
Waitms T
Portb = &B00000000
Waitms s
Portb = &B00000010
Waitms T
Portb = &B00000000
Waitms s
Portb = &B00000100
Waitms T
Portb = &B00000000
Waitms s
Portb = &B00001000
Waitms T
Portb = &B00000000
Waitms s
Portb = &B00010000
Waitms T
Portb = &B00000000
Waitms s
Portb = &B00100000
Waitms T
Portb = &B00000000
Waitms s
Portb = &B01000000
Waitms T
Portb = &B00000000
Waitms s
Portb = &B10000000
Waitms T
Portb = &B00000000
Wait 7
Do
Do
Do
Getrc5(ads , Cmd)
If Ads < 32 Then
Exit Do
End If
Loop
If Ads = 0 Then
If Cmd = 0 Then
Portb = &B11111111
Exit Do
End If
If Cmd = 1 Then
PORTb = &B01010101
Exit Do
End If
If Cmd = 2 Then
PORTb = &B10101010
Exit Do
End If
If Cmd = 3 Then
PORTb = &B11001100
Exit Do
End If
If Cmd = 4 Then
PORTb = &B00110011
Exit Do
End If
If Cmd = 5 Then
PORTb = &B11110000
Exit Do
End If
If Cmd = 6 Then
PORTb = &B00001111
Exit Do
End If
If Cmd = 7 Then
Portb = &B00000000
Exit Do
End If
If Cmd = 8 Then
Portb = &B00000000
Exit Do
End If
If Cmd > 8 Then
Portb = &B00000000
Exit Do
End If

End If
If Ads = 1 Then
If Cmd = 0 Then
Portb = &B11111111
Exit Do
End If
If Cmd = 1 Then
Portb = &B11111110
Exit Do
End If
If Cmd = 2 Then
Portb = &B11111101
Exit Do
End If
If Cmd = 3 Then
Portb = &B11111011
Exit Do
End If
If Cmd = 4 Then
Portb = &B11110111
Exit Do
End If
If Cmd = 5 Then
Portb = &B11101111
Exit Do
End If
If Cmd = 6 Then
Portb = &B11011111
Exit Do
End If
If Cmd = 7 Then
Portb = &B10111111
Exit Do
End If
If Cmd = 8 Then
Portb = &B01111111
Exit Do
End If
If Cmd > 8 Then
Portb = &B00000000
Exit Do
End If
End If
If Ads = 2 Then
If Cmd = 0 Then
Portb = &B11111111
Exit Do
End If
If Cmd = 1 Then
PORTb = &B00000001
Exit Do
End If
If Cmd = 2 Then
PORTb = &B00000010
Exit Do
End If
If Cmd = 3 Then
PORTb = &B00000100
Exit Do
End If
If Cmd = 4 Then
PORTb = &B00001000
Exit Do
End If
If Cmd = 5 Then
PORTb = &B00010000
Exit Do
End If
If Cmd = 6 Then
PORTb = &B00100000
Exit Do
End If
If Cmd = 7 Then
Portb = &B01000000
Exit Do
End If
If Cmd = 8 Then
Portb = &B10000000
Exit Do
End If
If Cmd > 8 Then
Portb = &B00000000
Exit Do
End If
End If
Waitms s

Loop
Loop
Loop
End

プログラマブル赤外線リモコン送信機の製作①

プログラマブル赤外線リモコン送信機を製作しました。32x64=2048通りのRC5リモコン信号を送れます。
$ルデコのブログ

受信は、流星LED光の滴イルミネーションやクリスマス用プログラマブルイルミネーションLEDの回路図に付けていた赤外線リモコン受信機の赤外線モジュールを使います。プログラムは未対応。

アトメルのAVR410:RC5赤外リモコン受信器、AVR415:RC5赤外リモコン送信機を参考に
BASCOM-AVRに用意されているRC5規格の赤外線リモコン用を使用しました。
ヨーロッパ規格のPhilipsのフィリップステレビ、フィリップスDVDを所有の方は誤動作
する恐れがあるけど日本での使用は大丈夫でしょう。
BASCOM-AVRのBASICコンパイラ(有償版)でプログラムしました。
仕様書 DEVICEコード(Address)が5ビット アドレス(Add)(0 ~ 31)
     COMMANDが6ビット(Command)が6ビット コマンド(Com)(0 ~ 63)
アドレス(Add)(0 ~ 31)とコマンド(Com)(0 ~ 63)の組み合わせで32x64=2048通りの
リモコン信号を送れます。

トグルビット。 (0 or 32)は、リモコン信号を一回送るたびに反転します。

設定 8個のタクトスィッチと基板用DIPスイッチ 8Pの組み合わせで設定します。
8個のタクトスィッチには直ぐに押して動作用ボタンSWで、DIPスイッチ 8Pはパターン
設定、アドレス設定に使用。

$ルデコのブログ


出力端子 AVRマイコンATtiny2313Aの端子接続 PortB-3(OC1A)
36KHz赤外線リモコン信号発信

ハイサイドSW
デュアルPchチップMOS 1/2使用
FET FDS4935A 30V7A
$ルデコのブログ

赤外線LED[5mm] 3個使用
[940nm][55mW/sr]
OSI5LA5113A
◆順方向電圧(VF):1.35V(標準)(@100mA)
◆順方向電流(IF):標準50mA
 最大定格電流 DC:100mA
◆放射強度:55mW/sr(@50mA)
◆ピーク波長:940nm(標準)(@50mA)
$ルデコのブログ

今回はブレッドボード配線では接続が不安なので片面ガラス・ユニバーサル基板(ブレッドボード配線パターンタイプ)を使って半田付けしました。

回路設計図
$ルデコのブログ
AVRマイコンATtiny2313Aの端子が16入力1出力になります。(送信機)
受信機側のAVRマイコンATtiny2313Aの設定は1入力16出力と逆なのでプログラム
をフラッシュメモリに書き込む時や装着時に間違うとダメになる恐れがあります。

$ルデコのブログ

ハイサイドSW デュアルPchチップMOSを取り付けないでテスト。赤色LEDは赤外線は見えないので仮接続で確認。赤色LEDを赤外線LED OSI5LA5113Aに替えて100Ω位の抵抗直列でATtiny2313Aの PortB-3に繋いでも1~2mならリモコン信号を送れます。

$ルデコのブログ

一応完成プログラムと動作確認。
クリスマス用プログラマブルイルミネーションLED 124個のイルミネーションLEDをコントロールしてみた。
$ルデコのブログ
RC5のリモコン信号BASCOM-AVRプログラムと動画は次回

流星LED光の滴イルミネーション②


ブレッドボードでマイコンATtiny2313を使い流星LED光の滴イルミネーションを組んでみました。 8X8=64 LED個のダイナミック点灯回路です。
超高輝度LED白色3mm OSWT3166B 1500~2180mcd 64個
ハイサイドSWデュアルPchチップMOSFET FDS4935A ローサイドSW8ch NPNトランジスタアレイを使用しました。
BASCOM-AVRのBASICプログラムも掲載してます。
$ルデコのブログ
$ルデコのブログ


$ルデコのブログ

$ルデコのブログ

$ルデコのブログ

$ルデコのブログ

$ルデコのブログ

$ルデコのブログ
$ルデコのブログ

流星LED・光の滴LEDイルミネーション①

2年前に依頼を受けて創った流星LEDの資料を無くしてしまった。YouTube動画は残っているんだけど。


もう一度、ブレッドボードでマイコンATtiny2313を使い作り直してみる。
もう一度前みたいに、プログラムはアッセンブラで作る気力ないのでC言語か、BASICで
作ってみる事にする。

$ルデコのブログ

8X8=64LEDダイナミック点灯回路・

ハイサイドSW
デュアルPchチップMOS
FET FDS4935A 30V7A
■ID:最大-7A
■RDS:19mΩ(ID=-7A,VGS=-10V)
■ゲート・ソースプロテクションダイオード内蔵
4個使用

ローサイドSW
8ch NPN トランジスタアレイ TD62083
$ルデコのブログ


$ルデコのブログ

超高輝度LED白色3mm OSWT3166B 1500~2180mcd 64個
◆外形3mm
◆発光色:白色
◆順方向電圧(VF):3.4V(標準)(@20mA)
◆輝度:1500mcd(標準)(@20mA)
◆逆耐圧:5.0V
◆半減角:60°(広角)
$ルデコのブログ


プログラムと動画は次回掲載予定。

クリスマス用プログラマブルイルミネーションLED②

クリスマス用プログラマブルイルミネーションLED②
$ルデコのブログ


クリスマスツリーのイルミネーション用に出来るだけ沢山のカラーLEDをコントロールする事を考えてみた。ハイサイドSW8chローサイドSW8chで64個の個別制御。
テストはブレッドボードに載せれるだけイルミネーションLEDを点けて見た。
(回路は8x8=64個の設計)
5mmRGB7色自動変化ゆっくりタイプIC内蔵を40個
出来るだけ簡単な配線でRGBイルミネーションLED出来るように考えてみた。

YouTube動画は機材を一新してハイビジョン撮影してみた。

マイコンATtiny2313でプログラムは使い慣れたBASCOMーAVRのBASICで

ブレッドボードイルミネーションLED配線回路図

$ルデコのブログ


ハイサイドSW
デュアルPchチップMOS
FET FDS4935A 30V7A
■ID:最大-7A
■RDS:19mΩ(ID=-7A,VGS=-10V)
■ゲート・ソースプロテクションダイオード内蔵
4個使用

$ルデコのブログ


ブレッドボードには、最大5mmRGB7色自動変化ゆっくりタイプIC内蔵が40個しか乗らないので
動画は40個。

$ルデコのブログ

使用材料
$ルデコのブログ


ローサイドSW
8ch NPN トランジスタアレイ TD62083
マイコン ATtiny2313
BASCOMーAVRのBASICプログラム

$ルデコのブログ

$ルデコのブログ

$ルデコのブログ

クリスマス用プログラマブルイルミネーションLED

5mmRGB7色自動変化ゆっくりタイプIC内蔵を15個とマイコンATtiny2313
を使ってクリスマス用小物のプログラマブルイルミネーションLEDを創ってみた。
小型のクリスマスツリーやクリスマスリース等の飾り付けに最適かな。




ブレッドボードATtiny2313iイルミネーションLED回路
$ルデコのブログ

ブレッドボードATtiny2313iイルミネーションLED回路図
$ルデコのブログ


AVR ATtiny2313 端子
$ルデコのブログ


ブレッドボードATtiny2313AVRISPmk2 書込み図

$ルデコのブログ


5mmRGB7色自動変化ゆっくりタイプ
IC内蔵で自動的にゆっくり7色に変化します。
とても綺麗な発色
動作電圧 3.5-5.0V
点灯周期 34秒/1サイクル(Vdd4.5V時)
RED  800mcd 620-635nm
GREEN 1500mcd 515-530nm
BLUE 1000mcd 460-475nm
http://www.led-paradise.com/product/295

$ルデコのブログ


ブレッドボード 極性間違わない様に+側赤、-側黒にマジックインキで表示
$ルデコのブログ

開発環境は、Atmel Studio 6.0 / AVRISPmk2 

プログラマブルイルミネーションLEDのプログラム
右から順番に500m秒間隔で順次点灯。
25秒間RGB7色自動変化が右から流れる。
一斉消灯100m秒
色をそろえて赤色から25秒間RGB一斉点灯。
一斉消灯100m秒
左から順番に500m秒間隔で順次点灯。
25秒間RGB7色自動変化が右から流れる。
一斉消灯100m秒
色をそろえて赤色から25秒間RGB一斉点灯。
の繰り返し。


この内容を なれないC言語で作成 BASCOMーAVRのBASICなら簡単だけど。
portAを出力に指定してるけど5mmRGB7色自動変化ゆっくりタイプIC内蔵を17個まで対応
できる。リセット端子も出力に指定すれば17個まで対応可能だけど書き替え出来なくなる
おそれが有りますね。

/*
* GccApplication6.c
*
* Created: 2012/11/24 12:59:05
* Author: LEDeco
*/


#include
#include //点灯時間の指定に使います

int main (void) {
DDRA=0b00000011; //portAを出力に指定
DDRB=0b11111111; //portBを出力に指定
DDRD=0b11111111; //portDを出力に指定

PORTA=0b00000000;
PORTB=0b00000000;
PORTD=0b00000000;
_delay_ms(2000);
PORTA=0b00000011;
PORTB=0b11111111;
PORTD=0b01111111;
_delay_ms(2000);


for(;;){//無限繰り返しです
//発光パターン指定
//維持時間指定1000
PORTB=0b11111110;
_delay_ms(500);
PORTB=0b11111100;
_delay_ms(500);
PORTB=0b11111000;
_delay_ms(500);
PORTB=0b11110000;
_delay_ms(500);
PORTB=0b11100000;
_delay_ms(500);
PORTB=0b11000000;
_delay_ms(500);
PORTB=0b10000000;
_delay_ms(500);
PORTB=0b00000000;
_delay_ms(500);

PORTD=0b01111110;
_delay_ms(500);
PORTD=0b01111100;
_delay_ms(500);
PORTD=0b01111000;
_delay_ms(500);
PORTD=0b01110000;
_delay_ms(500);
PORTD=0b01100000;
_delay_ms(500);
PORTD=0b01000000;
_delay_ms(500);
PORTD=0b00000000;
_delay_ms(500);
PORTA=0b00000001;
_delay_ms(500);
PORTA=0b00000000;
_delay_ms(500);
_delay_ms(25000);
PORTA=0b00000011;
PORTB=0b11111111;
PORTD=0b01111111;
_delay_ms(100);
PORTA=0b00000000;
PORTB=0b00000000;
PORTD=0b00000000;
_delay_ms(25000);
PORTA=0b00000011;
PORTB=0b11111111;
PORTD=0b01111111;
_delay_ms(100);


PORTD=0b00111111;
_delay_ms(500);
PORTD=0b00011111;
_delay_ms(500);
PORTD=0b00001111;
_delay_ms(500);
PORTD=0b00000111;
_delay_ms(500);
PORTD=0b00000011;
_delay_ms(500);
PORTD=0b00000001;
_delay_ms(500);
PORTD=0b00000000;
_delay_ms(500);
PORTB=0b01111111;
_delay_ms(500);
PORTB=0b00111111;
_delay_ms(500);
PORTB=0b00011111;
_delay_ms(500);
PORTB=0b00001111;
_delay_ms(500);
PORTB=0b00000111;
_delay_ms(500);
PORTB=0b00000011;
_delay_ms(500);
PORTB=0b00000001;
_delay_ms(500);
PORTB=0b00000000;
_delay_ms(500);

PORTA=0b00000001;
_delay_ms(500);
PORTA=0b00000000;
_delay_ms(500);
_delay_ms(20000);
PORTA=0b00000011;
PORTB=0b11111111;
PORTD=0b01111111;
_delay_ms(100);
PORTA=0b00000000;
PORTB=0b00000000;
PORTD=0b00000000;
_delay_ms(25000);
PORTA=0b00000011;
PORTB=0b11111111;
PORTD=0b01111111;
_delay_ms(500);


}
return 0;
}


プログラマブルイルミネーションLED③

なんかマイコン使って工作する気が失せる商品 5mmRGB7色自動変化イルミネーションフルカラーLED(IC内蔵7色自動変化)をシュミレーションしたプログラマブルイルミネーションLED ATtiny10 のプログラムを変えてイルミネーションフルカラーLEDを3個コントロールしてみた。
$ルデコのブログ

イルミネーションフルカラーLED(IC内蔵7色自動変化)
$ルデコのブログ


5mmRGB7色自動変化速めタイプ
IC内蔵で自動的に7色に変化します。
変化の速いタイプで賑やかな感じです。
とても綺麗な発色
動作電圧 3.5-5.0V
点灯周期 15秒/1サイクル(Vdd4.5V時)
RED  800mcd 645nm
GREEN 1500mcd 520nm
BLUE 1000mcd 470nm
Angle:15°(typ)
http://www.led-paradise.com/product/296

5mmRGB7色自動変化ゆっくりタイプ
IC内蔵で自動的にゆっくり7色に変化します。
とても綺麗な発色
動作電圧 3.5-5.0V
点灯周期 34秒/1サイクル(Vdd4.5V時)
RED  800mcd 620-635nm
GREEN 1500mcd 515-530nm
BLUE 1000mcd 460-475nm
http://www.led-paradise.com/product/295
エルパラで仕入れた5mmRGB7色自動変化イルミネーションフルカラーLED(IC内蔵7色自動変化)
$ルデコのブログ


Atmel Studio 6.0/ AVRISPmk2でコンパイルしたhexファイルを ATtiny10 にTPIで書き込む方法。

$ルデコのブログ

Atmel Studio 6.0を立ち上げてAVRISPmk2の配線して電源入れてからUSBを差し込む
Toolsから Device Programmingを選択

$ルデコのブログ

Applyバーをクリックして Device signature バーをクリックして電圧 target Voltageバーをクリックして、チップの型番が解る。

$ルデコのブログ

Tool innfomation
$ルデコのブログ

Device innfomation
$ルデコのブログ

Erase now Flash(1KB) の所をチェックして書き込むHexファイルを指定する。
$ルデコのブログ

Programming バーをクリックすると書き込み開始。直ぐに終了する。

$ルデコのブログ

ヒューズビットの書き替えは、そのままで1MHzの状態。これから勉強します。

プログラマブルイルミネーションLED②

YouTubeにプログラマブルイルミネーションLEDの動画アップしました。


$ルデコのブログ

ブレッドボードの回路図 

プログラマブルイルミネーションLED①

米粒AVRでLチカしてみました。
Atmel Studio 6/AVRISPmk2 統合開発環境 (IDE)を使ってATtiny10とチップ型フルカラーLEDで
プログラマブルイルミネーションLEDを創ってみました。
100均小物によくあるカラーイルミネーションLEDのシュミレーションです。
箱だけ大そうなAtmel純正AVRISPmk2
$ルデコのブログ

Atmel純正AVRISPmk2 秋月で3000円で購入
$ルデコのブログ

米粒AVR ATtiny10書込回路図
$ルデコのブログ

米粒AVR ATtiny10書込
ブレッドボードに米粒AVR ATtiny10を載せてでAtmel純正AVRISPmk2で書き込み。
$ルデコのブログ

ブレッドボード結線して Atmel Studio 6 統合開発環境 (IDE) を起動する。
立ち上がるまで結構時間が掛かる。AVRISPmk2内部プログラムは最新の物に更新しておく。
$ルデコのブログ

工高卒の還暦おっさんがC言語やC++言語なんて良く解らんけどTRY。
$ルデコのブログ

米粒AVR ATtiny10 を選択
$ルデコのブログ

最初からヘッダーは用意されてる。WEBで還暦の手習いで英語がよく解らんのに勉強しながらC言語でプログラム。米粒AVRでLチカをアレンジしてみました。
Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
って出たらコンパイル完了。
$ルデコのブログ

プログラマーはAVRISPmk2を選択

$ルデコのブログ

hex ファイルがデバイスに書き込める機械語ファイル