PIC ile POV Mesaj Göstergesi
PIC ile havada kayan yazı oluşturmak isterseniz devamı burada
Bundan birkaç yıl evvel pic ile yapılmış bir POV (Persistence Of Vision) Saat devresi yayınlamıştım ve bu devre epey bir ilgi görmüştü. En iyi dostumuz google ile pic projeleri konusunda arama yaparken Güney Amerikalı pic meraklısı Jose Pino'nun sayfasına rastladım.Jose POV ile PIC yazılımını bir adım daha öteye taşımış ve basit ama bir o kadarda ilginç bir devre tasarlamış. Bende bu basit eğlenceli devreyi sizlerle paylaşmak istedim.
Devre şemadanda görüleceği gibi bir adet PIC12F629 ve 7 adet led'den oluşmaktadır. Devreyi iki adet kalem pille çalıştırabilirsiniz.
Devre üzerindeki butona basarak şemada yazılı önceden programda bulunan mesajları seçebilirsiniz. Aşagıdaki fotoğrafdaki gibi bir çubuk üzerine devreyi kurduğunuz delikli pertinaksı monte eder ve bir kaynana zırıltısı gibi havada dondürürseniz mesaj havada oluşacaktır.
PIC için gerekli hex dsoyası pov.hex ektedir. PIC12F629 yerine PIC12F675de kullanabilirsiniz sanıyorum.
Umarım bu devre size eglenceli dakikalar yaşatır.Devrenin her hakkı Jose Pino'ya aittir.Kendi programını yapacaklara Jose birde algroritma hazırlamış:
delay 200 miliseconds
Set Comparator Mode 7
variable byte f = 00000000b ; Output data
variable byte s ; Temporal variable
variable byte o ; message number.
procedure salida( s as byte ) is
gpio = s
delay 500 us
gpio = 00000000b
delay 200 us
end procedure
procedure disp ( f as byte ) is
if f = "0" then f = "O"
if f = "A" then
salida(0011_0110)
salida(0000_0101)
salida(0000_0101)
salida(0011_0110)
end if
if f = "B" then
salida(0011_0111)
salida(0010_0101)
salida(0010_0101)
salida(0001_0010)
end if
if f = "C" then
salida(0001_0110)
salida(0010_0001)
salida(0010_0001)
salida(0010_0001)
end if
if f = "D" then
salida(0011_0111)
salida(0010_0001)
salida(0010_0001)
salida(0001_0110)
end if
if f = "E" then
salida(0011_0111)
salida(0010_0101)
salida(0010_0101)
salida(0010_0001)
end if
if f = "F" then
salida(0011_0111)
salida(0000_0101)
salida(0000_0101)
salida(0000_0001)
end if
if f = "G" then
salida(0001_0110)
salida(0010_0001)
salida(0010_0101)
salida(0011_0101)
end if
if f = "H" then
salida(0011_0111)
salida(0000_0100)
salida(0000_0100)
salida(0011_0111)
end if
if f = "I" then
salida(0010_0001)
salida(0011_0111)
salida(0010_0001)
end if
if f = "J" then
salida(0001_0000)
salida(0010_0000)
salida(0010_0000)
salida(0001_0111)
end if
if f = "K" then
salida(0011_0111)
salida(0000_0100)
salida(0001_0010)
salida(0010_0001)
end if
if f = "L" then
salida(0011_0111)
salida(0010_0000)
salida(0010_0000)
salida(0010_0000)
end if
if f = "M" then
salida(0011_0111)
salida(0000_0010)
salida(0000_0100)
salida(0000_0010)
salida(0011_1111)
end if
if f = "N" then
salida(0011_0111)
salida(0000_0010)
salida(0000_0100)
salida(0001_0000)
salida(0011_0111)
end if
if f = "O" then
salida(0001_0110)
salida(0010_0001)
salida(0010_0001)
salida(0001_0110)
end if
if f = "P" then
salida(0011_0111)
salida(0000_0101)
salida(0000_0101)
salida(0000_0010)
end if
if f = "Q" then
salida(0001_0110)
salida(0010_0001)
salida(0011_0001)
salida(0011_0110)
end if
if f = "R" then
salida(0011_0111)
salida(0000_0101)
salida(0000_0101)
salida(0011_0010)
end if
if f = "S" then
salida(0010_0010)
salida(0010_0101)
salida(0010_0101)
salida(0001_0001)
end if
if f = "T" then
salida(0000_0001)
salida(0011_0111)
salida(0000_0001)
end if
if f = "U" then
salida(0001_0111)
salida(0010_0000)
salida(0010_0000)
salida(0001_0111)
end if
if f = "V" then
salida(0000_0111)
salida(0001_0000)
salida(0010_0000)
salida(0001_0000)
salida(0000_0111)
end if
if f = "W" then
salida(0011_0111)
salida(0001_0000)
salida(0000_0100)
salida(0001_0000)
salida(0011_0111)
end if
if f = "X" then
salida(0010_0001)
salida(0001_0010)
salida(0000_0100)
salida(0001_0010)
salida(0010_0001)
end if
if f = "Y" then
salida(0000_0001)
salida(0000_0010)
salida(0011_0100)
salida(0000_0010)
salida(0000_0001)
end if
if f = "Z" then
salida(0011_0001)
salida(0010_0101)
salida(0010_0101)
salida(0010_0011)
end if
if f = "1" then
salida(0010_0001)
salida(0011_0111)
salida(0010_0000)
end if
if f = "h" then ; 'h' lowercase = Hearth character
salida(0000_0010)
salida(0000_0111)
salida(0001_0111)
salida(0011_0110)
salida(0001_0111)
salida(0000_0111)
salida(0000_0010)
end if
if f = "!" then
salida(0000_0000)
salida(0010_0111)
salida(0000_0000)
end if
if f = "'" then
salida(0000_0011)
end if
if f = "." then
salida(0010_0000)
end if
if f = "o" then ; 'o' Lowecase
salida(0001_0000)
salida(0010_0100)
salida(0010_0100)
salida(0001_0000)
end if
if f = " " then ; space character.
delay 4 miliseconds
end if
delay 1 milisecond
end procedure
; main program
gpio = all output
if o = 0 then
; Display "BE HAPPY "
o = o + 1
forever loop
disp("B")
disp("E")
disp(" ")
disp("H")
disp("A")
disp("P")
disp("P")
disp("Y")
disp(" ")
disp(" ")
disp(" ")
end loop
end if
if o = 1 then
; Display "BRAVO "
o = o + 1
forever loop
disp("B")
disp("R")
disp("A")
disp("V")
disp("O")
disp(" ")
disp(" ")
disp(" ")
end loop
end if
if o = 2 then
; Display "GO TEAM GO! "
o = o + 1
forever loop
disp("G")
disp("O")
disp(" ")
disp("T")
disp("E")
disp("A")
disp("M")
disp(" ")
disp(" ")
end loop
end if
if o = 3 then
; Display "GOOD BYE "
o = o + 1
forever loop
disp("G")
disp("O")
disp("O")
disp("D")
disp(" ")
disp("B")
disp("Y")
disp("E")
disp(" ")
disp(" ")
end loop
end if
if o = 4 then
; Display "HAPPY BIRTHDAY "
o = o + 1
forever loop
disp("H")
disp("A")
disp("P")
disp("P")
disp("Y")
disp(" ")
disp("B")
disp("I")
disp("R")
disp("T")
disp("H")
disp("D")
disp("A")
disp("Y")
disp(" ")
disp(" ")
end loop
end if
if o = 5 then
; Display "HAPPY NEW YEAR "
o = o + 1
forever loop
disp("H")
disp("A")
disp("P")
disp("P")
disp("Y")
disp(" ")
disp("N")
disp("E")
disp("W")
disp(" ")
disp("Y")
disp("E")
disp("A")
disp("R")
disp(" ")
disp(" ")
end loop
end if
if o = 6 then
; Display "HELP ME "
o = o + 1
forever loop
disp("H")
disp("E")
disp("L")
disp("P")
disp(" ")
disp("M")
disp("E")
disp(" ")
disp(" ")
end loop
end if
if o = 7 then
; Display "I h YOU "
o = o + 1
forever loop
disp("I")
disp(" ")
disp("h")
disp(" ")
disp("Y")
disp("O")
disp("U")
disp(" ")
disp(" ")
disp(" ")
end loop
end if
if o = 8 then
; Display "I h AMERICA "
o = o + 1
forever loop
disp("I")
disp(" ")
disp("h")
disp(" ")
disp("A")
disp("M")
disp("E")
disp("R")
disp("I")
disp("C")
disp("A")
disp(" ")
disp(" ")
end loop
end if
if o = 9 then
; Display "LET'S PARTY! "
o = o + 1
forever loop
disp("L")
disp("E")
disp("T")
disp("'")
disp("S")
disp(" ")
disp("P")
disp("A")
disp("R")
disp("T")
disp("Y")
disp("!")
disp(" ")
disp(" ")
end loop
end if
if o = 10 then
; Display "MERRY X'MAS "
o = o + 1
forever loop
disp("M")
disp("E")
disp("R")
disp("R")
disp("Y")
disp(" ")
disp("X")
disp("'")
disp("M")
disp("A")
disp("S")
disp(" ")
disp(" ")
end loop
end if
if o = 11 then
; Display "SCORE! "
o = o + 1
forever loop
disp("S")
disp("C")
disp("O")
disp("R")
disp("E")
disp("!")
disp(" ")
disp(" ")
end loop
end if
if o = 12 then
; Display "SMILE "
o = o + 1
forever loop
disp("S")
disp("M")
disp("I")
disp("L")
disp("E")
disp(" ")
disp(" ")
end loop
end if
if o = 13 then
; Display "TRICK OR TREAT "
o = o + 1
forever loop
disp("T")
disp("R")
disp("I")
disp("C")
disp("K")
disp(" ")
disp("O")
disp("R")
disp(" ")
disp("T")
disp("R")
disp("E")
disp("A")
disp("T")
disp(" ")
disp(" ")
end loop
end if
if o = 14 then
; Display "HURRA! "
o = o + 1
forever loop
disp("H")
disp("U")
disp("R")
disp("R")
disp("A")
disp("!")
disp(" ")
disp(" ")
end loop
end if
o = 0
salida(0000_0000)
sleep microcontroller ; sleep command
nop ; No operation