one for transmitter and one for receiver... (433 MHz)
I set B pins as input in order to use transmitter and receiver...
The codes are written in mikroC.
Here is the code for the transmitter:
Code: Select all
void main() {
trisb = 1;
portb = 0;
cmcon = 7;
UART1_Init(9600);
delay_ms(1000);
while(1){
UART1_Write_Text('a');
delay_ms(1000);
UART1_Write_Text('b');
delay_ms(1000);
}
}
Code: Select all
void main() {
trisb = 1;
trisa = 0;
portb = 0;
porta = 0;
cmcon = 7;
UART1_Init(9600);
delay_ms(100);
while(1){
if(UART1_Data_Ready()){
if(UART1_Read() == 'a') porta.b1 = 1;
if(UART1_Read() == 'b') porta.b1 = 0;
}
}
}
The led is connected to 18.pin (porta.b1).
EDIT
I have no proteus...
That's why I drew the diagram of the circuits on a paper.
EDIT
The problem is solved; thanks...
Apparently, it is a obligation to connect an antenna to transmitter.
There is a hole at transmitter's right-top side.
I connected a jumper cable there and It worked.
When I touch the hole with my finger, the same happens.
But for long distances, transmitter needs an antenna.
But when the transmitter is near the receiver; finger, copper wire is enough.
Those codes work well: (It is quote from https://mikrodunya.wordpress.com/2011/11/08/udea-nin-rf-veri-iletimi-alanindaki-kucuk-devleri-atx-34-nrx-34/)
Receiver:
Code: Select all
char az,i=0, msg[6];
void main()
{
UART1_Init(2400);
trisb.f0=0;
portb.f0=1;
delay_ms(100);
while(1)
{
if(UART1_Data_Ready())
{
msg[i]=UART1_Read();
if(msg[0]=='y' || msg[0] == 's')//Eğer msg[0] 'y' veya 's' ise i değişkeninin 1 arttır.
{
i++;
}
}
if(i==3)
{
if(msg[0]=='y' && msg[1]=='a' && msg[2]=='n' )portb.f0=1; //Senkron için gönderilen sıfır veya 255 aranmaz....
if(msg[0]=='s' && msg[1]=='o' && msg[2]=='n' )portb.f0=0;
i=0;
msg[0]=0;
}
}
}
Code: Select all
char pre[15]={'U','U','U','U','U',255,255,255,255,255,0,0,0,0,0};
char yak[3]={'y','a','n'}; //Senkron için en az bir byte sıfır gönder kesinlikle.....
char son[3]={'s','o','n'};
char i=0,j=0;
void kurulum()
{
UART1_Init(2400);
trisb.f0=1;
Delay_100ms();
}
void main()
{
kurulum();
while(1)
{
if(portb.f0)
{
for(i=0;i<15;i++)
{
UART1_Write(pre[i]);
}
for(j=0;j<10;j++) //garanti olması açısından 10 kez gönderiliyor veriler...
{
for(i=0;i<3;i++)
{
while(!UART1_Tx_Idle());
UART1_Write(yak[i]);
}
}
}
//*************************************************************
if(!portb.f0)
{
for(i=0;i<15;i++)
{
UART1_Write(pre[i]);
}
for(j=0;j<10;j++)
{
for(i=0;i<3;i++)
{
while(!UART1_Tx_Idle());
UART1_Write(son[i]);
}
}
}
}
}
You can translate it using google translate...