Witam wszystkich.
Prosiłbym o pomoc. .Postanowiłem sobie zrobić nadajnik i odbiornik na podczerwień. Temat nadawani i odbierania był już na forum, jednakże z tych informacji, które znalazłem i tak nie che mi wyjść. Napisałem program na podstawie jakiś innych programów znalezionych na sieci.
Mam problem z odbiorem z pilota.
Kod pilota:
fusbity ustawione na 2Mhz
Pilot działa i nadaje sygnał.
Prosiłbym ludzi dobrej woli o sprawdzenie kodu odbiornika.
Pozdrawiam i dziękuję.
Prosiłbym o pomoc. .Postanowiłem sobie zrobić nadajnik i odbiornik na podczerwień. Temat nadawani i odbierania był już na forum, jednakże z tych informacji, które znalazłem i tak nie che mi wyjść. Napisałem program na podstawie jakiś innych programów znalezionych na sieci.
Mam problem z odbiorem z pilota.
Kod pilota:
fusbity ustawione na 2Mhz
# define F_CPU 1690000L
#include <avr/io.h>
#include <util/delay.h>
int main(void){ //pocztek funkcji main
DDRD=0x00; //PD0 wejściowy
PORTD=0xFF; //z podciąganiem
DDRB=00000000; //Pb6 wejściowy
PORTB=0xfF; //z podciąganiem
int stan=0;
int stan1=0;
int i, ii;
int tab[14]= {1,1,1,0,1,1,0,1,1,0,1,0,0,1}; //pierwszy przycisk
int tab1[14]={1,1,1,0,0,1,0,1,1,0,1,0,0,1}; //drugi przycisk
//generacja fali nonej 36kHz
while(1)
{
PORTD&= ~_BV(PD6);
//****************************************Pierwszy przycisk*****************************************************************
if((bit_is_clear(PIND,PD0)) && (stan==0)) //jeżeli poprzednio nie był wciśnięty
{
_delay_us(30); //czekaj aż się uspokoją drgania styków
if(bit_is_clear(PIND,PD0)) //jeżeli ciągle wciśnięty
{
for(ii=0;ii<14;ii++)
{
if(tab[ii]==1)
{
for (i=0;i<100;i++)
{
PORTD|=_BV(PD6);
_delay_us(13);
PORTD&= ~_BV(PD6);
_delay_us(13);
}
}else
_delay_us(2600);
_delay_us(2600);
}
stan=1; //oflaguj jako wciśnięty
}
}
if (bit_is_set(PIND,PD0))
stan=0; //jeżeli przycisk jest zwolniony zeruj flagę wciśnięcia
//************************************Drugi przycisk*********************************************************************
if((bit_is_clear(PIND,PD3)) && (stan1==0)) //jeżeli poprzednio nie był wciśnięty
{
_delay_us(30); //czekaj aż się uspokoją drgania styków
if(bit_is_clear(PIND,PD3)) //jeżeli ciągle wciśnięty
{
for(ii=0;ii<14;ii++)
{
if(tab1[ii]==1)
{
for (i=0;i<100;i++)
{
PORTD|=_BV(PD6);
_delay_us(13);
PORTD&= ~_BV(PD6);
_delay_us(13);
}
}else
_delay_us(2600);
_delay_us(2600);
}
stan1=1; //oflaguj jako wciśnięty
}
}
if (bit_is_set(PIND,PD3))
stan1=0; //jeżeli przycisk jest zwolniony zeruj flagę wciśnięcia
//*********************************************************************************************************
}
return 0;
}
Pilot działa i nadaje sygnał.
Prosiłbym ludzi dobrej woli o sprawdzenie kodu odbiornika.
Pozdrawiam i dziękuję.
