您好,登錄后才能下訂單哦!
今天制作一期人機(jī)互動(dòng)的例子帶給大家:用按鈕控制LED。將開關(guān)作為延時(shí)開關(guān)來使用,按下開關(guān)后1秒鐘,燈才會(huì)亮,燈亮5秒后才熄滅,這樣大家就能依據(jù)這個(gè)例子,自己延伸出很多好玩的玩法出來。通過案例學(xué)習(xí)變量、運(yùn)算符、條件語句三種語法知識(shí)。
名稱 | 數(shù)量 | 規(guī)格 |
---|---|---|
Arduino uno控制板 | 1 | R3 |
按鈕開關(guān) | 1 | |
藍(lán)色LED | 1 |
開關(guān):有按鍵式、滑動(dòng)式、微動(dòng)型,除了尺寸和外型不同,開關(guān)可分成:
if (expression)
statement;
如果你有一個(gè)語句,你可以使用沒有大括號{}的if語句。
if (expression) {
Block of statements;
}
if ... else語句語法
if (expression) { Block of statements; }
else { Block of statements; }
比較運(yùn)算符 | 說明 |
---|---|
== | 如果兩者相等則成立,請注意,這要寫成兩個(gè)連續(xù)等號,中間不能有空格 |
!= | 如果不相等則成立 |
< | 如果左邊小于右邊則成立 |
> | 如果左邊大于右邊則成立 |
<= | 如果左邊小于或等于右邊則成立 |
>= | 如果左邊大于或等于右邊則成立 |
比較運(yùn)算符參與運(yùn)算后,會(huì)返回一個(gè)布爾值(true或false)。
名稱 | 運(yùn)算符號 | 表達(dá)式 | 說明 |
---|---|---|---|
與(and) | && | A && B | 只有A和B兩個(gè)值都成立時(shí),整個(gè)條件才算成立。 |
或(OR) | || | A || B | 只要A或B任何一方成立,整個(gè)條件就算成立 |
非(NOT) | ! | !A | 把成立的變?yōu)椴怀闪?;不成立的變?yōu)槌闪?/td> |
運(yùn)算符 | 意義 | 說明 |
---|---|---|
++ | 遞增 | 將變量值增加1 |
-- | 遞減 | 將變量值減1 |
+= | 指定增加 | 將變量加上某數(shù) |
-= | 指定減少 | 將變量減去某數(shù) |
*= | 指定相乘 | 將變量乘上某數(shù) |
/= | 指定相除 | 將變量除以某數(shù) |
處理器有D、B兩個(gè)數(shù)位輸出/輸入接口,以及一個(gè)類比接口C。
DDRB = B00110100; //DDRB包含8、13接口,DDRD包含07接口
PORTB= B00100100;
利用按鈕控制LED
/*
作用:當(dāng)你按下按鈕后1秒鐘,燈會(huì)亮,然后維持5秒鐘,熄滅
*/
void setup () {
pinMode(4,INPUT); //將4號數(shù)字口設(shè)置為輸入狀態(tài),13號數(shù)字口設(shè)置為輸出狀態(tài)
pinMode(13,OUTPUT);
}
void loop(){
int n =digitalRead(4); //創(chuàng)建一個(gè)變量n,將4號數(shù)字口的狀態(tài)采集出來賦值給他。
if (n==HIGH) //判斷n是否為高電平,如果是執(zhí)行下面的語句,不是則跳過。
{
delay(1000);
digitalWrite(13,HIGH);
delay(5000);
digitalWrite(13,LOW);
}
}
編譯并上傳代碼之后,按著、放開幾次微動(dòng)開關(guān)試試,理論上,LED將在按著開關(guān)時(shí)被點(diǎn)亮,放開開關(guān)時(shí)熄滅。但實(shí)際上,LED可能在你放開開光之后,仍然點(diǎn)亮著,這是機(jī)械式開關(guān)的彈跳(bouncing)現(xiàn)象。
在arduino控制板上的3、4、5引腳上連接3個(gè)LED,通過程序依次控制3個(gè)LED燈的亮滅
const byte LED1 = 3;
const byte LED2 = 4;
const byte LED3 = 5;
void setup() {
// put your setup code here, to run once:
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LED1,HIGH);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
delay(1000);
digitalWrite(LED1,LOW);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,LOW);
delay(1000);
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,HIGH);
delay(1000);
}
上例中連接在13引腳的led閃爍,如果把led接在10腳,代碼需要修改2次,利用變量可簡化代碼的修改。
byte led = 13;
void setup(){
pinMode(led, OUTPUT);
}
void loop(){
digitalWrite(led, HIGH);
}
數(shù)據(jù)類型 變量名
例如:
int age = 18; //預(yù)留16位的存儲(chǔ)空間,并存入數(shù)字18;
int older = age +10; //先取出age的值,加上10之后,再賦值給older。
? 變量名稱只能包含英文字母、數(shù)字和底線(_)。
? 第一個(gè)字符不能是數(shù)字。
? 變量的名稱大小寫有別,因此LED和led是兩個(gè)不同的變量!
? 變量名稱應(yīng)該使用有意義的文字,如LED和pin,。讓代碼變得容易理解。
? 若要用兩個(gè)單字來命名變量,可以用“駝峰式”記法,
? 避免用特殊意義的保留字來命名。
數(shù)據(jù)類型用于設(shè)置“數(shù)據(jù)容器”的格式和容量。在聲明變量的同時(shí),必須設(shè)置該變量所能保存的數(shù)據(jù)類型。
類型 | 中文名 | 占用內(nèi)存大小 | 數(shù)值范圍 | |
---|---|---|---|---|
boolean | 布爾 | 8位 | 1或0 | true或false) |
byte | 字節(jié) | 8位 | 0~255 | |
char | 字符 | 8位 | -127~127 | |
int | 整型 | 16位 | -32768~32767 | |
long | 長整數(shù) | 32位 | -2147483648~2147483647 | |
float | 浮點(diǎn)數(shù) | 32位 | ±3.4028235E+38 | |
double | 雙精度浮點(diǎn)數(shù) | ±3.4028235E+38 |
類型 | 中文名稱 | 數(shù)值范圍 |
---|---|---|
unsigned char | 正字符 | 0~255 |
unsigned int | 正整數(shù) | 0~65535 |
unsigned long | 正長整數(shù) | 0~4294967295 |
格式字符 | 說明 | 示例 |
---|---|---|
L或l | 強(qiáng)制轉(zhuǎn)換成長整數(shù) | 4000L |
U或u | 轉(zhuǎn)化成無正負(fù)號(unsigned)整數(shù) | 32800U |
UL或ul | 強(qiáng)制轉(zhuǎn)換成無正負(fù)號的長整數(shù)(unsigned long) | 7295UL |
ATmega微處理器內(nèi)部沒有浮點(diǎn)運(yùn)算處理單元,因此,執(zhí)行浮點(diǎn)數(shù)值運(yùn)算,不僅耗時(shí)且精確度不高,請避免在程序中執(zhí)行大量的浮點(diǎn)數(shù)運(yùn)算。附帶一提,浮點(diǎn)數(shù)值可以用科學(xué)記號E或e表示,例如:
1.8E3 = 1800
在數(shù)字系統(tǒng)中,用四個(gè)二進(jìn)制數(shù)來代表十進(jìn)制的編碼,又稱為BCD碼(Binary Coded Decimal, 二進(jìn)編碼十進(jìn)數(shù))
常量: 存放固定、不變量值的容器。
若要讓常量僅僅保存在程序內(nèi)存,需要在常量聲明代碼中加入PROGMEM關(guān)鍵字。
計(jì)算機(jī)內(nèi)存分為RAM和ROM兩大類型
C中的數(shù)據(jù)類型是指用于聲明不同類型的變量或函數(shù)的擴(kuò)展系統(tǒng)。變量的類型確定它在存儲(chǔ)器中占用多少空間以及如何解釋存儲(chǔ)的位模式。 下表提供了你將在Arduino編程期間使用的所有數(shù)據(jù)類型。 |
||||
---|---|---|---|---|
void | Boolean | char | Unsigned char | |
byte | int | Unsigned int | word | |
long | Unsigned long | short | float | |
double | array | String-chararray | String-object |
Void Loop ( ) {
// rest of the code
}
boolean val = false ; // declaration of variable with type boolean and initialize it with false
boolean state = true ; // declaration of variable with type boolean and initialize it with false
Char chr_a = ‘a(chǎn)’ ;//declaration of variable with type char and initialize it with character a
Char chr_c = 97 ;//declaration of variable with type char and initialize it with character 97 ASCII Char Table
Unsigned Char chr_y = 121 ; // declaration of variable with type Unsigned char and initialize it with character y
byte m = 25 ;//declaration of variable with type byte and initialize it with 25
int counter = 32 ;// declaration of variable with type int and initialize it with 32
Unsigned int counter = 60 ; // declaration of variable with type unsigned int and initialize it with 60
word w = 1000 ;//declaration of variable with type word and initialize it with 1000
Long velocity = 102346 ;//declaration of variable with type Long and initialize it with 102346
Unsigned Long velocity = 101006 ;// declaration of variable with type Unsigned Long and initialize it with 101006
short val = 13 ;//declaration of variable with type short and initialize it with 13
float num = 1.352;//declaration of variable with type float and initialize it with 1.352
double num = 45.352 ;// declaration of variable with type double and initialize it with 45.352
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。