logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

termometr, kasowanie alarmu jak to zrobić w C

Piotr Kania 27 Gru 2008 16:28 1458 3
  • #1 5908745
    Piotr Kania
    Poziom 15  
    Mój bezprzewodowy termometr na rfm12b i ds18b20 działa świetnie mam tylko jeden problem z alarmem jak jest za nisko ustawiony, często się włącza(termometr pilnuje temp na piecu centralnym) chce dorobić przycisk kasujący alarm oto fragment kodu

    
    if (temp>=alarm)
    		{
    		LCD_xy(0,0);
    		LCD_xy(0,5);
    		write_text("ALARM");
    		LCD_xy(1,4);
    		write_text(dtostrf(celcius, 3, 1, tab));
    		uint8_t znak1[] = {0,14,10,14,0,0,0,0}; 
    		LCD_DefineCharacter(0, znak1);
    		LCD_xy(1,9);
    		write_char(0); 
    		write_text("C");
    		ALARM_ON();  // sygnał dzwiękowy ON
    		_delay_ms(200);
    		ALARM_OFF();  // sygnał dzwiękowy OFF
    		}
    


    działa tak że jeśli if (temp>=alarm) zaczyna piskać alarm, potrzebuje go przyciskiem zlikwidować do kolejnego alarmu. Czy ktoś ma jakieś propozycje?
  • #2 5908864
    skynet_2
    Poziom 26  
    
    //gdzieś wcześniej wstaw uint8_t set=1;
    
    if (temp>=alarm){
    	//tu wyciąłem twoją część kodu żeby było czytelniej
    	if(set){
    		ALARM_ON();  // sygnał dzwiękowy ON 
    		_delay_ms(200); 
    		ALARM_OFF();  // sygnał dzwiękowy OFF
    		}
    	}
    else{set=1;}
    
    if( bit_is_clear(PINx,y) ){set=0;}//detekcja przysku


    jak to działa:

    kiedy temperatura spełnia warunek (temp>=alarm) alarm się włącza
    wciskasz przycisk i alarm milknie
    kiedy temperatura się obniży warunek (temp>=alarm) nie będzie spełniony, alarm się uzbraja :D

    Pozdrawiam skynet_2
  • #3 5909787
    Piotr Kania
    Poziom 15  
    no git! tylko zamiast "a" powinno być set :)
  • #4 5910159
    skynet_2
    Poziom 26  
    Piotr Kania napisał:
    no git! tylko zamiast "a" powinno być set :)


    najpiew napisałem "a", później zmieniłem na "set", mój błąd :P

    _edit: poprawiłem już jest "set" :P
REKLAMA