コンピュータ  システムを  作つくっちゃおう!

1. スピーカーで  メロディを  作つくる  スケッチ

 

// 音おとの  長ながさを  300ミリ秒びょうに  設定せってい  します。

#define DURATION 300

// スピーカーの  ピンを  デジタル  10番ばんと  します。

#define SPEAKER_PIN 10

// プログラムには  関数かんすうと  いう  命令めいれいの  まとまりが  あります。  中ちゅうカッコで  区切くぎられて  います。

// setup()と  いう  関数かんすうは  最初さいしょに  実行じっこう  されます。  しかし  今回こんかいは  何なにも  書かきません。

void setup() {

// 中身なかみは  カラです。

}

// loop()と  いう  関数かんすうは  無限むげんに  繰くり返かえされます。

void loop() {

  // ドの  周波数しゅうはすうを  300ミリ秒びょう  鳴ならします。  delayと  いう  命令めいれいで  次つぎの  命令めいれいまで  待まちます。

  tone(SPEAKER_PIN,262,DURATION); delay(DURATION);

  // レ

  tone(SPEAKER_PIN,294,DURATION); delay(DURATION);

  // ミ

  tone(SPEAKER_PIN,330,DURATION); delay(DURATION);

  // ファ

  tone(SPEAKER_PIN,349,DURATION); delay(DURATION);

  // ソ

  tone(SPEAKER_PIN,392,DURATION); delay(DURATION);

  // ラ

  tone(SPEAKER_PIN,440,DURATION); delay(DURATION);

  // シ

  tone(SPEAKER_PIN,494,DURATION); delay(DURATION);

  // ド

  tone(SPEAKER_PIN,523,DURATION);

  // 3秒びょう  待まつ

  delay(3000);

}

  

2. 可変かへん  抵抗器ていこうきで  周波数しゅうはすうを  変かえる  スケッチ

 

//音おとの  長ながさを  定義ていぎ  します。

#define DURATION 50

// スピーカーの  ピンを  デジタル  10番ばんと  します。

#define SPEAKER_PIN 10

// 可か変へん  抵抗ていこうから  取得しゅとく  する  ピンを  アナログ  0番ばんと  します。

#define RESISTOR_PIN A0

// 可か変へん  抵抗ていこう器きからの  値あたいを  入いれる  変数へんすう  sensorValueを  宣言せんげん  して  初期化しょきか  します。

int sensorValue = 0;

 

void setup() {

  // 今回こんかいも  何なにも  書かきません。

}

 

void loop() {

  //analogRead  命令めいれいで  アナログ  0番ばんから  値あたいを  読よみ込こんで、  sensorValueに  代入だいにゅう  します。

  sensorValue = analogRead(RESISTOR_PIN);  

  //sensorValueの  周波数しゅうはすうの  音おとを  50ミリ秒びょう  鳴ならします。

  tone(SPEAKER_PIN, sensorValue, DURATION); delay(DURATION);

}

  

3. サーボ  モーターを  動うごかす  スケッチ

 

// サーボを  使つかう  ための  ヘッダ  ファイル  (宣言せんげん  ファイル)を  読よみ込こみます。

#include <Servo.h>

// サーボ  オブジェクトを  作つくります。

Servo myservo;

// サーボ  モーターの  角度かくどを  記憶きおく  して  おく  変数へんすう  posを  宣言せんげん  して  ゼロで  初期化しょきか

int pos = 0;

void setup() {

  // 0番ばん  ピンを  サーボ  モーターと  関連かんれんづけます。

  myservo.attach(0);

}

void loop() {

  // 指定してい  回数かいすう  まわす  forループです。  posの  中身なかみは  0から  180まで  1ずつ  増ふえます。

  for(pos = 0; pos <= 180; pos += 1){

    // サーボを  posの  角度かくどに  変更へんこう  して  10ミリ秒びょう  待まちます。

    myservo.write(pos); delay(10);

  }

  // 1秒びょう  待まちます。

  delay(1000);

  // 次つぎに  また  forループで  posの  値あたいを  180から  0まで  減へらします。

  for(pos = 180; pos >= 0; pos -= 1){ 

    myservo.write(pos); delay(10);

  }

  // 1秒びょう  待まちます。

  delay(1000);

}

  

4. 可変かへん  抵抗器ていこうきで  サーボを  動うごかす  スケッチ  その1

 

// サーボを  使つかう  ための  ヘッダ  ファイル  (宣言せんげん  ファイル)を  読よみ込こみます。

#include <Servo.h>

// 可か変へん  抵抗ていこうから  取得しゅとく  する  ピンを  アナログ  0番ばんと  します。

#define RESISTOR_PIN A0

// サーボ  オブジェクトを  作つくります。

Servo myservo;

// 可か変へん  抵抗ていこう器きからの  値あたいを  入いれる  変数へんすう  sensorValueを  宣言せんげん  して  初期化しょきか  します。

int sensorValue = 0;

void setup() {

  // 0番ばん  ピンを  サーボ  モーターと  関連かんれんづけます。

  myservo.attach(0);

}

 

void loop() {

  // analogRead  命令めいれいで  アナログ  0番ばんから  値あたいを  読よみ込こんで、  sensorValueに  代入だいにゅう  します。

  sensorValue = analogRead(RESISTOR_PIN);

  // 0-1023を  0-180に  変換へんかん  します。

  sensorValue = map(sensorValue, 0, 1023, 0, 180);

  // サーボを  posの  角度かくどまで  動うごかして  10ミリ秒びょう  待まちます。

  myservo.write(sensorValue); delay(10);

}

  

5. 可変かへん  抵抗器ていこうきで  サーボを  動うごかす  スケッチ  その2

 

// サーボを  使つかう  ための  ヘッダ  ファイル  (宣言せんげん  ファイル)を  読よみ込こみます。

#include <Servo.h>

// 可か変へん  抵抗ていこうから  取得しゅとく  する  ピンを  アナログ  0番ばんと  します。

#define RESISTOR_PIN A0

// サーボ  オブジェクトを  作つくります。

Servo myservo;

// 可か変へん  抵抗ていこう器きからの  値あたいを  入いれる  変数へんすう  sensorValueを  宣言せんげん  して  初期化しょきか  します。

int sensorValue = 0;

void setup() {

  // 0番ばん  ピンを  サーボ  モーターと  関連かんれんづけます。

  myservo.attach(0);

}

 

void loop() {

  sensorValue = analogRead(RESISTOR_PIN);

  if(sensorValue > 500){

    myservo.write(100);

    delay(10);

  }else{

    myservo.write(0);

    delay(10);

  }

}

  

6. 超音波ちょうおんぱ  距離計きょりけいを  使つかう  スケッチ

 

// 音おとの  長ながさ、  スピーカーピン、  トリガーピン、  エコーピンの  ナンバーを  宣言せんげん  します。

#define DURATION 100

#define BEEP_PIN 10

#define TRIG_PIN 2

#define ECHO_PIN 8

// intervalと  distanceを  宣言せんげん  します。

int interval = 0;

double distance = 0;

 

void setup() {

  // 入出力にゅうしゅつりょくの  方向ほうこうを  決きめて  シリアル  ポートを  開ひらきます。

  // 2番ばんが  出力しゅつりょく、  8番ばんが  入力にゅうりょくです。

  pinMode( 2, OUTPUT );

  pinMode( 8, INPUT );

  // Serial.begin( 9600 ); //PCと  通信つうしん  する  場合ばあい  シリアル  ポートを  開ひらきます。

}

 

void loop() {

  // 10マイクロ秒びょう  以上いじょうの  パルスを  送おくります。  HIGH、  LOWを  順番じゅんばんに  指示しじ  します。

  digitalWrite( TRIG_PIN, HIGH );

  delayMicroseconds( 100 );

  digitalWrite( TRIG_PIN, LOW );

  // pulseIn()で  ECHOピンの  HIGHで  ある  状態じょうたいが  どれくらい  長ながいのか  検出けんしゅつ  します。

  interval = pulseIn( ECHO_PIN, HIGH );

  // intervalの  値あたいから  センチメートルに  変換へんかん  します。

  distance = interval * 0.017;

  // 音おん階かいで  出力しゅつりょく  します。

  tone(BEEP_PIN, interval/10, DURATION); delay(DURATION);

  // PCで  状態じょうたいを  得える  場合ばあい  シリアル  通信つうしんを  します  (Ctrl+Shift+M)

  //Serial.print( interval, DEC );

  //Serial.print( "¥t" );

  //Serial.print( distance, 4 );

  //Serial.print( "¥n" );

}