Windows 7 に arduino uno ドライバーをインストールする。 Arduino の仕組み

というか、その中国版。

中国の対応物とオリジナルの本質的な違いはその価格です。 オリジナルの Arduino UNO は現在、公式 Web サイトで 24.95 ドルで販売されていますが、中国製の Arduino UNO は 3 ドル未満 (8 分の 1 の安さ) でした。 オリジナルとそのア​​ナログのより詳細な比較は次の記事で行いますが、主な目標から離れないように、始めましょう。



PCに接続してドライバーをインストールします。

この中国の Arduino アナログでは、USB への接続にチップが使用されているためです。 CH340G、提供されたドライバーは、マイクロ回路を含む元のArduinoおよびその類似体には適していません ATMEGA16U2.


Arduinoプラットフォームをコンピューターに接続します USBケーブルどのプリンターが接続されているか。 ボード上の LED が点灯します。 オン"。新しいデバイスがデバイス マネージャーに表示されます" USB2.0-シリアル"。ドライバーをインストールする必要があります。Windows の例で作業します。

アーカイブをダウンロードし、ファイルを解凍して実行します CH341SER.EXE. 選ぶ インストール.


ドライバのインストール中は LED が点滅します。 処方箋、インストール後に対応するメッセージが表示されるので、「 わかった".

デバイスマネージャーに新しいデバイスが表示されます。」 USBシリアルCH340"。私の場合、ポートに接続されているデバイス COM7、誰もが他のポート番号を持つことができます。主なことは、将来の作業のためにそれを覚えておくことです。

最初のスケッチ。

Arduino プログラムはスケッチと呼ばれます。 Arduino にスケッチを書き込むには、Arduino をコンピューターにインストールする必要があります。 Arduino開発環境. 最新バージョンをダウンロードして解凍します。 ファイルによる開発環境の起動 arduino.exe.

ロシア語のインターフェースを搭載したデフォルトのプログラム。

別の言語を選択するには、メニュー項目「 ファイル" - "設定".

リストに」 編集者の言語" 他の言語を選択するには、クリックしてください" わかった」 開発環境を再起動します。構成には、ベラルーシ語、ウクライナ語、およびその他の言語が含まれています。


また、Arduino プラットフォームが正しく選択されていることを確認する必要があります。 ツール" – "支払い:「デフォルトで Anduino UNO が正しく選択されていました。他に何かあれば、リストからプラットフォームを選択してください。


また、プラットフォームが接続されている正しいポートを選択する必要があります。 これを行うには、ドライバーのインストール中にこれに注意を払いました(デバイスマネージャーでポートを確認する必要があります)。 私の場合はこれ COM7. 今 " ツール" - "ポート:「正しいポートを指定する必要があります。

それでは、Arduino で最初のスケッチを実行してみましょう。これにより、LED が点滅します。

このバージョンの開発環境には、簡単なスケッチのコレクションが既にあり、その中には私たちのスケッチがあります。
これを行うには、「 ファイル" - "サンプル" - "01. 基本" – "まばたき".

プログラム コードが新しいウィンドウで開きます。 それでは、プログラム用に LED を準備しましょう。 私のような多くのボードでは、目的のLEDが残りの無線コンポーネントとともにすでにはんだ付けされています...


しかし、この LED を持たないボードがあるかもしれません。その場合、ボード上のピンを介して接続する必要があります。 最も一般的なカラー LED を使用して、制限抵抗 220Ohm - 1Kom を介してボード上のピンに接続してみましょう。 13 アース(LEDをArduinoに接続する過程で、USBケーブルを外すことをお勧めします)。


すべての準備が整ったら、LED を点滅させるプログラムをマイクロコントローラにダウンロードする必要があります。 開発者環境で、「 ロード"、スケッチを Anduino にアップロードします。

スケッチが正常にラップされると、LED が点滅し始めます。私の場合、ボードにはんだ付けされた LED と、ピンに接続した LED が点滅しました。

Anduino の電源を切るには、ボードを USB ケーブルから外すだけで十分です。

これは、すべてが適切に機能することを確認して、プラットフォームとの最初の知り合いを終えることができる場所です.

原則として、それは普遍的であり、膨大な数のプロジェクトを実装できます。

始めましょう!

まず、ドライバが組み込まれた開発環境をダウンロードしてインストールする必要があります。これは、Arduino.cc の公式 Web サイトまたはリンクから実行できます。 次に、ボードをコンピューターに接続できます USBワイヤーほとんどの場合、キットに含まれているか、適切なキットを介して提供されます。 Arduino は USB B を使用しますが、特別なことは何もありません。 すべてが正しく行われ、ボードが機能している場合、Windows は新しいデバイスを見つけて自動的にインストールします。その後、オンまたは PWR とマークされた LED がボード上で点灯します。

これで、Arduino ide を開くことができ、エディター ウィンドウがすぐに目の前に表示されます. 1) エディター ウィンドウは、コードを記述する場所です。

2) ステータス ウィンドウ、エラー、プログラムに関するその他の情報、およびファームウェアをボードにアップロードするプロセスがここに表示されます。

3) ツールバー等

ちなみに、ideはロシア語をサポートしており、その開発に役立つはずです。 すべてがうまくいっているかどうかを確認し、[ツール] -> [ボード] タブに移動します。 そこで、ボードがすぐに選択されます。


そうでない場合は、手動で選択します。

ここで、彼はボードをテスト ファームウェアでフラッシュしようとします。このために、[ファイル] -> [例] -> [基本] -> [点滅] に移動します。 コメントとプログラムのテキストがエディター ウィンドウにすぐに表示されました。 コメントは常に */ または c// タグの間にあり、問題なく削除できます。プログラムの動作に影響を与えることはなく、主要なことに集中するのを妨げることもありません。

その後、次のコードが残ります。

C++

void setup() ( pinMode(13, OUTPUT); ) void loop() ( digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); )

ボイドセットアップ()(

pinMode(13、出力) ;

ボイドループ()(

エラーが発生した場合: ボードへのダウンロードに問題があります。絶望しないでください。これは簡単に修正できます。 これを行うには、[ツール] -> [ポート] -> に移動し、Arduino / Genuino Uno が括弧内に書かれているポートを選択し、コントローラーを再度フラッシュしてみます。 何かがうまくいかない場合は、コメントに書いてください。

arduinoに何を注いだかを考えてみましょう。

ボイドセットアップ() ( )

開発環境は、コードのこの部分を独自に生成しました。ここでは、中括弧の間で、入力が初期化され、ボードの出力です。この場合、pinMode (13, OUTPUT) と表示されます。 これは、LED が接続されているボード (前回の記事で説明した) のピン 13 を出力に割り当てることを意味します。

コードのこの部分も自動的に生成されます。中括弧の間には、プログラムが直接無期限に実行するコードが書かれています。 つまり、無限のサイクルです。 digitalWrite(13, HIGH); と表示されます。 、ロシア語でピン 13 に 5 ボルトを印加することを意味し、この動作により LED が点灯します。

遅延 (1000); この遅延により、次の命令の実行が 1000 マイル秒 (1 秒) 停止します。

デジタル書き込み (13、低); 13本のピンを地面に引っ張り、ロシア語で5ボルトを取り除き、LEDの消滅につながります.

また、void loop() は無限ループなので、Arduino のライトが無限に点滅します。

裸で楽しむ Arduinoボードボードには LED が 1 つしか取り付けられておらず、ボタンも 1 つもないため、思ったほど楽しくはありませんが、これは、LED を点滅させることがすべてであるという意味ではありません。 パソコンからのコマンドで光らせて出かけよう!

これを行うには、arduino 用のファームウェアを作成し、テスト用のポート モニターを使用する必要があります。その後、C# でプログラムを作成しますが、これは次の記事で行います。

Arduinoでプログラムが点滅しない

コンピューターから Arduino にプログラムを転送するプロセスでは、多くのコンポーネントが関与します。 それらの少なくとも 1 つが正しく機能しない場合、ファームウェア プロセスが壊れます。 特に、ファームウェア プロセスは以下に依存します: Arduino ドライバー、Arduino 環境でのデバイス モデルとポートの選択、ボードへの物理的な接続、8U2 コントローラー ファームウェア (Arduino Uno および Mega 2560 上)、デバイスのメイン マイクロコントローラーのブートローダー、ヒューズビット設定等 d. 以下は、特定のコンポーネントのトラブルシューティングに関する推奨事項です。

Arduino環境

  • [ツール] > [ボード] メニューで Arduino モデルが選択されていることを確認します。 Arduino Uno をお持ちの場合は、該当する項目を選択してください。 また、Arduino Duemilanove 以降のモデルには ATmega328 マイクロコントローラーが付属していますが、古いバージョンには ATmega168 が付属していることにも注意してください。 Arduino で使用されているコントローラーを確認するには、マイクロコントローラー (ボード上で最大のチップ) の銘を読んでください。 ボード メニューの詳細については、Arduino 開発環境セクションを参照してください。
  • 次に、[ツール] > [シリアル ポート] メニューで正しいポートが選択されていることを確認します (ポートが表示されない場合は、再起動してみてください)。 IDEコンピューターに接続されているデバイス)。 上で Mac コンピュータ、シリアルポートは次のようになります: /dev/tty.usbmodem621 (Arduino Uno または Mega 2560 の場合) または /dev/tty.usbserial-A02f8e (FTDI チップを搭載した古いバージョンの Arduino の場合)。 Linux の場合: /dev/ttyACM0 など (Arduino Uno または Mega 2560 の場合) または /dev/ttyUSB0 (古いバージョンの Arduino の場合)。 Windows では、これは COM ポートになりますが、デバイス マネージャーで選択する前に、どのポートが Arduino に関連付けられているかを確認する必要があります。 これらのポートがリストされていない場合は、ドライバーに関する次のセクションを参照してください。

運転手

ドライバーは、コンピューター上のアプリケーション ソフトウェア (つまり、Arduino 環境) が、それに接続されているハードウェア (Arduino ボード) と通信できるようにします。 Arduino に関しては、ドライバーはシステム内に仮想シリアル ポート (または仮想 COM ポート) を作成する責任があります。 ATmega8U2 マイクロコントローラを搭載した Arduino Uno および Mega 2560 は、オペレーティング システムの標準ドライバ (USB CDC) を使用します。 FTDI チップが USB-UART コンバーターの役割を果たす他の Arduino ボードは、FTDI のドライバーを使用します。

ドライバーが正しくインストールされているかどうかを確認する最も簡単な方法は、Arduino を PC に接続し、開発環境で [ツール] > [シリアル ポート] メニューを開くことです。 Arduino を接続すると、新しいメニュー項目がここに表示されます。 この場合、Arduino にどのポート名が割り当てられるかはまったく問題ではありません。

  • Windows 7 (特に 64 ビット バージョン) では、デバイス マネージャーに移動して、Arduino Uno または Mega 2560 ドライバーを更新する必要がある場合があります.これを行うには、デバイス マネージャーでデバイスを右クリックします (ボードは、コンピューターに接続されている)、対応する .inf ファイルを再度 Windows にポイントします。 このファイルは、Arduino ソフトウェアの drivers/ フォルダーにあります (FTDI USB Drivers サブディレクトリではありません)。
  • Windows XP で Arduino Uno または Mega 2560 ドライバーをインストールするときに次のエラーが発生した場合: 「システムは指定されたファイルを見つけることができません」、この解決策を試してください (「RunOnce」キーをレジストリ ブランチ「HKEY_LOCAL_MACHINE\SOFTWARE\ に追加することについて」 Microsoft\Windows\ CurrentVersion")。
  • Linux では、Arduino Uno と Mega 2560 は /dev/ttyACM0 デバイスとして定義されており、Arduino シリアル環境で使用される RXTX ライブラリの標準バージョンではサポートされていません。 そのため、この環境の Linux バージョンには、パッチが適用された RXTX ライブラリが含まれており、これは /dev/ttyACM* デバイスでも動作します。 そのようなデバイスのサポートを含む特別な (11.04) もあります。 標準の RXTX パッケージを使用している場合は、システムに /dev/ttyACM0 から /dev/ttyUSB0 へのシンボリック リンクを作成する必要があります (たとえば)。これにより、シリアル ポートが Arduino 環境に表示されます。

シリアル ポート アクセス

  • Windows の場合: プログラムを開くのに時間がかかる、または起動時にクラッシュする、またはプログラムの [ツール] メニューを開くのに時間がかかりすぎる場合は、デバイス マネージャーで、すべての Bluetooth シリアル ポートとその他のネットワーク COM ポートを無効にしてみてください。 [ツール] メニューを起動または開くと、Arduino 開発環境はコンピューターのすべてのシリアル ポートをそれぞれスキャンします。このようなネットワーク ポートが存在すると、プログラムがフリーズまたはクラッシュすることがあります。
  • USB セルラー Wifi ドングル (Sprint や Verizon など)、PDA 同期アプリ、Bluetooth USB ドライバー (BlueSoleil など)、仮想デーモンなどのシリアル スキャナー プログラムが実行されていないことを確認してください。
  • シリアル ポートをブロックする理由がファイアウォール (たとえば、ZoneAlarm) ではないことを確認してください。
  • また、Arduino と PC の間で USB 経由で送信されるデータを監視するすべてのプログラム (Processing、PD、vvvv など) を閉じる必要もあります。
  • Linux の場合: 少なくとも一時的に Arduino 環境を root として実行してみて、Arduino のフラッシュに役立つかどうかを確認してください。

ボードへの物理的な接続

  • まず、Arduino の電源がオンになっていることを確認します (点灯 緑色LED) およびコンピュータに接続されています。
  • Mac コンピューターでは、次の場合にいくつかの問題があります。 Arduinoの接続 USBハブ経由のUnoとMega 2560。 「Tools > Serial Port」メニューに何も表示されない場合は、ボードをコンピュータに直接接続して再起動してみてください。 ArduinoIDE.
  • ファームウェアの実行中は、すべてのデバイスをデジタル ピン 0 と 1 から切断します。これらのピンは、コンピューターへの Arduino 接続インターフェイスに接続されているためです (コードをコントローラーに正常にフラッシュした後、再び使用できます)。
  • Arduino からすべてのデバイスを取り外して、Arduino をフラッシュしてみてください (もちろん、USB ケーブルを除く)。
  • ボードが導電性の金属物と接触していないことを確認してください。
  • 別の USB ケーブルを試してみてください。失敗することもあります。

自動リセット

  • Arudino が自動リセット機能をサポートしていない場合は、点滅する数秒前にボードをリセットしてください。 (Arduino Diecimila、Duemilanove、および Nano は自動リセットをサポートし、LilyPad、Pro、および プロミニ 6ピンプログラミングコネクタ付き)。
  • 注意: 一部の Arduino Diecimila は、間違ったブートローダーで誤ってフラッシュされました。 このようなモデルでは、プログラムをロードする前にリセット ボタンを物理的に押す必要があります。 詳細については、以下を参照してください。
  • 一部のコンピューターでは、Arduino 環境で [アップロード] ボタンを押した後、(ボード上の) リセット ボタンを押す必要があります。 タップ間のさまざまな時間間隔を試してください - 約 2 秒の間隔で 0 から 10 秒またはそれ以上。
  • このエラーが発生した場合: 「デバイスが正しく応答していません。」 プログラムをもう一度フラッシュしてみてください (つまり、ボードをリセットして、もう一度 [アップロード] ボタンを押します)。

ローダ

  • Arduino にブートローダーがあることを確認してください。 これを行うには、デバイスを再起動するだけです。 内蔵 LED (コントローラーの 13 番ピンに接続) が点滅します。 これが起こらない場合は、おそらくボードにブートローダーがありません。

それでもプログラムがフラッシュしない場合は、フォーラムで質問してください。 メッセージに次の情報を含めてください。

  • オペレーティング システムのバージョン。
  • Arduinoのタイプ。 Mini、LilyPad、または追加のワイヤが必要なその他のモデルの場合は、可能であれば回路の写真を含めてください。
  • 以前にボードを正常にフラッシュできましたか。 はいの場合、動作を停止する前にボードで何をしたかを説明してください。 ソフトウェア最近、コンピューターからインストールまたはアンインストールしましたか?
  • プログラムを Arduino にロードしようとしたときに表示されるメッセージ。 メッセージを受信するには、Shift キーを押しながらツールバーの [アップロード] ボタンをクリックします。

「ビルドフォルダーが消えたか、書き込めませんでした」エラーが発生する (Mac OS X の場合)

ディスク イメージから Arduino.app を抽出しましたか (たとえば、アプリケーション フォルダーに)? そうでない場合は、サンプルをダウンロードできません。

Mac で Java を更新した後、Arduino が起動しない

最後のこと Java アップデート Apple は、ネイティブ ライブラリの 64 ビット バージョンを使用しようとします。 ただし、Arduino ソフトウェアは RXTX ライブラリの 32 ビット バージョンを使用します。 Arduino を起動すると、次のエラーが発生します。

メイン メソッドでキャッチされない例外: java.lang.UnsatisfiedLinkError: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: 適切なイメージが見つかりません。 見つかりました: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: ユニバーサル ラッパーに一致するアーキテクチャがありません

この問題を解決するには、Finder ウィンドウで Arduino アプリケーション (Arduino 16.app) をクリックし、[ファイル] メニューから [情報を見る] を選択します。 パネルで、[32 ビット モードで開く] チェックボックスをオンにします。 その後、Arduino環境が正常に起動するはずです。

プログラムをコンパイルすると、java.lang.StackOverflowError が発生します。

Arduino IDE は、正規表現を使用してコードを操作することにより、スケッチを前処理します。 特定のテキスト行が原因で、このプロセスが失敗することがあります。 次のようなエラーが表示された場合:

com.oroinc.text.regex.Perl5Matcher._pushState(Perl5Matcher.java) での java.util.Stack.push(未知のソース) での java.util.Vector.addElement (未知のソース) での Java.lang.StackOverflowError

com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) で com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) で com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher. Java) com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher) .java)

これはまさに状況です。 「二重引用符」、「一重引用符」、バックスラッシュ \、コメントなどに関連する通常とは異なる文字シーケンスがないかコードを確認してください。 .

ボードが外部ソース (Arduino Diecimila モデル以前) から給電されている場合、Sketch は実行されません。

RX ピンが切断されているため、Arduino ブートローダはデータの代わりにノイズを受信できます。つまり、タイムアウトすることはなく、したがってプログラムは開始されません。 この問題を解決するには、RX ピンを 10 kΩ の抵抗でグランドに接続してみてください (または RX ピンと TX ピンを接続してください)。

プログラムをフラッシュしようとすると、Arduino 開発環境 (Windows) がフリーズする

この問題は、Arduino と Logitech の「LVPrcSrv.exe」プロセスの間の競合が原因で発生する可能性があります。 タスクマネージャーを開き、プロセスのリストで見つけます。 そこにある場合は、プログラムをフラッシュする前にプロセスを完了する必要があります。

Arduinoの電源が入らない(緑色の電源LEDが点灯しない)

Arduino Diecimila またはそれ以前の USB を使用している場合 (NG など)、ボード上のジャンパー (USB コネクタ近くの小さなプラスチック部分) が正しく設定されていることを確認してください。 ボードが外部電源 (適切なコネクタに接続されている) から電力を供給されている場合、ジャンパは電源コネクタに近い 2 つのピンを閉じる必要があります。 ボードが USB で給電されている場合、ジャンパは USB コネクタに近い 2 つのピンを閉じる必要があります。 この図は、ボードが USB から給電されている場合のジャンパーの位置を示しています。

(投稿と写真を提供してくれた mrbbp に感謝)

Arduino Diecimila でのプログラムの起動に時間がかかりすぎる (6 ~ 8 秒)

一部の Arduino Diecimila ボードで、Arduino NG ブートローダーが誤ってフラッシュされました。 正常に動作しますが、ボードをリセットした後のタイムアウトが長くなります (Arduino NG は自動リセットを実装していないため、ファームウェア プロセスを手動で同期する必要があります)。 ピン 13 に接続された LED によって NG からのブートローダーを認識できます。Arduino NG では、ボードをリセットした後、3 回点滅し、Diecimila では 1 回点滅します。 Diecimila に NG のブートローダーがインストールされている場合、スケッチ バンをフラッシュする前に、ボードにあるリセット ボタンを物理的に押す必要があります。 正しい Diecimila ブートローダをデバイスにフラッシュすることもできます。詳細については、ブートローダのページを参照してください。

Windows で arduino.exe を起動する際のエラー

Windows で arduino.exe を実行しているときに次のようなエラーが発生した場合:

Arduino に問題が発生したため、終了する必要があります。

次に、run.bat ファイルを使用して Arduino を起動してみます。 しばらくお待ちください Arduino環境の起動には時間がかかります。

古いバージョンの Mac OS X で Arduino が動作しないのはなぜですか?

次のようなエラーが発生した場合:

リンク (dyld) エラー: dyld: /Applications/arduino-0004/Arduino 04.app/Contents/MacOS/Arduino 未定義のシンボル: /Applications/arduino-0004/librxtxSerial.jnilib 未定義の参照 _printf$LDBL128 は / で定義されると予想されますusr/lib/libSystem.B.dylib

その場合、おそらくシステムを Mac OS X 10.3.9 以降にアップデートする必要があります。 古いシステム ライブラリは Arduino と互換性がありません。

メッセージをくれた Gabe462 に感謝します。

Arduino環境を起動するとUnsatisfiedLinkErrorが発生する(librxtxSerial.jnilibライブラリに関するメッセージ付き)

Arduino の起動時に次のエラーが表示される場合:

メインメソッドでキャッチされない例外: java.lang.UnsatisfiedLinkError: ネイティブ ライブラリ /Users/anu/Desktop/arduino-0002/librxtxSerial.jnilib が別のクラスローダーに既にロードされている

その場合、接続を担当する古いバージョンのライブラリがある可能性があります。 /System/Library/Frameworks/JavaVM.framework/ フォルダー、または CLASSPATH および PATH 環境変数にリストされているディレクトリーで、comm.jar または jcl.jar ファイルを探します。 (Anurag Sehgal が発見したバグ)

「メイン クラスが見つかりませんでした」というエラーはどういう意味ですか?

Arduino の起動時に次のエラーが発生した場合:

Java 仮想マシン ランチャー: メイン クラスが見つかりませんでした。 プログラムは終了します。

Arduino .zip の内容を正しく解凍したかどうかを確認してください。特に、lib フォルダーが Arduino ディレクトリ内にあり、pde.jar ファイルが含まれていることを確認してください。

Windows で cygwin の競合に対処するには?

cygwin がマシンに既にインストールされている場合、Arduino 環境でスケッチをコンパイルしようとすると、次のエラーが発生する可能性があります。

6? (3512) C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe: *** 致命的なエラー - C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe : *** システム共有メモリのバージョンの不一致が検出されました - 0x75BE0084/0x75BE009C。

この問題は、互換性のないバージョンの cygwin DLL の使用が原因である可能性が最も高いです。

Windows の検索 ([スタート] -> [検索]) で、cygwin1.dll と入力し、見つかったすべてのファイル (最新バージョンを除く) を削除します。 最新バージョンは、x:\cygwin\bin フォルダーに配置する必要があります。「x」は、cygwin ディストリビューションがインストールされたドライブです。 また、コンピュータを再起動することをお勧めします。

また、Arduino 環境が実行されているときに cygwin がプロセスに座っていないことを確認してください。 また、Arduino フォルダーから cygwin1.dll ファイルを削除して、既存の cygwin ディストリビューション (c:\cygwin\bin フォルダーにある可能性が高い) の cygwin1.dll ファイルに置き換えることもできます。

Arduino 環境と [ツール] メニューが長時間開いている (Windows の場合)

Arduino 環境が非常に長い時間起動するか、[ツール] メニューを開こうとしてフリーズする場合、これはシステム内の他のデバイスと競合していることを示しています。 起動時、および [ツール] メニューを開くと、Arduino ソフトウェアはシステムで使用可能なすべての COM ポートのリストを取得しようとします。 コンピュータのデバイスの 1 つによって作成された特定の COM ポートが、このプロセスを遅くする可能性があります。 デバイスマネージャーを確認してください。 システムで COM ポートを作成できるすべてのデバイス (Bluetooth アダプターなど) を無効にしてみてください。

[ツール] | [ツール] にデバイスが表示されない シリアルポート

USB から Arduino を使用している場合は、FTDI チップのドライバーが正しくインストールされていることを確認してください (インストール手順を参照してください)。 通常の Arduino (USB なし) で USB-UART アダプターを使用している場合は、このアダプターのドライバーがインストールされているかどうかを確認してください。

その後、ボードが実際に接続されていることを確認します。ポートのリストを含むメニューは、[ツール] メニューを開くたびに更新されるため、ボードを切断したばかりの場合、このリストには表示されません。

PDA 同期アプリケーション、Bluetooth-USB ドライバー (BlueSoleil など)、仮想デーモンなど、すべてのシリアル ポートをスキャンするプログラムが実行されているかどうかを確認します。

Windows システムでは、Arudino によって割り当てられた COM ポート番号が大きすぎる場合があります。 ユーザー zeveland から:

「高いCOMポート番号でArduinoプログラムをフラッシュできない人へのちょっとした注意:FTDIチップに関連付けられたポート番号を減らしてみてください。」

「私のシステムには Bluetooth アダプタからの仮想 COM ポートがたくさんあるので、Arduino には COM17 が割り当てられました。IDE は Arduino を見つけることができなかったので、コントロール パネル (XP の下) で他の仮想ポートを削除し、ポートを変更しました。 FTDI チップを COM2 に接続します。arduino が割り当てられたポートを使用していることを確認してください。問題ないはずです。」

古いバージョンをお持ちの場合 FTDI ドライバー Mac コンピューターでは、それらを削除してインストールする必要があります。 最新バージョン. インストール手順については、このフォーラム スレッドを参照してください。

gnu.io.PortInUseException は、コードのフラッシュ時または「シリアル モニター」(Mac システムの場合) でスローされますか?

シリアル内のエラー。 () gnu.io.PortInUseException: gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354) の不明なアプリケーションが processing.app.Serial にあります。 (Serial.java:127) processing.app.Serial で。 (シリアル.java:72)

ほとんどの場合、このエラーは、ポートが別のアプリケーションによって占有されていることを意味します。 そのため、PDA 同期アプリケーション、Bluetooth デバイス マネージャー、特定のファイアウォールなど、シリアル ポートまたは USB ポートで動作するプログラムが実行されているかどうかを確認してください。使用していないときは、シリアル ポートを使用するすべてのユーティリティを閉じて、そのようなアプリケーションを完全に終了することをお勧めします。

このエラーが Processing 環境、または Arduino バージョン 0004 以前で発生した場合は、macosx_setup.command スクリプトを実行してコンピューターを再起動する必要があります。 Arduino 0004 では、このスクリプトが変更されており、すべてのユーザーが実行する必要があります (Arduino バージョン 0003 に付属の同じスクリプトを実行したユーザーも含む)。 /var/spool/uucp フォルダーの内容も削除する必要があります。

USB FTDI ドライバーで問題が発生する

Arduinoの電源を入れたりリセットしたりしてもスケッチが始まらない

これは、電源を入れた直後にコンピューターからボードにデータを送信していることが原因である可能性があります。 リセット後の最初の数秒間、ブートローダー (ボードのマイクロコントローラーでフラッシュされたプログラム) は、コンピューターがボードのメモリに書き込まれる新しいスケッチを送信するのを待ちます。 この数秒間データが到着しない場合、ローダーはタイムアウトまでに作業を完了し、以前にロードされたプログラムを開始します。 データを継続的に送信している場合、ローダーはタイムアウトせず、アップロードされたスケッチを実行しません。 したがって、デバイスの電源を入れた後、データの送信を数秒間「保留」する方法を見つける必要があります (たとえば、セットアップ () ブロックでコンピューターにデータを送信するようにコントローラーをプログラムすることによって)。外部プログラマーを使用して、ブートローダーの上にあるマイクロコントローラーにプログラムします。

ファームウェアは成功しているように見えますが、何も機能しません

[ツール] > [マイクロコントローラ] メニューから誤ってデバイスを選択しました。 選択したマイクロコントローラーがボード上のもの (ATmega8 または ATmega168) と一致することを確認してください。コントローラーのモデルは、最大のチップに記載されています。

電源が安定していることを確認してください。 干渉や停電により、スケッチのアップロード エラーが発生する場合があります。

もう一つ 考えられる理由- スケッチのサイズがデバイスに対して大きすぎます。 スケッチをアップロードするとき、Arduino 0004 は、ATmega8 のメモリにプログラムをロードするのに十分なスペースがあるかどうかを確認します。 同時に、Arduino は、コントローラー メモリ内のローダーが 1 KB を占有するという事実に基づいて計算を行います。 おそらく、お使いのデバイスには 1 KB ではなく 2 KB の古いバージョンのブートローダがフラッシュされており、ATmega8 マイクロコントローラの 8 KB フラッシュ メモリのうち、2 KB が既に占有されている可能性があります。 したがって、この場合、スケッチの一部のみがコントローラーにロードされますが、プログラムはこれを事前に認識していないため、デバイスが常にリセットされます。

プログラマー (パラレル ポートまたは AVR-ISP 用) をお持ちの場合は、Tools | ブートローダーを焼きます。 それ以外の場合は、config ファイル内にある upload.maximum_size 変数で使用可能なプログラム メモリの量を指定することにより、Arduino 環境設定を調整するだけです (このファイルの場所については、手順を参照してください)。 そこに指定された値 7168 を 6144 に変更します。その後、許容スケッチ サイズを超えたときに開発環境が正しく警告します。

ファームウェアのサイズを小さくするにはどうすればよいですか?

Arduino の ATmega168 マイクロコントローラーはかなり安価なモデルで、プログラム メモリは 16 KB しかなく、実際にはそれほど多くはありません (そのうち 2 KB は既にブートローダーによって使用されています)。

プログラムで浮動小数点計算を使用する場合は、整数計算を使用するようにコードを書き直してみてください。これにより、約 2 KB のメモリが節約されます。 プログラムの先頭で、未使用のすべてのライブラリの #include ディレクティブを削除します。

また、プログラム コードを最適化して短くできるかどうかも確認してください。

Arduino コアの最適化に常に取り組んでいます。これにより、コンパイルされたスケッチの総量でその機能が占めるスペースを減らし、プログラムを書くためのスペースをできるだけ多く残すことができます。

3、5、6、9、10、および 11 以外のピンで analogWrite() 関数を呼び出した場合、PWM 信号 (アナログ出力) は生成されません。

Arduino マイクロコントローラ (ATmega168) では、PWM / analogWrite () のハードウェア サポートは特定のピンにのみ実装されています。 したがって、他のコントローラ ピンで analogWrite() 関数を呼び出すと、次のいずれかになります。 上級信号 (5 V - 128 より大きい値の場合)、または 低レベル(0 V - 128 未満の値の場合)。 ATmega8 マイクロコントローラを搭載した古いバージョンの Arduino では、PWM サポートはピン 9、10、および 11 にのみ実装されています。

宣言されていない関数または型についてエラーが発生するのはなぜですか?

Arduino 開発環境は、ユーザー定義関数のプロトタイプを自動的に生成しようとするため、プログラム内でそれらを任意の順序で配置できます。 ただし、プロトタイピング プロセスは完璧ではなく、紛らわしいバグにつながることもあります。

たとえば、プログラムでデータ型を宣言し、この型を使用する関数を作成すると、スケッチをコンパイルしようとするとエラーが発生します。 この場合、この関数の自動生成されたプロトタイプが型宣言の前に配置されるため、エラーが発生します。

16 ビットの結果を返す関数 (たとえば、"unsigned int" 型) を宣言すると、環境はこれが関数であることを認識しないため、そのプロトタイプは作成されません。 この場合、プログラムで初めて呼び出される前に、手動で記述するか、上記のプログラム コードにこの関数の宣言を配置する必要があります。

プログラムをフラッシュしようとすると、「無効なデバイス署名」というエラーが発生します

次のエラー:

Avrdude: うん! デバイス署名が無効です。 接続を再確認して再試行するか、-F を使用してこの確認をオーバーライドしてください。

[ツール] > [ボード] メニューで間違ったボードが選択されているか、間違ったバージョンの avrdude を使用しています。 スケッチを Arduino にアップロードするには、avrdude のわずかに変更されたバージョンが使用されます。 標準バージョンは、デバイスを識別するリクエストを Arduino ブートローダーが理解できない形式で送信するため、エラーが発生します。 そのため、Arduino に付属している正確なバージョンの avrdude を使用していることを確認してください (

Arduino プラットフォームのコアは、ATmega328 として知られるマイクロコントローラー チップです。

ATmega328 は実際にはすべての点で 8 ビット コンピュータです。電源を入れると、そのプロセッサは特定のメモリ位置から 1 バイトをロードし、それをコマンドとして解釈します。 次に何が起こるかは、そのバイトの値によって異なります。 私たちに知られているコンピュータとは異なり、ATmega328 は何も実行しません。 オペレーティング·システム: リソースの使用は、プログラマの完全な制御下にあります。 メモリを誤って割り当てたり、オーバーフローしたり、正確な自動システムにとって望ましくないその他の結果をもたらす可能性のあるオペレーティング システムに依存することはできません。 さらに、プロセッサは一度に 1 つのタスクしか処理できません (すべてのプロセッサがこのように動作することはおそらくご存じでしょうが、オペレーティング システムはさまざまなタスクの作業時間を分散して、コンピュータ上の複数のプログラムが処理されているように見えます)。同時に働く)。

新しい Arduino のメモリは完全に空であるため、プロセッサによって処理される最初のバイトの値はゼロになります。つまり、「操作なし」です。 前 Arduinoを使って実行可能プログラムをそのメモリにロードする必要があります。 最初のビットがコマンドとして解釈され、実行されます。 コマンドの実行にパラメータが必要な場合は、メモリの次のバイトから取得されます。 コマンドの実行後、プロセッサは受信したバイトをメモリにロードし、コマンドとして解釈します。 Arduino の電源をオフにしても、メモリは消去されません。 ロードされたバイトのシーケンスは不揮発性メモリに保存されるため、再度電源を入れると、プログラムは最初からやり直します。

プロセッサの動作周波数は、16 MHz クロック ジェネレータによって設定されます。 USBコネクタから電源供給可能。 なしで作業するには Arduino USB電源別の 7 ~ 12 V の電源が必要です (この電圧はオンボード レギュレーターによって必要なレベルに正規化されるため、安価な電源が必要です)。 ボード上では、ユーザーは 5V と 3.3V の両方の電圧レベルを利用でき、そこから最大 50mA の電流を引き出すことができます。

Arduinoメモリは3つのタイプで構成されています。プログラムが保存されるフラッシュメモリは32 KBです。 (SRAM) 2 KB。プロセッサは、プログラムで使用される変数を格納および上書きします。 1 KB の読み取り専用メモリ (EEP-ROM)。プログラマは、コントローラの再起動時に残るデータを格納できます (プログラムが格納されるフラッシュ メモリなど)。 少なくとも数ギガバイトを処理する今日のコンピューターと比較すると、35kb はばかげているように見えますが、実際にはほとんどの目的には十分です。 オペレーティング システムがないため、メモリの使用は完全にユーザーの責任です。メモリ オーバーフローが発生したり、存在しないメモリ ロケーションがアクセスされたりすると、プログラムが予期しない動作をする可能性があり、デバッグ中にこれを追跡するのは非常に困難です。 プログラムでは、常に変数の数を制御する必要があります。

ATmega328 プロセッサは、14 個のディスクリート I/O ポート (0 ~ 13 の番号が付けられています)、6 個のアナログ入力、および USB ポートに接続されています。 ディスクリート I/O は 電気接続、1 と 0、または TRUE と FALSE の 2 つのブール値の状態を持つことができます。 Arduino 構文、LOW および HIGH。 信号が LOW 値の場合、対応するピンは 0 V のゼロ電位を持ちます。つまり、に接続されています。 共通線. 信号が HIGH の場合、このピンとグランドの間の電圧レベルは 5 V です。

ピン 0 と 1 は、データのシリアル受信と送信に使用されます。 Arduinoボードシリアルプロトコルを使用して、接続されたモジュール (シールド) と通信できます。 シリアルプロトコルは、各ビットを順番に送受信する通信プロトコルです。 ピン 2 と 3 は、割り込みとしても使用できます。 割り込みは、特定の論理状態が発生したときに現在のプロセッサ プログラムを中断するデジタル入力の電気信号です。 割り込みは、従来のコンピュータのプロセッサにも存在します。 割り込みが発生した後、プロセッサはその状態をメモリに保存し、プログラムの実行を遅らせて、割り込みハンドラー (割り込みを処理するために必要な短いプログラム コード) の実行にジャンプします。 完了すると、プロセッサは割り込みが到着する前の状態に戻り、プログラムの実行を再開します。

ピン 3、5、6、9、10、11 は PWM 出力として使用でき、いくつかのアナログ設定があります。 したがって、それらのメモリセルには0〜255の値が含まれています。

図1 Arduino UNOを上下から見たところ。 裏面のイタリアの地図に注意してください。

ピン 13 はボード上の LED にも接続されています。 信号が LOW の場合、LED はオフになり、信号が HIGH の場合、LED はオンになります。

デジタル I/O としての標準的な使用に加えて、ピン 10、11、12、および 13 は、外部周辺機器と通信する機能を提供します。

アナログ入力には A0 ... A5 のラベルが付いています。それぞれのデジタル分解能は 10 ビットです。

つまり、0 ~ 5 V の電圧を、メモリ内でアクセスできる 0 ~ 1023 の数値に変換します。

すべてのプラットフォームは、サイズが 60.6 mm × 53.4 mm、重量が 25 g 以下のボードに取り付けられています (図 1)。

ボードには、通信用にコンピュータに接続できる USB A/B コネクタもあります。 また、USB 接続は、コンピューターに接続されているときに Arduino に電力を供給するため、開始するために外部電源は必要ありません。

プログラム

Arduino プログラムは、プロセッサ用の他のプログラムと同様に、機械語の一連のビットです。 プログラマーの生活を楽にするために、Arduino チームは、機械語コードを Arduino メモリにアップロードするための高レベルのプログラミング言語、コンパイラー、およびファームウェア ツールを開発しました。

これらのツールはすべて、無料の 1 つの IDE (統合開発環境) プログラムに含まれています。

Arduino の Web サイトからダウンロードするには、コンピュータのオペレーティング システムを選択し、プログラムをダウンロードします。 ほとんどの通常のコンピューター プログラムと同じように見えます。 さまざまなウィンドウにいくつかのタブがあります。 これらのウィンドウの 1 つは、プログラムの編集に使用されます。 Arduino 用語ではスケッチと呼ばれます。 スケッチは単純化された C++ で書かれています。


図 2 Arduino プログラムは、単にスケッチと呼ばれるプログラムのテキストを入力できるウィンドウとして表示されます。

スケッチをコンパイルして Arduinoプログラム(図 2) ウィンドウの左上隅にある [Verify] ボタンをクリックすると、コンパイル プロセスによって C++ プログラムが ATmega328 プロセッサの対応するマシン コードに変換されます。 コンパイルしたら、[アップロード] ボタンを押して、実行可能なスケッチを USB ケーブル経由で Arduino メモリにアップロードできます。 利用可能な COM ポートが複数ある場合は、メニューから適切な COM ポートを選択する必要がある場合があります。 スケッチをロードすると、常にコンパイラが最初に実行されます。 ダウンロードが完了するとすぐにスケッチが開始されます。

Arduino チームまたはサードパーティによって開発された外部ライブラリを使用して、コア言語に追加機能が追加されます。 適切なメニュー項目を選択することにより、ライブラリを実行可能コードに含めることができます。 必要に応じて、ライブラリを追加すると、新しい構文についてコンパイラに伝える行がスケッチに自動的に追加されます。