Sie sind auf Seite 1von 10

En la linea 2 declare la librera -----------> #include < lcd.

c >

En la linea 7 por peticin de la librera coloque ----------> lcd_init();

En la linea 18 borre la LCD antes de escribir -------------> printf(LCD_PUTC, "\f");
//ejemplo1
lcd_gotoxy(1,1); // cd_gotoxy(x,y) donde x es la fila, y la columna.
printf(LCD_PUTC, "Hola ^_^"); // entre comillas el mensaje.
//ejemplo 2
lcd_gotoxy(1,1);
printf(LCD_PUTC, "22XD");
lcd_gotoxy(1,2);
printf(LCD_PUTC, "blogspot.com");
//ejemplo 3
Int i;
lcd_gotoxy(1,1);
printf(LCD_PUTC, "Loading");
for (i=1;i<=16;++i)
{
lcd_gotoxy(i,2);
printf(LCD_PUTC, "*");
delay_ms( 500 );
}
printf(LCD_PUTC, "\f");
//ejemplo 4
printf(LCD_PUTC, "\f");// borrar lcd
for (i=1;i<=16;++i)
{
lcd_gotoxy(1,1);
printf(LCD_PUTC, "Loading (%02i)",i);
lcd_gotoxy(i,2);
printf(LCD_PUTC, "*");
delay_ms( 500 );
}
printf(LCD_PUTC, "\f");
Ejemplo de pulsador pull down
#include <main1.h> // ejemplo resistor PULL DOWN.
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
while (true)
{
if (!input(PIN_B1)==0)
output_toggle( PIN_B0);
}
Return;
}
Modulos de rf TRANSMISOR


Descripcion:

o Voltage de operacion: DC3-12 V
o Corriente de operacion: 5-45 mA
o Corriente de reposo: ?20uA
o Velocidad de transmision max.: 9.6K
o Modulacion: AM
o Frecuencia de operacion: 315 MHz 433 MHz
o Alcance de transmision: 1000m
o Dimensiones: 19mm x 19mm x 8mm



RECEPTOR



Descripcion:

o Voltaje de operacion: DC 5 V
o Consumo de corriente: 5 mA
o Sensitividad de recepcion: -103 dbm
o Velocidad de transmision: 4.8K
o Modulacion: AM
o Tipo de salida: TTL
o Frecuencia de operacion: 315 MHz 433 MHz
o Dimensiones: 30mm x 14mm x 7mm

Como los uso bueno?

Bueno debo decir que hay 2 formas :

1. Usando encoder y decoder (PT2262 y PT2272).
2. Programando un micro controlador para la transmisin serial -USART (se las
recomiendo porque pueden hacer muchas combinaciones sin limitarte

Bueno debo decir a lo personal que son muy buenos ya que los he usado para
control warbots,robotsocce.
Cdigo del transmisor
#include <16F628A.h>
#fuses intrc_io,noput,nowdt,nolvp,nomclr
#use delay(clock=4M) //FRECUENCIA DE RELOJ
#use rs232(baud=2400,xmit=PIN_B2,rcv=PIN_B1 )
#use standard_io(b)
#define p1 PIN_B4
#define p2 PIN_B5

int i;

void main()
{
set_tris_b(0b00110000);
//output_b(0);
port_b_pullups(TRUE);

while(TRUE){

if(input(p1)==0) // si se presiono pulsador 1...

for(i=0;i<8;i++)
{ putc(1); } // enviamos un 1 por tx usart
while(input(p1)==0);// hasta que deje de presionar pulsador
{}


if(input(p2)==0) // si se presiono pulsador 2...
for(i=0;i<8;i++)
{ putc(2);} // enviamos un 2 por tx usart
while(input(p2)==0); // hasta que deje de presionar pulsador
{}


if( (input(p1)==1) & (input(p2)==1))
{ putc(3);} // enviamos un 2 por tx usart

}
}



Cdigo del receptor
#include <16F628A.h>
#fuses intrc_io,nowdt,nolvp,nomclr,noput
#use delay(clock=4M) //FRECUENCIA DE RELOJ
#use rs232(baud=2400,rcv=PIN_B1) // configuracion del usart
#use standard_io(b)
#define led1 pin_b4
#define led2 pin_b5
#define led3 pin_b6
char data;
void main(){

set_tris_b(0b00000011); // configuro pines como entrada/salida
//output_b(0); // limpio el puerto

while(TRUE){ // loop infinito

data=fgetc();

if(data==1) // si el dato es '1'...
{
output_high(led1); // cambio estado del led
output_low(led2);
output_low(led3);
}

if(data==2) // de lo contrario si es '2'..
{
output_high(led2); // cambio estado del led
output_low(led1);
output_low(led3);
}

if(data==3){ // de lo contrario si es '2'...
output_low(led1); //todo a cero
output_low(led2);
output_high(led3);
}
}
}

Bueno el programa lo que hace es encender 2 led( pinb4 y pinb5 del pic receptor)
mediante los pulsadores que van en el pinb4 y pinb5 del pic transmisor, mientras estos no
estn presionados se encender el led ubicado en el pinb6 del receptor.


Receptor con identificador
#include <16f886.h> // declaro pic a usar
#fuses hs,nowdt,nolvp,noput,nomclr // declaro fuses
#use delay(clock=20M) // declaro cristal usar
#use rs232(uart1,baud=2400,rcv=PIN_C7,bits=8,parity=N) // configuro el modulo
USART asincrono como RX, solo recive

//**************DECLARO CONSTANTES******************************
#DEFINE ENI PIN_C1
#DEFINE END PIN_C2
#DEFINE INI_1 PIN_C0
#DEFINE INI_2 PIN_C3
#DEFINE IND_1 PIN_C4
#DEFINE IND_2 PIN_C5
#DEFINE PTD PIN_B0
#DEFINE ALTO OUTPUT_HIGH
#DEFINE BAJO OUTPUT_LOW
char valor[4]; //vector en lo cual almacenaremos los datos recibidos
int i=0;
int dato; //dato a ejecutar

VOID DLT();
VOID atras();
VOID izq();
VOID der();
VOID glp();
VOID paro();

#INT_RDA
void RDA_isr()
{
valor[0]=getc(); //primer dato adquirido: identificacion
if (valor[0]=='@') //valor unico para cada soccer
{ //si la identificacion es autentificada p
//procede a capturar los 3 datos faltantes para llenar el vector

for(i=1;i<4;i++) //almacena 3 datos del mod usart
{
valor[i]=getc();
}
if(valor[1]==valor[2] && valor[2]==valor[3]) // comparamos si el dato es el mismo
{dato=valor[3];}
}
}

void main() // inicio
{

enable_interrupts(int_rda); //activamos interrupcion por recepcion de datos usart
enable_interrupts(global); //activamos interrupciones globales

set_tris_b(0);
set_tris_c(0b10000000);

while(true)
{ // bucle while

switch(dato) // instruccion case comparamos el dato y ejecutamos
{

case '1':
DLT();
break;

case '2':
ATRAS();
break;

case '3':
IZQ();
break;

case '4':
DER();
break;

case '5':
GLP();
break;

default: PARO();
ALTO(PTD);
DELAY_US(500);
BAJO(PTD);
DELAY_MS(20);

break;
}
}
} // fin
//*************funciones de movimiento**************************

void DLT()
{
ALTO(ENI);
ALTO(END);
ALTO(INI_1);
ALTO(IND_1);
BAJO(INI_2);
BAJO(IND_2);
}

void ATRAS()
{
ALTO(ENI);
ALTO(END);
ALTO(INI_2);
ALTO(IND_2);
BAJO(INI_1);
BAJO(IND_1);
}

void DER()
{
ALTO(ENI);
ALTO(END);
ALTO(INI_2);
ALTO(IND_1);
BAJO(INI_1);
BAJO(IND_2);
}

void IZQ()
{
ALTO(ENI);
ALTO(END);
ALTO(INI_1);
ALTO(IND_2);
BAJO(INI_2);
BAJO(IND_1);
}

void PARO()
{
BAJO(ENI);
BAJO(END);
BAJO(INI_2);
BAJO(IND_2);
BAJO(INI_1);
BAJO(IND_1);
BAJO(PTD);

}

void GLP()
{
ALTO(PTD);
DELAY_US(1500);
BAJO(PTD);
DELAY_MS(20);

}
Transmisor
#include <16f628a.h> // declaro pic a usar
#fuses hs,nowdt,nolvp,put // declaro fuses, el intrc_io permite usar las patitas del
cristal como puertos
#use delay(clock=20M) // declaro cristal usar
#use rs232(baud=2400, xmit=PIN_B2, bits=8, parity=N) // configuro el modulo USART
asincrono como TX//solo envia
#use fast_io(b)
#byte porta = 0x05

char cabecera='@'; //valor de identificacion unico para cada mando de soccer
int i;


void main() // inicio
{
set_tris_b(0); // asigno puertob como salida
set_tris_a(255); // asigno puertoa como entrada

while(true) // bucle while
{

if (porta==31) //si no c ha presionado algun pulsador
{
putc(cabecera); //enviamos por el usart nuestra identificacion
for(i=0;i<3;i++) //enviamos la orden a ejecutar 3 veces
{
putc('0');
delay_ms(5);
}
while(porta==31); //bucle anti rebote
}

if (porta==30)
{
putc(cabecera);
for(i=0;i<3;i++)
{
putc('1');
delay_ms(5);
}
while(porta==30);
}

if (porta==29)
{
putc(cabecera);
for(i=0;i<3;i++)
{
putc('2');
delay_ms(5);
}
while(porta==29);
}

if (porta==27)
{
putc(cabecera);
for(i=0;i<3;i++)
{
putc('3');
delay_ms(5);
}
while(porta==27);
}

if (porta==23)
{
putc(cabecera);
for(i=0;i<3;i++)
{
putc('4');
delay_ms(5);
}
while(porta==23);
}

if (porta==15)
{
putc(cabecera);
for(i=0;i<3;i++)
{
putc('5');
delay_ms(5);
}
while(porta==15);
}

}
} // fin

Das könnte Ihnen auch gefallen