/* PROGRAMA UQE MEDIANTE UNA APLICACIÓN DE
ANDROID RECIBE LOS VALORES DE UN SLIDER
DE UNA APLICACIÓN EN ANDROID.
*/
#include <16f887.h> // Librería del PIC
#fuses NOWDT HS // Fuses
#use delay(clock=16000000) //Reloj a 16 MHz
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)// RS232 Con el
/// módulo Bluetooth
#include <stdlib.h> //requerida para usar atoi
#define LCD_DATA_PORT getenv("SFR:PORTB")
#include "lcd.c"
#use fast_io(all) // Gestión de puertos
int16 cicloServ; // Valor que determina el ciclo de servicio
int x,k; // Variable entera para la recepción del módulo
char string[10];
void main() { // Función principal
lcd_init(); // Se inicializa la cantalla
lcd_gotoxy(1,1);
lcd_putc("Recepcion de"); // Se imcrime el mensaje en la línea 1
lcd_gotoxy(1,2);
lcd_putc("datos del modulo"); // Se imcrime el mensaje cara la inserción de
delay_ms(1000);
lcd_putc('\f'); // Se borra la cantalla
set_tris_d(0); // Se configura el puerto D cómo salida
output_d(0); // Se limpia el puerto D
// Se limpia el puerto C
output_c(0);
set_tris_c(0b11111011); // RC2 = salida
// Se configura el TMR2 con periodo de 249, prediv de 1:4 y postdiv de 1:1
setup_timer_2(T2_DIV_BY_16, 249, 1);
// Se pone el ciclo de servicio en 0.5 ms (al 50%)
cicloServ=500;
set_pwm1_duty(cicloServ);
/* Inicia la señal PWM */
/*
Inicia la generación de la señal PWM
Se configura el módulo CCP1 en modo PWM
con TPWM = 1 ms (FPWM = 1000 Hz)
*/
setup_ccp1(CCP_PWM); // La señal PWM se genera a partir de aquí
while(1==1){// Ciclo infinito
gets(string);
x = atoi(string); // x is now 123
lcd_gotoxy(1,1);
printf(lcd_putc,"%u ",x);
cicloServ=x*1000/255;
lcd_gotoxy(1,2);
printf(lcd_putc,"%Lu ",cicloServ);
set_pwm1_duty(cicloServ); // Se actualiza el ciclo de servicio
}
}