タグ付けされた質問 「arduino-uno」

Arduino Unoは、最も一般的なArduinoボードです。これは、ATmega328Pマイクロコントローラに基づいています。

5
Arduinoはどのようにして特定の(つまり56 kHz)キャリア周波数を出力できますか?
私は、2点間でデータをワイヤレスで送信するための自由空間光学プロジェクトに取り組んでいます。これを達成するために、送信機には56 kHzの搬送周波数でパルスするArduino Unoに接続されたIR LEDを使用し、受信機には56 kHzのIR検出器モジュールを持つ2番目のArduinoを使用しています。 キャリア周波数を作成するために、pin highコマンドとpin lowコマンドの間にdelayMicroseconds()を使用してみました。この種の方法は機能しますが、周波数は常に同じであるとは限らず、信号をパルスするための追加の遅延(つまり、関数を呼び出してデクリメントするのに必要な時間)によって、信号が変化する可能性があります。 ATmega328のデータシートを読むと、チップのタイマーを使用してより正確なパルスを設定する方法があるようです。それは可能ですか?可能であれば、タイマーを使用して56 kHzパルスをどのように作成しますか?

2
Arduino Unoには2つのクリスタルがありますか?
この写真を見てください: ボード上の「大きな銀色」のもの(赤)は、Arduinoの有名な16 MHzクリスタルであることにほとんどの人が同意していると思います。それはごく最近まで私が信じていたものです。 私は退屈していたので、Arduino Unoを見ると、別のクリスタル(黄色)のように見えることがわかりました。それはプロミニにあるもののように見えます。XTALピンの近くにもあります。2回目に回路図を調べたところ、ボード上に2つのクリスタルがあるようです。 これらの2つのうち実際にXTALピンに接続されているのはどれですか。なぜ2つあるのですか。

10
Arduinoで正弦(および余弦)を計算するさまざまな方法(および最速)
私のシステム(ロボットアーム)の角度を計算するために、Arduino Unoボードを使用しています。角度は、ADCの全範囲を使用した、ADCからの実際の10ビット値(0〜1023)です。ここでは、正弦と余弦の両方が正である第1象限(0〜90度)でのみ動作するので、負の数の問題はありません。私の疑問は3つの質問で表すことができます。 Arduinoでこれらの三角関数を計算する別の方法は何ですか? 同じことをする最も速い方法は何ですか? Arduino IDEにはsin()関数とcos()関数がありますが、Arduinoは実際にそれらをどのように計算しますか(ルックアップテーブルや近似などを使用する場合と同様)。それらは明白な解決策のように見えますが、実際に試す前に、実際の実装を知りたいと思います。 PS:私は、Arduino IDEの標準コーディングとアセンブリコーディングのほか、言及されていないその他のオプションにも対応しています。また、デジタルシステムでは避けられないエラーや近似の問題もありません。ただし、可能であれば、起こり得るエラーの範囲について言及しておくとよい

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 …

1
Arduinoの電源自動選択ロジックは、調整された5VとUSB 5Vを短絡させますか?
Arduino UNO r3のリファレンスデザインから、Vinが6.6V未満の場合、USBVCCはmosfet T1を介して+ 5Vに接続されることがわかります。Vinが6.6V未満の場合、これは2つのソースを短絡させませんか?レギュレーターU1(NCP1117)のデータシートには、5Vバージョンの入力範囲が6.5Vと記載されています。 この質問は、ArduinoをUSBと5Vピンで同時に給電できるかどうかを研究しているときに頭に浮かびました。そうしないようにという多くの警告があり、とにかく大丈夫だと言う人もいます。Vin / PWRINが接続されていない場合、または6.6V /〜7.3V未満の場合、これによりUSB 5Vが外部5Vと短絡することを理解していますが、これが設計上とにかく発生する可能性があることを考えると、どれほど悪いか(上記の理論が正しい場合) )?

5
Arduinoのデジタルピンから直接リレーを接続することが望ましくない理由
Arduinoを介したリレーの制御に関するさまざまな回路図を調べた後、ほとんどの場合、リレーはIから5ボルトの出力を直接リレーに供給するのではなく、個別の電源をリレーコイルに切り替えるために使用されていることに気付きましたArduinoの/ Oピン。たとえば、5ボルトのDPDTリレーと小型のDCモーターがあります。Atmel328プロセッサを使用して、Arduino UNO(SMDクローン)から直接両方を駆動したいですか?続行することをお勧めしますか? そうでない場合(可能性が高い): 誰かが詳細な説明をすることはできますか?現在の制限などに関する重要な注意事項もあるでしょうか? Arduinoを危険にさらすことなく、そのようなコンポーネントをどのように制御できますか?これを達成するためのいくつかの一般的な手段は何ですか? 同様に、一般的にArduinoボード(または任意のマイクロコントローラーユニット)に損害を与える可能性のある他のデバイスは何ですか? 私は非常に慎重になりたい初心者です。ありがとう。

2
内部抵抗と外部抵抗のパフォーマンス
内部と外部のプルアップ/ダウン抵抗で配線されたボタン間に、パフォーマンス上の大きなトレードオフはありますか?これとこれのような単純なボタンを配線するときに、外部抵抗の使用を説明するチュートリアルがたくさんあります。ただし、Arduino / AVRには内部プルアップ抵抗が含まれているため、ここに示すように、外部抵抗なしでボタンを配線できます。 抵抗を追加して設計を複雑にする理由はありますか?

2
I2Cによる書き込みスケッチ
純粋なArduinoの質問ではありません。私は実際にはスタンドアロンのATmega168を使用しています。これまでのところ、AVR-ISPプログラマー(AVR Studioから作業中)を使用してチップをプログラミングしています。すべてが完了すると、チップはカバーされ、I2Cピンにしかアクセスできなくなります。MISO、MOSIなどのピンは到達不能になります。 I2Cピンを使用して、チップに焼き付けられたプログラムを更新する方法があるのか​​と思っていました。ブートローダーを再度書き込む必要はありませんが、必要に応じてプログラムを更新するだけです。

2
Arduinoの中断(ピン変更時)
割り込み関数を使用して、から受け取った値を配列に書き込みますdigitalRead()。 void setup() { Serial.begin(115200); attachInterrupt(0, test_func, CHANGE); } void test_func(){ if(digitalRead(pin)==HIGH){ test_array[x]=1; } else if(digitalRead(pin)==LOW){ test_array[x]=0; } x=x+1; } その問題は、印刷するときに、またはのtest_arrayような値があることです。111000 私が理解しているようにCHANGE、attachInterrupt()関数でオプションを使用する場合、データシーケンスは常に0101010101繰り返さないでください。 無線モジュールからのデータであるため、データは非常に速く変化します。
8 arduino-uno  c  isr 

1
Arduino UnoにデジタルPWMピンが6つしかない場合、最大12のサーボをどのようにサポートできますか?
よると、この: サーボライブラリは、ほとんどのArduinoボードで最大12モーター、Arduino Megaで最大48モーターをサポートします。Mega以外のボードでは、ライブラリを使用すると、ピンにサーボがあるかどうかに関係なく、ピン9および10のanalogWrite()(PWM)機能が無効になります。Megaでは、PWM機能を妨げることなく最大12個のサーボを使用できます。12〜23個のモーターを使用すると、ピン11および12のPWMが無効になります。 しかし、によると、この: デジタルI / Oピン14(そのうち6つはPWM出力を提供) では、PWM出力を提供できるデジタルI / Oピンが6つしかない場合、Unoは6つ以上のサーボをどのように制御できますか?

1
5vボードで3.3vチップをプログラムできますか?
先ほどGertboardを購入しましたが、搭載されている機能の1つがATMega328(DIP)です。ただし、GertboardはRaspberry Piで使用するように設計されているため、3.3vでのみ動作するため、クロック速度は約12MHzに制限されます。 ただし、Raspberry Piを介してプログラミングするのはかなり面倒です。代わりに、チップをArduino Unoボードに転送して、デスクトップPCからスケッチをアップロードできるようにします。次に、それを通常の操作のためにGertboardに戻します。 問題は、私のUnoがより一般的な5v / 16MHzで動作することです。 これを試みても安全ですか?IDEで構成を変更して、異なるクロック速度を考慮するように指示する必要がありますか?

1
SainSmart UnoクローンのSVGピンは何ですか?
Arduino Uno R3と互換性のあるSainSmartクローンボードを購入しました。各標準IOピンに加えて、3つの追加ピン(オス)の列があります。それらは、S、V、およびGとマークされた列に配置されます。 彼らはこの画像で見ることができます: それらのほとんどは、SainSmartおよびUNOロゴのすぐ上にあります。アナログピンに対応するSVGピンは、マイクロプロセッサのすぐ下にあります。 これらのピンは何のためのものですか?これは一部のアプリケーションの標準形式ですか、それともSainSmartに固有の形式ですか?

2
ArduinoをMATLABで1ミリ秒間一時停止するにはどうすればよいですか?
このコード行を使用して、MATLABをUnoに接続することができました。a = arduino('COM4');このパッケージを通じて:ArduinoのMatlabサポートパッケージ。 現在、MATLABは[Arduinoのような]すべてのコンポーネントを同期する私のメインスクリプトです。 以下を使用するだけで、ステッピングモーターにパルスを送信できます。 void loop() { digitalWrite(2, HIGH); delay(1); digitalWrite(2, LOW); delay(1); } これは正常に動作し、モーターが約2ミリ秒に1回動きます。私の問題は、MATLABのインターフェイスを介してこれと同じ遅延を生成する方法が見つからないことです。MATLABにpause()関数があることは知っていますが、MATLABで次のようにループを設定すると、 a = arduino('COM4'); for m = 1:400 a.digitalWrite(2, 1); pause(0.001); a.digitalWrite(2, 0); pause(0.001); end 各ステップは長くかかります-それぞれ約200ミリ秒。 Arduinoに送信されるデジタル高/低の間の一時停止を作成するための他のオプションは何ですか?Arduinoを介して、Matlabからの結果を制御できたらいいですね。

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