Arduino

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

4
Arduinoから物理プロトタイプに移行する方法
私はArduinoからPCBへの移行について少し読んでいましたが、それは少し困難なようです。今のところ、私が本当にやりたいことは、私が構築したものを取り、いくつかの変更を加えて、実際にそのケースを作成し、すべてが接続されたままであることを確認することです。 プロジェクトの写真を添付し​​ました。私がやろうとしているのは、ボックスの中に4つのプッシュボタンがあり、その横にLEDがあるボックスを作成することです。おそらく、押しボタンとLEDが置かれるスペース用にフォームボードのカットアウトを作成します。押しボタンとLEDの配線は、Arduino自体とサーボモーターと共に、フォームボードの下に隠れている必要があります。 押しボタンとLEDのワイヤーを本質的に「長く」し、すべてのコンポーネントがブレッドボードに固定されていることを確認するために何をする必要がありますか(特に押しボタンが飛び出すのが好きです)?PCBを作成せずにこれを行う方法はありますか?私はコンポーネントをプロトボードにはんだ付けする概念を理解していますが、回路の切断/印刷などに関しては、私は本当に混乱しています。 ガイダンスをいただければ幸いです。私の配線設定にも問題がある場合は、それについての学習体験も気に入っています。ありがとう!


2
バッテリー駆動の場合のArduino ADC基準電圧
ADCを使用してArduinoへのバッテリー電源を監視する可能性があります。これはかなり単純明快でシンプルです(特にArduino APIを使用している場合)。ただし、バッテリーがArduinoに電力を供給していて、外部で調整されていない場合、ADCの基準電圧はバッテリーとともに常に低下していませんか?言い換えれば、バッテリの電圧が実際に低下している場合でも、ADC値は常に同じ値(最大値)を読み取らないのではないでしょうか。 この場合、バッテリ電圧を測定することは非効率的で無意味です。

4
PulseInの機能は何ですか?
サイトで見つけた超音波センサーのコードがあります。これがコードです: #define trigPin 12 #define echoPin 13 void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { int duration, distance; digitalWrite(trigPin, HIGH); delayMicroseconds(1000); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; if (distance >= 200 || distance <= 0){ Serial.println("Out of range"); } else …

2
オブジェクトメモリを静的に割り当てます。動的に初期化しますか?
コンストラクターがパラメーターを渡されるオブジェクトがあります。コンパイル時にパラメーター値がわかっている場合は、オブジェクトを静的に構築できます。 static FOOOBJ foo(3); (それは実際には静的に、つまりコンパイラーによって行われるのではなく、実際にセットアップ中に行われることを理解しています)。 しかし、コンパイル時にパラメーター値がわからない場合でも、オブジェクトにスペースを事前に割り当てておきますが、実行時にそのスペースにオブジェクトを構築します。別の.initialize()方法なしでそれを行うことができますか?

5
ArduinoとAVRの違い/関係は何ですか?
Arduinoはマイクロコントローラープラットフォームだといつも思っていましたが、実際のマイクロコントローラーは、Atmelが作成したAVRチップ、またはRISC ISAに基づいて他の人が作成したAVRチップです。このAVRチップによって。私の理解は正しいですか? ArduinoとAVRの違い/関係は何ですか?
9 avr 


4
ライブラリのピンマッピングを構成可能にする適切な方法は何ですか?
特定のハードウェアチップと対話するためのAPIを提供するいくつかのライブラリを使用しています(これらのドライバーを作成しますか?)。ただし、カスタムボードやシールドが異なると、チップが異なるピンにマッピングされ、ライブラリをケースごとに変更する必要があります。ライブラリを変更する必要がある場合、Arduino IDEライブラリマネージャーではうまく機能しません。 ライブラリ自体を毎回変更する必要がないように、この構成を公開するための推奨/推奨パターンはありますか? これは、ボードのピンレイアウトに一致するように変更する必要があるパーツが文書化されている例です。
8 library  pins 

4
Unixタイムスタンプとの変換
Arduinoで日付、時間、分、秒をミリ秒単位のUnixタイムスタンプに変換する最良の方法は何ですか?RTC(日付、時間、分、秒など)を使用し、BLEを介してUnixタイムスタンプを通信しているため、この変換が必要です オンラインでコードスニペットを見つけましたが、まだ十分にテストしていません。 byte second = epoch%60; epoch /= 60; byte minute = epoch%60; epoch /= 60; byte hour = epoch%24; epoch /= 24; unsigned int years = epoch/(365*4+1)*4; epoch %= 365*4+1; unsigned int year; for (year=3; year>0; year--) { if (epoch >= days[year][0]) break; } unsigned int month; for (month=11; …
8 time  rtc  data-type 

4
delay(time); vs if(millis()-previous> time); そしてドリフト
古いプロジェクトを通過すると、次のようなコードが2つのArduino Dueにありました void loop() { foo(); delay(time); } 心に取って大多数の文献を使用してdelay();、私としてこれを再コード void loop() { static unsigned long PrevTime; if(millis()-PrevTime>time) { foo(); PrevTime=millis(); } } ただし、これにより、2つのデバイスが以前はドリフトしなかった期間にドリフトする状況が発生したようです 私の質問は2つあります。 なぜif(millis()-PrevTime>time)よりドリフトを引き起こすの でしょうdelay(time)か? 戻ることなくこのドリフトを防ぐ方法はありdelay(time)ますか?

1
I2Cで「NACK受信」とはどういう意味ですか?
I2Cについて読んでいます。このサイトで: http://playground.arduino.cc/Main/WireLibraryDetailedReference#endTransmission それはendTransmission()次のステータスコードのいずれかを返すことができると言います: 0:送信に成功しました。 1:送信バッファーがtwiバッファーに対して大きすぎます。twi.hで設定されたTWIバッファー長は、Wire.hで設定された送信バッファー長と同等であるため、これは発生しません。 2:アドレスが送信され、NACKが受信されました。これは問題であり、マスターはSTOP条件を送信する必要があります。 3:データが送信され、NACKが受信されました。これは、スレーブが送信する必要がないことを意味します。マスターは、STOP条件または繰り返しSTARTを送信できます。4:別のtwiエラーが発生しました(たとえば、マスターがバスアービトレーションを失った)。 Arduinoに何も接続しない場合(またはSDA / SCLの両方にプルアップ抵抗を使用する場合)、常にステータス2を取得します。それは何か他の意味ですか? これが私のサンプルコードです #include "Wire.h" void setup() { Serial.begin(9600); Wire.begin(); } void loop() { Wire.beginTransmission(42); Wire.write(0); byte status = Wire.endTransmission(); Serial.println(status); // always prints 2 }
8 i2c 

2
なぜアナログピンは互いに影響し合うのですか?
センサーがあり、アナログ信号を生成します。 すべてのアナログデータを読み取り、自分のコンピューターに送信しています。 uint8_t sensors[] = { A0,A1,A2,A3,A4,A5,A6 }; const int len = sizeof(sensors) / sizeof(sensors[0]); void loop(void) { for (size_t i = 0; i < len; i++) { auto sensor = sensors[i]; int sensorValue = analogRead(sensor); // Convert the analogue reading (which goes from 0 - 1023) to a voltage …

5
delayMicrosecondsをより正確にできますか?
私はDMXデータをビットバンにしようとしています、そしてそれは4usパルスを必要とします。Arduinoの遅延がどれほど優れているかを確認するために確認している結果にはあまり運がありません...かなりひどいようです。 ここに私がした簡単な小さなテストがあります: unsigned long ptime; void setup() { Serial.begin(9600); } void loop() { ptime = micros(); delayMicroseconds(4); Serial.println(micros() - ptime); delay(1000); //just to keep the serial monitor from going nuts } そして結果: 8 4 8 4 4 4 4 4 8 8 8 8 4 8 8 4 4 8 …

5
エラー:Arduino 101の待機中にタイムアウトになりました-私にできることは何ですか?
Arduino 101を受け取ったばかりなので、興奮の波の中で次のことを行いました... それと私のMacbook ProをUSBケーブルで接続した Arduino IDEバージョンを開始 1.6.7 コードを少し書きました はじめにに従って選択Tools | Boards | Boards Manager...してインストールIntel Curie Boards 選択済み Tools | Board: "Arduino 101" 選択済み Tools | port: "/dev/cu.usbmodemFA141 (Arduino 101)" 選択済み Sketch | Upload 私は素晴らしいものを期待していましたが、エラーが発生しました: Starting upload script Payload: /var/folders/jr/5rmqcrqj58103d4p1f6_3sjr0000gn/T/build7c6ce067b9e8a57f9917c651ec494989.tmp/orientation.ino.bin Waiting for device... ERROR: Timed out waiting for Arduino 101. これをデバッグするために何かできることはありますか、またはおそらくステップを逃しましたか? …

1
RAMからバイナリコードを実行する方法はありますか?
PCからオブジェクトコードをロードするための限られた機能と単純なI / O周辺機器を使用して、アセンブリ言語でプログラムできる安価なシングルボードコンピューターを探しています。 理想的には、自分のマシン上のすべてのコードを妥当な時間内に記述できるようにしたいと考えています。OSを邪魔したくありません。RAMにコードを書き込んでから分岐して実行するプログラムが欲しいからです。Arduinoは、アセンブリプログラミングに適したシステムのシンプルさに関する限り、おそらく私の最良の選択ですが、ハーバードアーキテクチャがあり、RAMから実行することはできません。 数年前、私はVon Neumannアーキテクチャの8ビットCPUを使用していました。ROM、RAMなどにマップされているかどうかに関係なく、実行を任意のアドレスに分岐できます。これが今私がやりたいことです。 おそらく、RAMに書き込まれたオペコードのインタプリタをフラッシュメモリに書き込んでロードできますが、この種の仮想マシンがすでに存在しない限り、これは非常に複雑で時間のかかるソリューションです。 Arduinoを使用する他の回避策や、使用する可能性のある他のマイクロコントローラーについて何か提案はありますか? ありがとう! ピエール

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