題:
Arduino Pro Micro,要從Tx引腳獲取數據嗎?
user3320919
2014-05-09 03:08:00 UTC
view on stackexchange narkive permalink

我有一個帶有ATmega32u4的 Sparkfun Arduino Pro Micro和一個 Roving Networks RN32藍牙模塊

從理論上講,我應該能夠將藍牙的Rx焊接到arduino上的Tx,反之亦然,我應該通過藍牙進行串行通信。

我當然不知道。但是,作為第一個問題:我如何讓Arduino通過Tx引腳傳輸數據?

我沒有打ic就將其上傳到Arduino:

  void setup(){Serial.begin(9600);} void loop(){Serial.print(” HelloWurld“);}  

但是,何時我接通了O型示波器的電源,在Tx線上看不到任何信號。娜達我看到數據通過USB進入計算機的COM端口,但沒有通過Tx引腳進入。

如何讓Arduino在Tx引腳上輸出串行數據?

你有動力嗎?
示波器上的地面是否已連接至Arduino的地面?
是的,它具有+ 5v輸入,示波器位於arduino的gnd引腳上。如何通過TX(digital0)引腳推送串行數據?我知道這是一個代碼問題
您的代碼似乎很好
謝謝,但是我們倆都錯了。當我將此代碼放到arduino上,然後探查TX引腳(數字0)時,我什麼也沒看到,只是平坦的。但是,在我的windoes機器上的serialport程序上,我看到了“ helloWurld”消息。我暫時不關心串行端口程序。我需要數據從TX引腳而不是USB引腳輸出。那有意義嗎?
您是否嘗試過插針1?
那是RX引腳,是的,我已經嘗試過每個引腳來查看輸出。板上的所有引腳都是無聲的,芯片上的引腳太小而無法探測,更不用說焊接了。
TX引腳沒有任何東西。範圍設置就很好。作為健全性檢查,我能夠使TX引腳從+5變為0,沒有任何問題。切換到arduino循環調用大約需要2毫秒。下面是代碼:`void setup(){Serial.begin(9600); pinMode(5,OUTPUT);} void loop(){Serial.print(“ HelloWurld”); AnalogWrite(0,1); AnalogWrite(0,0);}`這只是給TX引腳加脈衝的引力。通過數字接頭,您是指電路板側面的引腳還是atmega芯片本身的引腳?非常感謝您的協助,我非常感謝。
嗯,這可能就是混亂的來源。這不是股票UNO,這是一個表現像一個的SparkFun板。我也在嘗試與SparkFun尋求幫助。發表您的評論:那您是說ATMEGA芯片的TX線嗎?我試圖了解如何將數據從TX引腳輸出,看不到5V擺幅,然後使USB將數據傳輸到我的計算機。對不起,我真的不明白。非常感謝您的幫助。
[![在此處輸入圖片描述](http://i.stack.imgur.com/yftHW.jpg)](http://i.stack.imgur.com/yftHW.jpg)只是想保留完整的引腳圖。 。
五 答案:
Chris Stratton
2014-05-10 01:33:33 UTC
view on stackexchange narkive permalink

您似乎有一塊“ pro micro”樣式的板,其中USB通信直接來自主ATmega32u4處理器,而不是作為串行數據生成,然後像傳統Arduino一樣轉發到不同的USB串行轉換器。 如果您清楚地用語言而不是僅僅作為產品鏈接來說明您使用的木板類型,那麼您的問題可以更快地得到解決。。。 p>

根據官方Arduino Pro Micro的文檔

序列:0(RX)和1(TX)。使用ATmega32U4硬件串行功能來接收(RX)和發送(TX)TTL串行數據。請注意,在Micro上,Serial類是指USB(CDC)通信。對於引腳0和1上的TTL串行,請使用Serial1類。

因此,要在硬件UART上生成輸出,您需要將所有出現的 Serial 更改為 Serial1

  void setup(){Serial1.begin(9600);} void loop(){Serial1.print(“ HelloWurld”);}  

傳輸數據將來自於ATmega32u4針腳21,該針腳為標頭上的“ D1”(數字針腳1)。如果您想進行探測,那將是最好的選擇。

如果您希望通過未連接到ATmega32u4 UART的不同引腳傳輸數據, (如您使用數字引腳5的示例所暗示的那樣),您必須改為使用 SoftwareSerial或類似的實現方式將串行數據從通用I / O引腳中剔除。

例如(受此示例的啟發):

  SoftwareSerial mySerial(4,5); // RX,TXvoid setup(){mySerial.begin(9600);} void loop(){mySerial.print(“ HelloWurld”);}  
很好,克里斯! +1
jfpoilpret
2014-05-09 09:51:58 UTC
view on stackexchange narkive permalink

藍牙板使用 3.3V ,而不是數據表中的5V。

因此,您需要改變電壓電平和Arduino板( 5V )之間。請注意,規格表顯示瞭如何使用2個電阻(表典型應用電路中的 R1 R2 ,第5頁)輕鬆實現此目的。

此外,在藍牙模塊上,RS232接口具有4個引腳:

  • UART_TX
  • UART_RX
  • UART_CTS
  • UART_RTS

UART_CTS 必須為 0 ,以確保設備讀取傳入的字節。通常,這是通過內部下拉電阻完成的,但必須確保未將該引腳連接到 + V

最後,請確保模塊的波特率正確設置為 9600波特,與您的程序相同。

我知道所有這些,謝謝您。但是,我的問題更為基本。我需要從TX引腳中獲取數據,以便將藍牙連接到其中。如果我無法從Arduino板上的引腳上獲取數據,則藍牙是無用的。如何從arduino板上獲取串行數據? USB引腳可以很好地發送串行數據,但是我無法讓其他引腳輸出數據。是否需要焊接到USB引腳才能將數據傳輸到藍牙?非常感謝您的幫助,不勝感激
DarkXDroid
2014-11-14 01:07:42 UTC
view on stackexchange narkive permalink

只需將串行引腳從藍牙模塊連接到相應的Pro Micro引腳即可:TX至RX和RX至TX。

然後尋找像這樣的數據:

  void setup(){Serial1.begin(9600); //引腳0和1上的初始化硬件串行端口-Bluetooth Serial.begin(9600); //初始化虛擬串行端口-機器Keyboard.begin(); //初始化HID-鍵盤} void loop(){if(Serial1.available()> 0){char myData = Serial1.read()//將數據從藍牙/傳感器發送到計算機-虛擬串行端口Serial.println( myData); //模擬HID設備-鍵盤if(myData == 0x7F){//檢測android退格鍵Keyboard.write(0xB2); //將收到的代碼char轉換為Backspace鍵的PC / Linux ascii鍵代碼。這可以在不同的操作系統之間改變! } else {Keyboard.write(myData); }}}  
Sackhorn
2016-01-15 08:24:49 UTC
view on stackexchange narkive permalink

所以我偶然遇到了類似的問題,但是使用了HC-05模塊。因此,由於在決賽期間我手上有太多空閒時間(不,我沒有),所以我決定創建一個小型github存儲庫,該存儲庫可能會在某個時候對某人有所幫助。 https://github.com/Sackhorn/HC-05-Pro-Micro-Hookup

代碼為:

  //寫對於pro micro ///這些被證明是有用的//http://arduino.stackexchange.com/questions/1471/arduino-pro-micro-get-data-out-of-tx-pin//https://forum .sparkfun.com / viewtopic.php?f = 32&t = 38889&sid = 8178cdb38005ff33cc380a5da34fb583&start = 15void setup(){pinMode(9,OUTPUT); digitalWrite(9,HIGH); Serial.begin(9600); Serial1.begin(38400);} void loop(){//如果(Serial1.available())Serial.write(Serial1.read()),Serial1是TX和RX引腳上的物理串行連接。 //如果我(Serial.available())Serial1.write(Serial.read());}  

enter image description here

很好地使用Serial和Serial1。我發布了您的代碼和圖表的編輯。
TheSnarfster
2015-10-11 06:32:29 UTC
view on stackexchange narkive permalink

您可能還想嘗試“ SoftwareSerial”庫。這樣,您幾乎可以將任何所需的引腳用於串行通信。實際上,您可以有幾個串行端口。

但是請務必在SoftwareSerial庫中進行閱讀。它確實有一些限制。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...