Etepic

Dökümanlar - Makaleler ve Projeler => Üye Projeleri => Konuyu başlatan: onurinci - 25 Nisan 2024, 03:44:19

Başlık: 32 ve 64 LED ADC Bar
Gönderen: onurinci - 25 Nisan 2024, 03:44:19
Hocam selam.
Elektro77 'nin yürüyen ledlerini görünce heveslendim, alıntı yaparak kendime uyarlamaya çalıştım.

16F877A aşırı pahalı elimde bir kaç 12F675 vardı ona uyarlamaya çalıştım.

aksak bir şekilde çalıştırmayı başardım..

elimde 595 ile yapılmış iki ayrı bord var biri 4 adet 595 32 LED'e sahip diğeri 8 595 entegre ve 64 LED'e sahip amacım bunlara can verebilmek idi..

mevcut yazılım 48 LED ile çalıştı. artırayım dedim [SAYAC[7] [SAYAC[5] gibi ilaveler yapayım dedim derlenmedi.

ikinci bir sorum ise SURE isimli değişkeni kullanmadığım için siliyorum .sistem sapıtıyor fazladan Led'ler yakıyor , bir anlam veremedim.

32 ve 64 çalışırsa güzel bir uygulama olacak bir sürü yerde kullanabilirim. ama asıl hayalim bunların Bargraph gitmesi görsel şölen olur. yorumlarınıza açığım ,

''*  Notes   : 48 LED Single Step ADC Walking

DEFINE OSC 4
DEFINE OSCCAL_1K 1
#CONFIG
#LIST_12F675
 __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BODEN_OFF
#ENDCONFIG

TRISIO= %00000001 : GPIO= 0 : CMCON= 7 : VRCON.7= 0 : ANSEL= %00100001 : ADCON0= %10000000
OPTION_REG.7= 1 : WPU= 0

DEFINE ADC_BITS 10            ' 10-bit ADC used
DEFINE ADC_CLOCK 3            ' Internal clock used
DEFINE ADC_SAMPLEUS 50        ' Sample timing

'--------------------------------------------------------------------
SYMBOL SHCP  =GPIO.2      ' Shift Register Clock Input
SYMBOL DS    =GPIO.4      ' Serial Data Input
SYMBOL STCP  =GPIO.5      ' Storage Register Clock Input 'ÇIKIŞA GÖNDER 
SHCP=0 : DS=0 : STCP=0    ' temizlik


SAYAC  VAR Byte ' [6]56
HAM    VAR WORD
SURE   VAR WORD '70
SAY    VAR BYTE '62
INDEX  VAR BYTE '63
YAK    VAR BYTE 65
ADET   VAR BYTE

PAUSE 200 : sayac=0: SAY=0 : INDEX=0 : ADET=0

PAUSE 200

BASLA:

  GOTO POT_YAK

'-------------------------------------------------------------------------------
HESAPLA:
    SAYAC[INDEX]=0 
    INDEX=ADET/8         
    say=DCD((adet-INDEX*8)-1)
    
 IF ADET//8=0 THEN
       INDEX=INDEX-1                        
       SAY=128
 ENDIF
       
    SAYAC[INDEX]=SAY
    GOSUB AKTAR
    RETURN        
'-------------------------------------------------------------------------------
AKTAR:
    SHIFTOUT DS,SHCP,1,[SAYAC[5],SAYAC[4],SAYAC[3],SAYAC[2],SAYAC[1],SAYAC[0]]
    STCP=1 : PAUSEUS 10 : STCP=0     
RETURN
'-------------------------------------------------------------------------------

POTOKU:
        ADCIN 0,HAM               ' Potla yakman işleminde ham değer
        YAK=(HAM*/121)/10         ' 0-48 ARASINA TEKABÜL EDER
RETURN
'-------------------------------------------------------------------------------

POT_YAK: 'Potun aldığı 0-1023 arası değere göre 48 ledden ilgili olanı yakan kısım

    ADET=YAK
    GOSUB HESAPLA                  
    GOSUB POTOKU

    goto basla
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: elektro77 - 25 Nisan 2024, 10:15:43
32 ve 64 ledli olan kodları aşağıya ekleyiverdim. @ete Hocam BAR olarak yanma konusunda yardımcı olur umarım. Bende nasıl olacağını çok merak ettim doğrusu.
''*  Notes  : 64 LED Single Step ADC Walking

DEFINE OSC 4
DEFINE OSCCAL_1K 1
#CONFIG
#LIST_12F675
 __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BODEN_OFF
#ENDCONFIG

TRISIO= %00000001 : GPIO= 0 : CMCON= 7 : VRCON.7= 0 : ANSEL= %00100001 : ADCON0= %10000000
OPTION_REG.7= 1 : WPU= 0

DEFINE ADC_BITS 10            ' 10-bit ADC used
DEFINE ADC_CLOCK 3            ' Internal clock used
DEFINE ADC_SAMPLEUS 50        ' Sample timing

'--------------------------------------------------------------------
SYMBOL SHCP  =GPIO.2      ' Shift Register Clock Input
SYMBOL DS    =GPIO.4      ' Serial Data Input
SYMBOL STCP  =GPIO.5      ' Storage Register Clock Input 'ÇIKIŞA GÖNDER 
SHCP=0 : DS=0 : STCP=0    ' temizlik


SAYAC  VAR Byte ' [6]56
HAM    VAR WORD
SURE  VAR WORD '70
SAY    VAR BYTE '62
INDEX  VAR BYTE '63
YAK    VAR BYTE 65
ADET  VAR BYTE

PAUSE 200 : sayac=0: SAY=0 : INDEX=0 : ADET=0

PAUSE 200

BASLA:

  GOTO POT_YAK

'-------------------------------------------------------------------------------
HESAPLA:
    SAYAC[INDEX]=0 
    INDEX=ADET/8        
    say=DCD((adet-INDEX*8)-1)
    
 IF ADET//8=0 THEN
      INDEX=INDEX-1                        
      SAY=128
 ENDIF
      
    SAYAC[INDEX]=SAY
    GOSUB AKTAR
    RETURN        
'-------------------------------------------------------------------------------
AKTAR:
    SHIFTOUT DS,SHCP,1,[SAYAC[7],SAYAC[6],SAYAC[5],SAYAC[4],SAYAC[3],SAYAC[2],SAYAC[1],SAYAC[0]]
    STCP=1 : PAUSEUS 10 : STCP=0    
RETURN
'-------------------------------------------------------------------------------

POTOKU:
        ADCIN 0,HAM              ' Potla yakman işleminde ham değer
        YAK=(HAM*/161)/10        ' 0-64 ARASINA TEKABÜL EDER
RETURN
'-------------------------------------------------------------------------------

POT_YAK: 'Potun aldığı 0-1023 arası değere göre 64 ledden ilgili olanı yakan kısım

    ADET=YAK
    GOSUB HESAPLA                  
    GOSUB POTOKU

    goto basla

Bu da 32 ledli olan kod.
''*  Notes  : 32 LED Single Step ADC Walking

DEFINE OSC 4
DEFINE OSCCAL_1K 1
#CONFIG
#LIST_12F675
 __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BODEN_OFF
#ENDCONFIG

TRISIO= %00000001 : GPIO= 0 : CMCON= 7 : VRCON.7= 0 : ANSEL= %00100001 : ADCON0= %10000000
OPTION_REG.7= 1 : WPU= 0

DEFINE ADC_BITS 10            ' 10-bit ADC used
DEFINE ADC_CLOCK 3            ' Internal clock used
DEFINE ADC_SAMPLEUS 50        ' Sample timing

'--------------------------------------------------------------------
SYMBOL SHCP  =GPIO.2      ' Shift Register Clock Input
SYMBOL DS    =GPIO.4      ' Serial Data Input
SYMBOL STCP  =GPIO.5      ' Storage Register Clock Input 'ÇIKIŞA GÖNDER 
SHCP=0 : DS=0 : STCP=0    ' temizlik


SAYAC  VAR Byte ' [6]56
HAM    VAR WORD
SURE  VAR WORD '70
SAY    VAR BYTE '62
INDEX  VAR BYTE '63
YAK    VAR BYTE 65
ADET  VAR BYTE

PAUSE 200 : sayac=0: SAY=0 : INDEX=0 : ADET=0

PAUSE 200

BASLA:

  GOTO POT_YAK

'-------------------------------------------------------------------------------
HESAPLA:
    SAYAC[INDEX]=0 
    INDEX=ADET/8        
    say=DCD((adet-INDEX*8)-1)
    
 IF ADET//8=0 THEN
      INDEX=INDEX-1                        
      SAY=128
 ENDIF
      
    SAYAC[INDEX]=SAY
    GOSUB AKTAR
    RETURN        
'-------------------------------------------------------------------------------
AKTAR:
    SHIFTOUT DS,SHCP,1,[SAYAC[3],SAYAC[2],SAYAC[1],SAYAC[0]]
    STCP=1 : PAUSEUS 10 : STCP=0    
RETURN
'-------------------------------------------------------------------------------

POTOKU:
        ADCIN 0,HAM              ' Potla yakman işleminde ham değer
        YAK=(HAM*/81)/10        ' 0-32 ARASINA TEKABÜL EDER
RETURN
'-------------------------------------------------------------------------------

POT_YAK: 'Potun aldığı 0-1023 arası değere göre 32 ledden ilgili olanı yakan kısım

    ADET=YAK
    GOSUB HESAPLA                  
    GOSUB POTOKU

    goto basla
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 25 Nisan 2024, 10:41:54
İlk lede 1 verip sonraki led sayısını 2 ile çarparak giderseniz her seferinde tek led yanar.
1. 1
2. 2*1=2
3. 2*2=4
4. 4*2=8
5. 8*2=16
..
7. 64*2=128
dikkat ederseniz bu sayılar 8 bitlik sayının her bir bitinin HIGH olması konumuna denk gelmektedir.

Peki 1-3-7-15-31-63-127-255 şeklinde gitmesi için ne yapılmalı?
(1*2)+1=3
(3*2)+1=7
(7*2)+1=15
şeklinde bir hesap eklerseniz bu şekil sıralamayı yakalamış olursunuz.
Bu bilgi belki bir yerlerde yazmıyor ama sayıları önünüze koyunca nasıl bir hesapla bunları elde edeceğinize dair bilgide kafanızda şekilleniveriyor.

Geriye gitme değişmiyor. Hesap bunu gösteriyor.
örnek vermek gerekir ise;
15-7-3-1 sıralaması için ;
15/2=7
7/2=3
3/2=1

Ete

Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: onurinci - 25 Nisan 2024, 11:36:15
@elektro77
 çok teşekkür ederim .

@ete hocam benim bunu koda entegre etmem mümkün değil , ilginize teşekkür ederim....
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 25 Nisan 2024, 12:05:17
12f675 İÇİN 8X8=64 ledli sistem kodu aşağıdadır. Deneyin bakalım.
Aslında 32 led için yapılması gereken iki satırdaki değişiklikleride ekledim.
Birisi SAYAC VAR BYTE  tanımlamasında [4] ve [8] olarak led sayısına göre değişecek.

Diğeri POT okumada


''*  Notes  : 64 LED Single Step ADC Walking
     
DEFINE OSC 4
DEFINE OSCCAL_1K 1
#CONFIG
 __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BODEN_OFF
#ENDCONFIG
 
TRISIO= %00000001 : GPIO= 0 : CMCON= 7 : VRCON.7= 0 : ANSEL= %00100001 : ADCON0= %10000000
OPTION_REG.7= 1 : WPU= 0
 
DEFINE ADC_BITS 10            ' 10-bit ADC used
DEFINE ADC_CLOCK 3            ' Internal clock used
DEFINE ADC_SAMPLEUS 50        ' Sample timing
 
'--------------------------------------------------------------------
SYMBOL SHCP  =GPIO.2      ' Shift Register Clock Input
SYMBOL DS    =GPIO.4      ' Serial Data Input
SYMBOL STCP  =GPIO.5      ' Storage Register Clock Input 'ÇIKIŞA GÖNDER 
SHCP=0 : DS=0 : STCP=0    ' temizlik
 
 
SAYAC  VAR BYTE [8]56     '64 LED İÇİN BU SATIR AÇILACAK ALTTAKİ KAPANACAK
'SAYAC  VAR BYTE [4]56     '32 LED İÇİN BU SATIR AÇILACAK ÜSTTEKİ KAPANACAK
HAM    VAR WORD
SURE   VAR WORD 70
SAY    VAR BYTE 72
INDEX  VAR BYTE 73
YAK    VAR BYTE 74
I      var byte
 
PAUSE 200 : sayac=0: SAY=0 : INDEX=0 :' ADET=0
 
PAUSE 200
 
BASLA:
 
  GOTO POT_YAK
 
'-------------------------------------------------------------------------------
HESAPLA:
    SAYAC[INDEX]=0 
    INDEX=(yak/8)  
     
          
    IF (YAK//8)>0 THEN
      say=DCD(yak-INDEX*8)-1
    ELSE
      SAY=255:IF INDEX>0 THEN INDEX=INDEX-1
      IF YAK=0 THEN SAY=0
    ENDIF    
    
HESAP_BIR  
    FOR I=0 TO 7:sayac[I]=0:NEXT
    for I=0 to INDEX:SAYAC[I]=255:NEXT
    SAYAC[INDEX]=SAY
    GOSUB AKTAR
    RETURN      
'-------------------------------------------------------------------------------
AKTAR:
SHIFTOUT DS,SHCP,1,[SAYAC[7],SAYAC[6],SAYAC[5],SAYAC[4],SAYAC[3],SAYAC[2],SAYAC[1],SAYAC[0]]
'SHIFTOUT DS,SHCP,1,SAYAC[3],SAYAC[2],SAYAC[1],SAYAC[0]]    '32 led için bu açık olmalı ütteki kapanacak.
STCP=1 : PAUSEUS 10 : STCP=0    
RETURN
'-------------------------------------------------------------------------------
 
POTOKU:
        ADCIN 0,HAM              ' Potla yakman işleminde ham değer
        YAK=(HAM*/161)/10        ' 64 LED İÇİN BU SATIR AÇILACAK ALTTAKİ KAPANACAK.
'        YAK=(HAM*/81]/10         ' 32 LED İÇİN BU SATIR AÇILACAK ÜSTTEKİ KAPANACAK 
RETURN
'-------------------------------------------------------------------------------
 
POT_YAK: 'Potun aldığı 0-1023 arası değere göre 64 ledden ilgili olanı yakan kısım
    GOSUB POTOKU
    GOSUB HESAPLA                       
    goto basla

Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: elektro77 - 25 Nisan 2024, 12:43:21
Hocam. Siz çok iyisiniz. Söyleyecek söz bulamıyorum artık.
Bir ek te ben yapayım.
Eğer 64 led bir vu-metre gibi kullanılmak istenirse;
YAK=(HAM*/800)/10
kodu bu şekilde değiştirilerek adc den okunan 0-1 volt arası gerilim ile tüm ledlerin yanması sağlanabilir.
32 led için ise bu formülün YAK=(HAM*/400)/10 olması gerekli.
 
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 25 Nisan 2024, 13:07:35
Aynı şeyi düşündüm ve pot'u çok hızlı hareket ettirince bazen üst kısımda yanık led bırakıyor sistem. Bunu engellemek için HESAP_BIR etiketi altını biraz değiştirdim.
Yükleyenler yeniden yüklesin. Yada aşıdaki kodla değiştirsin.

HESAP_BIR  
    for I=0 TO 7:sayac[I]=0:NEXT
    for I=0 to INDEX::SAYAC[I]=255:NEXT
    SAYAC[INDEX]=SAY
    GOSUB AKTAR
    RETURN
Ete
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: elektro77 - 25 Nisan 2024, 13:23:29
675 in dahili osilatörü en fazla kaç MHz idi hocam. Belki sese tepkisi düşük kalabilir diye düşünüyorum. Bu nedenle 20 MHz bir işlemci seçilebilir.
Yada adc ayarları ne yapılmalı.
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 25 Nisan 2024, 18:15:38
Dahili OSC 4 Mhz ve bence yeterli.
Simulede bile tepkisi epeyce hızlı.   
Ete
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 25 Nisan 2024, 20:07:27
Bu arada bir şeyi atlamışım. 32 led ile çalışınca AKTAR isimli etiket altında yer alan SHIFT komutunda da değişiklik olmalı ve etiket aşağıdaki şekilde değiştirilmeli.
AKTAR:
SHIFTOUT DS,SHCP,1,[SAYAC[7],SAYAC[6],SAYAC[5],SAYAC[4],SAYAC[3],SAYAC[2],SAYAC[1],SAYAC[0]]
'SHIFTOUT DS,SHCP,1,SAYAC[3],SAYAC[2],SAYAC[1],SAYAC[0]]    '32 led için bu açık olmalı ütteki kapanacak.
STCP=1 : PAUSEUS 10 : STCP=0    
RETURN
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: elektro77 - 25 Nisan 2024, 21:00:42
Alıntı yapılan: ete - 25 Nisan 2024, 20:07:27Bu arada bir şeyi atlamışım. 32 led ile çalışınca AKTAR isimli etiket altında yer alan SHIFT komutunda da değişiklik olmalı ve etiket aşağıdaki şekilde değiştirilmeli.
AKTAR:
SHIFTOUT DS,SHCP,1,[SAYAC[7],SAYAC[6],SAYAC[5],SAYAC[4],SAYAC[3],SAYAC[2],SAYAC[1],SAYAC[0]]
'SHIFTOUT DS,SHCP,1,SAYAC[3],SAYAC[2],SAYAC[1],SAYAC[0]]    '32 led için bu açık olmalı ütteki kapanacak.
STCP=1 : PAUSEUS 10 : STCP=0    
RETURN
Hocam hiç bir fark göremiyorum. Sadece köşeli parantez "açma" eksikti ben derlerken koymuştum. Burada yine eksik. Onumu kastediyorsunuz...
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: onurinci - 25 Nisan 2024, 21:36:10
@ete hocam ve @elektro77 tekrar tekrar teşekkür ederim.

hocam 64 LED Bargraph kusursuz derlenirken 32 LED derlemeye kalkınca ilgili uyarılar yönergesini takip etmeme rağmen derlenmiyor ShiftOut kısmında takılıyor. bir eksik köşeli parantez görüp onardım ama nafile..
''*  Notes  : 64 LED Single Step ADC Walking
     
DEFINE OSC 4
DEFINE OSCCAL_1K 1
#CONFIG
 __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BODEN_OFF
#ENDCONFIG
 
TRISIO= %00000001 : GPIO= 0 : CMCON= 7 : VRCON.7= 0 : ANSEL= %00100001 : ADCON0= %10000000
OPTION_REG.7= 1 : WPU= 0
 
DEFINE ADC_BITS 10            ' 10-bit ADC used
DEFINE ADC_CLOCK 3            ' Internal clock used
DEFINE ADC_SAMPLEUS 50        ' Sample timing
 
'--------------------------------------------------------------------
SYMBOL SHCP  =GPIO.2      ' Shift Register Clock Input
SYMBOL DS    =GPIO.4      ' Serial Data Input
SYMBOL STCP  =GPIO.5      ' Storage Register Clock Input 'ÇIKIŞA GÖNDER 
SHCP=0 : DS=0 : STCP=0    ' temizlik
 
 
'SAYAC  VAR BYTE [8]56     '64 LED İÇİN BU SATIR AÇILACAK ALTTAKİ KAPANACAK
SAYAC  VAR BYTE [4]56     '32 LED İÇİN BU SATIR AÇILACAK ÜSTTEKİ KAPANACAK
HAM    VAR WORD
SURE   VAR WORD 70
SAY    VAR BYTE 72
INDEX  VAR BYTE 73
YAK    VAR BYTE 74
I      var byte
 
PAUSE 200 : sayac=0: SAY=0 : INDEX=0 :' ADET=0
 
PAUSE 200
 
BASLA:
 
  GOTO POT_YAK
 
'-------------------------------------------------------------------------------
HESAPLA:
    SAYAC[INDEX]=0 
    INDEX=(yak/8)  
    
    IF YAK<8 THEN
      INDEX=0:SAY=DCD(YAK)-1
      FOR I=0 TO 7
        SAYAC[I]=0
      NEXT
      SAYAC[INDEX]=SAY
      GOSUB AKTAR
      RETURN
    ENDIF    
          
    IF (YAK//8)>0 THEN
      say=DCD(yak-INDEX*8)-1
    ELSE
      SAY=255:IF INDEX>0 THEN INDEX=INDEX-1
    ENDIF    
    
HESAP_BIR  
    for I=0 TO 7:sayac[I]=0:NEXT
    for I=0 to INDEX:SAYAC[I]=255:NEXT
    SAYAC[INDEX]=SAY
    GOSUB AKTAR
    RETURN      
'-------------------------------------------------------------------------------
AKTAR:
'SHIFTOUT DS,SHCP,1,[SAYAC[7],SAYAC[6],SAYAC[5],SAYAC[4],SAYAC[3],SAYAC[2],SAYAC[1],SAYAC[0]]
SHIFTOUT DS,SHCP,1,[SAYAC[3],SAYAC[2],SAYAC[1],SAYAC[0]]    '32 led için bu açık olmalı ütteki kapanacak.
STCP=1 : PAUSEUS 10 : STCP=0    
RETURN
'-------------------------------------------------------------------------------
 
POTOKU:
        ADCIN 0,HAM              ' Potla yakman işleminde ham değer
'       YAK=(HAM*/161)/10        ' 64 LED İÇİN BU SATIR AÇILACAK ALTTAKİ KAPANACAK.
        YAK=(HAM*/81]/10         ' 32 LED İÇİN BU SATIR AÇILACAK ÜSTTEKİ KAPANACAK 
RETURN
'-------------------------------------------------------------------------------
 
POT_YAK: 'Potun aldığı 0-1023 arası değere göre 64 ledden ilgili olanı yakan kısım
    GOSUB POTOKU
    GOSUB HESAPLA                       
    goto basla
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: elektro77 - 25 Nisan 2024, 21:59:43
YAK=(HAM*/81]/10
buradaki köşeli parantezi düzelt
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: onurinci - 25 Nisan 2024, 22:41:45
evet o kadar dikkatli bakmama rağmen onu düzeltmiştim. ama yanlış parantez koymuşum.

fakat yine aynı ShiftOut satırına takıldı. tek tek kompare ettim hiç bir hata yok.

bende https://text-compare.com/ 'dan yardım almaya karar verdim.

bu satırları 64 ve 32 olarak oraya yapıştırdım.

ve evet arada olmayan bir karakter çıktı ve uyumsuz dedi.

bende el ile mevcut satırları komple silip tek tek yazdım ve kusursuz derlendi.

yani bu HTML kopyalama hala güvensiz sanırım..

ilginize tekrar teşekkür ederim . sorunum çözüldü..  banada Supertex HV5222 entegresine yaptığım evulasyon bordunda bu kodları denemek kaldı..
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: elektro77 - 25 Nisan 2024, 23:15:10
Code tag ın sağ üst köşesindeki kopyala ikonundan kopyalaman gerek.
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: onurinci - 25 Nisan 2024, 23:27:26
öyle yapıyorum zaten .

 ama bir aksilik var galiba HC595 ile LED sürersek bir sorun görünmüyor.

fakat güç gereksinimi olduğunda TPIC6B595  ile sürmeye kalkarsak Open Drain olduğu için Senaryo terslenirmi acaba diye düşünüyorum..
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: elektro77 - 25 Nisan 2024, 23:31:19
Alıntı yapılan: onurinci - 25 Nisan 2024, 23:27:26öyle yapıyorum zaten .

 ama bir aksilik var galiba HC595 ile LED sürersek bir sorun görünmüyor.

fakat güç gereksinimi olduğunda TPIC6B595  ile sürmeye kalkarsak Open Drain olduğu için Senaryo terslenirmi acaba diye düşünüyorum..
Hayır yazılımda bir değişiklik olmaz. Sadece ledlerin anot ucunu ortak anot(+)ya  bağlaman gerekir.
Tpic (-) çıkış verir.
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 26 Nisan 2024, 12:10:38
Kod da ufak bir ekleme yapıp bazı satırları kaldırdım biraz daha kısaldı.
Eski halide çalışıyor sorunu yok ama yeni hali daha kısa. İsteyen ilk verdiğim kod dan yeniden yükleyebilir.

Merak edenler için;
 IF YAK<8 THEN şeklinde başlayan ve ENDIF e kadar olan kısmı çıkardım.
Bu çıkan kısmın görevini yapmak üzere;

  ELSE
      SAY=255:IF INDEX>0 THEN INDEX=INDEX-1
      IF YAK=0 THEN SAY=0    'bu satırı ekledim!!!!!!!!!!!!!!


Ete
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: elektro77 - 26 Nisan 2024, 15:31:19
Hocam beyniniz zaten atletik ama biraz daha beyin jimnastiği yapmaya ne dersiniz?
Önceki ledler son yanan ledi sürekli itip geri çekecekler ama o son led hiç sönmeyecek.
örnek video linki;5.dakikadan sonrası
https://www.youtube.com/watch?v=LarQefoP344
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 26 Nisan 2024, 22:05:44
ÇÖzebildiğim kadarı ile ileri gidişte en son noktaya yada ses şiddetine göre olabilecek en uca kadar gurup gidiyor. Geri dönerken 2 led orada kalıyor araya biriki led kadar boşluk bırakılıp birlikte geri gidiyorlar.
Birde sen incele ve fikrini söyle bakalım ne mantıkla çalışıyor bu. Ona göre düşünelim nasıl yaparız diye.

Ete
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: elektro77 - 26 Nisan 2024, 23:13:54
En üstteki ledi havadan ağır gazla doldurulmuş bir balon gibi düşündüm ben.
Son ledin altındaki ledleri de o balonu sürekli zıplatan bir çubuk gibi düşündüm.
Örneğin ses bas vurduğunda çubuk balonu zıplatıyor ve hemen geri dönüyor ama balon biraz havada asılı kalıyor. Bir daha bas vurmaz ise o balon alttaki ledlere kadar bir balon gibi süzülüyor. Süzülürken tekrar bas vurursa alttakiler ona çarparak yine en üste itiyorlar.
Son ledi diğer ledlerden bağımsız  çalıştıracağız ama alttaki ledler onu iterken onların hızında itilebilecek ama aşağıya inerken onlardan daha yavaş  inecek.
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 27 Nisan 2024, 07:36:53
Ben bezer mantık grüyorum ama tam senin açıkladığın şekilde değil.
İleri giderken eşit hızda ve bitişik gidiyorlar ama geri gelirken uçtaki iki led yavaş yavaş değilde daha gecikmeli geliyor diğerine nazaran. Dikkat edersen aradaki boşluk sabit !!!.
Üsttekiler yavaş ilerlese başlangıç noktasına kadar aradaki boşluğun büyümesi gerekir. Ama öyle olmuyor. Üsttekiler bekliyor aşağıdakiler geri gitmeye başlıyor bişraz boşluktan sonra paralel iniş başlıyor bende bu şekilde algıladım.
Bu noktada daha fazla yoruma ihtiyaç var gibi.

Ete
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: elektro77 - 27 Nisan 2024, 09:06:13
Videoyu 0.25 çalma hızında bir kez daha izleyin Hocam.Tam olarak anlaşılıyor ne olduğu.
Anlattığım gibi olduğunu göreceksiniz.
Buna "balon efekti" de denilebilir aslında.
Edit:
Şöyle bir mantık da güdülebilir:  Sol taraftan sağa doğru, belli bir hızda gelen bir araba var. Ama bundan daha hızlı olarak sağdan sola doğru gitmeye çalışan bir tır var. Tır, arabaya çarptığında, ivmesi daha yavaş olan arabayı itiyor. Bu durum sesin şiddetine göre defalarca tekrarlanıyor.
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 27 Nisan 2024, 18:03:24
Tam olarak anlayamadım maalesef. Bir linearite yok. Rastgele çalışıyor gibi.
Yavaşlatınca gördüğüm şu. Çoklu yanan alt gurup gerçek bir vu-metre gibi çalışıyor.
Uçtaki 2 led ise e tepe nokta belirlenince yanıyor yada ortaya çıkıyor ve o  iki led yavaş yavaş aşağı iniyor.
Ama anında bir yükseliş yaşanırsa onlarla birlikte hızlı bir şekilde yukarı çıkıyor.
Bu iş insanın kafa sigortalarını attırır. Çok farklı bir algoritma oluşturmak lazım.
Baştan aşağı yeniden kod yazılması gerekir ki bununla uğraşmayacağım.
Bana göre son derece lüzumsuz bir iş. Vumetre neden öyle çalışsınki? bence gereksiz.
Gerçekten zor bir iş. Zorluk nasıl yapılacağını bilmemekten kaynaklanıyor.
Sonuçtan bunu kesin yaparım ben. Ama bir sürü kod yazmak lazım başlı başına bir deveye hendek atlatma işi bu. Uğraşmayacağım kusura bakmayın.

Ete
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: elektro77 - 27 Nisan 2024, 20:19:17
Alıntı yapılan: ete - 27 Nisan 2024, 18:03:24Tam olarak anlayamadım maalesef. Bir linearite yok. Rastgele çalışıyor gibi.
Yavaşlatınca gördüğüm şu. Çoklu yanan alt gurup gerçek bir vu-metre gibi çalışıyor.
Uçtaki 2 led ise e tepe nokta belirlenince yanıyor yada ortaya çıkıyor ve o  iki led yavaş yavaş aşağı iniyor.
Ama anında bir yükseliş yaşanırsa onlarla birlikte hızlı bir şekilde yukarı çıkıyor.
Bu iş insanın kafa sigortalarını attırır. Çok farklı bir algoritma oluşturmak lazım.
Baştan aşağı yeniden kod yazılması gerekir ki bununla uğraşmayacağım.
Bana göre son derece lüzumsuz bir iş. Vumetre neden öyle çalışsınki? bence gereksiz.
Gerçekten zor bir iş. Zorluk nasıl yapılacağını bilmemekten kaynaklanıyor.
Sonuçtan bunu kesin yaparım ben. Ama bir sürü kod yazmak lazım başlı başına bir deveye hendek atlatma işi bu. Uğraşmayacağım kusura bakmayın.

Ete

Hocam videodaki cihaz ardunıo ve ws2812 dahili çipli rgb led ile yapılmış.
Arduıno platformunda mutlaka bir kütüphanesi olmalı. Dediğiniz gibi sigorta attıran bir iş bu. Bende bu nedenle size yazdım. Videodaki kişinin de hazır kütüphaneden aldığını sanıyorum.
Bu kütüphane görüntülenip nasıl yapıldığına bakılabilir.
Sonra C den pbp ye uyarlanabilir sanki. Ben bir bakacağım C kodlarını anlayabilirsem.
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: onurinci - 27 Nisan 2024, 20:54:33
Istvan K (zuisti) diye bir yazar MikroC ile buna benzer projeler paylaşmıştı.

tekniğe  Peak-Hold/Decay VU meter deniyor. hiç Basic yada Proton örneğine rastlamadım..

tabii bu RGB değil..



https://www.edaboard.com/threads/16-stage-stereo-peak-hold-decay-vu-meter-mikroc-pic.371419/
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 28 Nisan 2024, 09:50:16
C dilinin en kötü yanı pek çok işin geri planda yapılıyor olmasıdır. Bu nedenle C programına bakıp ne olup bittiğini hemen anlayamazsınız. Global olarak bir şeyler anlamak mümkün ancak onu zaten videolara bakıncada anlıyorsunuz.

Onur'un verdiği linkteki programlara da baktım. Programları simule ettim. Şu sonuca vardım.
Uçlardaki ledler vu etrenin en fazla hangi noktaya ulaştığının bir göstergesi şeklinde çalışıyor ve bulunduğu nokta aşılmadığı sürece o uç noktada biraz bekleyip sonra yavaş yavaş aşağı iniyor. Iniyor ama vumetre çalışmasına devam ediyor ve o nokta aşılırsa yeniden yükselme mümkün değilse dibe kadar iniyor bunlar.
Bu işin bir prensibi mi var yoksa herkes bizim yaptığımız gibi birinin görseline bakıp birşeyler tahmin edip onu yapmayamı çalışıyor. Prensip var ise bir yerlerde yazıyordur. Onu bulmak gerekir.

Sonuç olarak ne olup bittiğini anlamak gerçekten zor. Hal böyle oluncada bir yol belirleme de imkansız hale geliyor. Bu sistem büyük oranda yukarıda açıkladığım prensibe dayanıyor. Ama bu sistemi bile düşünüp gerçekleştirmek bana zor geldi. Genelde böyle şeylere kafamı takarım ve işi yapmanın yollarını ararım. Hep bulmuşumdur bir yol. İnşallah bunda da bulurum.
Bu arada hemen belirteyim. Bu işi LCD de yapmak nispeten kolay. 64 led ile bunu yapmak işi daha da zorlaştırıyor. Yinede her şey prensibe dayanıyor.

Ete
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: onurinci - 28 Nisan 2024, 11:19:24
hocam selam

SANYO firmasının ürettiği 12 LED ile çalışan müzik setleri için ürettiği bir entegre var.

LB1412 bunun veri kağıdında Peak işi nasıl halledilmiş. basitçe anlaşılabiliyor..
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: elektro77 - 29 Nisan 2024, 09:06:27
Alıntı yapılan: ete - 28 Nisan 2024, 09:50:1664 led ile bunu yapmak işi daha da zorlaştırıyor. Yinede her şey prensibe dayanıyor.
Sadece 64 ledde bunu yapmak değil işi zorlaştıran, bu işin 595 çipi ile yapılması asıl zor olan.
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 29 Nisan 2024, 14:20:21
Pazar günü biraz kafa yordum. Bir sonuca henüz ulaşmış değilim. Programlama mantığı olarak çok kolay bir değil. Çok vakit alacak bir iş. Üstelik öyle yarım saat bir bakayım ertesi gün yine biraz uğraşayım denilecek bir iş de değil. Konsantrasyon gerekiyor. Zaman alacak bir iş. Boş zaman uğraşısı olarak bir kenarda bekletiyorum.

Ete
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: sadixxx - 09 Temmuz 2024, 23:03:26
istediginize benzer bir proje umarım yararlı olurhttps://www.youtube.com/watch?v=7BnRLEsGsCk (https://www.youtube.com/watch?v=7BnRLEsGsCk)             https://s-o.webnode.cz/vu-metr/vum40/ (https://s-o.webnode.cz/vu-metr/vum40/)
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 10 Temmuz 2024, 09:44:03
YouTube videosunun biraz görsel akıl almaktan öte bir faydası yok maalesef.
Bu konuda zorlandığımız ve akıl fikir beklediğimiz mesele ledlerin en sondan geriden gelmesi yoksa vumetre yapımında bir sorunumuz yok. Sorunumuz olan meselede iise henüz bir algoritma geliştiremedik. Karmaşık bir iş bir ara uğraştım ama beklediğimden daha zor olduğu için yeniden ilham gelinceye kadar bıraktım uğraşmayı. Aklıma bir çözüm gelirse yeniden uğraşacağım.

Ete
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: onurinci - 10 Temmuz 2024, 13:24:20
hocam ne yazık'ki Basic örneği yok. yıllar evvel bir kit satın almıştım. üretici firma 2 adet C dosyası yollamıştı ve gayet güzel çalışmıştı. simulasyonda çalışmıyor maalesef. basit olduğu için belki bir anlam çıkarabilirsiniz..
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: mehmet - 11 Temmuz 2024, 12:42:50
Bir önceki en yüksek değer ile şimdiki değer XOR yapılır ve ledlere aktarılır. Bu en yüksek değer bir sağa kaydırılır ve yine normal değer ile XOR'lanır. Ancak; anlık okunan değer, bu yüksek değere eşit veya büyükse son değer bu olur.
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: parametre - 11 Temmuz 2024, 19:15:06
....
Başlık: Ynt: 32 ve 64 LED ADC Bar
Gönderen: ete - 11 Temmuz 2024, 21:55:22
Bizim konu ile alakası yok

ete