凄く安く製作したLED点灯装置
video へのリンク
LED 60個点灯 動画 |
一寸重いですが見てやってください |
2001−12−26記
仕事で使ってる基板を流用 殆どの部分が使われていません |
ポートBの0〜5を 抵抗10KΩシリーズ 2SC1815をドライブ |
モニター用のLED | |||||||
黄色が一番明るいです。 | 10個ずつ1系統にして 6系統分 |
玄関の所の生け垣にセット |
|||||||
使用部品など | |||||||||
品名 | 規格 | 数量 | 単価 | ||||||
カーボン抵抗 1/4W | 10KΩ | 6 | |||||||
ケミコン | 2000μF35WV | 1 | |||||||
ケミコン | 220μF35WV | 2 | |||||||
積層セラミックC | 104Z | 3 | |||||||
セラロック | 8.00MHz | 1 | |||||||
ブリッチD | W02 | 1 | |||||||
3端子レギュレーター | 7805 | 1 | |||||||
ICソケット | 20P | 1 | |||||||
CPU | AT90S2313 | 1 | |||||||
コネクター EI | 3P 雄、雌 | 1 | |||||||
コネクター EI | 7P 雄、雌 | 1 | |||||||
コネクター モレックス | 2P 中継 雄、雌 | 66 | |||||||
LED赤 | 20 | ||||||||
LED黄 | 20 | ||||||||
LED緑 | 20 | ||||||||
基板 | 仕事で使っている物 | 1 | |||||||
スイッチング電源 | AC100/DC24V | 1 | |||||||
電線 | 特注フラットケーブル | ||||||||
ツール | ||||||||
BASCOM-AVRコンパイラ | BASCOM-AVR IDE Version : 1.11.6.2 | 2313まではフリーのソフトでも可能 | http://www.ipic.co.jp | シュミレーターも付いてます。 機能が多いです。 |
||||
書き込み器 | AT90系8ピン〜40ピンまで | 秋月電子通商 | ソフトバージョンが上がっても 対応しています。 |
|||||
デバッカ | AVR Studio 3.53 | 盛りだくさんで 無料 意気込みが感じられます |
Atmel Corp. | ソースコードデバック、 ニーモニックコードデバック オリジナルだけ有って 機能が盛りだくさん |
||||
BASCOM-AVRコンパイラ ソースコード
Dim A As Byte , B As Byte , C As Byte , D As Byte , Ca As Byte , Cb As Byte
Dim Count1 As Byte , Count2 As Byte
Dim Count3 As Byte , Count4 As Byte
Dim I As Byte
Config Servos = 6 , Servo1 = Portb.0 , Servo2 = Portb.1 , Servo3 = Portb.2 , Servo4 = Portb.3 , Servo5 = Portb.4 , Servo6 = Portb.5 , Reload = 100
Config Portb = Output
Config Portd = Output
Servo(1) = 1 '1000 uS on
Servo(2) = 1
Servo(3) = 1
Servo(4) = 1
Servo(5) = 1
Servo(6) = 1
D = 5 'LOOP
Ca = 1
Cb = 0
Main:
C = 100
Gosub Rot
Gosub Sav
Gosub Alt
A = 20
C = 250
Gosub Ran
A = 60
C = 75
Gosub Ran
Goto Main
'/////////////////////////////////////////
' ROTATE
'/////////////////////////////////////////
Rot:
Start1:
Count2 = 0
Start:
Count1 = 0
Do
Incr Count1
If Ca = 1 Then B = &B1
If Ca = 2 Then B = &B11
If Ca = 3 Then B = &B111
If Ca = 4 Then B = &B111000
If Ca = 5 Then B = &B110000
If Ca = 6 Then B = &B100000
Portb = B
For A = 1 To 6
If Ca =< 3 Then Rotate B , Left
If Ca => 4 Then Rotate B , Right
B = B And $3f
If Ca = 2 Then If B = &B100000 Then B = B Or $01
If Ca = 3 Then If B = &B110000 Then B = B Or $01
If Ca = 3 Then If B = &B100010 Then B = B Or $01
If Ca = 4 Then If B = &B000011 Then B = B Or $20
If Ca = 4 Then If B = &B010001 Then B = B Or $20
If Ca = 5 Then If B = &B000001 Then B = B Or $20
Waitms C
Portb = B
Next
Loop Until Count1 = D
If Cb = 0 Then Ca = Ca + 1
If Cb = 1 Then Ca = Ca - 1
If Ca = 1 Then Cb = 0 'Cb=0 UP
If Ca = 6 Then Cb = 1 'Cb=1 DOWN
Incr Count2
If Count2 = 5 Then Goto Jumpnext
Goto Start
Jumpnext:
Return
'///////////////////////////////////////////////////////
' SERVO DRIVE
'///////////////////////////////////////////////////////
Sav:
Count1 = 0
Enable Interrupts
Do
Incr Count1
For I = 1 To 255
Servo(1) = I
Servo(2) = I
Servo(3) = I
Servo(4) = I
Servo(5) = I
Servo(6) = I
Waitms 10
Next
For I = 255 To 1 Step -1
Servo(1) = I
Servo(2) = I
Servo(3) = I
Servo(4) = I
Servo(5) = I
Servo(6) = I
Waitms 10
Next
Loop Until Count1 = 2
Disable Interrupts
Return
'/////////////////////////////////////
' ALT
'/////////////////////////////////////
Alt:
For I = 1 To 10
Portb = &B101010
Waitms 100
Portb = &B010101
Waitms 100
Next
Return
'/////////////////////////////////////
' random number.
'/////////////////////////////////////
Ran:
For I = 1 To A
B = Rnd($3f) 'get random number from 0-$3F
Portb = B
Waitms C
Waitms C
Waitms C
Waitms C
Next
Return
End