タグ付けされた質問 「programming」

Arduinoのプログラム(またはスケッチ)の一部としてソースコードを設計および作成するプロセス。Arduinoボードへのコードのアップロードに関する質問については、代わりに[uploading]タグを使用してください。

20
Arduinoの他のIDEとは何ですか?
基本的なArduino IDEには、コード補完、コードの折りたたみ、フォルダーの整理など、他のIDEにある高度な機能が多くありません。CまたはC ++でのプログラミングを可能にし、これらの側面を改善できるIDEは他にありますか?

4
millis()ロールオーバーをどのように処理できますか?
5分ごとにセンサーを読み取る必要がありますが、スケッチには他のタスクもあるためdelay()、読み取りと読み取りの間だけではできません。これらの行に沿ってコーディングすることを提案する遅延なしの点滅チュートリアルがあります: void loop() { unsigned long currentMillis = millis(); // Read the sensor when needed. if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; readSensor(); } // Do other stuff... } 問題は、millis()約49.7日後にゼロにロールバックすることです。私のスケッチはそれよりも長く実行することを目的としているため、ロールオーバーによってスケッチが失敗しないようにする必要があります。ロールオーバー状態(currentMillis < previousMillis)を簡単に検出できますが、どうすればよいかわかりません。 したがって、私の質問:millis()ロールオーバーを処理するための適切/最も簡単な方法は何でしょう か?



3
定数に#defineまたはconst intを使用する方が良いですか?
Arduinoは奇妙なハイブリッドであり、組み込みの世界(従来はC環境)でC ++機能が使用されます。実際、多くのArduinoコードは非常にCに似ています。 Cは伝統的#defineに定数にsを使用していました。これにはいくつかの理由があります。 を使用して配列サイズを設定することはできませんconst int。 const intcaseステートメントラベルとしては使用できません(ただし、これは一部のコンパイラで機能します) constを別ので初期化することはできませんconst。 より多くの理由については、StackOverflowでこの質問を確認できます。 それでは、Arduinoには何を使用すべきでしょうか?私は傾向がありますが#define、一部のコードconstはブレンドを使用しており、一部のコードはブレンドを使用しています。

2
Arduino IDEの別のタブでクラスを宣言できないのはなぜですか?
私はコードをArduino IDEの2番目のタブに移動して、整理しやすくしました。最初は、関数を移動しようとしただけで、うまくいくように見えました。setup()メインタブの関数から関数を呼び出すことができ、コンパイルまたはアップロードに問題はありませんでした。 しかし、クラス全体を2番目のタブに入れようとしましたが、突然機能しなくなりました。例えば: タブ1: TestClass obj; void setup() { obj.init(); } void loop() { //... } タブ2: class TestClass { public: void init() { //... } }; これをコンパイルしようとすると、次のエラーが表示されました。 tab1:1: error: 'TestClass' does not name a type tab1.ino: In function 'void setup()': tab1:5: error: 'obj' was not declared in this scope …

3
クラスとオブジェクト:実際に使用する必要のあるファイルタイプはいくつですか?
C ++やCの経験はありませんが、C#のプログラミング方法を知っていて、Arduinoを学んでいます。私はスケッチを整理したいだけで、Arduino言語には限界がありますが、Arduinoプログラミングにはオブジェクト指向のアプローチが必要です。 だから私はあなたがコードを整理するためにあなたが次の方法(網羅的なリストではない)を持つことができることを見てきました: 単一の.inoファイル。 同じフォルダー内の複数の.inoファイル(IDEが呼び出して「タブ」のように表示するもの)。 同じフォルダーに.hおよび.cppファイルが含まれている.inoファイル。 上記と同じですが、ファイルはArduinoプログラムフォルダ内にインストールされたライブラリです。 次の方法も聞いたことがありますが、まだ機能していません。 同じ単一の.inoファイルでC ++スタイルのクラスを宣言します(聞いたことはありますが、動作することはありません-それは可能ですか?)。 [推奨されるアプローチ]クラスが宣言されている.cppファイルを含むが、.hファイルを使用しない(このアプローチが必要ですか? コードをよりパーティション化するためにクラスのみを使用したいことに注意してください。私のアプリケーションは、ボタン、LED、ブザーのみを含む、非常にシンプルなものでなければなりません。
20 programming  c++  class 

2
loop()内の無限ループはより高速に実行されますか?
典型的なスケッチを書いているときloop()、Arduinoが実行されている限り、通常は繰り返し呼び出されることに依存しています。loop()ただし、関数の内外に移動すると、わずかなオーバーヘッドが発生します。 これを避けるには、おそらく次のような独自の無限ループを作成できます。 void loop() { while (true) { // do stuff... } } それはパフォーマンスを改善する実行可能な方法ですか?loop()戻らない場合、他の問題が発生しますか?

13
Arduino Nanoのアップロードでエラーが発生する:avrdude:stk500_recv():プログラマーが応答していません
スケッチをアップロードしようとしているArduino Nano(Sainsmart)があります。Arduino IDEでは、選択されたデバイスはでしたArduino Nano w/ ATmega328。 ただし、スケッチをアップロードするとエラーが発生します avrdude: stk500_recv(): programmer is not responding 両方のUSBポート(/dev/tty.usbserial&/dev/cu.usbserial)を試しましたが、同じエラーが続きます。ArduinoはUSBケーブルを介してMacbook Airに接続され、ArduinoのPWRLEDインジケータライトがオンになり、LインジケータLEDが点滅します。Arduino Unoへのアップロードに問題はありませんでした。 最新のFTDIドライバ(MAC OSX、x64の、v2.2.18、FTDIUSBSerialDriver_10_4_10_5_10_6_10_7.mpkg)をインストールした後に再試行http://www.ftdichip.com/Drivers/VCP.htm。しかし、それは助けにはなりませんでした。 何が間違っていたのでしょうか?

5
どのくらい再帰できますか?どのくらい再帰できますか?どのくらいca!@#QFSD @ $ RFW
Arduino UnoボードのRAMは限られているため、使用可能なコールスタックは限られています。特定のアルゴリズムを実装するための唯一の迅速なオプションが再帰である場合があります。だから、コールスタックが厳しく制限されていることを考えると、ボード上で実行されている特定のプログラムを考えると、スタックオーバーフローが発生する前に(そして悪いことが起こる)正確にいくつの再帰呼び出しを許容できるかを知る方法は何でしょうか?
19 programming  sram 

4
可変サイズの配列を宣言するには(グローバル)
同じ長さの3つの配列を作りたいです。ドキュメントによると、配列はint myArray[10];、既知の長さ(別の整数)を10で置き換えるか、配列で埋めることができる場所として定義する必要があります{2, 3, 5, 6, 7}。 ただし、int arrSize = 10;そのサイズint myArray[arrSize];に基づいて値を宣言してから配列を宣言しようとすると、次のようになりますerror: array bound is not an integer constant。 配列サイズを可変的に決定する方法はありますか、それとも単にハードコードする必要がありますか?(ハードコーディングは悪いものであり、どうしても避けるべきものだと教えられました。)



5
構造体とクラスを使用する場合、どのようなオーバーヘッドやその他の考慮事項がありますか?
組み込みシステムのCでは、従来、構造体を使用して構造化データを保持しています。 ArduinoはC ++をテーブルに追加するため、代わりにクラスを使用できます。 非常に似ていると考えられる2つの異なるデータ構造があるとします。 typedef struct { int valueOne; int valueTwo; int valueThree; } value_t; そして: class Value { public: int valueOne; int valueTwo; int valueThree; } 記憶に関しては、これはどのような違いをもたらしますか? 私はまだ構造テクニックが頻繁に使用されているのを見ています-これはなぜですか?

6
Arduinoソースコードを自動的にテストするにはどうすればよいですか(継続的な統合)?
Arduinoのソースコード(プロジェクトとライブラリ)を、継続的なテストでソース管理下で管理したいと思います。各バージョンが正常にコンパイルされるように、継続的な統合ツールを使用してコードを自動的にコンパイルするにはどうすればよいですか?最良の場合、複数のプロセッサのビルドを構成し、オプションで単体テストを実行し、最大バイナリサイズを確認できる必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.