# Tengo una duda con un sensor sharp a un pic16f873a



## ANGEL 696 (Ago 3, 2012)

como  puede encender un motor con un sensor sharp en mikro C
alguien me podria dar un ejemplo x favor


----------



## 245876 (Ago 3, 2012)

pues uno de esos sensores que tipo de respuesta nos da analoga o digital
si es digital lo debes conectar a una pata del pic y configurarlo como entrada 
pero si es analoga usando el ADC


----------



## ANGEL 696 (Ago 3, 2012)

es un sensor analogico como lo puedo configurar? es*-qu*e  bueno yo lo estoy poniendo asi
void main(void)
{


 TRISA = 0x01; // sensor
 PORTA = 0;
    trisc =0x00;  //led
    portc = 0x00;

    inicio:
    if(porta && 0x01)
    {
    portc = 0x01;
    }
    else
    portc = 0x00;

    {goto inicio;}
}

segun yo no*-*se si este*-*bien o mal pero para encender un motor se*-*puede *h*a*c*er con el*-*sensor sharp sin ponerle alguna distancia o es necesario ponerle distancia?


----------



## 245876 (Ago 6, 2012)

entonde los que tienes que hacer es usar el ADC conversor de analogo a digital ...


----------



## ANGEL 696 (Ago 7, 2012)

Lo *qu*e no entiendo es como se configura el adc del pic16f873a estoy empe*z*ando y ya *h*i*c*e muchos programas y *ah*orita se me ocurri*ó* *h*a*c*erlo con sharp pero no*-*se como configurar el adc y ni como*-*se pondr*í*an las distancias


----------



## leonardo12345 (Abr 11, 2013)

Hola amigos, tengo un problema con el sensor sharp 2y0a21 que mide de 10 a 80cm,  quiero accionar algo como motores, leds o u otra cosa dependiendo a la distancia asignada. Pero no logro hacer la comparacion en el codigo para el pic16f877a.
El compilador ó los compiladores que esoy utilizando son MiKro C y MicroCode Studio.
espero y puedan ayudarme.
estoy intentando hacer un Robot levantador de objetos


----------



## Iva Et Corp (Ago 14, 2014)

Bueno, ante todo muy buenas noches.
El inconveniente es el siguiente. Estoy utilizando un sensor SHARP 2Y0A21 el cual tiene un rango de 10-80 cm, y quiero que cuando el objeto se encuentre a los 14 cm envíe un 1 al pin D0 del microcontrolador (16f877a)
Espero su ayuda, de ante mano gracias.
Estuve intentando con este código y el esquema hecho en proteus.


```
#include <16f877a.h>
#device adc=10
#fuses xt,nowdt
#use delay(clock=4000000)
#define LCD_DB4   PIN_B4
#define LCD_DB5   PIN_B5
#define LCD_DB6   PIN_B6
#define LCD_DB7   PIN_B7
#define LCD_RS    PIN_B2
#define LCD_E     PIN_B3
#include <lcd1.c>
float r,v;


void main(){

lcd_init(); //Inicializa la pantalla lcd
setup_adc_ports(an0);//Selecciona el puerto a realizar la conversion
setup_adc(adc_clock_internal);//Selecciona el reloj de conversion
set_adc_channel(0);//Selecciona el canal de conversion

inicio:
r=read_adc();//Conversion A/D la almacena en r en un binario de 0-1024
v=(1/(r/1024))*4.5;//Convierte a cm
lcd_gotoxy(1,1);//Posiciona el cursor en la posicion 1,1 de la pantalla lcd
printf(lcd_putc,"dist. = %.2f cm,", v);//Imprime
delay_ms(50);//Demora

if(v==14){
output_high(pin_b0);
}
goto inicio;

}
```


----------



## Iva Et Corp (Ago 19, 2014)

Bueno, buenas tardes. El inconveniente es el siguiente; que no sé cómo transformar esta fórmula al lenguaje de programación para CCS Compiler.
Bueno, la fórmula es la siguiente: distancia(cm) = 16746,73 · Vout^(-1,2134)
Espero que me den pistas o lo mejor, como poder realizarlo.
Bueno, ante todo, gracias.


----------



## Miembro eliminado 356005 (Ago 20, 2014)

¿El operador '^' es el de exponenciación o el de OR-exclusivo?


----------

