Mikroc 16f628a ile ultrasonic sensör kullanımı yardım.

Başlatan valaa6, 10 Mart 2013, 21:06:16

valaa6

Merhabalar arkadaşlar,
Mikroc üzerine ultrasonic sensör ile yapılmış tek bir paylaşım bulabildim, bu da 16f877a ile. Ben bunu 16f628 de yapmak istiyorum; fakat fazla bir bilgim olmadığı için gerçekte çalıştıramadım. Tahminime göre ADC den kaynaklanıyor çalışmaması; ama ADC hakkınde pek bir bilgim yok.
Aşağıda ki kodda pic in yapmasını istediğim
10cm den yakınsa cisim led sönsün portb.b0=0, 10cm den uzaksa led yansın portb.b0=1, yardımcı olursanız çok sevinirim.




unsigned int distance,time;
sbit trig at RA0_bit;
sbit ECHO at RA1_bit;

void main() {
TRISB = 0;
TRISA =0xff;
porta=0;
portb=0;

T1CON = 0b10000001;

while(1){
trig=1;
delay_us(15);
trig=0;
while(!(ECHO) ){
TMR1L = 0;
TMR1H = 0;
}
while(ECHO){
time = TMR1H;
time = time <=10){
portb.b0=1;
}
else if(distance<=9){
portb.b0=0;
}

delay_ms(100);

}
}

Mr.Java

extern sfr Distance_Sensor_SignalPin;
extern sfr Distance_Sensor_SignalPin_Direction;


void __Init_Distance_Sensor__()
{
 Distance_Sensor_SignalPin_Direction=1;
}

unsigned int __Read_Distance__()
{
unsigned int Timer;
Timer=0;
Distance_Sensor_SignalPin_Direction=0;
Distance_Sensor_SignalPin=0;
delay_us(5);
Distance_Sensor_SignalPin=1;
delay_us(10);
Distance_Sensor_SignalPin=0;
Distance_Sensor_SignalPin_Direction=1;
while(!Distance_Sensor_SignalPin);
while(Distance_Sensor_SignalPin)Timer++;
delay_ms(50);
return Timer;

void main(void)
{}
}

valaa6

Üstadım Allah razı olsun paylaşım için; ama özür dileyerek soracağım; main içersine kendi paylaştığım kodu mu yazacağım? Bu şekilde denedim hata veriyor, anlayamadım.

Mr.Java

Bu senin ultrasonicten veri okuman için kullanacağın fonksiyon.Void main içerisinde çağırıp kullanacaksın artık ne yapmak istiyorsan lcd fonksiyonu yazip void main içerisinde nasıl lcd_init(); diyorsan bunda da void main ana program döngüsünde __Read_Distance__() diyip yapmak istediğini yapacaksın.