09 Ağustos 2020, 23:05:56

Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d


Jalv2 ile F1 Çakar Devresi 13 Modlu

Başlatan SercanTEK, 24 Temmuz 2017, 02:05:24

SercanTEK

Merhaba Arkadaşlar,

Jalv2 ile kodlarını yazdığım 12F629 kullandığım bu uygulama LED stop lambaları için bir modüldür. özellikle arkadan gelen sürücülerin dikkatini çekmek için bence gerekli olan bir uygulamadır. 12 tane farklı mod ve 1 tane özel modu vardır. özel moda alındığında her frene basılınca farklı animasyon çalışır.





Kodlar


-- ------------------------------------------------------
-- 
Modlu Stop Çakar Projesi (LED)
-- 
23.07.2017 Tekirdağ
-- Compiler jal jalv24q6 (compiled Oct 25 2016)
-- 
Sercan TEK www.sercanca.com
-- ------------------------------------------------------
include 
islemci_ayarlar

led 
off                        -- Led Pini Kapalı

var byte mode                    -- hafızada kayıtlı animasyon değişkeni
var byte aktif_mod               -- oynatılacak animasyon
var bit temp_mode false        -- Animasyon Değişim Bayrağı
var byte ikaz 2                -- ikaz efekti için
var byte x                       -- animasyon temp değişken

const mode_adet 13             -- Toplam Animasyon Adeti
const mod13_start 12           -- mod13 başlangıç
-- ------------------------------------------------------
--  
12f629 Dahili Eepromdan byte Okur
-- ------------------------------------------------------
function 
Data_oku(byte in hucre) return byte is
   EEADR 
hucre
   EECON1_RD 
TRUE
   
return EEDATA
end 
function
-- ------------------------------------------------------
--  
12f629 Dahili Eeproma Byte Yazar
-- ------------------------------------------------------
procedure Data_yaz(byte in hucre,byte in bilgiis
   
var bit temp
   EEADR 
hucre
   EEDATA 
bilgi
   EECON1_WREN 
TRUE
   temp 
INTCON_GIE
   INTCON_GIE 
FALSE
   EECON2    
0x55
   EECON2    
0xAA
   EECON1_WR 
TRUE
   INTCON_GIE 
temp
   EECON1_WREN 
FALSE
end procedure
-- ------------------------------------------------------
--  
Mod butonu kontrol eder
-- ------------------------------------------------------
procedure buton_kontrol is
if buton == true then     -- butona basıldı ise
  led 
off
   _usec_delay
(1000_000)
  
mode = ((mode mode_adet) + 1)
  
data_yaz(0,mode)
     if 
mode == 13 then   -- mode 13 seçilirse
      ikaz 
1            -- 1 kere yanıp söner ikaz verir
      aktif_mod 
mod13_start
      data_yaz
(1,aktif_mod)
     else
       
aktif_mod mode
     end 
if
    if 
mode == 1 then     -- mode 1 e geri döndü ise
      ikaz 
6            -- 6 kere yanıp söner ikaz verir
     end 
if
   for 
ikaz loop          -- normalde 2 kere yanıp söner ve ikaz verir.
    
led on   _usec_Delay(50_000)
    
led off  _usec_Delay(50_000)
   
end loop
    
if ikaz != 2 then
      ikaz 
2
    end 
if
  
_usec_Delay(750_000)
  
temp_mode true
end 
if
end procedure
-- ------------------------------------------------------
-- 
Bekleme Alt Programı
-- ikinci parametre true verilirse Süre deger x 1000ms
-- ikinci parametre false verilirse Süre deger x 10us
-- ------------------------------------------------------
procedure bekle(word in deger,bit in msis
 
if deger 0 then
  
for deger loop
   
if ms then
    _usec_delay
(1000)
   else
    
_usec_Delay(10)
   
end if
   
buton_kontrol
  end loop
 end 
if
end procedure

-- ------------------------------------------------------
--  
Animasyon Alt Programıx1,x2,adet değişkenleri ile
--  Farklı animasyonlar elde edilebilir.
-- ------------------------------------------------------
procedure animasyon(word in x1,word in x2,byte in adetis
  
for adet loop

   
if temp_mode then
    
exit loop
   end 
if

   if 
x1 0 then led on  bekle(x1,trueend if
   if 
x2 0 then led off bekle(x2,trueend if
   
   
buton_kontrol
  end loop
end procedure
-- ------------------------------------------------------
-- 
hSıradaki anmiasyonu oynatır
-- ------------------------------------------------------
procedure animasyon_oynat is
case aktif_mod of
-- ------------------------------------------------------
-- 
Mod 1
-- hızlı yanıp sönmeye başlar yavaşlar ve 20sn yanık kalır
-- ------------------------------------------------------
block
    x 
0
      
for 5 loop
        x 
15
        animasyon
(x,x,2)
         if 
temp_mode then
          
exit loop
         end 
if
       
end loop
      animasyon
(1000,0,20)
    
end block
-- ------------------------------------------------------
--  
Mod 2
--  Hızlı Hızlı Yanıp Söner
-- ------------------------------------------------------
block
     animasyon
(180,190,1)
    
end block
-- ------------------------------------------------------
--  
Mod 3
--  4 Kez Yanıp Söner ve 1 sn Yanık Kalıp Başa DÖner
-- ------------------------------------------------------
block
     animasyon
(100,100,4)
     
animasyon(1000,0,1)
    
end block
-- ------------------------------------------------------
--  
Mod 4
--  3 Kez Yanıp Söner ve 1sn Sönük Kalıp Başa Döner
-- ------------------------------------------------------
block
     animasyon
(150,150,3)
     
animasyon(0,1000,1)
    
end block
-- ------------------------------------------------------
--  
Mod 5
--  Düz yanar ve kısılarak söner
-- ------------------------------------------------------
block
      
for 255 using x loop
       led 
on
       bekle
(255-x,false)
       
led off
       bekle
(x,false)
        if 
temp_mode then
          
exit loop
        end 
if
      
end loop
     bekle
(100,true)
    
end block
-- ------------------------------------------------------
-- 
Mod 6
-- Hızlanarak yanıp Söner
-- ------------------------------------------------------
block
    x 
160
      
for 8 loop
       x 
20
       animasyon
(x,x,1)
         if 
temp_mode then
           
exit loop
         end 
if
      
end loop
     animasyon
(0,500,1)
    
end block
-- ------------------------------------------------------
--  
Mod 7
--  5 kere yanıp söner ve 30 sn sabit yanar
-- ------------------------------------------------------
block
     animasyon
(120,120,5)
     
animasyon(1000,0,30)
    
end block
-- ------------------------------------------------------
-- 
Mod 8
-- 2 Farklı hızda yanıp söner
-- ------------------------------------------------------
block
     
for 2 loop
      animasyon
(200,200,2)
      
animasyon(50,50,2)
       if 
temp_mode then
         
exit loop
       end 
if
     
end loop
    end block
-- ------------------------------------------------------
-- 
Mod 9
-- 2 kez yanıp söner 2 kez söner
-- ------------------------------------------------------
block
     animasyon
(200,200,2)
     
animasyon(0,200,2)
    
end block
-- ------------------------------------------------------
-- 
Mod 10
-- 3 kez yanıp söner ve 5 sn sabit yanar
-- ------------------------------------------------------
10block
     animasyon
(100,100,3)
     
animasyon(300,300,3)
     
animasyon(500,500,3)
     
animasyon(1000,0,5)
    
end block
-- ------------------------------------------------------
-- 
Mod 11
-- 4 kez yanıp söner ve 6 sn sabit yanar
-- ------------------------------------------------------
11block
     animasyon
(130,130,4)
     
animasyon(1000,0,6)
    
end block
-- ------------------------------------------------------
--  
Mod 12
--  Sürekli Yanık Kal
-- ------------------------------------------------------
12block
     led 
on
    end block

-- ------------------------------------------------------
--  
Mod 13
--  her enerji verildiğinde sırasıyla tüm modları gezer
-- ------------------------------------------------------

end case

  if 
temp_mode then        -- mod değişimini algılar.
   
temp_mode false
  end 
if

end procedure

-- ------------------------------------------------------
-- 
mode 13 seçildi ise hepsini sırasıyla gezer
-- ------------------------------------------------------
mode Data_oku(0)         -- Hafızadaki animasyon modunu oku
aktif_mod 
Data_oku(1)    -- Hafızadaki animasyon sırası

if mode == 13 then         -- sıralı mod seçildi ise
 
if aktif_mod == 0 then    -- ilk oynatma
   data_yaz
(1,mod13_start) -- aktif mod 11 olsun.
   
aktif_mod mod13_start
  
else                     -- ilk oynatma değilse sıradakine geç
    aktif_mod 
= ((aktif_mod 12) + 1)
    
data_yaz(1,aktif_mod)  -- hafızaya yaz
  end 
if
else                       -- 
normal mod devam eder
 aktif_mod 
mode
end 
if

-- ------------------------------------------------------
--   
Ana Döngü
-- ------------------------------------------------------
forever loop
 buton_kontrol
 animasyon_oynat
end loop


https://www.youtube.com/watch?v=pOXFY0saIXQ

Kaynak : http://www.sercanca.com/f1-led-stop-cakar-devresi-yapimi/
Hayat sadece bir araçtır amaca ulaşmak için; Amaç ise Hayata birşeyler Katmaktır Benim için.. www.sercanca.com