原文出處:https://www.phodal.com/blog/bare-minimum-iot-system-mcu-commucation/
在我們完成了前面的幾部分之后,我們也需要把這最后一部分解決,這里更多的是硬件,Arduino的存在可以讓硬件更簡單。
Arduino 是一款便捷靈活、方便上手的開源電子原型平臺,包含硬件(各種型號的arduino板)和軟件(arduino IDE)。它適用于藝術(shù)家、設(shè)計師、愛好者和對于“互動”有興趣的朋友們。
那么讓我們先來看看我們寫的代碼。
void setup() {
Serial.begin(9600);
pinMode(13,OUTPUT);
}
int serialData;
void loop() {
String inString = "";
while (Serial.available()> 0)
{
int inChar = Serial.read();
if (isDigit(inChar)) {
inString += (char)inChar;
}
serialData=inString.toInt();
Serial.print(serialData);
}
if(serialData==1){
digitalWrite(13,HIGH);
}else{
digitalWrite(13,LOW);
}
}
這個代碼看上去似乎會有點復(fù)雜,但是讓我們看點基礎(chǔ)的,也就是由Arduino來控制一個LED的亮和滅。
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
這個也就是來自于官方的示例程序,而我們要做的東西也和這個差不多,只是這個是自動的,上面那個是由串口通信來實現(xiàn)的。
串行接口是一種可以將接受來自CPU的并行數(shù)據(jù)字符轉(zhuǎn)換為連續(xù)的串行數(shù)據(jù)流發(fā)送出去,同時可將接受的串行數(shù)據(jù)流轉(zhuǎn)換為并行的數(shù)據(jù)字符供給CPU的器件。一般完成這種功能的電路,我們稱為串行接口電路。
簡單地來說,我們誻就是用這個來實現(xiàn)通信的,用之前的RaspberryPI 發(fā)送1和0給Arduino。那么我們在Arduino上就只是接受和執(zhí)行,這個由loop里面的if來執(zhí)行
如果你真心不喜歡51上的復(fù)雜的串口,那么我想Arduino又是解放雙手的東西了。
Serial.begin(9600);
這個就是串口初始化,速率為9600。
while (Serial.available()<0)
{
int inChar = Serial.read();
if (isDigit(inChar)) {
inString += (char)inChar;
}
serialData=inString.toInt();
用于讀取的就是這么一行
int inChar=Serial.read()
而下面的部分則是剛我們接收到的數(shù)據(jù)轉(zhuǎn)換為1,由于接到的為char類型,那么我們需要轉(zhuǎn)為轉(zhuǎn)為Int進行判斷。
只是為了寫給需要的同學(xué)用的,也可以直接在上面用if(serialData=='1'),上面寫可以讓后期擴展的時候方便一點。
更多建議: