Наконец-то пришла посылочка с дальномером Sharp
Буду изучать как с ним работать. Судя по примеру:
Code
#include <mega32.h>
#include <delay.h>
#define new_adc ADCSRA=0b11001110;
double adc_result;
unsigned int adc_data;
interrupt [ADC_INT] void adc_isr(void)
{
adc_data=ADCW;
}
double distance(void)
{
new_adc
return ((adc_data*2.56)/1024);
}
void forward()
{
if(PINB!=0b00000101)
PORTB = 0b00000101;
}
void backward()
{
if(PINB!=0b00001010)
PORTB =0b00001010;
}
void right()
{
if(PINB!=0b00000110)
PORTB=0b00000110;
}
void left()
{
if(PINB!=0b00001001)
PORTB = 0b00001001;
}
void stop()
{
PORTB = 0x00;
}
void main (void)
{
ADMUX=0b11000001;
ADCSRA=0b10001110;
while(1)
{
forward();
if(distance() >1.7) //если напряжение на дальномере больше 1.7 вольт (~30см)
{
backward(); //едем назад
delay_ms(500);
right(); //поворачиваем направо
delay_ms(500);
}
}
}
Краткие вопросы:
1. ADCSRA=0b11001110; // -это тот порт, точнее номер его ножки, к которому подключен дальномер ?
2. ADMUX=0b11000001; // -это ... ?
3. ADCSRA=0b10001110; // -это ... ?
4. Что есть запись 2.56/1024... 2.56 - макс вольтаж ?, 1024 - ... ?
Судя по моему дальномеру, а у меня Sharp GP2Y0A21YK0F:
Схема расчета замеров напряжения исходя из расстояния
Следовательно при расстоянии 5 см мы будим иметь максимальное выходное напряжение в 3,.. вольта. При 80 см это будет 0.5 вольт и меньше, все зависит от качества качества отраженного сигнала.
Добавлено (24.09.2010, 01:09)
---------------------------------------------
А, понял, 2.56-это ионистр, 1024-биты ?