Belirli aralıkla sıcaklık nasıl gösterebilirim ?

Başlatan baran123, 30 Nisan 2014, 18:34:35

baran123

Çözdüm, 2 fonksiyon yazdım biri  saat biri sıcaklık main icinde sonsuz dongude sureklı kontrol ettım saniye 0-50 arasında saati değilse sıcaklıgı goster sekılde

Recep METE

Arkadaşım, eğer devlet sırrı değilse kodu burada paylaşırsan memnun olurum.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

baran123

Devlet sırrı değil tabiki ama sizin yapmanız daha iyi olur takılırsanız butun projeyı gonderırım

sıcaklık göster()
{
   temp ...
}

saat göster()
{
   saat göster....
}

void main()
{
      saniye güncelle 
      if((saniye > 50) && (saniye < 59))
      {
          sıcaklık goster();
      }
       
      else
      {
          saat goster();
      }
}

Recep METE

Arkadaşım, if else komutlarını programda çalıştıramadım.
if((sec >= 0) && (sec< 10))
{
  temp();}

else{
 
  time();
 
  }


Bu komutta bir problem olmamasına rağmen program sürekli sıcaklıkta kalıyor.Saate bir türlü geçmiyor.O kadar çok varyasyon denememe rağmen olmadı.Acaba nerede hata yapmış olabilirim.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

mehmet

Saniye değişkeni zaten DS130x üzerinden gelmiyor mu?
Dolayısıyla 59'dan sıfıra düşmesini yada 59' büyük olmasını
kontrol etmeye gerek yok.
50 den büyükse sıcaklık, değilse saati göster denilebilir...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

OG

Değerler 1307 de BCD olarak donuyor, 1302 de de aynı değilmi?
saniyenin 50 olması demek, donen deger $50 demektir

https://www.picproje.org/index.php/topic,51856.msg392083.html#msg392083
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Recep METE

#21
Arkadaşlar, kodlar burada, ancak olmuyor.Ne yapmalı.
void temp(void){
for(;;)   
{       
rtc_get_date(day,mth,year,dow);         
rtc_get_time(hrs,min,sec); 
temp1 = ds1820_read();                                                                     
ondalik = modf(temp1,&tam);      
ondalik = ondalik * 100;                                                       
if((temp1 >= -50.99) && (temp1 <= 125.00))      
{         
if((temp1 >= 10.00) && (temp1 <= 99.99))         
{             
output_high(pin_b4);            
output_low(pin_b5);             
output_low(pin_b6);           
send(0x39);                              
send(0x63);            
send(digit[(int)ondalik % 10]);                 
send(digit[(int)ondalik / 10]);            
send(digit[(int)tam % 10]);                
send(digit[(int)tam / 10]);            
output_high(ST_CP);                    
output_low(ST_CP);                   
}                                                                 
else if((temp1 > 99.99) && (temp1 <= 125.00))         
{                            
output_low(pin_b4);            
output_high(pin_b5);            
output_low(pin_b6);            
send(0x39);                              
send(0x63);            
send(digit[(int)ondalik / 10]);            
send(digit[(int)tam % 10]);            
send(digit[(int)(tam / 10) % 10]);            
send(digit[(int)tam / 100]);            
output_high(ST_CP);                    
output_low(ST_CP);         
}                                                                                
else if((temp1 >= 0.00) && (temp1 < 9.99))                            
{                                       
output_high(pin_b4);            
output_low(pin_b5);             
output_low(pin_b6);            
send(0x39);                              
send(0x63);            
send(digit[(int)ondalik % 10]);           
send(digit[(int)ondalik / 10]);           
send(digit[(int)tam % 10]);            
send(0x00);                               
output_high(ST_CP);                 
output_low(ST_CP);           
}                                                                          
else if((temp1 >= -9.99) && (temp1 < 0.00))                 
{                                                                    
output_high(pin_b4);            
output_low(pin_b5);            
output_low(pin_b6);            
ondalik = abs(ondalik);            
tam = abs(tam);             
send(0x39);                              
send(0x63);            
send(digit[(int)ondalik % 10]);            
send(digit[(int)ondalik / 10]);            
send(digit[(int)tam % 10]);               
send(0x40);                        
output_high(ST_CP);                 
output_low(ST_CP);         
}                  
else if((temp1 >= -50.99) && (temp1 < 10.00))                 
{                                                                    
output_low(pin_b4);            
output_high(pin_b5);            
output_low(pin_b6);            
ondalik = abs(ondalik);            
tam = abs(tam);             
send(0x39);                              
send(0x63);            
send(digit[(int)ondalik / 10]);            
send(digit[(int)tam % 10]);            
send(digit[(int)tam / 10]);             
send(0x40);                        
output_high(ST_CP);                 
output_low(ST_CP);        
}                           
else                          
{             
output_low(pin_b4);            
output_low(pin_b5);            
output_low(pin_b6);            
send(0x00);            
send(0x50);                                       
send(0x5C);                              
send(0x50);            
send(0x50);            
send(0x79);            
output_high(ST_CP);                 
output_low(ST_CP);        
}                         
}                                                   
else                              
{            
output_low(pin_b4);        
output_low(pin_b5);        
output_low(pin_b6);         
send(0x00);         
send(0x50);        
send(0x5C);                           
send(0x50);         
send(0x50);         
send(0x79);             
output_high(ST_CP);              
output_low(ST_CP);      
}    
}
}

void date(void)
{   for(;;)   
{      
rtc_get_date(day,mth,year,dow);        
rtc_get_time(hrs,min,sec);  
output_high(pin_b4);      
output_low(pin_b5);       
output_high(pin_b6);      
send(digit[year % 10]);       
send(digit[year / 10]);                  
send(digit[mth % 10]);       
send(digit[mth / 10]);       
send(digit[day % 10]);       
send(digit[day / 10]);      
output_high(SH_CP);                
output_low(SH_CP);    
}}

void time(void)
{   
for(;;)   
{    

rtc_get_date(day,mth,year,dow);         
rtc_get_time(hrs,min,sec); 
output_high(pin_b4);            
output_low(pin_b5);          
output_high(pin_b6);      
delay_ms(500);      
send(digit[sec % 10]);                            
send(digit[sec / 10]);       
send(digit[min % 10]);                      
send(digit[min / 10]);               
send(digit[hrs % 10]);      
send(digit[hrs / 10]);      
output_low(pin_b4);     
output_low(pin_b5);         
output_low(pin_b6);      
delay_ms(500);     
output_high(ST_CP);             
output_low(ST_CP);  
}
}

                          
void main()          
{   
setup_psp(PSP_DISABLED);                    
setup_spi(SPI_SS_DISABLED);   
setup_timer_0(RTCC_INTERNAL);  
setup_timer_1(T1_DISABLED);    
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC); 
setup_adc_ports(NO_ANALOGS);   
setup_adc(ADC_OFF);   
setup_ccp1(CCP_OFF);     
setup_ccp2(CCP_OFF);   
setup_vref(FALSE);     
set_tris_b(0x00);   
set_tris_d(0x80);   
output_b(0x00);     
rtc_init();                                                               
temp1 = ds1820_read();    
if(temp1 == 85) temp1 = 0;                                     
for(;;)    
{ 
  
 if((sec >= 50)&&(sec<=55) ) 
{
  temp();}
 
 else 
{
  
  time(); 
  
  }

}    
}


mesaj birleştirme:: 12 Mayıs 2014, 09:45:00

@baranekrem;
for(;;)   
{
 
 
if((sec >= 0) && (sec<= 29))
{
  time();}

else if((sec >= 30) && (sec<= 35))
{
 
  temp();
 
  }
 
  else if((sec >= 35) && (sec<=59))
{
 
  date();
 
  }
 

}   
}


main'e bu şekilde ekleme yaptım yine sırayla gösterme olmadı.sadece saat çalışıyor.
printf(lcd_putc,"\f  Ne kadar okursan oku, bilgine, yakışır şekilde davranmıyorsan cahilsin demektir.  \n   semfero");d

M_B

merhaba;
fonksiyonların icindeki
for(;;)

kaldır. Çunku cagırdığın fonksiyondan cıkılmıyor.
O yuzden devamlı saat calısıyor.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet