チーム1611

ディスプレイに音名を表示する電子ピアノ

研究者名

2-15-24 Masanari Sawai
2-15-25 Yusuke Shikanai

概要

キーボードのAからLまでのキーを使いスピーカーからドレミファソラシドの音を出すことができる。
出力した音の名前がPSoC基盤のLCD画面と、シリアル通信を通じてパソコンのTeraTerm画面に表示される。

使用器具

PSoC基盤 1個
スピーカー 1個
ジャンパー線 2本
MiniProg 1個
ストレート通信ケーブル 1本

仕様

PWM16_1、Counter8、UARTモジュールを以下の図1のように配置する。

図1 モジュールの配置
piano.png

以下の図2ように、PSoC基盤に、スピーカー、ジャンパー線 、MiniProg、ストレート通信ケーブルを用いて配線をする。
図1より、TxとP01を、RxとP07を、スピーカーをP00とGNDにつなげる。

図2 配線
1611kiban.jpg

プログラムソース

#include <m8c.h>
#include "PSoCAPI.h"
int PW=125;
int SILENT=0,D=229,L=204,M=182,F=172,S=153,R=136,C=121,DD=115;
int i=0;


void main(void){
char *strPtr;
  UART_CmdReset();
  UART_IntCntl(UART_ENABLE_RX_INT);
  Counter8_WritePeriod(155);
  Counter8_WriteCompareValue(77);
  Counter8_Start();
  UART_Start(UART_PARITY_NONE);
  M8C_EnableGInt;
  PWM16_1_Start();
  LCD_Start();
  UART_CPutString("\r\nWelcome to piano \r\n");
  PWM16_1_WritePulseWidth(PW);
  while(1)
  {
      if(UART_bCmdCheck()) {
      if(strPtr = UART_szGetParam()) {
   UART_CPutString("Found valid command\r\nCommand =>");
   UART_PutString(strPtr);
   UART_CPutString("<\r\nParamaters:\r\n");   
      if(*strPtr == 'a'){
          PWM16_1_WritePeriod(D);
          LCD_Position(0,5);
          LCD_PrCString("D     ");
          UART_CPutString("\r\n低いド\r\n");
          
      }
      else if(*strPtr == 's'){
          PWM16_1_WritePeriod(L);
          LCD_Position(0,5);
          LCD_PrCString("L     ");
          UART_CPutString("\r\nレ\r\n");
      }
      else if(*strPtr == 'd'){
          PWM16_1_WritePeriod(M);
          LCD_Position(0,5);
          LCD_PrCString("M     ");
          UART_CPutString("\r\nミ\r\n");
      }
      else if(*strPtr == 'f'){
          PWM16_1_WritePeriod(F);
          LCD_Position(0,5);
          LCD_PrCString("F     ");
          UART_CPutString("\r\nファ\r\n");
      }
      else if(*strPtr == 'g'){
          PWM16_1_WritePeriod(S);
          LCD_Position(0,5);
          LCD_PrCString("S     ");
          UART_CPutString("\r\nソ\r\n");
      }
      else if(*strPtr == 'h'){
          PWM16_1_WritePeriod(R);
          LCD_Position(0,5);
          LCD_PrCString("R     ");
          UART_CPutString("\r\nラ\r\n");
      }
      else if(*strPtr == 'j'){
          PWM16_1_WritePeriod(C);
          LCD_Position(0,5);
          LCD_PrCString("C     ");
          UART_CPutString("\r\nシ\r\n");
      }
      else if(*strPtr == 'k'){
          PWM16_1_WritePeriod(DD);
          LCD_Position(0,5);
          LCD_PrCString("DD    ");
          UART_CPutString("\r\n高いド\r\n");
      }
      else if(*strPtr == 'l'){
          PWM16_1_WritePeriod(SILENT);
          LCD_Position(0,5);
          LCD_PrCString("SILENT      ");
       }
   UART_CmdReset();}
}
}
}

考察

今回作成した音階表示式電子ピアノはハードウェア割り込みを使ったPWMでの音階の発生、シリアルポートを使っての通信、LCDディスプレーへの表示の3つの技術を統合したものである。
今回LCDに音階を表示した目的は、予想した音が出ているかの確認の意味も兼ねていて作品が正常に動作したことを確認できた。
向上できる点としては、キーの数を増やしより多彩な音を表現することや、LCDディスプレイ上に音階以外のより多くの明確な情報を表示させることによって、指揮者の役割を担う機能を開発し導入するなどが想像される。

  • 最終更新:2016-05-17 16:38:35

このWIKIを編集するにはパスワード入力が必要です

認証パスワード