2013年3月7日木曜日

コンビニチャイムをつくる(1)


こんにちは。

前回までは教科書の内容に基づいた、いわば基本編でしたが、今回からは応用編ということで、複数のパーツを組み合わせた作例を紹介していきます。

初回は人が近づいたら反応して音をならしてあいさつの言葉を表示する「コンビニチャイム」を作ります。今回は音をならして文字を表示する部分まで作っていきます。

使うものは
・圧電ブザー
・LCD
・赤外線センサ
ですが、まずは圧電ブザーで音楽をならす部分から作っていきます。

始めにブレッドボードの10列目とArduinoのGND(マイナス)ピン、ブレッドボードの13列目とArduinoの13番ピンをそれぞれつなぎます。そのあと圧電ブザーの足をブレッドボードの10列目と13列目(向きは関係ないです)に挿します。




まずは基本となるプログラムを書きます。
IDEの「スケッチ」→「ファイルを追加」からUSBメモリに入っている「pitches」、「kana」と言う名前のファイルを追加しておいてください。


#include"pitches.h"


int tempo=90;
int rhythm=0;

void setup() {
}

int melody[]={
  _FAS1, _RE1, _RA, _RE1, _MI1, _RA1, _RA,
  _MI1, _FAS1, _MI1,_RA,_RE1,0
};
int beat[]={
  8,8,8,8,8,4,8,
  8,8,8,8,4,4
};
void loop() {
  
  int siz=sizeof(melody)/2;
  for(int i=0;i<siz;i++){
    rhythm=6000/tempo*10*4;
    tone(13,melody[i]);
    delay(rhythm/beat[i]-10);
    noTone(13);
    delay(10);
  }
  
}

これは教科書32ページのプログラムから、赤い部分だけ変えたものです。
書き込んでみると、チャイムの音がすると思います。

続いてLCDと接続します。LCDの左端のピンを15列目に挿します。
左端のピンからArduinoの2番、3番、4番、5番につなぎ、4列開けて(次は23列目から)10番、11番、12番にそれぞれつなげます。

その後ブレッドボードの下の赤いラインとArduinoの5V(プラス)ピン、青いラインとArduinoのGND(マイナス)ピンをそれぞれつなげます。

さらに可変抵抗を用意して、真ん中の足を47列目に挿します。赤い硬いジャンパワイヤを使ってLCDの右から5番目のピンが刺さっている26列目とつなげましょう。

最後に柔らかいジャンパワイヤを使って可変抵抗の右足と赤いライン、左足と青いライン、LCDの右から4番目(27列目)と赤いライン、右から3番目(28列目)と青いラインをつなげばひとまず終わりです。

さらにプログラムを書きかえていきましょう。

#include <LiquidCrystal.h>
#include "kana.h"

#include"pitches.h"

int tempo=90;
int rhythm=0;

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

char text[]={
  _i,_ra,_ltu,_si,_lya,_i,_ma,_se,'\0'};


void setup() {
  lcd.begin(16,2);
}

int melody[]={
  _FAS1, _RE1, _RA, _RE1, _MI1, _RA1, _RA,
  _MI1, _FAS1, _MI1,_RA,_RE1,0
};
int beat[]={
  8,8,8,8,8,4,8,
  8,8,8,8,4,4
};

void loop() {
  lcd.clear();
  lcd.setCursor(0,0);

  lcd.print(text);

  int siz=sizeof(melody)/2;
  for(int i=0;i<siz;i++){
    rhythm=6000/tempo*10*4;
    tone(13,melody[i]);
    delay(rhythm/beat[i]-10);
    noTone(13);
    delay(10);
  }
  
delay(1000);

}

赤字部分が新しいところです。LCDに文字を表示するために必要な部分を追加しました。うまくいけば写真のように表示されるはずです。

今回はここまでです。次回コンビニチャイムを完成させます。

0 件のコメント:

コメントを投稿