Tutorial
5.1. アクチュエータを動かす

5.1. アクチュエータを動かす

概要

ソースコード

tutorial_servo.ino
#include <CanSatSchool.h>
 
// サーボモーターの入力ピンを指定
#define PIN_SERVO 4
 
// サーボモーターを宣言
ServoMotor servo{PIN_SERVO};
 
void setup()
{
    // ロガーを初期化
    logger.enableComputer();
    // logger.setDebug();  // デバッグ出力を有効にする
 
    // サーボモーターを初期化
    servo.init();
 
    delay(500);
}
 
void loop()
{
    static uint16_t loop_count = 0;
    logger.debug(F("Loop count:"), loop_count);
 
    // カウンターが 10 の倍数のとき
    if (loop_count % 10 == 0) {
        logger.info(F("Move Up!"));
        // 1度から180度まで 30度ずつ回転
        for (uint8_t angle = 0; angle <= 180; angle += 30) {
            // サーボモーターを指定した角度に回転
            servo.rotateTo(angle);  // 0度のときは1度になる
            delay(100);
            // サーボモーターの角度を取得してシリアルモニタに表示
            logger.info(F("Angle:"), servo.read(), F("[deg]"));
            delay(500);
        }
    }
 
    // カウンターが 10 の倍数 + 5 のとき
    if (loop_count % 10 == 5) {
        logger.info(F("Move Down!"));
        // 180度から1度まで 1度ずつ回転
        for (uint8_t angle = 180; angle > 0; --angle) {
            // サーボモーターを指定した角度に回転
            servo.rotateTo(angle);
            // サーボモーターの角度を取得してシリアルモニタに表示
            logger.debug(F("Angle:"), servo.read(), F("[deg]"));
            delay(10);
        }
    }
 
    // カウンターをインクリメント
    ++loop_count;
 
    // 1s 待つ
    delay(1000);
}
 

GitHub (opens in a new tab)