注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ ここ]をクリックして今すぐ参加しましょう!
サーボ
概要
このレッスンでは、Arduinoとサーボモーターの使用について学びます。Arduino UnoとSG90サーボモーターに焦点を当て、Arduinoをプログラミングしてサーボのスイープ動作を制御する方法を学びます。この技術は、ロボティクスや自動システムなど、さまざまな用途で重要です。
必要なコンポーネント
このプロジェクトには、以下のコンポーネントが必要です。
全セットを購入するのが便利です。こちらがリンクです:
名称 |
このキットのアイテム数 |
リンク |
|---|---|---|
Elite Explorer Kit |
300+ |
以下のリンクから個別に購入することもできます。
コンポーネント紹介 |
購入リンク |
|---|---|
- |
|
配線図
回路図
コード
注釈
ファイル
27-servo.inoをelite-explorer-kit-main\basic_project\27-servoで直接開くことができます。または、このコードをArduino IDEにコピーしてください。
1/*
2 This code snippet is used to control a servo motor to scan from 0 to 180 degrees
3 and then back from 180 to 0 degrees repeatedly.
4
5 Board: Arduino Uno R4 (or R3)
6 Component: Servo motor(SG90)
7*/
8
9#include <Servo.h>
10
11const int servoPin = 9; // Define the servo pin
12int angle = 0; // Initialize the angle variable to 0 degrees
13Servo servo; // Create a servo object
14
15void setup() {
16 servo.attach(servoPin);
17}
18
19void loop() {
20 // scan from 0 to 180 degrees
21 for (angle = 0; angle < 180; angle+=10) {
22 servo.write(angle);
23 delay(50);
24 }
25 // now scan back from 180 to 0 degrees
26 for (angle = 180; angle > 0; angle-=10) {
27 servo.write(angle);
28 delay(50);
29 }
30}
コード解析
ここでは、サーボモーターを簡単に制御するための
Servoライブラリが含まれています。サーボに接続されたピンとサーボの初期角度も定義されています。#include <Servo.h> const int servoPin = 9; // Define the servo pin int angle = 0; // Initialize the angle variable to 0 degrees Servo servo; // Create a servo object
setup()関数はArduinoが起動するときに一度実行されます。attach()関数を使用して、定義されたピンにサーボを接続します。void setup() { servo.attach(servoPin); }
メインループには2つの
forループがあります。最初のループは角度を0度から180度に増加させ、2番目のループは角度を180度から0度に減少させます。servo.write(angle)コマンドは、指定された角度にサーボを設定します。delay(15)により、サーボは次の角度に移動する前に15ミリ秒待機し、スキャン動作の速度を制御します。void loop() { // scan from 0 to 180 degrees for (angle = 0; angle < 180; angle++) { servo.write(angle); delay(15); } // now scan back from 180 to 0 degrees for (angle = 180; angle > 0; angle--) { servo.write(angle); delay(15); } }