18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 基礎入門 >> Arduino開發學習 >> 正文

Arduino開發語言基礎_Arduino語言基礎_arduino是用什麽語言寫的?

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2023/11/6

arduino語言基礎

arduino是用什麽(me) 語言寫(xie) 的?
Arduino使用的編程語言主要是基於(yu) C++語言的一種簡化版本,稱為(wei) Arduino語言或Wiring語言。Arduino語言在C++的基礎上進行了一些簡化和封裝,使得用戶可以更加輕鬆地進行硬件編程。Arduino語言的編程方式類似於(yu) C++,包括變量、控製結構、函數等基本語法,同時還有許多庫函數可以方便用戶進行各種操作,如控製GPIO口、讀取傳(chuan) 感器數據、進行串口通訊等。Arduino語言的代碼可以在Arduino IDE中編寫(xie) 和調試,然後上傳(chuan) 到Arduino板上運行。

1、arduino程序框架

/* 1、此程序通過按鍵開關(guan) 來控製LED燈的亮滅,當按鍵按下時LED燈點亮,鬆開是LED燈熄滅; 2、LED接13引腳 3、按鍵開關(guan) 接4引腳 */ #include <stdio.h> #define LED_PIN 13 #define BUTTON_PIN 4 float temp = 0; bool button_state = false; int power = 0; void setup() { // put your setup code here, to run once: pinMode(LED_pin,OUTPUT); pinMode(BUTTON_pin,INPUT); Serial.begin(9600); } void loop() { // put your main code here, to run repeatedly: button_satte = digitalRead(BUTTON_pin); Serial.println(button_satte); if (button_satte) { digitalWrite(LED_pin,HIGH); } }

2、基本語法

2.1 注釋符

//

/ *

*/

2.2 語句結束符

;

2.3 代碼塊分界符

{ }

2.4 宏定義符

#define

2.5 頭文件引用符

#include

3、數據類型

3.1 基本數據類型

數據類型 日常寫法 C/C++中寫法 C/C++中類型標識符 數值範圍
整數 1,100, 1,100 int -32768~32767
小數 3.14,2.7345 3.14,2.7345 float -3.4028235E+38~3.4028235E+38
字符 a,b,我 'a','b','我' char -128~127
文本 遇見你真高興! “遇見你真高興!” string
邏輯判斷 對、錯 true,false bool true,false

3.2 基本數據類型轉換函數

char(value)

int(value)

float(value)

String(value)

itoa(int value,char*string,int radix)

atoi(const char *nptr)

3.3 整型數不同進製表示

整數常量默認為(wei) 十進製,但在前麵加上特殊前綴表示為(wei) 其他進製數。

進製 例子 格式 備注
十進製 123
二進製 0b1111011 前綴0b或0B 隻適用於8位的值(0到255)字符0-1有效
八進製 0173 前綴0 字符0-7有效
十六進製 0x7B 前綴0x或0X 字符0-9,A-F,A-F有效

3.4 數組 array

數組是相同類型的數據組成的集合,數組中的每個(ge) 元素都被默認分配一個(ge) 索引(下標),我們(men) 可以通過數組名[ 索引 ]的方式訪問數組中的元素。

創建數組

語法格式:

datatype arrayname[ 數組元素個(ge) 數];

int Ints[6]; int P[] = {2, 4, 8, 3, 6}; int SensVals[6] = {2, 4, -8, 3, 2}; char message[6] = "hello";

datatype:聲明數組中存放元素的數據類型;

arrayname:數組名稱,像給變量命名一樣給數組起一個(ge) 名字;

數組初始化

我們(men) 可以在定義(yi) 數組的同時進行初始化,即給數組賦值:

int a[4] = {20, 345, 700, 22};

{ }中的值即為(wei) 各元素的初值,各值之間用,(逗號)隔開。

數組賦初值需要注意以下幾點:

1) 可以隻給部分元素賦初值。當{ }中值的個(ge) 數少於(yu) 元素個(ge) 數時,隻給前麵部分元素賦值。例如:

int a[10]={12, 19, 22 , 993, 344};

表示隻給 a[0] ~ a[4] 這5個(ge) 元素賦值,而後麵5個(ge) 元素自動賦0值。

當賦值的元素少於(yu) 數組總體(ti) 元素的時候,剩餘(yu) 的元素自動初始化為(wei) 0:對於(yu) int類型數據,就是整數0;對於(yu) char類型數據,就是字符 ‘\0’(空字符);對於(yu) float類型數據,就是小數0.0。

我們(men) 可以通過下麵的形式將數組的所有元素初始化為(wei) 0:

int a[10] = {0}; char c[10] = {0}; float f[10] = {0};

由於(yu) 剩餘(yu) 的元素會(hui) 自動初始化為(wei) 0,所以隻需要給第0個(ge) 元素賦0值即可。

使用數組

數組中的每個(ge) 元素都有一個(ge) 序號,這個(ge) 序號從(cong) 0開始,而不是從(cong) 我們(men) 熟悉的1開始,稱為(wei) 下標(Index)。使用數組元素時,指明下標即可,形式為(wei) :

arrayName[index]

arrayName 為(wei) 數組名稱,index 為(wei) 下標。例如,a[0] 表示第0個(ge) 元素,a[3] 表示第3個(ge) 元素

實例:

void setup() { Serial.begin(9600); int a[6] = {299, 34, 92, 100}; // 定義(yi) 數組 for(int i=0; i<6; i++){ //串口監視器輸出數組元素 Serial.print("a["); Serial.print(i); Serial.print("] ="); Serial.println(a[i]); Serial.println(""); } } void loop() { while(1){continue;} }

我們(men) 還可以根據需要定義(yi) 二維、三維等多維數組,此處忽略。

4、變量

4.1 什麽是變量

數學課中我們(men) 是不是這樣寫(xie) 長 = 10,寬 = 5,

在程序中我們(men) 也經常需要用一個(ge) 名稱來代表某個(ge) 數據,

如 length = 10,width = 5, 這裏的length、width就是變量,我們(men) 把數據放到變量中,後麵要用到這個(ge) 數據時我們(men) 直接用變量名就可以了。

4.2 變量的作用

變量是用來存儲(chu) 程序運行過程中用到的數據,使用變量可以增加程序的簡潔性、易讀性和易維護性。

4.3 變量的定義和應用

定義(yi) 變量語法格式

變量是用來存儲(chu) 數據的,數據有整型、小數、文本等多種類型,因此在C/C++中定義(yi) 變量必須先聲明變量類型,變量定義(yi) 語法如下:

int length,width;

float square;

char ch;

string name ="arduino"

c/c++中變量的值可以變化,但變量的類型不能變化。

變量的應用

定義(yi) 完變量,我們(men) 在代碼中就可以對變量進行賦值、引用

length =10;

width = 5;

square = length * width

printf(square)

變量命名規則:

變量名可以是字母、數字和下劃線的組合,但必須遵守以下規則:

1、變量名必須以字母或下劃線開頭,不能是數字;

2、變量名中的字母是區分大小寫(xie) 的。比如 a 和 A 是不同的變量名,num 和 Num 也是不同的變量名。

3、變量名不能是關(guan) 鍵字;

變量命名規範建議

1、見名知義(yi) ;

2、小駝峰格式;

3、下劃線分段格式;

5、數據運算符

5.1 算術運算符

加 +

減 -

乘 *

除 / 注意:被除數和除數都為(wei) 整數,結果隻保留整數,舍去小數部分,想得到小數需把被除數或除數任意一個(ge) 轉換為(wei) 小數

取餘(yu) %

自增 ++

自減 --

5.2 賦值符

=

複合賦值運算符

+=

-=

*=

/=

%=

5.3 關係運算符

等於(yu) ==

不等於(yu) !=

大於(yu) >

小於(yu) <

大於(yu) 等於(yu) >=

小於(yu) 等於(yu) <=

5.4 邏輯運算符(布爾運算符)

邏輯與(yu) &&

邏輯或 ||

邏輯非 !

5.5 位運算符

位與(yu) &

位或 |

位異或 ^

位非 ~

左移 <<

右移 >>

6、程序三大流程控製

6.1 順序結構

6.2 分支結構(選擇結構)

if 語句 (單分支結構)

通過 if 語句,可以讓程序判斷某一個(ge) 條件是否達到,並且根據判斷結果執行相應的程序。

if語句語法格式:

if(判斷條件) { 語句塊 }

代碼執行邏輯:

如果 “判斷條件” 為(wei) 真則執行語句塊,否則將不執行該語句塊,if語句流程圖:


 


if ...else 語句 (雙分支結構)

語法格式:

if( 判斷條件 ) { 語句塊1 } else { 語句塊2 }

代碼執行邏輯:

如果 “判斷條件” 為(wei) 真則執行”語句塊1″。為(wei) 假將執行”語句塊2″,if...else語句流程圖:


 


實例:

void setup() { Serial.begin(9600); //開始串口通訊 pinMode(2, INPUT_PULLUP); //將引腳2設置為(wei) 輸入上拉模式 pinMode(13, OUTPUT); } void loop() { int sensorVal = digitalRead(2); //將開關(guan) 狀態數值讀取到變量中 Serial.println(sensorVal); //輸出開關(guan) 狀態數值 //按鈕被按下後,引腳13連接的LED將被點亮。按鈕沒有按下時,LED熄滅。 //如果按鈕沒有按下,熄滅LED。否則,點亮LED if (sensorVal == HIGH) { //按鈕沒有按下 digitalWrite(13, LOW); //熄滅LED } else { //否則 digitalWrite(13, HIGH); //點亮LED } }

多個(ge) if ...else 語句 (多分支結構)

語法格式:

if(判斷條件1){ 語句塊1 } else if(判斷條件2){ 語句塊2 }else if(判斷條件3){ 語句塊3 }else if(判斷條件m){ 語句塊m }else{ 語句塊n }

代碼執行邏輯:

從(cong) 上到下依次檢測判斷條件,當某個(ge) 判斷條件成立時,則執行其對應的語句塊。如果所有判斷條件都不成立,則執行語句塊n。

switch case語句

switch語句通過對一個(ge) 變量的值與(yu) case語句中指定的值進行比較。當一個(ge) case語句中的指定值與(yu) switch語句中的變量相匹配,就會(hui) 運行這個(ge) case語句下的代碼。通過switch case語句,實現多分支功能。

語法格式:

switch (var) { case 1: //當var等於(yu) 1時執行這裏的程序 代碼塊1 break; case 2: 代碼塊2 //當var等於(yu) 2時執行這裏的程序 break; default: // 如果var的值與(yu) 以上case中的值都不匹配 // 則執行這裏的程序 代碼塊3 break; }

switch case語句使用注意事項:

1) 當變量var和某個(ge) case後麵的數值匹配成功後,如果沒有break, 程序會(hui) 執行該分支以及後麵所有分支的語句。
2) case 後麵必須是一個(ge) 整數,或者是結果為(wei) 整數的表達式,但不能包含任何變量。
3) case 後麵不能使用字符串,但可以使用字符,使用字符時需要用單引號把字符括起來,如: case: 'b'。
4) default 不是必須的。當沒有 default 時,如果所有 case 都匹配失敗,那麽(me) 就什麽(me) 都不執行。

實例

void setup() { Serial.begin(9600); // 初始化串口通訊 for (int thisPin = 2; thisPin < 7; thisPin++) {// 初始化Arduino連接LED的引腳 pinMode(thisPin, OUTPUT); } } void loop() { if (Serial.available() > 0) { int inByte = Serial.read(); // Arduino用switch語句,根據接收到的不同信息進行相應的反應。 switch (inByte) { case 'a': digitalWrite(2, HIGH); break; case 'b': digitalWrite(3, HIGH); break; case 'c': digitalWrite(4, HIGH); break; case 'd': digitalWrite(5, HIGH); break; case 'e': digitalWrite(6, HIGH); break; default: // 熄滅所有LED: for (int thisPin = 2; thisPin < 7; thisPin++) { digitalWrite(thisPin, LOW); } break; } } }

6.3 循環結構

while 循環語句

語法格式:

while(表達式){ 循環體(ti) }

while循環執行邏輯:先計算表達式的值,當值為(wei) 真(非0)時, 執行循環體(ti) 語句;執行完循環體(ti) 語句,再次計算表達式的值,如果為(wei) 真,繼續執行循環體(ti) ……這個(ge) 過程會(hui) 一直重複,直到表達式的值為(wei) 假(0)才退出循環。流程圖:


 


實例:

void setup() { // 初始化串口通訊 Serial.begin(9600); } void loop() { int i=1, sum=0; while(i<=100){ //判斷i是否小於(yu) 等於(yu) 零 sum+=i; //當i小於(yu) 等於(yu) 零時, i++; //執行循環體(ti) 中的語句。 } Serial.print ("sum = "); //通過串口監視器輸出 Serial.println (sum); //while循環結束後的sum值 delay (5000); // 延遲5秒鍾 }

do while循環語句

語法格式:

do{ 代碼塊語句 } while(表達式);

程序執行邏輯:先執行循環體(ti) 代碼塊語句,然後再判斷表達式是否為(wei) 真,如果為(wei) 真則繼續循環;如果為(wei) 假,則終止循環。因此,do-while 循環至少要執行一次循環體(ti) 。

for 循環

語法格式:

for(表達式1; 表達式2; 表達式3){ 語句塊 }

for循環的執行過程如下:

1) 先執行表達式1。

2) 再執行表達式2,若其值為(wei) 真(非0),則執行括號中的語句塊,否則將結束循環。

3) 執行完循環體(ti) 中的語句塊,再執行表達式3。

4) 重複執行步驟 2) 和 3),直到“表達式2”的值為(wei) 假,就結束循環。

注意:表達式1僅(jin) 在第一次循環時執行,以後都不會(hui) 再執行,可以認為(wei) 這是一個(ge) 初始化語句。


 


void setup(){ int i, sum=0; for(i=1; i<=100; i++){ sum = sum + i; } } void loop(){ }

使用for語句應該注意

1) for循環中的“表達式1(循環變量賦初值)”、“表達式2(循環條件)”和“表達式3(循環變量增量)”都是選擇項,即可以缺省,但分號(;)不能缺省。

2) 省略了“表達式1(循環變量賦初值)”,表示不對循環控製變量賦初值。

3) 省略了“表達式2(循環條件)”,如果不做其它處理就會(hui) 成為(wei) 死循環。

4) 省略了“表達式3(循環變量增量)”,則不對循環控製變量進行操作,這時可在語句體(ti) 中加入修改循環控製變量的語句。如以下示例:

for( i=1; i<=100; ){ sum=sum+i; i++; }

c語言中,for 循環使用更加靈活,完全可以取代 while 循環

實例:

int PWMpin = 9; //引腳9通過限流電阻連接LED void setup() { } void loop() { for (int i=0; i <= 255; i++){ //開始運行for循環語句 analogWrite(PWMpin, i); //對引腳9寫(xie) 入i的數值 delay(10); //延遲10毫秒 } }

break語句

break語句用於(yu) 繞過正常循環條件並中止do,for,或while循環,也可用於(yu) 中止switch語句。

例如:

void setup() { // 初始化串口通訊 Serial.begin(9600); } void loop() { int i; int sum = 0; while(1){ //循環條件為(wei) 死循環 sum+=i; i++; if(i>100){ break; } } Serial.print ("sum = "); //通過串口監視器輸出 Serial.println (sum); //do-while循環結束後的sum值 delay (5000); // 延遲5秒鍾 }

continue語句

continue語句的作用是跳過循環體(ti) 中剩餘(yu) 的語句而強製進入下一次循環。continue語句用於(yu) while、for 循環中,常與(yu) if 條件語句一起使用,判斷條件是否成立。

void setup() { pinMode (3, OUTPUT); } void loop() { for (int x = 0; x < 255; x ++) { if (x > 40 && x < 120){ // 當x大於(yu) 40或小於(yu) 120 continue; // 跳過此次循環 } analogWrite(3, x); } }

return

7、函數

7.1 什麽是函數

封裝在一起,實現一定功能的代碼就是函數。函數的使用可以使程序模塊化,增加代碼的複用度。

void delay(int ms) { int start = micros(); while (ms > 0) { yield(); while ( ms > 0 && (micros() - start) >= 1000) { ms--; start += 1000; } } }

7.2 函數的定義(yi)

dataType  functionName( dataType1 param1, dataType2 param2 ... ){
    //body
}
  • dataType 是返回值類型,它可以是C語言中的任意數據類型,例如 int、float、char 等。
  • functionName 是函數名,命名規則和變量命名規則相同。函數名後麵的括號( )不能少。
  • body 是函數體(ti) ,它是函數需要執行的代碼,是函數的主體(ti) 部分。函數體(ti) 要用{ }包圍。
  • 如果有返回值,在函數體(ti) 中使用 return 語句返回。return 出來的數據的類型要和 dataType 一樣。
  • dataType1 param1, dataType2 param2 ...是參數列表。函數可以沒有參數,也可以有一個(ge) 或多個(ge) 參數,多個(ge) 參數之間由,分隔。參數本質上也是變量,定義(yi) 時要指明類型和名稱。

形式參數概念:

在定義(yi) 函數時的參數變量沒有具體(ti) 的數據,它隻能等到函數被調用時接收傳(chuan) 遞進來的數據,所以函數定義(yi) 時的參數稱為(wei) 形式參數,簡稱形參

例如:定義(yi) 一個(ge) 計算m到n之間所有整數的和,並返回結果

int sum(int m, int n){ int i, sum=0; for(i=m; i<=n; i++){ sum+=i; } return sum; }

return語句

終止一個(ge) 函數,並向調用此函數的函數返回一個(ge) 值

7.3 函數的調用

functionName(param1, param2, param3 ...);

functionName 是函數名稱,param1, param2, param3 ...是實參列表。實參的個(ge) 數和類型要和函數定義(yi) 時的參數個(ge) 數和類型一致。

實際參數概念:

函數被調用時給出的參數被賦予了具體(ti) 的數據,所以函數調用時的參數稱為(wei) 實際參數,簡稱實參。函數調用時,實參的值會(hui) 傳(chuan) 遞給形參。

int i = 10,j = 1000; void setup() { Serial.begin(9600); } void loop() { int sum1 = sum(1,100); Serial.Println(sum); Serial.Println(sum(i,j)); }

7.4 變量的作用域

所謂作用域(Scope),就是變量的有效使用範圍。變量都有自己的作用域。決(jue) 定變量作用域的是變量的定義(yi) 位置。

局部變量

定義(yi) 在函數內(nei) 部的變量稱為(wei) 局部變量(Local Variable),它的作用域僅(jin) 限於(yu) 函數內(nei) 部, 離開該函數後就是無效的,再使用就會(hui) 報錯。

全局變量

在所有函數外部定義(yi) 的變量稱為(wei) 全局變量(Global Variable),它的作用域默認是整個(ge) 程序。

8、arduino內置常用函數

8.1 數字 I/O函數

pinMode(pin_num,模式) //設置引腳的輸入輸出模式 digitalWrite(pin_num,value) //對數字引腳進行高低電平設置 digitalRead(pin_num) //讀取數字引腳狀態

8.2 模擬 I/O函數

analogRead(pin)  //從(cong) 模擬引腳讀取數值,範圍0到1023
analogWrite(pin,value) //向模擬引腳寫(xie) 入數值,範圍0到255,通過PWM占空比可以控製
              //LED燈亮度、電機的轉速等

8.3 時間函數

millis()//用來獲取Arduino開機後運行的時間長度,單位是毫秒,
        //最長可記錄接近50天左右的時間。如果超出記錄時間上限,記錄將從(cong) 0重新開始。
micros()//用來獲取Arduino開機後運行的時間長度,單位是微秒,
        //最長可記錄接近70天左右的時間。如果超出記錄時間上限,記錄將從(cong) 0重新開始。
delay(x)//用於(yu) 暫停程序運行。暫停時間可以由delay()函數的參數進行控製,
       //單位是毫秒(1秒鍾=1000毫秒)。
delayMicroseconds(x)//與(yu) delay()函數功能一樣,不同的是delayMicroseconds()的
                   //參數單位是微秒

8.4 產(chan) 生隨機數函數

random()函數 //生成並返回一個(ge) 隨機數

long randNumber; void setup(){ Serial.begin(9600); } void loop(){ randNumber = random(0, 300); //產(chan) 生0-300間的隨機數 Serial.println(randNumber); delay(50); }

randomSeed()函數 //用來產(chan) 生隨機種子

單獨使用random()函數所產(chan) 生的隨機數,在每一次程序重新啟動後,總是重複同一組隨機數字。如果希望程序重新啟動後產(chan) 生的隨機數值與(yu) 上一次程序運行時的隨機數不同,則需要使用randomSeed()函數。

在實際應用時,可以通過調用analogRead()函數讀取一個(ge) 空引腳,作為(wei) 隨機種子數值,或用micros()得到一個(ge) 時間作為(wei) 隨機數種子。

long randNumber; void setup(){ Serial.begin(9600); randomSeed(analogRead(A0)); //將引腳A0放空,每次程序啟動時所讀取的數值都是不同的。 //這麽(me) 做可以產(chan) 生真正的隨機種子值,從(cong) 而產(chan) 生隨機數值。 } void loop(){ randNumber = random(300); // 產(chan) 生隨機數 Serial.println(randNumber); delay(50); }

8.5 數學運算函數

min(x,y) //求兩(liang) 個(ge) 數之間的最小值
max(x,y)//求兩(liang) 個(ge) 數之間的最大值
abs(x) //求絕對值
pow(base, exponent) //指數運算函數,返回base數值的exponent次方
sqrt(value) //開方函數,返回value數值的平方根
sin(rad) //計算一個(ge) 角度的正玄值並返回,rad參數單位為(wei) 弧度,需要把度數轉換為(wei) 弧度
cos(rad) //計算一個(ge) 角度的餘(yu) 弦值並返回,rad參數單位為(wei) 弧度,需要把度數轉換為(wei) 弧度
tan(rad) //計算一個(ge) 角度的正玄值並返回,rad參數單位為(wei) 弧度,需要把度數轉換為(wei) 弧度

8.6 串口通訊函數

Serial.begin() //設置電腦與(yu) Arduino進行串口通訊時的數據傳(chuan) 輸速率(每秒傳(chuan) 輸bit數)
Serial.setTimeout(time)//用於(yu) 設置設備等待數據超時時間。單位毫秒,默認為(wei) 1000毫秒
Serial.print(value) //以字符形式向串口發送數據
Serial.println(value)//以字符形式向串口發送數據,並換行
Serial.available()//用於(yu) 檢查串口是否接收到數據。返回等待讀取的數據字節數。
Serial.parseInt()//用於(yu) 從(cong) 設備接收到的數據中尋找整數數值並返回。
Serial.read() //從(cong) 設備接收到數據中讀取一個(ge) 字節的數據。
Serial.readBytes(buffer, length)
//用於(yu) 從(cong) 設備接收的數據中讀取信息。讀取到的數據信息將存放在緩存變量中。
//該函數在讀取到指定字節數的信息或者達到設定時間後都會(hui) 停止函數執行並返回。
Serial.readBytesUntil(character, buffer, length)
//用於(yu) 從(cong) 設備接收到數據中讀取信息。讀取到的數據信息將存放在緩存變量中。
//該函數在滿足以下任一條件後都會(hui) 停止函數執行並且返回。
//– 讀取到指定終止字符
//– 讀取到指定字節數的信息
//– 達到設定時間(可使用setTimeout來設置)
Serial.readString()//用於(yu) 從(cong) 設備接收到數據中讀取數據信息。
                   //讀取到的信息將以字符串格式返回。
Serial.readStringUntil(terminator)
//用於(yu) 從(cong) 設備接收到的數據中讀取信息。讀取到的數據信息將以字符串形式返回。
//該函數在滿足以下任一條件後都會(hui) 停止函數執行並返回。
//– 讀取到指定終止字符
//– 達到設定時間(可使用setTimeout來設置)
Serial.write(val)
Serial.write(str)
Serial.write(buf, len)
//以二進製數據向串口發送數據,數據是一個(ge) 字節一個(ge) 字節地發送的,
//若以字符形式發送數字請使用print()代替。
參數
//val: 作為(wei) 單個(ge) 字節發送的數據
//str: 由一係列字節組成的字符串
//buf: 同一係列字節組成的數組
//len: 要發送的數組的長度

實例:

Serial.begin()、Serial.println()、Serial.parseInt()函數用法:
void setup() {
  // 啟動串口通訊
  Serial.begin(9600); 
  Serial.println();
}
void loop() {
  if (Serial.available()){              // 當串口接收到信息後   
    int serialData = Serial.parseInt(); // 使用parseInt查找接收到的信息中的整數
    Serial.print("serialData = ");      // 然後通過串口監視器輸出找到的數值
    Serial.println(serialData);
  }
}
Serial.read()用法:
void setup() {
  // 啟動串口通訊
  Serial.begin(9600); 
  Serial.println();
}
void loop() {
  while (Serial.available()){           // 當串口接收到信息後 
    char serialData = Serial.read();    // 將接收到的信息使用read讀取
    Serial.println((char)serialData);   // 然後通過串口監視器輸出read函數讀取的信息
  }
}
//char terminateChar =  'T';      // 建立終止字符
const int bufferLength = 10;    // 定義(yi) 緩存大小為(wei) 10個(ge) 字節
char serialBuffer[bufferLength];// 建立字符數組用於(yu) 緩存
void setup() {
  // 啟動串口通訊
  Serial.begin(9600); 
  Serial.println();
}
void loop() {
  if (Serial.available()){                      // 當串口接收到信息後  
    Serial.println("Received Serial Data:");  
    // 將接收到的信息使用readBytesUntil讀取
    //Serial.readBytesUntil(terminateChar, serialBuffer, bufferLength);   
    //將接收到的信息使用readBytes讀取
    Serial.readBytes(serialBuffer, bufferLength);
    for(int i=0; i<bufferLength; i++){          // 然後通過串口監視器輸出readBytes
      Serial.print(serialBuffer[i]);            // 函數所讀取的信息
    }
    Serial.println("");  
    Serial.println("Finished Printing Recevied Data.");
  }
}

Tags:Arduino,編程  
責任編輯:admin
相關文章列表
Arduino新手入門詳細教程係列之【Ⅱ:Arduino編程環境配置】
如何設置Arduino IDE、連接開發板以及上傳第一個草圖
Arduino入門(一)Arduino下載安裝,超級詳解_Arduino download
Arduino概述,Arduino開發板和Arduino IDE
Arduino 交通燈_arduino紅綠燈代碼 三色LED燈
Arduino——RGB三色燈
Arduino控製RGB三色LED燈實驗、程序代碼、連線圖、仿真_程序控製…
推薦 適用於Arduino平台的編程開發工具(arduino編程軟件下載)
Arduino開發——基於HC-SR04測距的智能垃圾桶,超聲波測距
基於 Arduino 的 OLED 菜單顯示_arduino 菜單OLED顯示
Arduino提高篇06—溫濕度OLED顯示_arduino溫濕度oled顯示
Arduino入門怎麽學_Arduino開發課程的教與學
總有一款適合你——Arduino開發板,各種開發板詳解
Arduino使用的單片機 ATMEGA328P引腳定義圖
詳解Arduino Uno開發板的引腳分配圖及定義 引腳定義
Arduino 程序結構
基於ATmega328的微控製器板原理圖 Arduino板UNO原理圖
Arduino 超詳細的開發入門指導
Arduino簡介
怎樣用Arduino編程
Arduino編程語言教程,Arduino和單片機的區別
Arduino是什麽?Arduino有什麽優勢
Arduino光敏電阻調節呼吸燈
Arduino使用光敏電阻實驗
遠程控製通訊--基於Arduino + ESP8266控製LED燈
arduino1602液晶屏電子時鍾
arduino是什麽_arduino介紹
使用Arduino播放《星球大戰》音樂 Arduino播放音樂
Arduino如何監測電池電壓
如何用Arduino同時控製多個舵機
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁麵
下到頁底
晶體管查詢