C Kodunda Değişiklik İçin Yardım

Başlatan jackiso, 25 Mayıs 2015, 21:43:49

jackiso

merhaba aşağıdaki kodlarda kompresörün kapı açıkkende yanmasını sağlayacak düzenleme için yardımcı olurmusunuz proje ödevim için.
#‎include‬ <20150405_buzdemo.h>
‪#‎define‬ LED_ONF PIN_B0
#define LED_FAN PIN_B1
#define LED_KOMP PIN_B2
#define LED_1DEG PIN_B7
#define LED_2DEG PIN_B6
#define LED_4DEG PIN_B5
#define LED_6DEG PIN_B4
#define LED_8DEG PIN_B3
#define SW_KAPI PIN_A3
#define SW_GUC PIN_A4
#define ACIK 0
#define KAPALI 1
#define FAN_CALIS output_low(LED_FAN)
#define FAN_DUR output_high(LED_FAN)
#define KOMP_CALIS output_low(LED_KOMP)
#define KOMP_DUR output_high(LED_KOMP)
unsigned int set_val,cur_val,tick,guc;
‪#‎INT_RTCC‬
void RTCC_isr(void) {
set_val=(255-read_adc())/30;
output_high(LED_1DEG);output_high(LED_2DEG);output_high(LED_4DEG);output_high(LED_6DEG);output_high(LED_8DEG);output_high(LED_ONF);
if(guc==0) return;
output_low(LED_ONF);
if(cur_val<=1){ output_low(LED_1DEG);}
else if(cur_val<=2){ output_low(LED_2DEG);}
else if(cur_val<=4){ output_low(LED_4DEG);}
else if(cur_val<=6){ output_low(LED_6DEG);}
else if(cur_val<=8){ output_low(LED_8DEG);}

}
void main() {
setup_adc_ports(sAN0);
setup_adc(ADC_CLOCK_INTERNAL);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256|RTCC_8_bit); //262 ms overflow
output_b(0xFF);
set_adc_channel(0);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
set_val=(255-read_adc())/32;
cur_val=0;
tick=0;
guc=0;
while(TRUE){
start:
if(input(SW_GUC)==0){ while(input(SW_GUC)==0) delay_ms(300); if(guc==0) guc=1; else guc=0; }
if(guc==0) {
goto start;
}
delay_ms(1000);
tick++;
if(input(SW_KAPI)==KAPALI){
if(tick>=2){
tick=0;
if(cur_val==set_val){
FAN_DUR; KOMP_DUR;
}
else if(cur_val<set_val){
cur_val++;
FAN_DUR; KOMP_DUR;
}
else{
cur_val--;
FAN_CALIS; KOMP_CALIS;
}
}
}
else{
if(tick>=2){
tick=0;
FAN_DUR; KOMP_DUR;
if(cur_val<8){
cur_val++;
}
}
}
}
}

burctankal

Kompresörün çalışması sırf kapıya bağlı değil ki "tick" değişkeni "cur_val" değişkeni ve "set_val" değişkenleri şartlarına bağlanmış. Mevcut durumda kompresörün çalışması için gerekli koşullar şunlar: SW_KAPI= KAPALI , tick>=2, cur_val>set_val. Bütün bu koşullar sağlanırsa kompresör çalışmaya başlıyor. Sizin dediğiniz gibi yapılması için bütün koşulların baştan tasarlanması lazım. İstediğiniz senaryoyu tam olarak yazarsanız kodları doğru şekilde güncellemek mümkün olur.Kolay anlaşılması için iç içe "if"leri düzenleyip resim olarak ekliyorum. Sistemi anlarsanız siz de istediğiniz gibi düzenleyebilirsiniz aslında.


jackiso

teşekkürler...benim istediğim,,her konumda,kompresö çalışsın kompresörün tek çalışmayacağı yer 1 ledi olsunn 

Powered by EzPortal