Arduino入門學習


一直聽到許多做物聯網、智能家居的控制器使用的是Arduino,從師兄那里拿到了一塊Arduino開發板,進行了一下午的學習,感覺這個適合小孩子們玩:)

廢話少說,總結一下,便於以后可能會用得到。我主要參考了百度文庫的一個60+頁的《arduino從零開始學》和一些技術論壇如極客工坊吧。

由於之前學習過若干塊開發板,這里主要探究他們的異同,移植問題。

個人總結為三部分:

一、arduino IDE環境的搭建

     由於無法進入官網下載,這里選擇了1.6.11免安裝版,並且是中文環境,非常方便

     (2)驅動的安裝

    這種老版本的CH340一般在電腦上無法識別,通過設備管理器里選擇手動安裝,選中arduino 安裝路徑里的drivers文件夾即可

  (3)如何編譯

     由於開發板主要通過串口進行程序的下載,所以需要選擇開發板型號以及串口端口

      之后,點擊編譯按鈕、上傳按鈕實現程序的檢錯和下載。

二、基本語法的學習

   (1)我們會發現arduino 主體程序包括兩部分: setup()和 loop()

       setup()只能初始化一次, 主要放置一些初始化函數如端口配置等

        loop()里所以的語句會被反復執行需要小心。

    (2)變量類型,全局/局部變量,數學運算符,關系運算符,邏輯運算符,位操作

    三大控制結構,數組,函數的學習

     (3)一些 arduino 內置函數的學習

    比如串口配置打印顯示,端口輸入輸出及賦值,pwm值的修改等

   關於這部分,自己將學習的函數寫成一個個小程序, 每個小程序設計不同知識點的學習,大家可以從中學習。附在后面。

三、以ardunio為核心控制器,完成一系列擴充功能。

     由於筆者手上只有一塊開發板,沒有多余的面包板等配件,故該部分無法一一驗證,不過總結一遍吧。

     (1)首先要根據原理圖觀測開發板引腳的功能。

      例如,在0-13引腳中:13引腳與LED相連,0/1引腳分別實現RX/TX功能,3/5/6/9/10/11/12/13端口輸出電壓值可變,即可實現pwm功能。

               在A0-A5中,實現AD模擬輸入的功能,能夠將0-5v電壓分成0-1023份,利用逐次逼近實現采樣

               數字電源,模擬電源等。

               固定按鍵,或者那些端口可實現輸入功能,進而擴展為上拉電阻式的按鍵設計電路

     (2)功能的設計

         顯示類:數碼管數字顯示,LCD1602顯示,OLED顯示,8*8點陣顯示...

         按鍵類:外接獨立按鍵,矩陣按鍵等

         聲控類:蜂鳴器,紅外偵測等

         定時中斷類:時鍾計數,脈沖計數,中斷進行偵測,AD采樣等

         輸出控制類:步進電機,舵機控制;LED亮度變化,直流電機等

         通信類:SPI通信,uart通信,紅外通信,外接網絡端口通信

         數據存儲類:編碼器譯碼器模塊,SD模塊等

   ....

附代碼:

/*******************
*功能:顯示串口打印信息
*作者:王茂春
*知識點:了解,入門,使用串口波特率設置函數、串口打印函數
*********************/
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("wanghello");
  delay(1000);
}


/*******************
*功能:13引腳閃爍燈,時間間隔1000ms
*作者:王茂春
*知識點:引腳輸出配置,高低電平配置
*********************/
void setup() {
  // put your setup code here, to run once:
  pinMode(13,OUTPUT);  //將13引腳設置為輸出
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(13,HIGH); // //將13引腳高電平
  delay(1000);
  digitalWrite(13,LOW); // //將13引腳低電平
  delay(1000);
}

/*******************
*功能:13引腳閃爍燈,時間間隔變化:1000-5000ms
*作者:王茂春
*知識點:引腳輸出配置,高低電平配置
*         全局變量使用,if-else語句使用,操作符+=、++等的使用
*********************/
int ledPin = 13; //使用全局變量表明引腳為13
int delayTime = 1000; //延時100ms
void setup() {
  // put your setup code here, to run once:
  pinMode(ledPin,OUTPUT);  //將13引腳設置為輸出
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(ledPin,HIGH); // //將13引腳高電平
  delay(delayTime);
  digitalWrite(ledPin,LOW); // //將13引腳低電平
  delay(delayTime);
  
  delayTime+=100;
  if(delayTime ==5000)
   {
       delayTime = 1000; //恢復基准
   }
}

/*******************
*功能:全局數組數值打印
*作者:王茂春
*知識點:全局數組的初始化學習
*         while循環的使用
*********************/
int arr[10]={1,2,3,4,5,6,7,8,9}; //全局數組聲明並初始化
int count=0;       //定義計數器變量並初始化為0 
void setup() {
  // put your setup code here, to run once:
   Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  while(count < 10)
  {
    Serial.println(arr[count]);
    count++;
  }
}



/*******************
*功能:全局數組數值打印
*作者:王茂春
*知識點:全局數組的初始化學習
*         for循環的使用.注意該程序有一個錯誤:
*        由於將計數器count初始化放置在for循環中,外加loop的影響導致該程序一直循環,容易死機
*********************/
int arr[10]={1,2,3,4,5,6,7,8,9}; //全局數組聲明並初始化
void setup() {
  // put your setup code here, to run once:
   Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  for(int count=0;count < 10;count++ )
  {
    Serial.println(arr[count]);
  }
}


/*******************
*功能:max函數的調用
*作者:王茂春
*知識點:自定義函數的使用(無需聲明)
*         考慮形參一致問題,考慮到本次實驗無需循環,代碼放在setup里
*********************/

void setup() {
  // put your setup code here, to run once:
   Serial.begin(9600);
   int a=10,b=20; 
   int value=maxValue(a,b);
   Serial.println(value);
}

void loop() {
  // put your main code here, to run repeatedly:
 
}

int maxValue(int x,int y)
{
  return x > y ? x:y;
}

 

今天就學習這么多了,希望和大家多多交流,推薦的博客有:

http://www.cnblogs.com/rayray/category/457863.html

http://www.cnblogs.com/shuqingstudy/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM