Kenji Arai / Mbed OS CW_Decoder_using_FFT_on_F446

Dependencies:   Array_Matrix F446_AD_DA ST7565_SPI_LCD TextLCD UIT_FFT_Real

Fork of F446_MySoundMachine by 不韋 呂

Committer:
MikamiUitOpen
Date:
Tue Jan 31 12:52:35 2017 +0000
Revision:
5:503bd366fd73
Parent:
3:e223a1b4e8c2
6

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 3:e223a1b4e8c2 1 //--------------------------------------------------------------------
MikamiUitOpen 3:e223a1b4e8c2 2 // STM32F446 と信号処理用ボードによるデモプログラムで使うグローバル関数
MikamiUitOpen 3:e223a1b4e8c2 3 //
MikamiUitOpen 3:e223a1b4e8c2 4 // 2017/01/30, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 3:e223a1b4e8c2 5 //--------------------------------------------------------------------
MikamiUitOpen 3:e223a1b4e8c2 6
MikamiUitOpen 3:e223a1b4e8c2 7 #include "SignalProcessing.hpp" // 信号処理の抽象基底クラスなど
MikamiUitOpen 3:e223a1b4e8c2 8 #include "AQM1602.hpp"
MikamiUitOpen 3:e223a1b4e8c2 9 using namespace Mikami;
MikamiUitOpen 3:e223a1b4e8c2 10
MikamiUitOpen 3:e223a1b4e8c2 11 extern SignalProcessing *spPtr_; // 処理に対応するポインタ
MikamiUitOpen 3:e223a1b4e8c2 12
MikamiUitOpen 3:e223a1b4e8c2 13 // 機能の割り当てと表示
MikamiUitOpen 3:e223a1b4e8c2 14 void AssignDisplay(SignalProcessing &func, Aqm1602 &lcd,
MikamiUitOpen 3:e223a1b4e8c2 15 char str[], float val = -1)
MikamiUitOpen 3:e223a1b4e8c2 16 {
MikamiUitOpen 3:e223a1b4e8c2 17 spPtr_ = &func; // 機能の割り当て
MikamiUitOpen 3:e223a1b4e8c2 18
MikamiUitOpen 3:e223a1b4e8c2 19 // 表示
MikamiUitOpen 3:e223a1b4e8c2 20 lcd.ClearLine(0);
MikamiUitOpen 3:e223a1b4e8c2 21 lcd.ClearLine(1);
MikamiUitOpen 3:e223a1b4e8c2 22 printf("%s", str);
MikamiUitOpen 3:e223a1b4e8c2 23 lcd.WriteStringXY(str, 0, 0);
MikamiUitOpen 3:e223a1b4e8c2 24
MikamiUitOpen 3:e223a1b4e8c2 25 if (val != -1)
MikamiUitOpen 3:e223a1b4e8c2 26 {
MikamiUitOpen 3:e223a1b4e8c2 27 printf(", %4.0f Hz", val);
MikamiUitOpen 3:e223a1b4e8c2 28 lcd.WriteValueXY("%4.0f Hz", val, 0, 1);
MikamiUitOpen 3:e223a1b4e8c2 29 }
MikamiUitOpen 3:e223a1b4e8c2 30 printf("\r\n");
MikamiUitOpen 3:e223a1b4e8c2 31 }
MikamiUitOpen 3:e223a1b4e8c2 32
MikamiUitOpen 3:e223a1b4e8c2 33 // 周波数変化が基準値より大きい場合に true を返す
MikamiUitOpen 3:e223a1b4e8c2 34 // min <= frq <= max
MikamiUitOpen 3:e223a1b4e8c2 35 // th : 基準値
MikamiUitOpen 3:e223a1b4e8c2 36 bool FrChange(AnalogIn &aIn, float min, float max, float th, float &frq)
MikamiUitOpen 3:e223a1b4e8c2 37 {
MikamiUitOpen 3:e223a1b4e8c2 38 static float frqCurrent = 0;
MikamiUitOpen 3:e223a1b4e8c2 39 frq = (max - min)*aIn.read() + min;
MikamiUitOpen 3:e223a1b4e8c2 40 if (fabs(frq - frqCurrent) > th)
MikamiUitOpen 3:e223a1b4e8c2 41 {
MikamiUitOpen 3:e223a1b4e8c2 42 frqCurrent = frq;
MikamiUitOpen 3:e223a1b4e8c2 43 return true;
MikamiUitOpen 3:e223a1b4e8c2 44 }
MikamiUitOpen 3:e223a1b4e8c2 45 else
MikamiUitOpen 3:e223a1b4e8c2 46 return false;
MikamiUitOpen 3:e223a1b4e8c2 47 }