KURUMIでキーボードピアノ(toneのお試し)

キーボードと圧電スピーカーとKURUMIでできる、ピアノ作りました。TeraTermを立ち上げてテンキーで演奏できます。ドレミに合わせてKURUMIも光ります。

スケッチを書きこむときは、Kurumi Writerの以下の赤枠部分にチェックを入れてください。

例えばターミナルソフトでTeraTermを使っている場合、TeraTerm起動後にポート指定するとプログラムが実行されるようになります。逆にポート指定前はプログラムは走りません。

以下、そのままコピービルドで動きます。

#include <RLduino78.h>
#define BLACK 0
#define RED 1
#define GREEN 2
#define YELLOW 3
#define BLUE 4
#define PINK 5
#define SKY 6
#define WHITE 7

#define PIN_BZ 2

#define LED_R 22
#define LED_G 23
#define LED_B 24

int melody[131952358765969878488098810471175};
void ledKurumi(int);

void setup()
{                
    Serial.begin(9600);
    pinMode(LED_R OUTPUT)//LED RED
    pinMode(LED_G OUTPUT)//LED GREEN
    pinMode(LED_B OUTPUT)//LED BLUE

    //DO RE MI
    tone(PIN_BZmelody[1]);
    delay(200);
    tone(PIN_BZmelody[2]);
    delay(200);
    tone(PIN_BZmelody[3]);
    delay(200);
    noTone(PIN_BZ);
}

void loop()
{
    int iNum;

    noTone(PIN_BZ);
    ledKurumi(BLACK);
    while(!Serial.available());
    char cNum Serial.read();
    Serial.println(cNum);
    if (cNum '0'|| (cNum '9'){  //from char to int (0-9)
        iNum 0//illegal
    }else{
        iNum (int)cNum '0' );
    }
    
    ledKurumi(iNum);
    tone(PIN_BZmelody[iNum]);
    delay(200);

}

void ledKurumi(int color)
{
    switch(color){
        case BLACK:
            digitalWrite(LED_RHIGH);
            digitalWrite(LED_GHIGH);
            digitalWrite(LED_BHIGH);
            break;
        case RED:
            digitalWrite(LED_RLOW);
            digitalWrite(LED_GHIGH);
            digitalWrite(LED_BHIGH);
            break;
        case GREEN:
            digitalWrite(LED_RHIGH);
            digitalWrite(LED_GLOW);
            digitalWrite(LED_BHIGH);
            break;
        case YELLOW:
            digitalWrite(LED_RLOW);
            digitalWrite(LED_GLOW);
            digitalWrite(LED_BHIGH);
            break;
        case BLUE:
            digitalWrite(LED_RHIGH);
            digitalWrite(LED_GHIGH);
            digitalWrite(LED_BLOW);
            break;
        case PINK:
            digitalWrite(LED_RLOW);
            digitalWrite(LED_GHIGH);
            digitalWrite(LED_BLOW);
            break;
        case SKY:
            digitalWrite(LED_RHIGH);
            digitalWrite(LED_GLOW);
            digitalWrite(LED_BLOW);
            break;
        case WHITE:
            digitalWrite(LED_RLOW);
            digitalWrite(LED_GLOW);
            digitalWrite(LED_BLOW);
            break;
        case 8:
            digitalWrite(LED_RLOW);
            digitalWrite(LED_GHIGH);
            digitalWrite(LED_BHIGH);
            break;
        case 9:
            digitalWrite(LED_RHIGH);
            digitalWrite(LED_GLOW);
            digitalWrite(LED_BHIGH);
            break;
    default:
            digitalWrite(LED_RHIGH);
            digitalWrite(LED_GHIGH);
            digitalWrite(LED_BHIGH);
            break;
    }
}

  • そんな注意すべきポイントが・・・ ’<<’には注意ですね。(全角です) そんなに使う機会はありませんが、すこしあせりました。