Arduino編 9-1-2 Arduinoの準備作業

ここではArduinoに必要な準備作業について記載します


スピーカーをハンダ付けする

(1) スピーカーと、オーディオアンプと、3.5mmミニプラグをハンダ付けして、スピーカー作成します

完成図

スピーカーのはんだ付け完成図

表面

スピーカーのはんだ付け表面

裏面

スピーカーのはんだ付け裏面

ページトップ

サーボモーターライブラリ(VarSpeedServo)を追加する

VarSpeedServoは、サーボモーターの速度調整をする為に必要なライブラリになります

(1) サーボモーターライブラリ(VarSpeedServo)をGitHubからダウンロードします

    https://github.com/netlabtoolkit/VarSpeedServo

(2) Arduino IDEを起動します

Arduino起動画面

(3) スケッチ → ライブラリをインクルード → .ZIP形式のライブラリをインストールの順に選択します

VarSpeedServoのインストール手順1

(4) ウィンドウが開くので、ZIPファイルを選択して開きます

VarSpeedServoのインストール手順2

ページトップ

Arduinoのソースコードをボードに書き込む

(1) Arduino IDEを起動して、下記のソースコードをボードに書き込みます

danboard_control.ino

// サーボモーターのライブラリ読込
#include <VarSpeedServo.h>
    
// フルカラーLED
# define LED_PIN_LED 9 // 赤LED
# define LED_PIN_BLUE 10 // 青LED
# define LED_PIN_GREEN 11 // 緑LED    

// サーボモーター
# define H_SERVO 5 // 頭サーボ
# define L_SERVO 3 // 左腕サーボ
# define R_SERVO 6 // 右腕サーボ    
    
VarSpeedServo head_servo;
VarSpeedServo left_arm_servo;
VarSpeedServo right_arm_servo;    
    
// シリアル通信での値を受け取る変数    
byte val;    
    
void setup() {    
    // シリアル設定    
    Serial.begin(9600);    

    // LEDのピン設定    
    pinMode(LED_PIN_LED, OUTPUT);
    pinMode(LED_PIN_BLUE, OUTPUT);
    pinMode(LED_PIN_GREEN, OUTPUT);    

    // LEDの初期状態設定    
    digitalWrite(LED_PIN_LED, LOW);
    digitalWrite(LED_PIN_BLUE, HIGH);
    digitalWrite(LED_PIN_GREEN, LOW);    

    // サーボモーターの設定    
    head_servo.attach(H_SERVO);
    left_arm_servo.attach(L_SERVO);
    right_arm_servo.attach(R_SERVO);    

    // サーボモーターの初期角度    
    head_servo.write(7);
    left_arm_servo.write(80, 15, true);
    right_arm_servo.write(90, 15, true);    
}    
    
void loop() {    
    if (Serial.available() > 0) {
        val = Serial.read();
        Serial.write(val);    

        // エラー発生時
        if (val == 'R') {
            // 目を赤色
            digitalWrite(LED_PIN_LED, HIGH);
            digitalWrite(LED_PIN_BLUE, LOW);
            digitalWrite(LED_PIN_GREEN, LOW);
        }    

        // 初期状態の目の色に戻す
        if (val == 'B') {
            // 目を青色
            digitalWrite(LED_PIN_LED, LOW);
            digitalWrite(LED_PIN_BLUE, HIGH);
            digitalWrite(LED_PIN_GREEN, LOW);
        }    

        // 音声受付時
        if (val == 'G') {
            // 目を緑色
            digitalWrite(LED_PIN_LED, LOW);
            digitalWrite(LED_PIN_BLUE, LOW);
            digitalWrite(LED_PIN_GREEN, HIGH);
        }    

        // 発話時の目の点滅
        if (val == 'A') {
            // 目を赤青緑に点滅
            digitalWrite(LED_PIN_LED, HIGH);
            digitalWrite(LED_PIN_BLUE, LOW);
            digitalWrite(LED_PIN_GREEN, LOW);
            delay(300);
            digitalWrite(LED_PIN_LED, LOW);
            digitalWrite(LED_PIN_BLUE, HIGH);
            digitalWrite(LED_PIN_GREEN, LOW);
            delay(300);
            digitalWrite(LED_PIN_LED, LOW);
            digitalWrite(LED_PIN_BLUE, LOW);
            digitalWrite(LED_PIN_GREEN, HIGH);
        }    

        // 会話を始める時にマイクの位置を調整
        if (val == 'S') {
            // サーボの角度を180度、スピードを15に設定
            left_arm_servo.write(180, 15, true);
            delay(10);
        }    

        // 会話終了時の処理
        if (val == 'E') {
            // サーボの角度を初期値に設定
            head_servo.write(7);
            left_arm_servo.write(80, 15, true);
            right_arm_servo.write(90, 15, true);
            delay(10);
        }
    }
}

※ サーボモーターの初期値については調整してください

ページトップ