Arduino

Arduinoと互換性のあるオープンソースのハードウェアおよびソフトウェアの開発者向けのQ&A

1
ESP8266はどういうわけかwifiアクセスデータを覚えていますか?
今日私はESP8266をいじくり回し、OTAを試してWebサーバーを作成しました。エラーを見つけるために、スケッチを次の行だけに減らしました。 #include <ESP8266WebServer.h> ESP8266WebServer server(80); void setup() { Serial.begin(115200); server.on("/", []() { Serial.println("Sending response..."); server.send(200, "text/plain", "Hi there!"); }); server.begin(); } void loop() { server.handleClient(); } Wifiネットワークに接続するためのコードがないことに注意してください。ただし、チップは起動のたびにローカルのWPA2で保護されたネットワークに接続します。私はチップにpingを実行でき、ブラウザは「こんにちは!」http経由のメッセージでは、シリアルメッセージが出力されます。 これはどのようにして可能ですか?ESP8266はどういうわけかWifi情報を保持していますか?おそらく完全に上書きされなかった古いOTAデータのためでしょうか? 私はplatformioを使用しています。これが私のplatformio.ini全体です。 [env:d1_mini] platform = espressif8266 board = d1_mini framework = arduino ここにコンパイルとアップロードのログを投稿しました:https://pastebin.com/BtGrFZiu
10 esp8266  wifi 

2
.ino Arduino SketchはGCC-AVRで直接コンパイルできますか?
さて、ArduinoとC ++やその他の同様の質問など、ウェブ全体でこれらの質問を見てきました。また、回答の大部分は、抽象化された情報以外の方法ではコンパイルの違いにさえ触れません。 私の質問は、.cppファイルまたは他の同様のc ++ファイル拡張子に変更された.inoファイルがGCC-AVRを使用してコンパイルされる方法の(設定ではなく)実際の違いを解決することを目的としています。少なくともArduinoヘッダーファイルを含める必要があることはわかっていますが、それ以上に、たとえばGCC-AVRなどを使用して.inoを.cppファイルにコンパイルすると、コンパイルエラーが発生します。簡単にするために、古典的な瞬きの例を使用して違いを説明しましょう。または、より良いコードスニペットを使用する場合は、必ず、スニペットを回答に含め、違いを完全に説明してください。 どちらがより良い使用方法またはツールであるかについての意見はありません。 ご参考までに。開発にPlatformioを使用していて、コンパイル中にバックグラウンドで変換プロセスが発生していることに気付きました。そこで実際に何が起こっているのかを理解しようとしているので、Arduinoでコーディングすると、「純粋な」C ++バージョンも理解できます。 事前に私の質問にあなたの思慮深い回答をありがとう。

2
/ dev / ttyACM0と/ dev / ttyS0の違い(LinuxでのArduino IDEポート)
Arduino IDEを使用して、スケッチをArduino Unoにアップロードします。私のOSはLinux Ubuntu 14.04 LTSです。Arduino IDEには、Arduino Unoとの通信用にデフォルトで2つのポートがあります。 /dev/ttyACM0 /dev/ttyS0 これら2つのポートの違いは何ですか? 「ACM0」と「S0」はどういう意味ですか? これらのポートのパラメーターを記述する構成ファイルは、OSフォルダー構造のどこかにありますか? を選択/dev/ttyACM0すると、Arduino Unoにデータを送信できることを知っています。ただし、選択しても機能しません/dev/ttyS0。 これらのポートが正確に何であるかをよりよく理解したいだけです。

4
遅延を最小限に抑えるためのワイヤレス技術の選択
私はレフリーが合図を出し、複数のプレーヤーがボタンを押すという、パブクイズプロジェクトを起草しています。最初にプッシュした人が答えを出す権利を獲得します。 すべてのボタン(審判の+ Xプレーヤー)をワイヤレスにしたい。最高のクイズプレーヤーは信号から10ミリ秒以内にボタンをクリックできるため、異なるボタン間のpingの変動が非常に小さいことが非常に重要です。「ボタンが遅れる!」と叫ぶことはできません。一方、私は必要以上に高価で複雑な技術を使いたくありません。 SO、使用するのに最適なワイヤレス技術は何でしょうか?同様のプロジェクトからのあなたの経験を共有してください(または理論的な知識:)これが私がこれまでに調査したものです(私が間違っている場合は修正してください): Bluetooth 4 LE(RFduinoと同様)長所:3〜6ミリ秒のレイテンシ(広告)、低エネルギー短所:コスト、デバイスへのボタンは7つ以下 Wi-fiの長所:2ミリ秒のレイテンシ(Wi-Fiルーターにpingを送信しただけ)、必要に応じて数十個のボタン短所:コスト、電力消費 RFデータトランシーバー長所:知らない、コストは少し小さいようです短所:同じ周波数の複数のボタンは、おそらく多くのノイズを作成します 最も単純な「無線リモート」長所:すべて電気機械式であるため遅延がなく、データがない短所:同じ周波数の複数のボタンが機能しない それで、私は何かを逃しましたか?どんな指導にも感謝します。

1
1線式デバイスのエミュレーション
私がやりたいのは、ATTiny ICを1線式バスのスレーブにし、独自のS / Nと特定の機能のコマンドリストを設定することです。 私が知りたいのは、arduinoサイトの1線ライブラリを使用してデータをスレーブとして送信できるかどうかです。 たとえば、要求された情報をマスターに報告する複数のタイプのセンサーを備えた1つの部屋にスレーブを配置したり、マスターがブラインドのようなものを制御するようにスレーブに指示したりできます。 質問 バスラインを監視し、マスターからのリクエストに応答し、通常のセンサーがデータを送信する方法も考慮する必要がありますか?最高の機能を得るには、どの周波数でスレーブを実行する必要がありますか? メモとして、寄生電力は使用しません。

1
ソフトウェアからArduinoをリセットする方法
ご存知のように、シリアルモニターを開くと、Arduino IDEがArduinoをリセットします。私のプログラムにもそれをしてもらいたいです。しかし、私は方法がわかりません。 Arduino IDEのソースコード(Serial.java&SerialMonitor.java)を調べましたが、resetコマンドの送信先が見つかりません。それはどこにある? C#を使用してシリアルと通信します。
10 serial  reset 

1
CTCモードでのtimer3の設定-サーボライブラリとの競合
1秒あたり800回関数を呼び出すためにタイマーを設定したいと思います。私は1024のプリスケーラーでArduino MegaとTimer3を使用しています。プリスケーラーファクターを選択するには、次の手順を検討しました。 CPU周波数:16MHz タイマー分解能:65536(16ビット) ^ 6 / 16x10:選択されたプリスケーラによって分周CPUのFREQ 1024 = 15625 残りを必要な周波数62500/800 = 19で割ります。 結果+ 1をOCR3レジスタに格納します。 次の表を使用して、TCCR3Bのレジスタを設定しました。 エラー コードをコンパイルすることは不可能です。これは、コンパイラによって返されるエラーです。 Servo \ Servo.cpp.o:関数 '__vector_32'内:C:\ Program Files(x86)\ Arduino \ libraries \ Servo / Servo.cpp:110:multiple definition of '__vector_32' AccelPart1_35.cpp.o:C:\プログラムファイル(x86)\ Arduino / AccelPart1_35.ino:457:最初にここで定義c:/ program files(x86)/ arduino / hardware / tools / avr / bin …

1
割り込みによるパルスのカウント
12,500 Hzの方形波からのパルスをカウントして出力をトリガーしようとしています。ここに私がこれまでに持っているコードがあります。Arduinoがリセットされると、25 msのサンプルで315がシリアルに出力されます。315 x 40 =12600。これは完璧に機能しているように思えます。 私の唯一の問題は、ボードのリセット時に一度だけこの番号を返すことです。同じコードをに移動するとvoid loop、連続してカウントされ、一定しない戻り値が返されます。 ループセクションに何を入れる必要があるのか​​理解していないので、一定期間を超えて取得している入力ピンのトグルの数を繰り返し正確にカウントできるため、12,500の存在に基づいて出力に何かを行うことができますHz信号かどうか。 volatile int IRQcount; int pin = 2; int pin_irq = 0; //IRQ that matches to pin 2 void setup() { // Put your setup code here, to run once: Serial.begin (9600); attachInterrupt(pin_irq, IRQcounter, RISING); delay(25); detachInterrupt(pin); Serial.print(F("Counted = ")); Serial.println(IRQcount); } …
10 interrupt 

3
ArduinoスケッチからC関数を呼び出す方法は?
Arduinoのスケッチを使用してCファイルに含まれている関数を呼び出す方法があるかどうか知りたいのですが? 私のCファイルは関数を宣言して定義しています。乱雑な関数定義をArduinoスケッチに配置することを節約するために、関数をスケッチから直接呼び出します。 ArduinoとCを使用してこれを行う標準的な方法はありますか?これがスケッチです: #include "crc16.h"; void setup(){ } void loop(){ CalculateCRC16("<09M", 4); } これはトリミングされたCファイルです。 #include <stdio.h> #include <stdint.h> uint16_t crctable[256] = { 0x0000, 0x1189,..... uint16_t // Returns Calculated CRC value CalculateCRC16( // Call example CalculateCRC16("<09M", 4); const void *c_ptr, // Pointer to byte array to perform CRC on size_t len) …

3
誰かが、タイマーのセットアップに使用されるこの奇妙なコードを説明できますか?
他の人が書いたスケッチを見ていると、次のようなコードに出会うことがあります。 TCCR1A = 0; TCCR1B = 0; TCNT1 = 34286; TCCR1B |= (1 << CS12); TIMSK1 |= (1 << TOIE1); 私が知っているのは、それがタイミング/タイマーと関係があることです(私はそう思います)。このようにコードを解読(および作成)するにはどうすればよいですか?どのようなものがありTCCR1A、TCCR1B、TCNT1、CS12、TIMSK1、とTOIE1?

2
トランジスタ、mosfet、リレーはいつ使用すればよいですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? Arduino Stack Exchangeのトピックとなるように質問を更新してください。 6年前休業。 私はいくつかのリレーに慣れていますが、それらは特に白熱電球や他の120V AC装置のような大きな負荷に役立ちます。ただし、60 mAを使用する(Arduinoには多すぎる)一緒にリンクされた(並列の)LEDの束にリレーを使用するのはやり過ぎのようです。また、頻繁にオン/オフしたり、PWMを実行したりしても機能しません。トランジスタやMOSFETについて聞いたことがありますが、それらについては少し知っています。それぞれをいつ使用する必要があり、どのタイプを取得するかをどのようにして知ることができますか?また、リレーはトランジスタ/ MOSFETよりも高価になる可能性があるようです。 編集: Arduinoでこれらをどのように使用できますか?

3
Node MCU v3(LoLin)には組み込みLEDはありませんか?
シンプルなLED点滅プログラムを試してみましたが、LoLin Node MCU v3に組み込まれているLEDを動作させることができませんでした。LED_BUILTIN定数は、16 / GPIO16 / D0ピンに設定されています。 いくつかの記事とQAを読んで、ノードMCUボードのピン16にオンボードLEDがあるはずだと思います。しかし、このポートをアドレス指定しても何も起こりません。 同じコードで、RXピンのピン2にあるデータLEDを点滅させることができます。 LoLin Node MCU v3にビルトインLEDがないか、ボードのLEDが壊れている可能性がありますか?
10 nodemcu 

6
Arduino UnoからSoftwareSerialポート経由でESP8266にATコマンドを送信します
ゴール Arduino UNOから、ATコマンドをSoftwareSerialポート経由でESP8266に送信し、結果を受信します。 現在の状態 ATコマンドを送信して何も返さない(ワイヤリングスキーム1)、またはATコマンドを送信してガベージバックを返す(ワイヤリングスキーム2)。 Arduinoをパススルーとして使用して(リソースセクションにリストされているチュートリアルで説明されているように)、ATコマンドを送信できます。ESP8266と115200ボーで通信できることがわかりました。 これは実行した結果ですAT+GMR: AT version:0.40.0.0(Aug 8 2015 14:45:58) SDK version:1.3.0 Ai-Thinker Technology Co.,Ltd. Build:1.3.0.2 Sep 11 2015 11:48:04 配線図1 !! 緑のワイヤーをArduino Unoのピン3に、黄色のワイヤーをピン2に接続しています。写真が示唆するように1と0ではありません!! 配線図2 上記と同じ配線ですが、RXとTXを逆にしました。緑のワイヤーはピン2に接続され、黄色のワイヤーはピン3に接続されています。 コード これはArduino Unoで実行されています #include <SoftwareSerial.h> SoftwareSerial esp8266(2, 3); void setup() { // Open serial communications and wait for port to open: Serial.begin(115200); …

3
arduino-millis()
Arduinoリファレンスからコピー-millis() ヒント:millisのパラメーターはunsigned longであることに注意してください。プログラマーがintなどの他のデータ型を使用して計算しようとすると、エラーが生成される場合があります。 どんな数学?ミリで作業しているときに除外される他の種類の処理は何ですか? 誰かがこのステートメントを明確にしたり、例を挙げたりできますか?
10 millis  data-type 

4
Arduinoタイムクロックの精度
現在、PJRCタイムライブラリ(http://www.pjrc.com/teensy/td_libs_Time.html)を使用してArduinoタイムクロックを作成しようとしています。ほとんどのArduinoボードは16MHzクロックと単一の共振器で動作しているため、一定の時間が経過すると時刻が「非同期」になる可能性があることを知っています。 ただし、84 MHzクロックのArduino DUEで使用した場合、Timeライブラリの精度について誰かが知っているかどうか疑問に思いました。私はそれをテストしてきました、そして今のところ、時計は数時間同期されています。ありがとう!
10 time  arduino-due 

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