Arduino

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

4
I / Oピンを定義する最良の方法は何ですか?
私は次のような定義を読みます const int ledPin = 9; そしてまた #define ledPin 9 私は次のような定義を知っています int ledPin = 9; これを変更しない場合(通常は変更しない場合)は悪い習慣ですが、Arduinoプログラムではこれを何度か目にしています。他の2つのうちどちらが好ましいですか?


3
SAM3X8E(Arduino Due)ピンIOレジスタ
Arduino DueのIOレジスタはどのように機能しますか?ちょうどセットArduinoの宇野ではDDRx、その後、PINx読むために、PORTx書き込みに、私はArduinoのために同じことをしたいのですが、それは、次のような多くのより多くのレジスタを、持っているPIO_OWER、PIO_OSER、PIO_CODR、PIO_SODR、など私はArduinoの宇野間の対応を見つけないとArduino Dueレジスタ。 以下のようないくつかの便利な機能もありpio_clear、pio_set、pio_get、と他の人が、すべてがここで説明します: http://asf.atmel.com/docs/3.19.0/sam3x/html/group__sam__drivers__pio__group.html ここで、上記の3つの関数の機能は理解できたと思いますが、他の機能は理解できていません。たとえば、次のとおりです。 pio_configure (Pio *p_pio, const pio_type_t ul_type, const uint32_t ul_mask, const uint32_t ul_attribute) 私は何を把握することはできませんul_attributeとul_typeしています。

5
CH340 USB-シリアルデバイスでのシリアル番号の設定
http://playground.arduino.cc/Linux/Udevを読むと、FTDI USB-Serial EEPROMに書き込みを行って特定のSerialNumberを設定し、特定のnano /その他のarduinoを識別してそれを具体的に処理する方法があるようですUDEVで。 QinHeng Electronics HL-340 USB-シリアルアダプターを備えたナノスタイルのボードがあります。これは明らかにFTDIチップではないため、FTDIプログラマーは機能しません。誰もがこのチップで同じことをするための情報を見つけることができる代わりのユーティリティを知っていますか? 現在、デバイスは次のもので自身を識別しています。 [ 6850.608080] usb 2-1.2: new full-speed USB device number 7 using ehci-pci [ 6850.701496] usb 2-1.2: New USB device found, idVendor=1a86, idProduct=7523 [ 6850.701505] usb 2-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0 [ 6850.701510] usb 2-1.2: Product: USB2.0-Serial [ 6850.702201] …

7
I2C LCDシリアルインターフェースボードがテキストを表示しない(ピンが間違っていますか?)
1602のLCD画面があり、それだけで問題なく動作します。しかし、私が別に購入したI2C / IIC LCDコントローラーを使用していくつかのピンを解放したかったのです。 コントローラーが正しいアドレスでArduino UNOと通信しているようですが、テキストを表示できません。デフォルトでは(コードなし)、LCDには16の実線の「正方形」が1行あるようです。私のコードでアドレス27を使用すると、LCDは16マスの2行に変わります(下の写真を参照)。このコードでは、バックライトを3回点滅させることもできます。しかし、私は2行の正方形以外は何も得ることができません。(完全なコードはこの質問の最後にあります)。 F MalpartidaによるLiquidCrystal_I2Cライブラリを使用していますが、これは一般的に使用されているようです。 私が使用すべきより良いライブラリはありますか? 私はそれがコードで使用されている間違ったピンであるかどうか疑問に思っています。オンラインで見るすべてのスケッチは、次のピンを使用しています。 // addr,en,rw,rs,d4,d5,d6,d7,bl,blpol LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address しかし、私がオンラインで見る1602 LCDはすべて、私の写真と同じように、私のピンと同じです。 これらのピンは標準のようです: さらに混乱を招くように、LCDボードのピンは左側の1から始まりますが、デフォルトのコードのピンは0から始まるようです!そこで、コードのピンをLCDボードの番号に変更してみました。LCDが2行の正方形に変化しなくなり、バックライトが点滅しなくなりました。次に、各ピンから1を引いて(0から開始する)、同じ結果を得ました。次に、デフォルトのピンマイナス1を使用してみましたが、同じ結果が得られました。したがって、デフォルトのピンはどういうわけかより正確ですか?何が悪いのですか? 他の誰かがこれらのI2Cコントローラーの1つをそれらのために動作させるようにしましたか? 完全なコード: /* YourDuino.com Example Software Sketch 16 character 2 line I2C Display Backpack Interface labelled "YwRobot …
9 i2c  lcd 

1
SPI Arduino pinMode()との競合、バグ?
pinModeSPI関数を呼び出す前に設定した次の最小限の例を考えてみます。 #include <SPI.h> void setup() { pinMode(10, OUTPUT); SPI.begin(10); SPI.setDataMode(10,SPI_MODE1); } void loop() { delay(1000); SPI.transfer(10,1); } でSPI.transfer(10,1)が呼び出されるloop()と、スレーブで選択されたピンが1.65Vに下がりますが、本来あるべき0にはなりません。(下の画像を参照) 次のpinMode()ようにを呼び出さない場合: #include <SPI.h> void setup() { SPI.begin(10); SPI.setDataMode(10,SPI_MODE1); } void loop() { delay(1000); SPI.transfer(10,1); } 呼び出し時に期待するものを取得しますSPI.transfer。 それはバグですか、それともその動作について説明がありますか? お時間とご関心をよろしくお願いいたします。

4
voidループ外の関数はどのように機能しますか?
Arduinoのスケッチで、void setup()1回実行するvoid loop()部分とループし続ける部分を使用することに慣れています。メインの外部にvoid関数があるとどうなりますvoid loop()か?これらはすべて並行してループし続けますか、それとも次々に実行されますか?または、特定のvoid関数は、特定の基準が満たされた場合にのみ実行されますか(whileループなど)? たとえば、以下のコードではvoid receiveData(int byteCount)、void sendData()関数と関数はいつ実行されますか? //I2C_test //This code demonstrates communication via an I2C bus between a raspberry pi and an arduino. //When the Raspberry pi (master) sends data to the Arduino (slave), the Arduino uses this //data to control a motor. After the Arduino has recieved data …

3
すべての配線は正しいのに、LCD 16 * 2に文字が表示されないのはなぜですか?
最近、私は典型的な16 * 2 LCD(液晶ディスプレイ)ディスプレイをArduino Unoにリンクし、すべてのピンをリ​​ンクしました。 これが私の接続です:(最初にLCDピン) 1 = GND、2 = + 5v、4 = 11、6 = 12、11 = 5、12 = 4、12 = 3、14 = 2、15 =バックライトプラス、16 =バックライトマイナス #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // …

2
Python 3およびモジュールシリアルを介してArduino UNOに番号を送信する方法
私はArduino(および一般的なコンピュータプログラミング)を初めて使用するので、この質問がばかげているようでしたら申し訳ありません。 基本的なarduino-LED接続をセットアップしたら、シリアルポートを介してINTEGERSをarduinoに送信できません。「m」や「o」などの文字は簡単に送信できます。ただし、数値を送信すると、取得できないように見えます。 これがArduinoコードです。理想的には、USBポートからPythonまたはシリアルモニターを介して値を取得し、その値に従ってLEDの輝度を調整します。(値は[0,255]の範囲内でなければなりません)。 注:私はARDUINO UNOとPYTHON 3を使用しています // -------------------------- int LED = 10; int number; void setup(){ pinMode(LED,OUTPUT); Serial.begin(9600); } void loop(){ number = Serial.read(); Serial.print(number); Serial.print('\n'); if(number == -1){ number = 0; } else if(number > 255){ number = 255; } else if(number < 0){ number = 0; } analogWrite(LED,number); …

6
非常に長いdelay()が可能ですか?
12時間ごとに開閉する小さなドアを開閉しようとしています。12時間delay()、delay(43 200 000 000)で小さなループスクリプトを作成できるかどうか疑問に思いました。私は推測する?しかし、それが可能であるか、推奨できるか、あるいはその両方であるかどうかはわかりません。いくつかのフィードバック/代替案(必要な場合)がいいでしょう:)

1
変数が1を超えるISRからアクセスされ、ISRの外部で共有されない場合、揮発性は必要ですか?
だ明確に文書化グローバルデータは、ISRとメインプログラムと共有されている場合、データのニーズが宣言されることをvolatile保証メモリの可視性にするために(それが唯一の1バイトのデータで十分、何も大きなニーズも保証アトミックに特別な手配を) 。ここに良いルールがあります: ISRの外部でのみ使用される変数は、揮発性であってはなりません。 ISR内でのみ使用される変数は、揮発性であってはなりません。 ISRの内部と外部の両方で使用される変数は、揮発性でなければなりません。 しかしvolatile、変数が1を超えるISRからアクセスされ、ISRの外部で共有されない場合に必要ですか?たとえば、static変数を使用して内部状態を維持する関数があります。 void func() { static volatile long counter; // volatile or not? // Do stuff with counter etc. } この関数は、ピン割り込みから、およびTimerOneライブラリからの2つの方法で呼び出されます。 attachInterrupt(0, func, CHANGE); Timer1.attachInterrupt(func); ISRに入ると、割り込みは自動的に無効になるため、アトミック性の問題はありませんが、これvolatileはコンパイラーの質問です。何がキャッシュされ、何がキャッシュされないかです。 もちろん、申し訳ありませんが安全です。
9 interrupt  timers  isr 

3
デジタル読み取りシリアルチュートリアル-抵抗値の計算
Arduino Digital Read Serialチュートリアルでは、シンプルなボタンの配線について説明します。私の質問は抵抗器を中心にしています。 なぜ抵抗器が必要なのですか? 私はこれを理解していると思いますが、間違っている場合は修正してください。入力ピンが低信号を読み取り、フロートしないようにするには、ボタンが押されていないときにピンをグラウンドに接続する必要があります。ボタンが押されると、5V信号がピンとグラウンドの両方に流れます。キルヒホフの電圧法則では、閉ループの合計電圧はゼロに等しい必要があるため、直接グラウンドに流れるこの5Vに対処する必要があります。そのため、ボタンとグランドの間に抵抗を配置しました。 抵抗値はどのように選択されましたか? これは私には不明確です。オームの法則によれば... resistance = voltage / current これは5V電源であり、Arduino Uno仕様では、このピンは40 mAのDC電流を提供するとしています。そう.. resistance = 5V / 0.04A = 125 Ohms でデジタル・リード・シリアルチュートリアル、なぜ我々は、10Kオームの抵抗を持っていますか?やりすぎですよね?これは別の質問につながります。唯一の目的が電圧を消去することである場合、あまりにも多くの抵抗を配置できますか? フィードバックをお寄せいただきありがとうございます。

4
Arduino互換のシリアルポートにMac OSXが表示されない
Arduino互換のFreaduinoボードatmega8を購入しました(Arduino ngまたはそれ以前のatmega8としてボードタイプを選択しました)。Arduino IDEをMac OS XとFTDIドライバーにインストールしました。しかし、ボードを接続すると、シリアルポートは次のようになります。 そして、プログラムをアップロードしようとすると、これは私が得るエラーです: 誰かが間違いを教えてくれますか?私は無知です。 更新:問題は、ドライバを正しくインストールしていなかったことです(私は推測します)。私はそれらをアンインストールして再インストールしましたが、完全に機能しました。同じくYouTubeチュートリアルも作成。http://youtu.be/BwatajQO_88



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