Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Array_Matrix F446_AD_DA ST7565_SPI_LCD TextLCD UIT_FFT_Real
Fork of F446_MySoundMachine by
SignalProcessing/MyFunctions.hpp@5:503bd366fd73, 2017-01-31 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Jan 31 12:52:35 2017 +0000
- Revision:
- 5:503bd366fd73
- Parent:
- 3:e223a1b4e8c2
6
Who changed what in which revision?
User | Revision | Line number | New 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 | } |