footstep detector / とりあえずピエゾ素子をAVRにつないでAD変換だけしてみる

Arduino IDEのシリアルプロッターで観測した。

f:id:ti-nspire:20191023092139p:plain:h250

#include <avr/io.h>
#include <util/delay.h>
extern "C"{
    #include "USART.h"
}

void initADC(){
    ADMUX  |= (1 << REFS0);                               // AVCCを基準電圧として使う。
    ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // ADCプリスケーラーを128分周に設定する。
    ADCSRA |= (1 << ADEN);                                // ADCを有効化する。
}

uint16_t readADC(char ch){
    ADMUX  |= (0xF0 & ADMUX) | ch;         // チャンネル選択ビットを全部一旦クリアしてから目的のチャンネルをセットする。
    ADCSRA |= (1 << ADSC);                 // ADCを開始(Start Conversion)する。
    loop_until_bit_is_clear(ADCSRA, ADSC); // ADCの終わるまで待ってから、
    return ADC;                            // 10ビットのADC値を返す。
}

int main(){
    uint16_t adcVal;

    initADC();
    initUSART();

    while(1){
        adcVal = readADC(PC2);
        printWord(adcVal);printString("\r\n");

        //_delay_us(1);
    }
    
    return 0;
}