我意識到我的方式錯誤,我設置不必要的Rx和Tx管腳的pinMode。由於我認爲將Rx引腳設置爲OUTPUT實際上並不適用,所以我在Rx線上輸出數據,並在Tx線上接收數據!答案是不分配方向,只讓SoftwareSerial處理引腳。按順序傳遞參數(Rx,Tx)。
這裏是工作的好很多我的乾淨的代碼:
#include <SoftwareSerial.h>
const int Rx = 0; // pin 5 on ATtiny - DI/MOSI
const int Tx = 1; // pin 6 on ATtiny - DO/MISO
const int ButtonIn = 2;
const int OK_LED = 4;
int buttonState = 0;
SoftwareSerial serialBT(Rx, Tx);
void setup()
{
pinMode(ButtonIn, INPUT);
pinMode(OK_LED, OUTPUT);
serialBT.begin(9600);
}
void loop()
{
buttonState = digitalRead(ButtonIn);
if (buttonState == 0)
{
serialBT.print("$"); // $$$ enters RN42 command mode
serialBT.print("$");
serialBT.print("$");
delay(3000);
serialBT.println("R,1");
digitalWrite(OK_LED, HIGH);
delay(5000);
digitalWrite(OK_LED, LOW);
}
}
入住[此帖]圖(https://stackoverflow.com/a/15552137/17034)。正如你所看到的,MOSI是從主機角度看的輸出引腳。所以一個簡單的解釋是你找到的網頁將它用作奴隸。很難判斷這是否是預期的,當您也可以提供URL時,請不要使用屏幕截圖來記錄您的問題。 –
是的,我明白你的觀點。儘管在進一步的思考中它應該用到什麼樣的引腳,SoftwareSerial有點突出,所以它們只是用作GPIO的? –