婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av

電子開發網

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

Arduino程序簡單入門_如何初始Arduino程序

作者:佚名    文章來源:網絡整理    點擊數:    更新時間:2024/4/6

文章目錄

一、結構

1.1 setup()

在Arduino中程序運行時將首先調用 setup() 函數。用于初始化變量、設置針腳的輸出\輸入類型、配置串口、引入類庫文件等等。每次 Arduino板子 上電或重啟后,setup 函數只運行一次。

int buttonPin = 3;
void setup()
{

  Serial.begin(9600);
  pinMode(buttonPin, INPUT);
}
void loop()
{

  // ...
}

1.2 loop()

在 setup() 函數中初始化和定義了變量,然后執行 loop() 函數。顧名思義,該函數在程序運行過程中不斷的循環,根據一些反饋,相應改變執行情況。通過該函數動態控制 Arduino 主控板。

int buttonPin = 3;  // setup 中初始化串口和按鍵針腳. 
void setup()
{

  beginSerial(9600);
  pinMode(buttonPin, INPUT);
}
// loop 中每次都檢查按鈕,如果按鈕被按下,就發送信息到串口
void loop()
{

  if (digitalRead(buttonPin) == HIGH)
    serialWrite('H');
  else
    serialWrite('L');
  delay(1000);
}

二、結構控制

結構控制這一塊和C語言類似,就是控制程序執行流程的分支、循環、順序結構的一些特定語法。
熟悉C語言的話,這塊不用過一眼就好。

2.1 if

if(條件判斷語句)和 ==、!=、<、>(比較運算符)
if 語句與比較運算符一起用于檢測某個條件是否達成,如某輸入值是否在特定值之上等。if 語句的語法是:

if (someVariable > 50)
{

  // 執行某些語句
}

本程序測試 someVariable 變量的值是否大于 50。當大于 50 時,執行一些語句。換句話說,只要 if 后面括號里的結果(稱之為測試表達式)為真,則執行大括號中的語句(稱之為執行語句塊);若為假,則跳過大括號中的語句。 if 語句后的大括號可以省略。若省略大括號,則只有一條語句(以分號結尾)成為執行語句。

if (x > 120) digitalWrite(LEDpin, HIGH); 
if (x > 120)
digitalWrite(LEDpin, HIGH); 
if (x > 120){
 digitalWrite(LEDpin, HIGH); } 
if (x > 120){
 
  digitalWrite(LEDpin1, HIGH);
  digitalWrite(LEDpin2, HIGH); 
}                                 // 以上所有書寫方式都正確

在小括號里求值的表達式,需要以下操作符:
比較運算操作符:
x == y(x 等于 y)
x != y(x 不等于 y)
x < y(x 小于 y)
x > y(x 大于 y)
x <= y(x 小于等于 y)
x >= y(x 大于等于 y)
警告:
注意使用賦值運算符的情況(如 if (x = 10))。一個“=”表示的是賦值運算符,作用是將 x 的值設為 10(將值 10 放入 x 變量的內存中)。兩個“=”表示的是比較運算符(如 if (x == 10)),用于測試 x 和 10 是否相等。后面這個語句只有 x 是 10 時才為真,而前面賦值的那個語句則永遠為真。
這是因為 C 語言按以下規則進行運算 if (x=10):10 賦值給 x(只要非 0 的數賦值的語句,其賦值表達式的值永遠為真),因此 x 現在值為 10。此時 if 的測試表達式值為 10,該值永遠為真,因為非 0 值永遠為真。所以,if (x = 10) 將永遠為真,這就不是我們運行 if 所期待的結果。另外,x 被賦值為 10,這也不是我們所期待的結果。
if 的另外一種分支條件控制結構是 if…else 形式。

2.2 if…else

if/else是比if更為高級的流程控制語句,它可以進行多次條件測試。比如,檢測模擬輸入的值,當它小于500時該執行哪些操作,大于或等于500時執行另外的操作。代碼如下:

if (pinFiveInput < 500)
{

  // 執行A操作
}
else
{

  // 執行B操作
}

else可以進行額外的if檢測,所以多個互斥的條件可以同時進行檢測。
測試將一個一個進行下去,直到某個測試結果為真,此時該測試相關的執行語句塊將被運行,然后程序就跳過剩下的檢測,直接執行到if/else的下一條語句。當所有檢測都為假時,若存在else語句塊,將執行默認的else語句塊。
注意else if語句塊可以沒有else語句塊。else if分支語句的數量無限制。

if (pinFiveInput < 500)
{

  // 執行A操作
}
else if (pinFiveInput >= 1000)
{

  // 執行B操作
}
else
{

  // 執行C操作
}

另外一種進行多種條件分支判斷的語句是switch case語句。

2.3 switch case

switch / case語句
和if語句相同,switch…case通過程序員設定的在不同條件下執行的代碼控制程序的流程。特別地,switch語句將變量值和case語句中設定的值進行比較。當一個case語句中的設定值與變量值相同時,這條case語句將被執行。
關鍵字break可用于退出switch語句,通常每條case語句都以break結尾。如果沒有break語句,switch語句將會一直執行接下來的語句(一直向下)直到遇見一個break,或者直到switch語句結尾。
例子

switch (var) {

case 1:
  //當var等于1時,執行一些語句
  break;
case 2
  //當var等于2時,執行一些語句
  break;
default: 
  //如果沒有任何匹配,執行default
  //default可有可不有
}

語法

switch (var) {

case label:
  // 聲明
  break;
case label:
  // 聲明
  break;
default: 
  // 聲明
}

參數
var: 用于與下面的case中的標簽進行比較的變量值
label: 與變量進行比較的值

2.4 for

for語句
描述
for語句用于重復執行一段在花括號之內的代碼。通常使用一個增量計數器計數并終止循環。for語句用于重復性的操作非常有效,通常與數組結合起來使用來操作數據、引腳。
for循環開頭有3個部分:
(初始化;條件;增量計數){
//語句
}

“初始化”只在循環開始執行一次。每次循環,都會檢測一次條件;如果條件為真,則執行語句和“增量計數”,之后再檢測條件。當條件為假時,循環終止。

例子

//用PWM引腳將LED變暗
int PWMpin = 10; //將一個LED與47Ω電阻串聯接在10腳
void setup()
{

//無需設置
}
void loop()
{

    for (int i=0; i <= 255; i++)
 {

       analogWrite(PWMpin, i);
       delay(10);
 }
}

編程提示
C語言的for循環語句比BASIC和其他電腦編程語言的for語句更靈活。除了分號以外,其他3個元素都能省略。同時,初始化,條件,增量計算可以是任何包括無關變量的有效C語句,任何C數據類型包括float。這些不尋常的for語句可能會解決一些困難的編程問題。
例如,在增量計數中使用乘法可以得到一個等比數列:

for(int x = 2; x < 100; x = x * 1.5){

 println(x);
}

生成:2,3,4,6,9,13,19,28,42,63,94

另一個例子,使用for循環使LED產生漸亮漸滅的效果:

void loop()
{

    int x = 1;
    for (int i = 0; i > -1; i = i + x)
 {

       analogWrite(PWMpin, i);
       if (i == 255) x = -1;             // 在峰值轉變方向
       delay(10);
 }
}

2.5 while

while循環
描述
while循環會無限的循環,直到括號內的判斷語句變為假。必須要有能改變判斷語句的東西,要不然while循環將永遠不會結束。這在您的代碼表現為一個遞增的變量,或一個外部條件,如傳感器的返回值。

語法
while(表達){
//語句
}

參數
表達:為真或為假的一個計算結果

例子

var = 0;
while(var < 200){

//重復一件事200遍
var++
}

2.6 do…while

do…while循環與while循環運行的方式是相近的,不過它的條件判斷是在每個循環的最后,所以這個語句至少會被運行一次,然后才被結束。
do
{
//語句
}while(測試條件);

例子

do{

 delay(50); //等待傳感器穩定
 X = readSensors(); //檢查傳感器取值
}while(X <100);  //當x小于100時,繼續運行

2.7 break

break用于退出do,for,while 循環,能繞過一般的判斷條件。它也能夠用于退出 switch語句。

例子

for (x = 0; x < 255; x ++)
{

    digitalWrite(PWMpin, x);
    sens = analogRead(sensorPin);  
    if (sens > threshold){
      // 超出探測范圍
       x = 0;
       break;
    }  
    delay(50);
}

2.8 continue

continue語句跳過當前循環中剩余的迭代部分( do,for 或 while )。它通過檢查循環條件表達式,并繼續進行任何后續迭代。

例子

for (x = 0; x < 255; x ++)
{

 if (x > 40 && x < 120){
      // 當x在40與120之間時,跳過后面兩句,即迭代。
     continue;
 }
    digitalWrite(PWMpin, x);
    delay(50);
}

2.9 return

終止一個函數,如有返回值,將從此函數返回給調用函數。
語法
return;
return value; // 兩種形式均可
參數
value:任何變量或常量的類型

例子
一個比較傳感器輸入閾值的函數

 int checkSensor(){

    if (analogRead(0) > 400) {

        return 1;}
    else{

        return 0;
    }
}

return關鍵字可以很方便的測試一段代碼,而無需“comment out(注釋掉)” 大段的可能存在bug的代碼。

void loop(){

 //寫入漂亮的代碼來測試這里。
 return;
 //剩下的功能異常的程序
 //return后的代碼永遠不會被執行
}

2.10 goto

程序將會從程序中已有的標記點開始運行
語法
label:
goto label; //從label處開始運行
提示
不要在C語言中使用goto編程,某些C編程作者認為goto語句永遠是不必要的,但用得好,它可以簡化某些特定的程序。許多程序員不同意使用goto的原因是, ​​通過毫無節制地使用goto語句,很容易創建一個程序,這種程序擁有不確定的運行流程,因而無法進行調試。
的確在有的實例中goto語句可以派上用場,并簡化代碼。例如在一定的條件用if語句來跳出高度嵌入的for循環。

例子

for(byte r = 0; r < 255; r++){

  for(byte g = 255; g > -1; g--){

    for(byte b = 0; b < 255; b++){

      if (analogRead(0) > 250){
 
        goto bailout;
      }
      //更多的語句...
    }
  }
}
bailout:

三、擴展語法

3.1 ;(分號)

用于表示一句代碼的結束。
例子
int a = 13;
提示
在每一行忘記使用分號作為結尾,將導致一個編譯錯誤。錯誤提示可能會清晰的指向缺少分號的那行,也可能不會。如果彈出一個令人費解或看似不合邏輯的編譯器錯誤,第一件事就是在錯誤附近檢查是否缺少分號。

3.2 {}(花括號)

大括號(也稱為“括號”或“大括號”)是C編程語言中的一個重要組成部分。它們被用來區分幾個不同的結構,下面列出的,有時可能使初學者混亂。
左大括號“{”必須與一個右大括號“}”形成閉合。這是一個常常被稱為括號平衡的條件。在Arduino IDE(集成開發環境)中有一個方便的功能來檢查大括號是否平衡。只需選擇一個括號,甚至單擊緊接括號的插入點,就能知道這個括號的“伴侶括號”。
目前此功能稍微有些錯誤,因為IDE會經常會認為在注釋中的括號是不正確的。
由于大括號被用在不同的地方,這有一種很好的編程習慣以避免錯誤:輸入一個大括號后,同時也輸入另一個大括號以達到平衡。然后在你的括號之間輸入回車,然后再插入語句。這樣一來,你的括號就不會變得不平衡了。不平衡的括號常可導致許多錯誤,比如令人費解的編譯器錯誤,有時很難在一個程序找到這個錯誤。由于其不同的用法,括號也是一個程序中非常重要的語法,如果括號發生錯誤,往往會極大地影響了程序的意義。
大括號中的主要用途
功能

void myfunction(datatype argument){

  statements(s)
  }

循環

while (boolean expression)
{

  statement(s)
}
do
{

  statement(s)
} while (boolean expression);
for (initialisation; termination condition; incrementing expr)
{

  statement(s)
}

條件語句

if (boolean expression)
{

  statement(s)
}
else if (boolean expression)
{

  statement(s)
} 
else
{

  statement(s)
}

3.3 //(單行注釋)

Comments(注釋)
注釋用于提醒自己或他人程序是如何工作的。它們會被編譯器忽略掉,也不會傳送給處理器,所以它們在Atmega芯片上不占用體積。 注釋的唯一作用就是使你自己理解或幫你回憶你的程序是怎么工作的或提醒他人你的程序是如何工作的。編寫注釋有兩種寫法:
例子

 x = 5;  // 這是一條注釋斜杠后面本行內的所有東西是注釋
/* 這是多行注釋-用于注釋一段代碼
if (gwb == 0){   // 在多行注釋內可使用單行注釋
 x = 3;       /* 但不允許使用新的多行注釋-這是無效的
}
// 別忘了注釋的結尾符號-它們是成對出現的!
*/

小提示
當測試代碼的時候,注釋掉一段可能有問題的代碼是非常有效的方法。這能使這段代碼成為注釋而保留在程序中,而編譯器能忽略它們。這個方法用于尋找問題代碼或當編譯器提示出錯或錯誤很隱蔽時很有效。

3.4 /* */(多行注釋)

3.5 #define

#define 是一個很有用的C語法,它允許程序員在程序編譯之前給常量命名。在Arduino中,定義的常量不會占用芯片上的任何程序內存空間。在編譯時編譯器會用事先定義的值來取代這些常量。
然而這樣做會產生一些副作用,例如,一個已被定義的常量名已經包含在了其他常量名或者變量名中。在這種情況下,文本將被#defined 定義的數字或文本所取代。
通常情況下,優先考慮使用 const 關鍵字替代 #define 來定義常量。
Arduino 擁有和 C 相同的語法規范。
語法
#define 常量名 常量值 注意,#是必須的。
例子

#define ledPin 3
//在編譯時,編譯器將使用數值 3 取代任何用到 ledPin 的地方。
提示
在#define 聲明后不能有分號。如果存在分號,編譯器會拋出語義不明的錯誤,甚至關閉頁面。
#define ledPin 3; //這是一種錯誤寫法
類似的,在#define聲明中包含等號也會產生語義不明的編譯錯誤從而導致關閉頁面。
#define ledPin = 3 //這是一種錯誤寫法

3.6 #include

#include用于調用程序以外的庫。這使得程序能夠訪問大量標準C庫,也能訪問用于arduino的庫。 AVR C庫(Arduino基于AVR標準語法)語法手冊請點擊這里。 注意#include和#define一樣,不能在結尾加分號,如果你加了分號編譯器將會報錯。
例子
此例包含了一個庫,用于將數據存放在flash空間內而不是ram內。這為動態內存節約了空間,大型表格查表更容易實現。

#include <avr/pgmspace.h>
prog_uint16_t myConstants[] PROGMEM = {
0, 21140, 702  , 9128,  0, 25764, 8456,0,0,0,0,0,0,0,0,29810,8968,29762,29762,4500};

Tags:Arduino,程序,入門  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av
<button id="4i884"></button>
  • <abbr id="4i884"><source id="4i884"></source></abbr>
  • <code id="4i884"><tr id="4i884"></tr></code>
  • <rt id="4i884"></rt>
    <li id="4i884"></li>
  • <rt id="4i884"><tr id="4i884"></tr></rt>
  • 日本xxxxxxx免费视频| 亚洲最新免费视频| 欧美国产综合在线| 99中文字幕在线观看| 一级黄色录像在线观看| 午夜久久久精品| 日本中文字幕观看| 天天色天天干天天色| 中文字幕一区久久| 中文字幕av导航| 欧美交换配乱吟粗大25p| a级黄色片免费| av女优在线播放| 国产男女激情视频| av中文字幕网址| 青青草原网站在线观看| 日本中文字幕在线视频观看| 免费无码不卡视频在线观看| 97公开免费视频| 91免费视频污| 18禁免费观看网站| 亚洲欧美国产日韩综合| 99re8这里只有精品| 免费看一级大黄情大片| 精品日韩久久久| 超级碰在线观看| www.日本xxxx| 隔壁人妻偷人bd中字| 欧美日韩怡红院| a级片一区二区| 精品一卡二卡三卡| 国产一级大片免费看| 久久久久久久久久久久久久国产| 8x8x成人免费视频| 黄色免费视频大全| 黄色高清视频网站| 精品少妇无遮挡毛片| 大片在线观看网站免费收看| 欧美亚洲国产成人| 182午夜视频| 蜜臀av午夜一区二区三区| 在线视频一二三区| 五月婷婷丁香综合网| 黄页免费在线观看视频| 异国色恋浪漫潭| 国产又粗又长又大的视频| 日韩欧美不卡在线| 久久国产精品免费观看| 在线观看免费av网址| 欧洲av无码放荡人妇网站| 国产一区二区三区小说| 91xxx视频| 中文字幕66页| 无码人妻精品一区二区三区66| 亚洲色欲久久久综合网东京热| 久久精品亚洲天堂| 在线不卡一区二区三区| 性欧美videossex精品| 黄色免费观看视频网站| 日本少妇高潮喷水视频| 日本午夜激情视频| 激情五月宗合网| 久久亚洲中文字幕无码| 国产一区二区视频播放| 久久久久久久9| 人人妻人人澡人人爽欧美一区| 国产一级免费大片| 黄色高清视频网站| 日本大胆人体视频| 国产av熟女一区二区三区| 国产精品日韩三级| 亚洲国产精品无码观看久久| 国产无限制自拍| 国产亚洲综合视频| 日本爱爱免费视频| 国内国产精品天干天干| 亚洲免费av网| 丁香婷婷综合激情| 欧美日韩亚洲一| 欧美午夜性生活| 五月天六月丁香| 加勒比成人在线| 欧美黑人又粗又大又爽免费| 中文字幕av不卡在线| 波多野结衣在线免费观看| 久久久久久久久久伊人| 免费高清在线观看免费| 亚洲免费999| 欧美精品久久96人妻无码| 精品无码国产一区二区三区av| 日韩在线视频在线观看| а 天堂 在线| 欧美 国产 综合| 嫩草视频免费在线观看| 欧美视频在线免费播放| 日本人视频jizz页码69| 欧美这里只有精品| 污色网站在线观看| 拔插拔插海外华人免费| 欧美成人黄色网址| 99在线免费视频观看| 狠狠操狠狠干视频| 亚洲自偷自拍熟女另类| 国产又大又长又粗又黄| 99久久激情视频| 亚洲乱码日产精品bd在线观看| 无码少妇一区二区三区芒果| 成人黄色片免费| 加勒比av中文字幕| 国产又黄又猛视频| 成人免费在线网| 久久久99精品视频| 亚洲第一色av| 日韩肉感妇bbwbbwbbw| 日韩小视频网站| 99热都是精品| 色婷婷一区二区三区在线观看| 北条麻妃在线观看| 少妇av一区二区三区无码| 天天想你在线观看完整版电影免费| 日韩爱爱小视频| 999香蕉视频| 久草资源站在线观看| 免费av手机在线观看| 人妻av无码专区| 男插女免费视频| 波多野结衣免费观看| 亚洲欧美天堂在线| 91免费视频污| 黄色影视在线观看| 欧美a级黄色大片| 300部国产真实乱| 大荫蒂性生交片| 97超碰在线人人| 欧美精品久久久久久久免费| 日韩精品在线中文字幕| 水蜜桃色314在线观看| 国产免费一区二区视频| 欧美黑人经典片免费观看| 日韩亚洲欧美视频| 日韩a∨精品日韩在线观看| 国产精品秘入口18禁麻豆免会员| 可以在线看的av网站| 东京热加勒比无码少妇| 天天干天天操天天玩| 香蕉视频色在线观看| 91免费国产精品| 啊啊啊一区二区| 国产又大又黄又粗又爽| 四虎免费在线观看视频| 欧美一级免费播放| 91淫黄看大片| 国产a级片免费看| 99热亚洲精品| 污污网站免费观看| 日本a级片在线播放| 国产99久久九九精品无码| 91极品尤物在线播放国产| 男人j进女人j| 日日碰狠狠躁久久躁婷婷| 国产精品探花在线播放| 欧美国产视频一区| 亚洲少妇久久久| 久久久久99精品成人片| 亚洲精品高清无码视频| 手机在线视频你懂的| 欧美 日韩 国产 激情| 国产免费内射又粗又爽密桃视频| 黄色一级视频在线播放| 成人性生交视频免费观看| 91成人在线观看喷潮教学| 亚洲一二三不卡| 日本不卡在线观看视频| 麻豆传媒网站在线观看| 日本xxxx黄色| 欧洲av无码放荡人妇网站| 国产又粗又爽又黄的视频| 丁香婷婷激情网| 免费一级特黄毛片| 国产卡一卡二在线| 国内自拍视频网| 亚洲国产精品久久久久婷蜜芽| 美女av免费观看| 亚洲欧美手机在线| 爱情岛论坛成人| 国产美女无遮挡网站| 精品人妻人人做人人爽| 五月六月丁香婷婷| 中文字幕第17页| 日本xxxx黄色| 污片在线免费看| 2025韩国理伦片在线观看| 青青青在线播放| 久久久久久久久久久福利| 日韩五码在线观看| 欧美日韩成人免费视频| 日韩黄色短视频| 91免费黄视频| 日韩激情免费视频| 黄色一级免费大片|