Elektrotekno.com Ana Sayfa || Devre ve proje istekleriniz


dokunmatik dimmer yazılımı

Kayıt: 25 Ksm 2006
Mesajlar: 36
Konum: KARAMAN
Offline
bbs2006
Tarih: 14 04 2014 16:32

Merhaba
ben 4 kademeli dokunmatik sensör kullanarak dimmer yapmak isttiyorum. 1. yüzeye dokundugum zaman 6 voltluk dc lambanın parlaklıgı %25 artacak 2. yüzeye dokundugum zman % 50, 3. yüzeye dokundugum zman %75 4. yüzeye dokundugum zaman %100 olacak. ayrıca geriye dogru elimi ilerlettigim zaman parlaklık kademeli düşecek. yazılımını yaptım artarken sorun yok ancak azalırken 3. butona dokundugum zaman azaltmıyor. 2. defa basmam gerekiyor. aynı durum 2. tuş ve 1. tuş içinde geçerli 2. sorunum 2. butona bastım parlaklık %50 arttı. 4. butona bastıktan sonra 3. butona bastıgım zaman parlaklık %50 olcak ama o şartı programda çalışmıyor.



Kod: [Seç]

#include<16f628a.h>
#fuses intrc,nowdt,noprotect,nowdt,noprotect
#use delay(clock=4000000)
//#use fast_io(a)
//#use fast_io(b)
#define tus_1 Pin_a0
#define tus_2 Pin_a1
#define tus_3 pin_a2
#define tus_4 pin_a3
#define yuzde_0 0 // doluluk oranı
#define yuzde_25 625
#define yuzde_50 1250
#define yuzde_75 1875
#define yuzde_100 2500
#byte porta=5
#byte portb=6

long int pwm_duty_deger;
int tus_1_kontrol=0;
int tus_2_kontrol=0;
int tus_3_kontrol=0;
int tus_4_kontrol=0;
void main(){

setup_CCP1(CCP_pwm); // CCP1 birimi devre dışı
//set_tris_a(0xff);
//set_tris_b(0x00);
//setup_comparator(NC_NC_NC_NC);
setup_timer_2(T2_DIV_BY_16,624,1);
pwm_duty_deger=yuzde_0;
set_pwm1_duty(pwm_duty_deger);
while(TRUE)
{
if(input(tus_1)) // tus 1 e basılsıysa
{
output_high(pin_b0);

if((pwm_duty_deger>=yuzde_0)&&(pwm_duty_deger<=yuzde_25)) // pwm %25 ve %0 arasında ise
{
delay_ms(10); // buton arkına karşılık azcık bekle

if((tus_1_kontrol==0)&&((tus_2_kontrol==0))) // tuşa ilkkez basıldıysa ve daha önce tus 2 ye basılmadıysa lamba ışığını artır
{
tus_1_kontrol=1;
pwm_duty_deger=yuzde_25;
set_pwm1_duty(pwm_duty_deger);
}
else // tuşa ikinci kez basıldıysa ve/veya daha önce tus 2 ye basıldıysa lamba ışığını düşür
{
tus_1_kontrol=0;
tus_2_kontrol=0;
output_low(pin_b0);
pwm_duty_deger=yuzde_0;
set_pwm1_duty(pwm_duty_deger);
}
while(input(tus_1));
}
}

//2. TUŞ UYGULAMASI

if(input(tus_2)) // tus 2 e basılsıysa
{
//pwm_duty_deger=625;
output_high(pin_b1);
if((pwm_duty_deger>=yuzde_25)&&(pwm_duty_deger<=yuzde_50)) // pwm %50 ve %25 arasında ise
{
delay_ms(10); // buton arkına karşılık azcık bekle
if((tus_2_kontrol==0)&&(tus_3_kontrol==0)) // tuşa ilkkez basıldıysa ve daha önce tus 3 ye basılmadıysa lamba ışığını artır
{
tus_2_kontrol=1;
tus_3_kontrol=0;
tus_1_kontrol=0;
pwm_duty_deger=yuzde_50;
set_pwm1_duty(pwm_duty_deger);
output_high(pin_b6);
delay_ms(250);
output_low(pin_b6);
}
else if((tus_2_kontrol==0)&&(tus_3_kontrol==1)) // tuşa ilkkez basıldıysa ve daha önce tus 3 ye basıldıysa lamba ışığını düşür
{
tus_2_kontrol=1;
tus_3_kontrol=0;
tus_1_kontrol=0;
pwm_duty_deger=yuzde_25;
set_pwm1_duty(pwm_duty_deger);
output_high(pin_b6);
//output_high(pin_b5);
}
else // tuşa üst üste basıldıysa
{
tus_3_kontrol=0;
tus_2_kontrol=0;
pwm_duty_deger=yuzde_25;
set_pwm1_duty(pwm_duty_deger);
output_low(pin_b1); //ne yapmasını istersen onu yaz değişkenleri vs. göz önünde bulundurarak.
output_low(pin_b5);
}
while(input(tus_2));
}
}
// 3. TUŞA BASILDIYSA

if(input(tus_3)) // tus 3 e basılsıysa
{
output_high(pin_b2);
if((pwm_duty_deger>=yuzde_50)&&(pwm_duty_deger<=yuzde_75)) // pwm %75 ve %50 arasında ise
{
delay_ms(10); // buton arkına karşılık azcık bekle
if((tus_3_kontrol==0)&&(tus_4_kontrol==0)) // tuşa ilkkez basıldıysa ve daha önce tus 4 ye basılmadıysa lamba ışığını artır
{
tus_3_kontrol=1;
tus_4_kontrol=0;
tus_2_kontrol=0;
pwm_duty_deger=yuzde_75;
set_pwm1_duty(pwm_duty_deger);
output_high(pin_b6);
delay_ms(200);
output_low(pin_b6);
}
else if((tus_3_kontrol==0)&&(tus_4_kontrol==1)) // tuşa ilkkez basıldıysa ve daha önce tus 4 ye basıldıysa lamba ışığını düşür
{
tus_3_kontrol=1;
tus_4_kontrol=0;
tus_2_kontrol=0;
pwm_duty_deger=yuzde_50;
set_pwm1_duty(pwm_duty_deger);

}

else // tuşa üst üste basıldıysa
{
tus_3_kontrol=1;
tus_4_kontrol=0;
pwm_duty_deger=yuzde_25;
set_pwm1_duty(pwm_duty_deger);
output_low(pin_b2); //ne yapmasını istersen onu yaz değişkenleri vs. göz önünde bulundurarak.
//output_low(pin_b5);
////ne yapmasını istersen onu yaz değişkenleri vs. göz önünde bulundurarak.
}
while(input(tus_3));
}
}

// 4. TUŞA BASILDIYSA

if(input(tus_4)) // tus 4 e basılsıysa
{
output_high(pin_b4);

delay_ms(10); // buton arkına karşılık azcık bekle
if(pwm_duty_deger>=yuzde_75) // pwm %100 ve %75 arasında ise
{
if(tus_4_kontrol==0) // tuşa ilkkez basıldıysa lamba ışığını artır
{
tus_4_kontrol=1;
tus_3_kontrol=0;
pwm_duty_deger=yuzde_100;
set_pwm1_duty(pwm_duty_deger);
output_high(pin_b6);
delay_ms(200);
output_low(pin_b6);

}
else // tuşa ikinci basıldıysa lamba ışığını düşür
{
tus_4_kontrol=0;
tus_3_kontrol=0;
pwm_duty_deger=yuzde_75;
set_pwm1_duty(pwm_duty_deger);
output_low(pin_b4);

}

while(input(tus_4));
}
}
}}

Kod: [Seç]


şu kısımlar çalışmıyor.

else if((tus_2_kontrol==0)&&(tus_3_kontrol==1) şart gerçekleşmiyor. 2. tuş için

else if((tus_3_kontrol==0)&&(tus_4_kontrol==1)) 3. tuş için şart gerçekleşmiyor.


Reklamlar



dokunmatik dimmer yazılımı


Benzer Konular
- 4 kademeli dimmer
- dokunmatik dimmer
- dokunmatik ekranlı hangi telefon alınmalı?

- dimmer

- Mach3 Türkçe Arayüz yazılımı var mı
- WG240128B 240x128 dokunmatik glcd
- Uzaktan kumandalı dimmer devresi+şema+pcb
- dimmer ışık kontrol devresi
- 320x240 Dokunmatik TFT Uygulaması(dsPIC)

- 16f877 ile uyumlu dokunmatik ekran tavsiyesi

- Şerit Led için Dimmer Devresi

Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar varsa iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.
Powered by phpBB | Translated by phpBB Turkiye | Ads by Google Adsense | Design by Crazy Bat based
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72