НАУКА МОЛОДЫХ - page 538

" Н а у к а м о л о д ы х " , 3 0 - 3 1 м а р т а 2 0 1 7 г . , А р з а м а с
П о с в я щ а е т с я 1 0 0 - л е т и ю Р о с т и с л а в а Е в г е н ь е в и ч а А л е к с е е в а
534
long time(int pin, byte mask) {
unsigned long count = 0, total = 0;
while(checkTimer() < refresh) {
pinMode(pin, OUTPUT);
PORTB = 0;
pinMode(pin, INPUT);
while((PINB & mask) == 0)
count++;
total++;
}
startTimer();
return (count << resolution) / total;
}
extern volatile unsigned long timer0_overflow_count;
void startTimer() {
timer0_overflow_count = 0;
TCNT0 = 0;
}
unsigned long checkTimer() {
return ((timer0_overflow_count << 8) + TCNT0) << 2;
}
В окне терминала последовательного порта консоли управления Arduino
выводятся необработанные данные о трехмерных координатах с частотой
около 10 Герц на каждую ось. Обоснование этой частоты следующее: каждый
сенсор опрашивается 2 раза, что при частоте развёртки экрана в 60 Герц по
формуле и дает указанную величину:
Программный код считывает показания сенсоров максимальное
количество раз за период в 2 цикла с целью предотвращения дублирования
результатов. Скриншот самих результатов наглядно демонстрирует рисунок 3.
1...,528,529,530,531,532,533,534,535,536,537 539,540,541,542,543,544,545,546,547,548,...1530
Powered by FlippingBook