Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

PicBasic de random komutu

Başlatan dideco, 25 Aralık 2002, 11:51:21

dideco

Arkadaslar,

İşlemci

(16F84) ile ilk açılışta (reset sonrası) rastgele bir sayı üretmek ve bu sayıyı kullanarak devam etmek istiyorum. Ancak Random(x)

komutu sürekli aynı rakamı üretiyor.

Değişken rastgele rakamlar üretebilmek için ne yapılabilir.  Bu konuda tecrübesi

olan var mı?

yufuk

eğer mikronun içinde tarih yada saat rutini oluşturursan,

rast gele oluşturulacak sayıyıda bu rutini baz alarak oluşturursan sanırım istediğini elde edebilirsin.

dideco

16F84'de veya 12x508 serisinde tarih veya saat rutini

olusturmak pek mumkun olmasa gerek?

yufuk

bu becerine bağlı...
RTC entegreleride işini görebilir.

showtime

Random komutu ana loop içinde değildir umarım.

dideco

Yaptığım devrenin çalışmaya ilk başladığında 1 ile 10

saniye arasında rastgele bir süre bekledikten sonra açılmasını ve çalışmasını istiyorum. Bu nedenle random komutu döngü içinde

değil, en başta bir yerlerde...

yufuk

Bildiğim kadarıyla RC osilatörler pek kararlı çalışmazlar.

Eğer girişlerden birine böyle bir osilatör yapıp bağlarsan ve bunun 1sn'deki pals sayısını ölçersen her seferinde değişik bir rakam

elde etmiş olursun. Bunuda bilimum çarpma bölme işlemlerine sokarak oldukça farklı değerler elde edebilirsin.

showtime

anladığım kadarıyla random komutun pic resetten sonra

yani çalışmaya başlar başlamaz saı üretecek. eğer öyleyse zaten pic çalışır çalışmaz bir defa sayı üretir. sen de devamlı o değişkene

baktığın için aynı sayıyı görürsün.
yanlış anlamamışımdır umarım

AlundrA

aklıma şöyle bir fikir geldi pic ilk çalışmaya başladığında

ürettiği sayı kullanılır ve bu sayı eeproma kaydedilir bir dahaki açılışta pic eepromu kontrol eder ve daha önce kaydedilen sayıyı yeni

random sayıyı üretmek için baz alır böylelikle her seferinde yeni bir sayı üretilmiş olur.

sizce işe yararmı böyle bi şey  :)
yapabilirim!

passwordc

"random" komutu her döngüde tekrar

icra edilirse değişik sayılar üretebilirsin. Ama denetleyicinin initialize esnasınsa sadece bir defalık çağırıyorsan değişkeni üretip

birdaha çalışmayacaktır. Eğer belirli zaman aralıklarında değişken üretmesini istiyorsan interrupt kulanabilirsin.

dideco

İlk açıldığı andan itibaren (reset sonrası) arka arkaya hep

aynı sayıları üretiyor. Bu nedenle ilk üretilen sayını eeprom'a yazmak da bir çözüm değil. Orneğin arka arkaya arada random

ürettiğiniz sayı kadar "pause" verseniz bile hep aynı rakamlar üretiliyor...

showtime

Dostum şu kodları buraya paste etsene bi bakalım. valla

hayret

baba

fikir yürütmek ve öneride bulunmak için kodları

görmeliyiz.
ÖĞRENDİKÇE    CAHİLLİĞİM       ARTIYOR.

dideco

Programın ilk satırları aşagıdaki gibi:

abc VAR

WORD  'abc degiskenini 16 bit tanımla
random abc         'abc degiskenine random sayı ata
serout ..abc.......  ' abc

degerini seri cıkış olarak bilgisayara gönder


Bu şekilde her reset sonrası random oluşturulan sayı aynı rakam. Her

ne yaparsanız yapın bir sekilde aynı sırayla rakamlar üretiliyor. Örneğin random üretilen sayı kadar süre bekletin ve tekrar sayı

üretin, yine aynı rakam çıkıyor!

baba

peki o rakam nedir,bunu biliyor muyuz?
belki serout

komutunu yanlış kullanıyor ya da seri protocol hatası yapıyorsan ne olacak.çünkü random komutu bildiğim kadarıyla çalışıyor ve

emin olmak için eve gidince deneyeceğim.
kaynak yazmakta sıkıntın var anlaşılan biraz daha açık olsan belki boşuna

debelenmeyiz gibi geliyor.ne dersin.burada herkesin amacı yardım etmek, ederken de öğrenmek değil mi arkadaşlar.korkmaya gerek

yok.
örneğin include dosyalarında verdiğin "abc" sembolik değişkeni "reserved words"lerden olabilir.değişken adını

değiştirip deneyebilirsin.

tabi kaynak kodu açık yazmadığın için amiral battı oynuyoruz.
özellikle ilgileniyorlar diye

şüpheyle bakmamanı rica ederim.bu bizim başımıza da gelebilirdi diye düşündüğümüz için yardım etmeye çalışıyoruz.
kolay

gelsin.
ÖĞRENDİKÇE    CAHİLLİĞİM       ARTIYOR.