Arduino でサーボを接続して制御します。 Windows での Arduino のインストールと構成

2016 年 2 月 12 日 18:00 追記

この記事はArduinoを使い始めるのに役立ち、説明が含まれています さまざまな種類 Arduino 開発環境のダウンロード方法 ソフトウェア Arduino を参照し、Arduino プロジェクトを開発するために必要な、Arduino で使用できるさまざまなボードとアクセサリについて説明します。

Arduino はオープンなシングル ボード コントローラーです。 ソースコード、さまざまなアプリケーションで使用できます。 これは、愛好家、学生、専門家がマイクロコントローラー ベースのプロジェクトを開発するための、おそらく最もシンプルで安価なマイクロコントローラー オプションです。 Arduino ボードは Atmel AVR マイクロコントローラーまたは Atmel ARM マイクロコントローラーのいずれかを使用し、一部のバージョンには USB インターフェイスがあります。 また、センサー、アクチュエータ、およびその他の周辺回路をマイクロコントローラーに接続するために使用される、6 つ以上のアナログ入力ピンと 14 つ以上のデジタル入出力 (I/O) ピンも備えています。 機能のセットに応じて、Arduino ボードの価格は 6 ドルから 40 ドルです。

Arduinoボードの種類

以下のリストに示すように、さまざまな種類の Arduino ボードがあり、それぞれに独自の機能セットがあります。 それらは処理速度、メモリ、I / Oポート、および接続性が異なりますが、機能の主要コンポーネントは変更されていません.

  • Arduinoロボット
  • Arduinoイーサネット

このサイトの「購入」セクションの「」セクションで、さまざまな Arduino ボードとその技術的な説明を見ることができます。

ソフトウェア (IDE)

使用するソフトウェア Arduinoプログラミング、統合開発環境です ArduinoIDE. IDE は、PC、Mac、Linux システムなど、さまざまなプラットフォームで実行される Java アプリケーションです。 プログラミングに慣れていない初心者向けです。 エディター、コンパイラー、ローダーが含まれています。 IDE には、シリアル ポートやさまざまな種類のディスプレイなどの周辺機器を使用するためのコード ライブラリも含まれています。 Arduino 用のプログラムは「スケッチ」と呼ばれ、C や C++ に非常によく似た言語で書かれています。

ほとんどの Arduino ボードは、USB ケーブルを使用してコンピューターに接続します。 この接続により、スケッチを Arduino ボードにアップロードし、ボードに電力を供給することができます。

Arduino用USBケーブル

プログラミング

Arduino のプログラミングは簡単です。最初に IDE のコード エディターを使用してプログラムを作成し、それをコンパイルして、ワンクリックでダウンロードします。

Arduino プログラムには 2 つの主な機能が含まれています。

  • 設定()
  • ループ()

setup() 関数を使用して、ボード設定を初期化できます。 この関数は、ボードの電源がオンになったときに 1 回だけ実行されます。

loop() 関数は setup() 関数が完了した後に実行され、setup() 関数とは異なり、常に実行されます。

プログラム機能

以下は、Arduino をプログラミングする際に最も一般的に使用される関数のリストです。

  • pinMode - ピンを入力モードまたは出力モードに設定します。
  • analogRead - アナログ入力ピンのアナログ電圧を読み取ります。
  • analogWrite - アナログ電圧をアナログ出力ピンに書き込みます。
  • digitalRead - デジタル入力ピンの値を読み取ります。
  • digitalWrite - デジタル出力ピンの値を High または 低レベル;
  • Serial.print - 人間が読める ASCII テキストとしてシリアル ポートにデータを書き込みます。

Arduino ライブラリ

Arduino ライブラリは、デバイスを制御できる機能のコレクションです。 最も広く使用されているライブラリの一部を次に示します。

  • EEPROM - 「永続的」ストレージへの読み取りと書き込み。
  • イーサネット - Arduino イーサネット シールド ボードを使用してインターネットに接続します。
  • Firmata - 標準のシリアル プロトコルを使用してコンピュータ上のアプリケーションと通信します。
  • GSM - GSM ボードを使用して GSM/GRPS ネットワークに接続します。
  • LiquidCrystal - 液晶ディスプレイ (LCD) を制御します。
  • SD - SD カードの読み取りと書き込み用。
  • サーボ - サーボを制御します。
  • SPI - SPI バスを使用してデバイスと通信します。
  • SoftwareSerial - 任意のデジタル ピンを介したシリアル通信用。
  • ステッパー - ステッピングモーターを制御します。
  • TFT - Arduino TFT 画面にテキスト、画像、図形を描画するため。
  • WiFi - Arduino WiFi シールドを使用してインターネットに接続します。
  • ワイヤー - デバイスまたはセンサーのネットワークを介してデータを送受信するための 2 線式インターフェース (TWI/I2C)。

Arduino のセットアップ手順



警告: システムが Arduino を検出しない場合は、ドライバーのインストールが必要になる場合があります。

Arduino拡張ボード

Arduino シールド (Arduino Shields) は、Arduino に接続するボードで、周辺機器、センサー、アクチュエーターを Arduino に接続できるようにします。 以下は、いくつかの一般的な拡張ボードのリストです。

  • GSM シールド;
  • イーサネット シールド;
  • WiFi シールド;
  • モーターシールド;
  • プロトシールド;
  • ジョイスティック シールド;
  • Bluetooth シールド;
  • Xbeシールド。

コンポーネントとアクセサリ

以下は、プロジェクト開発のために Arduino で一般的に使用されるすべての部品とアクセサリのリストです。

  • バッテリー 9V
  • LED
  • ボタン
  • コンデンサ
  • 電圧レギュレータ
  • センサー (IR、温度など)
  • 抵抗器
  • ポテンショメータ
  • エンジン(エンジン 直流、サーボ、BLDC)
  • Arduino拡張ボード

レイアウトに必要なものはすべてサブセクションにあります

このチュートリアルでは、組み込みの LED 点滅を例として使用して、Arduino ボードをプログラムする方法を学習します。

必要なアイテム

この例では、Arduino ボード (この場合は Arduino Uno R3 ですが、利用可能な別のボードを使用してこの例を実行できます) が必要です。 USBケーブル(タイプ A (4x12 mm) - B (7x8 mm) - 詳細は Wiki を参照してください)。

「L」LEDとは



Arduino Uno には、ボードの側面に一連のメス コネクタがあり、電子周辺機器または「シールド」を接続するために使用されます。

さらに、ボードには組み込みの LED があり、スケッチを使用して制御できます。 多くの英語のリソースで通例であるように、この組み込み LED を条件付きで「L」LED と呼びます。

ボード上のこの LED の位置は、下の写真に示されています。



「まばたき」の例を Arduino IDE にアップロードする

新しいボードをパソコンに接続すると、LED が点滅し始めることに注意してください。これは、製造元のすべてのボードには「点滅」スケッチが既に「埋められている」ためです。

このレッスンでは、LED の点滅周波数を変更してボードを再プログラムします。 Arduino IDE をセットアップし、ボードを接続した正しいシリアル ポートを選択することを忘れないでください。

接続をテストし、ボードをプログラムします。

Arduino IDE には、すぐに使用できるスケッチの大規模なコレクションがあります。 その中に「L」のLEDが点滅する例があります。

メニュー項目 File – Examples – 01.Basics の下にある「まばたき」の例を開きます。

開いたら、Arduino IDE シェル ウィンドウを展開して、スケッチ全体を 1 つのウィンドウに表示できるようにします。

Arduino IDE に含まれるサンプル スケッチは読み取り専用です。 つまり、それらをボードにアップロードできますが、コードを変更した後は、それらを同じファイルに保存できなくなります。

スケッチを変更するため、最初に行う必要があるのは、変更可能な独自のコピーを保存することです。

「まばたき」スケッチのコピーをライブラリに保存しました。 これで、[ファイル] - [スケッチブック] タブに移動して、いつでもこのファイルを開くことができます。

「まばたき」の例をボードにロードする

USB を使用して Arduino ボードをコンピューターに接続し、ボードの種類 (「ボードの種類」) と接続されているシリアル ポート (「シリアル ポート」) を確認します。

現在の設定は、Arduino IDE シェル ウィンドウの下部に表示されます。

「アップロード」ボタンをクリック

ダウンロード中は、ダウンロード スライダーとメッセージが IDE ウィンドウの下部に表示されます。 「Compiling scetch..」というフレーズが最初に表示されます。これは、スケッチを Arduino ボードにアップロードするのに適した形式に変換するプロセスを意味します。

最後に、ステータスが「アップロード完了」に変わります。 テキスト行に表示されるメッセージには、アップロードされたスケッチが使用可能な 32,256 バイトのうち 1,084 バイトを占めるという情報が表示されます。

コンパイル時に同様のエラーが発生することがあります。

いくつかの理由が考えられます: ボードがコンピュータに接続されていません。 必要なドライバーがインストールされていません。 間違ったシリアル ポートを選択しました。

「まばたき」スケッチの説明

以下は、「まばたき」スケッチのコードです。

LED を 1 秒間オンにしてから 1 秒間オフにすることを繰り返します。

このサンプル コードはパブリック ドメインにあります。

// ピン 13 には、ほとんどの Arduino ボードに接続された LED があります。

// 名前を付けます:

pinMode(導かれた、出力);

遅延 (1000); // ちょっと待って

まず注目すべきは、このスケッチには「コメント」がたくさんあるということです。 コメントは、プログラムの動作に関する指示ではないことに注意してください。 これらは、コードの特定の段階で実行される個々の機能とタスクの説明にすぎません。 これは、コードの必須部分ではありません。 スケッチの上部にある /* 記号と */ 記号の間はすべて、プログラムのタスクを説明するコメントです。 1行限定のコメントもあります。 デフォルトでは // で始まり、行末で終わります。 実際、このコードの最初の重要な部分は次の行です。

行の上のコメントは、LED が接続されているピンに名前を割り当てていることを示しています。 ほとんどの Arduino ボードでは、これはピン 13 になります。 次に、「セットアップ」機能を使用します。 繰り返しますが、コメントは、「リセット」ボタンを押した後に機能がトリガーされることを示しています。 また、この関数は、ボードが何らかの理由で再起動したときにもトリガーされます。 たとえば、電源を入れたり、スケッチをアップロードした後などです。

// リセットを押すと、セットアップ ルーチンが 1 回実行されます。

// デジタルピンを出力として初期化します。

pinMode(導かれた、出力);

すべての Arduino スケッチには、「セットアップ」関数と、( ) で囲まれた独自の命令を追加できる部分が含まれている必要があります。 この例では、関数に 1 つのコマンドしかなく、使用しているピンが「出力」(「出力」) に設定されていることを示しています。 また、ループ機能はどのスケッチにも必須です。 再起動後に一度動作する「セットアップ」機能とは異なり、「ループ」機能はコマンドの動作が終了した後に再起動します。

// ループ ルーチンは永遠に何度も実行されます。

digitalWrite(LED、HIGH); // LED をオンにします (HIGH は電圧レベルです)

遅延 (1000); // ちょっと待って

digitalWrite(LED、LOW); // 電圧を LOW にして LED をオフにします

遅延 (1000); // ちょっと待って

「Loop」機能本体でLEDが点灯(HIGH)し、 与えられた値 1000 ミリ秒 (1 秒) 遅れると、LED はオフ (LOW) になり、1 秒間オフのままになり、その後サイクルが繰り返されます。

LEDの点滅頻度を変える

LED をより頻繁に点滅させるには、「delay」コマンドの () 内のパラメーターを変更する必要があります。

すでに述べたように、遅延期間はミリ秒単位で指定されます。 つまり、LED を 2 倍の速さで点滅させるには、値を 1000 から 500 に変更する必要があります。その結果、LED のオン/オフの間の休止時間が 0.5 秒になり、LED の点滅が速くなります。

テストするには、変更したスケッチを Arduino ボードにアップロードすることを忘れないでください。

このレッスンでは、サーボのデバイスと動作原理について考えます。 Arduino のポテンショメータを使用してサーボを制御するための 2 つの簡単なスケッチを分析してみましょう。 また、C++プログラミング言語で新しいコマンドを学びます- サーボ.書き込み, サーボ.読み取り, サーボの取り付けまた、スケッチでライブラリを接続して、Arduino を介してサーボやその他のデバイスを制御する方法を学びます。

サーボとは

サーボドライブ(サーボモーター)は、さまざまなロボットや機構の設計において重要な要素です。 これは、持っている正確なパフォーマーです フィードバック機械の動きを正確に制御できます。 言い換えれば、入力で制御信号の値を受け取ると、サーボモーターはそのアクチュエーターの出力でこの値を維持しようとします。

サーボドライブは、ロボットの機械的な動きをシミュレートするために広く使用されています。 サーボドライブは、センサー(速度、位置など)、機械システムのドライブ制御ユニット、および 電子回路. デバイスの減速機(ギア)は、金属、炭素繊維、またはプラスチックでできています。 サーボモーターのプラスチックギアは、重い負荷や衝撃に耐えられません。

サーボモーターにはポテンショメータが内蔵されており、出力軸に接続されています。 シャフトを回すことにより、サーボはポテンショメータの電圧値を変更します。 ボードは入力信号の電圧を分析し、それをポテンショメーターの電圧と比較します。その差に基づいて、モーターは出力とポテンショメーターの電圧が等しくなるまで回転します。



パルス幅変調によるサーボ制御

サーボをArduinoに接続する方法

通常、サーボから Arduino への配線図は次のとおりです。黒のワイヤを GND に、赤のワイヤを 5V に、オレンジ/黄色のワイヤをアナログ PWM (パルス幅変調) ピンに接続します。 Arduino でのサーボ制御は非常に単純ですが、サーボモーターの回転角度は 180 ° と 360 ° になる可能性があるため、ロボット工学ではこれを考慮する必要があります。

レッスンには、次の詳細が必要です。

  • Arduino Uno ボード;
  • ブレッドボード;
  • USBケーブル;
  • 1サーボ;
  • 1 ポテンショメータ;
  • "folder-folder" と "folder-mother" を配線します。


最初のスケッチでは、myservo.write(0) コマンドを使用して Arduino のサーボを制御する方法を見ていきます。 また、Servo.h 標準ライブラリも使用します。 上の写真の図に従ってサーボを Arduino ボードに接続し、完成したスケッチをアップロードします。 void loop() プロシージャでは、サーボの回転角度と次の回転までの待機時間を設定するだけです。

#含む サーボservo1; // タイプ "servo1" のサーボ変数を宣言します void setup() // 手順 setup( servo1.attach(11); // サーボをアナログ出力 11 にバインド) void loop() // 手続き loop(servo1.write(0); // 回転角度を 0 に設定遅延 (2000); // 2 秒待ちます。servo1.write(90); // 回転角度を 90 に設定遅延 (2000); // 2 秒間待ちます。servo1.write(180); // 回転角度を 180 に設定遅延 (2000); // 2 秒待ちます)

コードの説明:

  1. Servo.h 標準ライブラリには、スケッチを大幅に簡略化できる一連の追加コマンドが含まれています。
  2. 複数のサーボを Arduino に接続するときに混乱しないように、Servo 変数が必要です。 各ドライブに独自の名前を付けます。
  3. servo1.attach(10) コマンドは、ドライブをアナログ出力 10 にバインドします。

何を探すべきか:

  1. void loop() プロシージャでは、ループ プロシージャが周期的に繰り返されるため、ドライブを 0 ~ 90 ~ 180 度回転させて最初の位置に戻します。

  1. Arduino サーボ コントロールをスケッチにインストールします。

ポテンショメータによるサーボ制御



サーボとポテンショメータをArduino Unoに接続する

Arduino では、制御するだけでなく、サーボからの指示を読み取ることもできます。 myservo.read(0) コマンドは、現在のサーボ シャフト角度を読み取り、ポート モニターで確認できます。 Arduino のポテンショメータでサーボを制御する、より複雑な例を示しましょう。 ポテンショメータ回路を組み立て、サーボ制御スケッチをアップロードします。

#含む // ライブラリを接続してサーボで動作するようにしますサーボ サーボ // タイプ "servo" のサーボ変数を宣言します void setup() // 手順 setup( servo.attach(10); // サーボをアナログ出力 10 にバインド pinMode(A0、入力); // ポテンショメータをアナログ入力 A0 に接続します Serial.begin(9600); // ポートモニターを接続) void loop() // 手続き loop(servo.write(analogRead(A0)/4); // サーボシャフトの値を渡します Serial.println(analogRead(A0)); // モニターにポテンショメータの測定値を表示しますシリアル .println(analogRead(A0)/4); // サーボに適用された信号を出力します Serial.println(); // 空行をポートモニターに出力遅延 (1000); // 1 秒の遅延 }

コードの説明:

  1. 今回は、スケッチのサーボにサーボという名前を付けました。
  2. servo.write(analogRead(A0)/4) コマンドは、サーボ シャフトの値を転送します。ポテンショメータから受け取った電圧を 4 で割り、この値をサーボに送信します。
  3. Serial.println (servo.read(10)) コマンドは、サーボ シャフトの角度値を読み取り、ポート モニタに送信します。

何を探すべきか:

  1. ポートモニターでは、サーボシャフトの回転角度を見ることができます。
  2. 標準ライブラリは、C:\Program Files\Arduino\libraries フォルダーにあります。

自己実現のためのタスク:

  1. ポートモニタのポテンショメータの電圧値を表示します。

序章:

皆さん、こんにちは。Arduino に関する一連のチュートリアルをお届けできることをうれしく思います。 これらの資料の執筆は、このトピックに関する非常に少量のロシア語資料によって促進されました。 これらのレッスンは、Arduino を使用するための基本的な方法を最初に教えてから、より高度な方法を教えるように設計されています。

アルドゥイーノは、電子プロジェクトの作成に使用できるマイクロコントローラーを備えた優れたプラットフォームであり、電子デバイスのプロトタイプを数分で作成できます。時には、はんだごてがなくてもできる場合もあります。 より詳細には、これは Atmel の AtMega マイクロコントローラーに基づくオープン ソース プラットフォームであり、いわゆる ISP プログラマーを介してこれらのマイクロコントローラーを自分でプログラムできます。 これらのコントローラーのコードはほとんどが C++ で書かれていますが、 普通の人これは少し難しいかもしれません。 コードの記述、組み立て、デバイスの繰り返しを簡単にするために、Arduino が発明されました。 arduino-これは単なるデバッグ ボードではなく、同名の開発環境および同名のプログラミング言語 (通常の C++ よりもはるかに単純です) でもあり、プログラム コードを記述した結果はコンパイルされたファイルであり、一般的にスケッチと呼ばれます。 彼だけが私たちに記録されています アルドゥイーノ。

これらすべてについて、レッスンでお話しします。 電子機器を扱ったことのない初心者でも、経験は豊富でも Arduino を使用したことがない人でも問題ありません。

  • Arduinoを構成するコンポーネント

私たちの必要なもの:

  • Arduino Uno ボード-実際、それは私たちのレッスンで議論されます。
  • USBケーブル タイプA-B - USB から Arduino をプログラムして電源を入れるために必要です。 将来、コンピュータとは別に Arduino を使用する場合は、電源が必要になります。

  • ブレッドボード- または単なるブレッドボードで、はんだ付け要素からあなたを救うのに役立ちます. 個人的にははんだ付けの方が好きですが、どういうわけか信頼性が高いです。 したがって、選択はあなた次第です。はんだごてを正確に操作する方法がわからない場合は、最初はこのボードでうまくいくことができます。

それを構成するコンポーネント Arduino UNO

Arduino を構成する最も重要な要素:



Arduino ブートローダを使ってプログラミングする方法 Arduinoのスケッチ USB経由

マイコンへ Atmega328 Arduinoには、工場で書かれた特別なブートコードがあり、問題なくUSB経由でスケッチを直接アップロードできます。 Arduino がなければ、特別な ISP プログラマーを介してコンパイル済みの C++ コードを作成する必要があり、その後でプログラムを実行することができます。 Arduino を使用すると、すべてが簡単になります。無料の USB が必要なだけです。

異なる Arduino ボードの違い

Arduino Uno (および FreeDuino のようなクローン) は、 シンプルなオプション Arduino、このボードのリソースまたはその作業速度が不足している場合は、いつでもより強力で複雑なボードにアップグレードできます。このリンクの公式 Arduino Web サイトでレビューを確認できます。 あなたが初心者であれば、今のところこれで頭をいっぱいにするのではなく、Arduino UNOが提供するすべてのツールを扱う方がおそらく簡単でしょう。

システムにArduinoを接続してインストールする方法

  • Arduino IDE を公式 Web サイトからダウンロードし、解凍またはインストールします。
  • Arduino を USB 経由でコンピュータに接続します。 Arduino UNO ボードが最新で、Windows を使用している場合、Windows はドライバーがインストールされていないと報告します。 アンインストールされた Arduino UNO を Windows タスク マネージャーで見つけて、右クリック -> ドライバーを更新し、Arduino が解凍されたフォルダーをポイントするだけで、Windows がそこからドライバーを取得し、Arduino での作業を開始できます。

最初のプログラムをダウンロードして実行する方法 (スケッチ)

  • 走る arduino.exe Arduinoが解凍またはインストールされたフォルダーから。
  • メニューから Arduino ボードを選択します サービス->支払い


  • メニューから選んで、 サービス->プログラマー段落 AVR ISP

Arduino 用の最初のプログラムを作成する準備ができました。最も簡単な方法は、ボード上の LED を点滅させることです。 スケッチ プログラムのテキストを手動で入力/コピーするか、Arduino に付属のサンプルを開くか、次のサイトからサンプルをダウンロードできます。


詳細なコメントを含むプログラムのテキスト (記事の最後にあるリンクからダウンロードすることもできます):

/*
Lesson 1. Arduinoとは何か、Arduino LEDの点滅
LEDの点滅。
2秒間点火し、2秒間消火し、もう一度..
このデモ コードは、www.site からダウンロードしたものです。
*/

// ほぼすべての Arduino で、ピン 13 はボードに直接はんだ付けされた LED に接続されています。
// 便宜上、出力 13 に「led」という名前を設定します。
int led = 13;

// ブロック "Setup" は、次の場合に 1 回だけ実行されます。 アルドゥイーノを起動、初期化に必要です。
ボイドセットアップ()(
// 13 を設定 Arduinoピン出口へ。
pinMode(導かれた、出力);
}

// 「ループ」ブロックはループです。 無限に何度も何度も動作するコード:
空ループ() (
digitalWrite(LED、HIGH); // 論理 1 を作成します (セット 高いレベル電圧)、ピン 13 で、LED がオン Arduinoボード
遅延 (2000); // 2 秒待ちます
digitalWrite(LED、LOW); // ピン 13 の LED をオフにします (低電圧レベルを設定)、LED は消えます
遅延 (2000); // 2 秒待った後、ループが再び開始されます
}

このコードを Arduino 環境ウィンドウに入力したら、ボタンをクリックします。 確認コードのエラーをチェックしてコンパイルします。

正常に完了したら (上のスクリーンショットのように)、隣接するボタンを押します。 ダウンロード、コンパイルされたプログラムがコントローラーに書き込まれ、その実行がすぐに開始されます (LED が点滅し始めます)。