Değişken içerisinde değişken tanımlama

Başlatan mechanicalengine, 26 Haziran 2014, 13:53:31

mechanicalengine

Merhaba arkadaşlar;

Saat içerisinde bir alarm ayarlıyorum, ve alarm'a bağlı değişken sayısını aşağıdaki gibi tanımlıyorum

while(ayar2==8){degiskensayisi();
   lcd_gotoxy(1,2);lcd_send_byte(0x01,0x0d);lcd_gotoxy(2,2);lcd_send_byte(0x02,0x0d);
   if(input(pin_d0)==0){degisken++;delay_ms(20);if(degisken==100){tbk=0;}while(input(pin_d0)==0);}
   if(input(pin_d1)==0){degisken--;delay_ms(20);if(degisken==-1){degisken=99;}while(input(pin_d1)==0);}
   if(input(pin_d3)==0){ayar2++;delay_ms(200);while(input(pin_d3)==0);}}
   while(ayar2==9){degiskensayisi_2();n=degisken;}


En son değişken sayısını "n" sabitine eşitleyip kaydediyorum. (Örneğin alarm çaldığında n=5 defa led'i yak gibi)

Her değişkene ait bir çeşit fonksiyon çağırıyorum ve bu fonksiyonun çalışma zamanını her değişken için ayrı ayrı tanımlamak istiyorum.

n==1 için delay_ms(1000)
n==2 içim delay_ms(2000)

gibi.

LCD ekran üzerinde değişken sayısını arttıtıp kaydedildi yazdırıyorum. Bir sonraki adım'ı

n=1 için çalışma süresi giriniz
n=2 için çalışma süresi giriniz şeklinde yapmaya çalışıyorum. (Her led'in kaç saniye yanacağını ayarlamak gibi)


Bu şekildeki bir işlemi nasıl yapabileceğim hakkında tavsiyeleriniz olabilir mi? Kısa yoldan yapmanın bir yolu olabilir mi?

Yardımlarınız için şimdiden teşekkürler.




Gökhan BEKEN

Açıkçası bişey anlamadım.
Devrende RTC, LCD var.
degiskensayisi(); diye bir fonksiyon çağırıyorsun, ne iş yapıyor belli değil.
"alarm'a bağlı değişken sayısı" derken yine bişey anlamadım.
Şu işi "mal'a anlatıyormuş" gibi anlatırsan belki anlarım. :D

Ya da sen kilit noktayı söyle, yapamadığın tek şey, ledleri bir değişken değeri kadar sürede yakmak mı istiyorsun?
Özel mesaj okumuyorum, lütfen göndermeyin.

mufitsozen

array!

n==1 için delay_ms(1000)  yerine

delay_ms(MSDelay[n])   gibi unsigned int MSDelay[]={0,1000,2000,3000,....} ornegin
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Kabil ATICI

@mechanicalengine
Yöntemi 1:devreni bilgisayara seri port veya benzeri bir iletişim ile bilgisayara bağla, bilgisayar için devre ayarın için bir arayüz programı yaz ve ayarlarını o şekilde yap...
işlemci için baya yüklü bir programa dönüşebilir.

YÖntem 2: Ayar bölümünde sadece 1 değer ayarla, hangisini ayarladığını sen belirliyorsun zaten. Ayar sonunda bunu ayar yaptığın değişkene ata.
Bir bayrak kullanarak hangi değişkeni ayarladığını belirleyebilirsin.

ambar7

mechanicalengine

@Meftun;

Alarm çaldığında led'in kaç defa yanıp sönmesi gerektiğini değişken ile ayarlıyorum. (Değişken=n)

Daha sonra her yanıp sönmenin ne kadar süre olacağını ikinci adımda ayarlamak istiyorum.  :D

örneğn n==2

n=1 olduğunda      1 saniye yan
n=2 'ye geldiğinde 2 saniye yan ..  gibi ikinci adımda n'in her adımını ayarlamak istiyorum.

Bu iş sanıyorum PIC'in içerisinde sığmayacak cinsten :)

Özür dilerim öyle demek istemedim.... :D

Kabil ATICI

pic'e niye sığmasın ki,
Örneğin PIC18F4680; 64k flash .
ambar7

mechanicalengine

@ ambar7

Teşekkürler. PIC ile ilgili genel kültürümü arttırmam gerekiyor sanırım. 16F877A sabitlenmiş kalmış aklımda :)

@mufitsozen

Array kullanımı ile ilgili küçük bir örnek paylaşmanız mümkün olabilir mi?

Teşekkürler.



baran123

#7
Array dizi demek kolayca söyle anlayabilirsin senin meyve sepetin var içinde çeşitli mevye var yada cuzdanın var ıcınde 1 tl var 10 var 5 var gibi :DD dikkat ettiysen aynı ad altında değerler var kullanımnıı ise @mufitsozen hocam soylemıs dedıgı gıbı

int n;
unsigned int MSDelay[]={0,1000,2000,3000}// gibi bir array tanımlarsın (unssigned demek '-' değer alamaz demek)
delay_ms(MSDelay[n]) //burada bekleme süreside n değişkenine bağlı,n= 1 diyelim o zaman
delay_ms(MSDelay[1]) //olur  MSDelay dizisinin 1.elemanı 1000 olduguna göre burada 1000 mili saniyelik bir bekleme yapar

Basitçe kullanımı budur tekrar yardımcı olurum takıldığın yer olursa kolay gelsin :)