Elektronik zar

Başlatan Ibrahim324, 15 Nisan 2016, 09:17:35

Ibrahim324

Iyi gunler. Ben 12. sinif ogrencisiyim bize bir odev verildi elektronik zar. Biz burda buldugumuz programi yazdik lakin zar tam manasiyla calismadi. Ledlerle yapilmis bi devre 14 led var bir buton ve pic12f629. Programi isiste kurdum. Microcode studio da yazdim. Attim isise ve devre direk calisti sadece sol daki ledlerde 4 led yaniyo diger tarafta enerji var lakin ledler yanmiyor. Bunun icin bana yardimci olursaniz cok sevinirim. Cevabinizi en kisa surede bekliyorum. Sevgilerle esenlikle kalin.  :)

ete

Çok güzel açıklamışsın sorunu anladım. Ancak bir şey eksik kalmış!!. Nasıl ve hangi yolla yardımcı olabileceğimizde söylersen memnun olurum. Bize hiç bir done vermediğine aşağıdaki şekilde yardımcı olabilirim belki.
- Öncelikle toplam 6 led in sürülmesi gerekiyor. Bunların her birini bir port pinine bağlayabilirsin. Araya 330 ohm direnç koyarak ledleri pinlere bağla.

- Zar atılmasını simule edebilmek için bir buton koy. Buton pullup olarak çalışsın.

- Butona basılınca program tuşun basıldığını kontrol ederek anlasın ve hemen RANDOM olarak sayı tutsun.

- Tutulan sayı 6 dan büyük ise hemen yenisini tutsun. Sayı sınırlar içinde ise olduğu gibi o sayıyı porta versin.

Hepsi bu kadar. Dünyanın en kolay projesi.

Tek sorun, Random komutunun çok sıhhatli çalışmaması. Sürekli benzer sayılar üretmesi olsa gerek.

Ete

mlkara

#2
Aşağıdaki kodla 16f84 ile proteusta denediğimde ilk basışta 3 sayısı yanıyor ancak birdaha değişmiyor.
Nerede hata yapıyorum acaba

symbol zar1234=portb.0
symbol zar5=portb.1
symbol zar67=portb.2
symbol buton=porta.0
sayi1 var byte
trisA=%11111
trisb=%0000000

basla:
low zar1234       'tüm ledleri kapatıyorum
low zar5
low zar67

sayi1=0
pause 100

'zar için sayı seçiyor
random sayi1
sayi1=sayi1//7   '5 ten büyükse baştan seçiyor



     
kontrol :             'buton durumunu kontrol ediyor
if buton=0 then

while buton=0
wend
goto sayisec
else

goto kontrol
endif

sayisec :                      'seçtiği değere göre ledleri yakıyor
select case sayi1

case 0
high zar5
pause 1000
disable

case 1
high zar67
pause 1000
disable

case 2
high zar5
high zar67
pause 1000
disable

case 3
high zar1234
pause 1000
disable

case 4
high zar1234
high zar5
pause 1000
disable

case 5
high zar1234
high zar67
pause 1000
disable

end select

pause 3000        '3 saniye bekliyor

     'tüm ledleri söndürüyor
low zar1234
low zar5
low zar67

pause 1000
goto basla
end

ete

#3
Sayı1 değişkenini byte değil  word olarak ayarla ve tekrar dene bakalım.

Birde 6 adet ledi nasıl sürdüğünü anlamadım. Bir şema eklersen sevinirim.
Sanki 3 pin ile sürülen bir BCD entegresi kullanıyorsun gibi ama onda uymuyor sistem.

Birde bol keseden Disable kullanmışsın ne işe yarıyor bu komut? Disable kesmeyi geçici olarak iptal etme komutudur.
Programında kesme yok nasıl oluyor bu iş?.

Ete

mlkara

İSİS çizimini ekledim hocam, word denedim disable leri kaldırdım değişen birşey olmadı. ilk basışta ortadaki 3 led yanıyor bir daha da değişiklik olmuyor.
Hocam aslında 12f629 ile yapmak istiyorum ancak onun devresinde ledlerin eksileri gp4 ve gp5' e bağlanmış o kısmını anlayamadım.
Bu devreyi bilim şenliğinde 200 kadar kişiye yaptıracağım yardımcı olursanız sevinirim

ete

#5
Dosyanın kendsini koysaydın deneme imkanım olurdu.
Yeterli boş pin varken neden böyle karmaşık led yakma mekanizmasını tercih ettiniz?
Bu sistem çalışmaz. Pic pini ancak 20 ma lik bir akım verebilir. Bir pin 3 led sürüyor her biri 10 ma bile çekse 30 ma yaparki bu o pinin bozulmasına sebep olur. Bu sistem transistörle sürülmesi gerekir.

Ete

mlkara

merhaba
transistörlü isis çizimini ekte gönderdim.

ete

Çalışan dosyalar ilişiktedir.

Ete

mlkara

teşekkür ederim hocam
SAYI  VAR BYTE 56
RAKAM var word 57
satırlarındaki 56 ve 57 yi anlayamadım.

birde 12f629 lu devreyi ekte gönderdim. Bu picte  nasıl bir yazılımsal değişikliğe gitmem lazım. Uygulama adetli olacağı için maliyeti düşürmek açısından 12F629 daha iyi olacak.
Birde devrede ledlerin eksileri şase yerine  GP4 ve GP5 e neden gitmiş bilgilendirirseniz sevinirim.
Not devre internetten alıntıdır.
iliginize teşekkür ederim.

mlkara

Alıntı yapılan: mlkara - 21 Nisan 2016, 14:45:36
teşekkür ederim hocam
SAYI  VAR BYTE 56
RAKAM var word 57
satırlarındaki 56 ve 57 yi anlayamadım.

birde 12f629 lu devreyi ekte gönderdim. Bu picte  nasıl bir yazılımsal değişikliğe gitmem lazım. Uygulama adetli olacağı için maliyeti düşürmek açısından 12F629 daha iyi olacak.
Birde devrede ledlerin eksileri şase yerine  GP4 ve GP5 e neden gitmiş bilgilendirirseniz sevinirim.
Not devre internetten alıntıdır.
iliginize teşekkür ederim.
hocam sizin programı baz alarak 629 ile çalıştırdım. Ancak yukarıdaki 2 sorumun cevabını yinede merak ediyorum açıklarsanız sevinirim

ete

Değişken yanındaki sayılar o değişkenlerin pic hafızasında hangi adrese yerleştirileceğini belirliyor.
Bunu ben seçiyorum çünki simulasyonda debug menüsünden watch window açılarak oraya bu değişkenleri ve yerleştiği adresleri vererek program çalışırken hangi değerleri aldıklarını izleyebiliyorum.

12F629 lu şemada iki tane zar var. Pin sayısı kısıtlı olduğu için normalde 2 zarı 6 pinden kontrol etmek gerekir.
Ama GND lerini ayırarak 3 pinden de kontrol edebilirsin.
1. zarı atıyorum o halde 1 nolu gurubun GND pinini LOW yaparım. ledler gelen zara göre yanar.
2. zarı atıyorum. Bu seferde birinci grup GND pinini HIGH yapar diğer gurubun GND ucunu LOW yaparım böylece aynı led pinlerinden 2 gurubuda kontrol etmiş olurum.

Ete

mlkara

cevaplar için çok teşekkür ederim. 2 zar olayı çok mantıklı geldi, emeğinize sağlık

mlkara

hocam
işyerindeki (64bit) bilgisayarda config ayarlarını yazdığımda aşağıdaki hatayı alıyorum
"overwriting previous address contents"
config ayarlarını silince derliyor  (@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF)

osilatörü dahili kullanmak için yazmış olduğunuz maddeleri okudum uyguladım. bunun dışında dikkat etmem gereken bir husus var mıdır?

@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF
OSCCAL=%10000000
DEFINE OSC 4
DEFINE OSCCAL_1K 1
CMCON = 7

TRISIO = %111000 ' 1 ve 2. bit ler çıkış-- diğerleri giriş. (hepsi giriş iser trısıo=1 hepsi çıkış ise trısıo =0 yazmak da yeterli)

zar1   VAR GPIO.0
zar2   VAR GPIO.1
zar3   VAR GPIO.2
tus   VAR GPIO.3

SAYI  VAR BYTE
RAKAM var word

CLEAR
PAUSE 200
GPIO=0


BASLA:

IF TUS=1 THEN BASLA
GPIO=0

sayi=0
TEKRAR:
RANDOM RAKAM
SAYI=RAKAM//7
IF SAYI=0 then TEKRAR
GPIO=SAYI

pause 100

WHILE TUS=0:WEND
PAUSE 100
GOTo BASLA

ete

PBP klasörü içine girip 12F629.INC dosyasını açacaksın ve altta yer alan sigorta ayar satırı önüne ; işareti koyup satırı kapatacaksın. Geri kayıt edip çıkacaksın sonra tekrar derleyeceksin.

Derleme esnasında MPASM hem program içindeki sigorta ayarlarını hemde işlemciye ait INC dosyası içindeki sigorta ayarlarını görmemeli. Yoksa birini önce görüp ikinciyide görürse öncekinin üzeerine yazılıyor hatasını verir.

Ete

mlkara

 hocam merhaba konuyu açalı 1 yıl olmuş ama şimdi tekrar lazım oldu 12F629 ile zar uygulamasını bir türlü çalıştıramadım.

Powered by EzPortal