Uradio sam sledece: senozer sam povezao tako sto sam +Vs povezao na 5V, Vout na pin RA0 i GND povezao na uzemljenje.
Zatim sam napisao program u PIC C koiji cita A/D konverziju i na displej ispisuje M ako je procitao nesto razlicito od 0, a ako nije onda ispisuje G (ovo je cisto samo da vidim da li mi radi, to jest da li uzima podatke). Medjutim javlja se problem sto on stalno ispisuje M i kad odkopcam senzor, da li neko zna gde je problem? Evo i kod :
#include <16f876A.h>
#device adc=10
#use delay(clock=20000000)
//#byte adrl=0x9E
upisI(){
delay_ms(30);
output_bit(pin_c7,1);
output_bit(pin_c7,0);
delay_ms(30);
}
upisData(int8 data){
output_b(data);
delay_ms(30);
output_bit(pin_c5,1); //upis podatka
output_bit(pin_c6,0); //upis
output_bit(pin_c7,1); //enable
output_bit(pin_c7,0);
delay_ms(30);
}
void main(){
int16 value;
byte vl1;
delay_ms(40);
///Pocinje incijalizacija za LCD
//set function
output_c(0x00);
output_b(0x30);
upisI();
output_b(0x00);
//0011NFXX
output_b(0x3c);
upisI();
output_b(0x00);
// delay_ms(20);
//dyspaly on/of
output_b(0x08);
upisI();
output_b(0x00);
//clear display
output_b(0x01);
upisI();
output_b(0x00);
//on display
output_b(0x0c);
upisI();
output_b(0x00);
//0 0 0 0 0 1 I/D S
output_b(0x06);
upisI();
output_b(0x00);
///ZAVRSENA INICJALIZACIJA ZA LCD
//*********************************************************
//GLEDAJ TE OVAJ DEO KODA SAMO OVO GORE RADI
///RAD SA AD KONVERTOROM
setup_adc_ports( ALL_ANALOG );
setup_adc( ADC_CLOCK_INTERNAL);
setup_adc_ports( ALL_ANALOG);
set_adc_channel(0);
vl1=0;
while (true){
delay_ms(200);
value=read_adc();
vl1=value;
if (value!=0){
upisData(0x4d);
}
else{
upisData(0x47);
}
}
}
Ajd ako mozete pomozite