Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
nclude <16f886.h>
#device ADC=10
#use delay(internal = 8MHz)
#include <flex_lcd416.c>
#define led PIN_B5
//#include <internal_eeprom.c>
int8 ciclo_activo=1;
int16 cont3;
void establecer_ciclo (int8 ciclo)
{
set_pwm1_duty(ciclo); // Establecer el ciclo activo
}
void pulsadores()
{
if (input(PIN_A4)==0)
{
while(!input(pin_a4)){
ciclo_activo ++; // Incrementar el ciclo activo.
if (ciclo_activo > 249) ciclo_activo = 249; // No permitir que el ciclo activo suba de 249
delay_ms(15);
establecer_ciclo(ciclo_activo);
}
}
if (input(PIN_A5)==0)
{
while(!input(pin_a5)){
ciclo_activo --; // Disminuir el ciclo activo.
delay_ms(15);
if (ciclo_activo <= 1) ciclo_activo = 2; // No permitir que el ciclo activo baje de 1
establecer_ciclo(ciclo_activo);
}
}
}
void memoria()
{
int16 cont;
if(input(pin_a2)==0){
while(!input(pin_a2)){
cont++;
delay_ms(5);
if (cont >500){
write_eeprom(00,ciclo_activo ); // guardo el dato ciclo activo
delay_ms(50);
cont = 0;
}
}
ciclo_activo =read_eeprom(00); // paso el dato a la variable ciclo_activo
cont=0;
delay_ms(50);
establecer_ciclo(ciclo_activo);
}
}
void memoria1()
{
int16 cont1;
if(input(pin_a3)==0){
while(!input(pin_a3)){
cont1++;
delay_ms(5);
if (cont1 >500){
write_eeprom(01,ciclo_activo ); // guardo el dato ciclo activo
delay_ms(50);
cont1 = 0;
}
}
ciclo_activo =read_eeprom(01); // paso el dato a la variable ciclo_activo
cont1=0;
delay_ms(50);
establecer_ciclo(ciclo_activo);
}
}
void energia()
{
// set_adc_channel(11);
// delay_us(50);
// ene = read_adc();
// if(ene<200)
if(input(pin_B4)==0){
cont3++;
delay_ms(1);
if (cont3 >10) {
write_eeprom(03,ciclo_activo );
delay_ms(50);
cont3 = 0;
}
}
}
void main()
{
ciclo_activo =read_eeprom(03);
establecer_ciclo(ciclo_activo);
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_4,249,1); // 1000 Hz. @ 4 MHz.
set_pwm1_duty(1); // Ciclo activo al mínimo
#ZERO_RAM // Limpiar RAM. (Variables en 0)
establecer_ciclo(ciclo_activo);
while (true)
{
pulsadores();
memoria();
memoria1();
energia();
}
}
Bue....estuve tomando medicaciones
es necesario a veces!Bue....
Hola, bueno el PWM debería tener un incremento/decremento de duty de un 1/4 de lo que actualmente tiene. Así en lugar de escalonar de a 200mV lo haría de a 50mV.Hola, estuve tomando medicaciones en la salida del pwm después del filtro pasa bajo y cada vez que pulso sube 200 milivolt el pwm, como puedo hacer para que suba de 50 milivolt?
No. Deben ser dos lecturas completas con una comparación ANDTengo una duda, lo declaro: if(input (pin_a4&pin_a5))
¿Esta decisión es correcta?
void establecer_ciclo (int8 ciclo)
{
set_pwm1_duty(ciclo); // Establecer el ciclo activo
lcd_gotoxy(1,3);
// Obtener el porcentaje del ciclo activo.
porcentaje2 = (ciclo / 24.5) *10;
// Mostrar el porcentaje del ciclo activo para la carga.
printf(lcd_putc," Rf:%02u%%",porcentaje2,);
}