I2C / 静電容量式近接 & タッチセンサーAdafruit MPR121 / ベースラインフィルターの設定

pp.614ff.

あと残っているのはベースラインフィルターのパラメーターだけである。アプリケーションノートAN3891を読んで意味はわかったが、具体的にいくつに設定すればよいのかわからない。わかったのは、FDLについてはfalling時を相対的に遅く(値を大きく)、rising時を相対的に速く(値を小さく)設定することくらいである。ここでは適当に設定してみる。

f:id:ti-nspire:20200903092426p:plain:w600

    // ベースラインフィルターの各種パラメーターを設定して端末に表示する。
    pad.set_mhd_r(10); // rising時のMHDを設定する。値の範囲は1~63。
    pad.set_nhd_r(5); // rising時のNHDを設定する。値の範囲は1~63。
    pad.set_ncl_r(10); // rising時のNCLを設定する。値の範囲は0~255。
    pad.set_fdl_r(0); // rising時のFDLを設定する。値の範囲は0~255。
        
    pad.set_mhd_f(15); // falling時のMHDを設定する。値の範囲は1~63。
    pad.set_nhd_f(5); // falling時のNHDを設定する。値の範囲は1~63。
    pad.set_ncl_f(10); // falling時のNCLを設定する。値の範囲は0~255。
    pad.set_fdl_f(200); // falling時のFDLを設定する。値の範囲は0~255。
        
    pad.set_nhd_t(1); // touched時のNHDを設定する。値の範囲は1~63。
    pad.set_ncl_t(1); // touched時のNCLを設定する。値の範囲は0~255。
    pad.set_fdl_t(2); // touched時のFDLを設定する。値の範囲は0~255。
    
    uint8_t buff[11];
    print_touch_filter_parameters(buff);
void MPR121Class::get_touch_filter_parameters(uint8_t*buff){i2c.read(_SLA, MHD_RISING     , 11, buff);}
void MPR121Class::get_prox_filter_parameters (uint8_t*buff){i2c.read(_SLA, PROX_MHD_RISING, 11, buff);}

void MPR121Class::set_mhd_r(uint8_t val){i2c.write(_SLA, MHD_RISING, val);}
void MPR121Class::set_nhd_r(uint8_t val){i2c.write(_SLA, MHD_RISING + 1, val);}
void MPR121Class::set_ncl_r(uint8_t val){i2c.write(_SLA, MHD_RISING + 2, val);}
void MPR121Class::set_fdl_r(uint8_t val){i2c.write(_SLA, MHD_RISING + 3, val);}

void MPR121Class::set_mhd_f(uint8_t val){i2c.write(_SLA, MHD_RISING + 4, val);}
void MPR121Class::set_nhd_f(uint8_t val){i2c.write(_SLA, MHD_RISING + 5, val);}
void MPR121Class::set_ncl_f(uint8_t val){i2c.write(_SLA, MHD_RISING + 6, val);}
void MPR121Class::set_fdl_f(uint8_t val){i2c.write(_SLA, MHD_RISING + 7, val);}
    
void MPR121Class::set_nhd_t(uint8_t val){i2c.write(_SLA, MHD_RISING + 8, val);}
void MPR121Class::set_ncl_t(uint8_t val){i2c.write(_SLA, MHD_RISING + 9, val);}
void MPR121Class::set_fdl_t(uint8_t val){i2c.write(_SLA, MHD_RISING + 10, val);}
    
void MPR121Class::set_mhd_prox_r(uint8_t val){i2c.write(_SLA, PROX_MHD_RISING, val);}
void MPR121Class::set_nhd_prox_r(uint8_t val){i2c.write(_SLA, PROX_MHD_RISING + 1, val);}
void MPR121Class::set_ncl_prox_r(uint8_t val){i2c.write(_SLA, PROX_MHD_RISING + 2, val);}
void MPR121Class::set_fdl_prox_r(uint8_t val){i2c.write(_SLA, PROX_MHD_RISING + 3, val);}

void MPR121Class::set_mhd_prox_f(uint8_t val){i2c.write(_SLA, PROX_MHD_RISING + 4, val);}
void MPR121Class::set_nhd_prox_f(uint8_t val){i2c.write(_SLA, PROX_MHD_RISING + 5, val);}
void MPR121Class::set_ncl_prox_f(uint8_t val){i2c.write(_SLA, PROX_MHD_RISING + 6, val);}
void MPR121Class::set_fdl_prox_f(uint8_t val){i2c.write(_SLA, PROX_MHD_RISING + 7, val);}
    
void MPR121Class::set_nhd_proxr_t(uint8_t val){i2c.write(_SLA, PROX_MHD_RISING + 8, val);}
void MPR121Class::set_ncl_proxr_t(uint8_t val){i2c.write(_SLA, PROX_MHD_RISING + 9, val);}
void MPR121Class::set_fdl_proxr_t(uint8_t val){i2c.write(_SLA, PROX_MHD_RISING + 10, val);}