Arduino語言注解Arduino語言是建立在C/C++基礎上的,其實也就是基礎的C語言,Arduino語言只不過把AVR單片機(微控制器)相關的一些參數設置都函數化,不用我們去了解他的底層,讓我們不了解AVR單片機(微控制器)的朋友也能輕松上手。
相比Arduino,也許我們更熟悉“集成電路”這一概念。集成電路是為了實現某種特定功能的計算而設計的微小芯片。對於普通人來說,傳統的集成電路應用比較繁瑣,一般需要具有一定電子知識基礎,並懂得如何進行相關的程序設計的工程師才能熟練使用。但是Arduino的出現讓曾經只有專業人士才能使用的集成電路變為平易近人的電子設計工具,即使沒有程序設計基礎,也可以通過簡單的學習,掌握使用Arduino的方法。為了實現這一目標,Arduino從兩方面進行了努力與改進。首先,在硬件方面,Arduino本身是一款非常容易使用的印刷電路板。電路板上裝有專用集成電路,並將集成電路的功能引腳引出方便我們外接使用。同時,電路板還設計有USB接口方便與電腦連接。其次,在軟件方面,Arduino提供了專門的程序開發環境Arduino IDE。其界面設計簡潔,對於沒有接觸過程序設計的“小白”也可以輕松上手。
Arduino--UNO主板
Arduino--IDE
實驗一 Hello world
目標效果:打印“Hello world” 字體
硬件准備:Arduino UNO 主板
軟件准備:Arduino--IDE
電路連接:Arduino主板——電腦
代碼:
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("Hello world !");
delay(1000);
}
實驗二 動態顯示屏實驗
目標效果:顯示屏顯示打印的文字
硬件准備:
Arduino UNO一塊
IIC1602顯示模塊一個
Arduino UNO底板一塊
杜邦線若干
軟件准備:Arduino--IDE
電路連接:
GND——GND
VCC——5V
SDA——A4
SCL——A5
代碼:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the I2C bus address for an unmodified backpack
void setup() { // activate LCD module
lcd.begin (16,2); // for 16 x 2 LCD module 設置LCD的列和行數
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);
}
void loop() {
lcd.home (); // set cursor to 0,0 將光標設置為第0列第1行
lcd.print(" KeywishRobot");
delay(1000);
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print(" ");
lcd.print(millis());
delay(1000);
lcd.setBacklight(LOW); // Backlight off delay(250);
lcd.setBacklight(HIGH); // Backlight on delay(1000);
}
實驗三 溫濕度傳感器:
目標效果:屏幕顯示當前的溫度和濕度
硬件准備:
Arduino UNO一塊
IIC1602顯示模塊一個
DHT11 溫濕度傳感器一個
杜邦線若干
軟件准備:Arduino--IDE
電路連接:
IIC1602:
GND——GND
VCC——5V
SDA——A4
SCL——A5
DHT11:
VCC — 3.3V
GND — GND
DAT — pin8
代碼:
/*
* 使用溫濕度傳感器檢測信息並顯示在 LCD 上
*/
#include <Wire.h> // 導入驅動 LCD 需要的庫
#include "LCD.h"
#include"dht11.h" // 導入 dht 庫,用於溫濕度傳感器
#include "LiquidCrystal_I2C.h"
#define DHT11PIN 8 // 將溫濕度傳感器的數據端口接至 A0
dht11 DHT11;
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); // 0x27 是 I2C 總線的地址
void setup() {
pinMode(DHT11PIN,OUTPUT);
lcd.begin (16,2); // for 16 x 2 LCD module 初始橫16列、豎2行
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);
}
void loop() {
// 讀取溫濕度傳感器的數據
int chk = DHT11.read(DHT11PIN);
// LCD 顯示采集的溫濕度數據
lcd.setCursor(0, 0);
lcd.print("Tep: ");
lcd.print((float)DHT11.temperature, 2);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Hum: ");
lcd.print((float)DHT11.humidity, 2);
lcd.print("%");
delay(200);
}
延伸--圖形編程軟件:Scratch、mBlock
Scratch是一款由麻省理工學院(MIT) 設計開發的一款面向少年的簡易編程工具,scratch已經是少兒編程行業的基礎軟件。
mBlock 是一款面向 STEAM 教育領域的圖形化編程學習軟件,基於 Scratch 3.0 開發。它不僅能讓用戶創作有趣的故事、游戲、動畫等作品,並且支持 Makeblock 主板和其他 Arduino 硬件的編程。
語法常用參數:
1、pinMode(接口名稱,OUTPUT或INPUT)將——接口定義為輸入或輸出接口,用在setup()函數里。
2、digitalWrite(接口名稱, HIGH或LOW)——將數字接口值至高或低。
3、digitalRead(接口名稱)——讀出數字接口的值。
4、analogWrite(接口名稱, 數值)——給一個接口寫入模擬值(PWM波)。對於 ATmega168芯片的Arduino(包括Mini或BT),該函數可以工作於 3, 5, 6, 9, 10和 11號接口。老的 ATmega8芯片的USB和 serial Arduino僅僅支持 9, 10和1 1號接口。
5、analogRead(接口名稱)——從指定的模擬接口讀取值,Arduino對該模擬值進行10-bit的數字轉換,這個方法將輸入的0-5電壓值轉換為 0到1023間的整數值。
6、delay()——延時一段時間,delay(1000)為一秒。
7、Serial.begin(波特率)——設置串行每秒傳輸數據的速率(波特率)。在同計算機通訊時,使用下面這些值:300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600或 115200。你也可以在任何時候使用其它的值,比如,與0號或1號插口通信就要求特殊的波特率。用在setup()函數里
8、Serial.read()——讀取持續輸入的數據。