Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

11/02/2013 #1


Duda entradas analogicas
Hola, estoy haciendo un programa en ccs con el pic16f873 para leer dos potenciómetros, que segun su valor independiente deben encender más o menos su respectiva fila de leds (8 para cada canal)

Funciona todo correctamente, solo me falta que cuando exista una diferencia de 2 leds encendidos, o sea, que en el canal 1 por ejemplo esten 3 leds encendidos y en el canal 2 esten 5, pues me encienda otro led a modo de aviso, tiene que hacerlo en todos los niveles, ejemplo 8 lends encidos en el canal 1 y 6 en el 2. Supongo que hay que comparar los valores de entrada y cuando la diferencia entre ellos sea superior a 2 pues que se encienda el problema es que no se como hacer esto.

Gracias de antemano

Código PHP:
#include <main2.h>
int16 v1,v2t1t2;
void main()
{

   
setup_adc_ports(AN0_AN1_AN3);
   
setup_adc(ADC_CLOCK_INTERNAL);
   
setup_spi(SPI_SS_DISABLED);
   
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   
setup_timer_1(T1_DISABLED);
   
setup_timer_2(T2_DISABLED,0,1);
   
setup_ccp1(CCP_OFF);
   

  while(
1){
   
set_adc_channel(0);
   
delay_us(10);
   
t1=read_adc();
   
v1=t1/127;
   
   
set_adc_channel(1);
   
delay_us(10);
   
t2=read_adc();
   
v2=t2/127;
   
  
    switch(
v1){
    
    case 
0output_b(0b00000000);
            break;
    case 
1output_b(0b00000001);
            break;
    case 
2output_b(0b00000011);
            break;
    case 
3output_b(0b00000111);
            break;
    case 
4output_b(0b00001111);
            break;
    case 
5output_b(0b00011111);
            break;
    case 
6output_b(0b00111111);
            break;
    case 
7output_b(0b01111111);
            break;
    case 
8output_b(0b11111111);
            break;
    
    
    }
   
   switch(
v2){
    
    case 
0output_c(0b00000000);
            break;
    case 
1output_c(0b00000001);
            break;
    case 
2output_c(0b00000011);
            break;
    case 
3output_c(0b00000111);
            break;
    case 
4output_c(0b00001111);
            break;
    case 
5output_c(0b00011111);
            break;
    case 
6output_c(0b00111111);
            break;
    case 
7output_c(0b01111111);
            break;
    case 
8output_c(0b11111111);
            break;
    
    
    }
      
  }


Los valores de entrada los divido entre 127 para que den 8 leds justos

Gracias.
11/02/2013 #2


Umm.. se me ocurre algo como

Código:
int z=0;

if(v1>v2)
{
z=v1-v2;
if(z>2)
{
encender led;
}

}
else
{
z=v2-v1;
if(z>2)
{
encender led;
}
}
12/02/2013 #3


Ou yeah! muchas gracias!!

saludos!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.