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