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

[Bascom]Uczenie kodu pilota RC5

micc 03 Paź 2010 21:59 1974 3
REKLAMA
  • #1 8580721
    micc
    Poziom 13  
    Witam zbudowałem urządzenie które zapala diode po naciśnięciu guzika na pilocie, kod jest już wcześniej zaznaczony, i mam teraz pytanie jak zrobić żeby program uczył się kodu np. po zwarci zworki, lub przycisku. Może ktoś ma program, najlepiej w bascomie, który uczy się właśnie kodu pilota.
  • REKLAMA
  • #2 8580879
    Karol966
    Poziom 31  
    TO jest bardzo prosty algorytm. Nie lubię bascoma więc piszę w C :P Generalnie robisz tak, że jeżeli naciśniesz jakiś switch to program przechodzi do trybu uczenia i czeka na kod RC5. Jak już go odbierze to przypisuje go go do jakiejś zmiennej np w pamięci. Ot cała filozofia.
  • REKLAMA
  • #3 8584120
    micc
    Poziom 13  
    W sumie prosta sprawa ale czy ktoś może podać jakieś przykłady?
  • #4 8584590
    Karol966
    Poziom 31  
    W jednym ze swoich programów zrobiłem to tak( kiedyś w trakcie nauk):

    
    
    void programowanie_pilota( void )
    {
    	LCD_Clear();
    	programowanie = 1;
    	k = 0;
    	while(programowanie)
    	{
    		_delay_ms(200);
    		if(bit_is_clear(PIND,PD4))
    		{
    			while(bit_is_clear(PIND,PD4)){};
    			programowanie = 0;
    		}
    		while(k<3)
    		{
    			if(k == 0)
    			{
    				LCD_GoTo(0,0); 
    				LCD_WriteText("press down");
    			}
    			if(k == 1)
    			{
    				LCD_GoTo(0,0); 
    				LCD_WriteText("press up  ");
    			}
    			if(k == 2)
    			{
    				LCD_GoTo(0,0); 
    				LCD_WriteText("press by by maszkaro");
    			}
    			while(!rc5_getkey){};
    			_delay_ms(10);
    			if(rc5_getkey)
    			{	
    				if(k == 0 && rc5_getkey)
    				{
    					addres_down = rc5_addr;
    					command_down = rc5_comm;					
    					rc5_getkey=0;
    					rc5_comm = 0;
    					rc5_addr = 0;
    					rc5_toggle = 0;
    					buzzer(1,100);
    				}
    				if(k == 1 && rc5_getkey)
    				{
    					addres_up = rc5_addr;
    					command_up = rc5_comm;
    					rc5_getkey=0;
    					rc5_comm = 0;
    					rc5_addr = 0;
    					rc5_toggle = 0; 
    					buzzer(1,100);
    				}
    				if(k == 2 && rc5_getkey)
    				{
    					addres_by = rc5_addr;
    					command_by = rc5_comm;
    					rc5_getkey=0;
    					rc5_comm = 0;
    					rc5_addr = 0;
    					rc5_toggle = 0; 
    					buzzer(1,100);
    				}
    				rc5_getkey=0;
    				rc5_comm = 0;
    				rc5_addr = 0;
    				rc5_toggle = 0;
    			} 
    			k++;
    		}
    		programowanie = 0;
    	}
    	
    	// zapisz dane do pamięci
    }
    
    
    
    
    
    
    main () {
    
    ...
    
    if(bit_is_clear(PIND,PD4))
    {
    	hile(bit_is_clear(PIND,PD4)){};
    	buzzer(1,100);
    	programowanie_pilota();
    }
    ...
    
    }
    
REKLAMA