中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Arduino課程:02.數據類型及條件語句

發布時間:2020-08-06 10:01:19 來源:網絡 閱讀:178 作者:acktomas 欄目:編程語言

2.1 課程說明

今天制作一期人機互動的例子帶給大家:用按鈕控制LED。將開關作為延時開關來使用,按下開關后1秒鐘,燈才會亮,燈亮5秒后才熄滅,這樣大家就能依據這個例子,自己延伸出很多好玩的玩法出來。通過案例學習變量、運算符、條件語句三種語法知識。

2.2. 器材:

名稱 數量 規格
Arduino uno控制板 1 R3
按鈕開關 1
藍色LED 1

2.3. 重點器材介紹

開關:有按鍵式、滑動式、微動型,除了尺寸和外型不同,開關可分成:

  • 常開(normal open,簡稱N.O):接點平常是不相連的,按下去之后才導通。
  • 常閉(normal close):接點平常是導通的
    開關也是傳感器,微動開關(鼠標);極限開關(光驅的托盤);磁簧開關;水銀開關。

2.3. 電路:

2.4 條件語句

形式1

Arduino課程:02.數據類型及條件語句
if (expression)
statement;
如果你有一個語句,你可以使用沒有大括號{}的if語句。

形式2

if (expression) {
Block of statements;
}

形式3

Arduino課程:02.數據類型及條件語句
if ... else語句語法
if (expression) { Block of statements; }
else { Block of statements; }

2.5 改變程序流程的if條件式

-比較運算符
比較運算符 說明
== 如果兩者相等則成立,請注意,這要寫成兩個連續等號,中間不能有空格
!= 如果不相等則成立
< 如果左邊小于右邊則成立
> 如果左邊大于右邊則成立
<= 如果左邊小于或等于右邊則成立
>= 如果左邊大于或等于右邊則成立

比較運算符參與運算后,會返回一個布爾值(true或false)。

-邏輯運算符
名稱 運算符號 表達式 說明
與(and) && A && B 只有A和B兩個值都成立時,整個條件才算成立。
或(OR) || A || B 只要A或B任何一方成立,整個條件就算成立
非(NOT) ! !A 把成立的變為不成立;不成立的變為成立
-指定運算符
運算符 意義 說明
++ 遞增 將變量值增加1
-- 遞減 將變量值減1
+= 指定增加 將變量加上某數
-= 指定減少 將變量減去某數
*= 指定相乘 將變量乘上某數
/= 指定相除 將變量除以某數

2.6 使用端口操作指令、位移運算符

處理器有D、B兩個數位輸出/輸入接口,以及一個類比接口C。
DDRB = B00110100; //DDRB包含8、13接口,DDRD包含07接口
PORTB= B00100100;

2.7 任務一

利用按鈕控制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)現象。

2.8 流水燈

在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);  
}

2.9 用變量來管理代碼

上例中連接在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,。讓代碼變得容易理解。
? 若要用兩個單字來命名變量,可以用“駝峰式”記法,
? 避免用特殊意義的保留字來命名。

2.10 數據類型

數據類型用于設置“數據容器”的格式和容量。在聲明變量的同時,必須設置該變量所能保存的數據類型。

基礎類型
類型 中文名 占用內存大小 數值范圍
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
數據類型說明
  1. 設置數據類型時,需要留意該類型所能保存的最大值。如果保存值超過變量的容量,該值將從0開始計算。
    • byte類型最大只能保存十進制的255,若存入256,則實際的保存值將是0; 數學表達式也要留意數據類型的上限,
    • long ans = 4000 100; //計算結果:6784; 這是因為程序編譯程序用整數型態計算4000100,正確寫法:其中一個計算數字后面加上設置數值類型的格式字符, long ans = 4000L * 100L; //計算結果:400000
      表: 轉換數值數據類型的格式字符
      格式字符 說明 示例
      L或l 強制轉換成長整數 4000L
      U或u 轉化成無正負號(unsigned)整數 32800U
      UL或ul 強制轉換成無正負號的長整數(unsigned long) 7295UL
      tips

      ATmega微處理器內部沒有浮點運算處理單元,因此,執行浮點數值運算,不僅耗時且精確度不高,請避免在程序中執行大量的浮點數運算。附帶一提,浮點數值可以用科學記號E或e表示,例如:
      1.8E3 = 1800
      在數字系統中,用四個二進制數來代表十進制的編碼,又稱為BCD碼(Binary Coded Decimal, 二進編碼十進數)

      2.11 不變的“常量”

      常量: 存放固定、不變量值的容器。

    • 使用const指令(constant,常量)定義常量
    • 常量名稱中的字母通常寫成大寫。
    • 變量設置后,就不能再更改其值。
      常量與“程序內存”
  2. ATmega微處理器的代碼保存在內存,其內容無法在程序運行時間更改。而保存變量的容器,將在運行時間被建立在內容可隨意更換的SRAM中
  3. 常見的預設常量 INPUT、OUTPUT、HIGH、LOW、true、false
    常量定義補充說明

    若要讓常量僅僅保存在程序內存,需要在常量聲明代碼中加入PROGMEM關鍵字。

    2.13 內存類型說明

    計算機內存分為RAM和ROM兩大類型

    RAM:
    • DRAM(Dynamic)→需搭配DRAM控制器持續刷新,存取慢,價格低廉
    • SRAM(Static)→ 不需要持續刷新,存取速度快,價格高 #### #### ROM:
    • mask ROM → 相當于DVD和CD
    • PROM → Programmable,可編程
    • EPROM → EP 代表Erasable and Programmalbe(可擦除編程)

2.14. 補充閱讀材料:

Arduino 數據類型
C中的數據類型是指用于聲明不同類型的變量或函數的擴展系統。變量的類型確定它在存儲器中占用多少空間以及如何解釋存儲的位模式。
下表提供了你將在Arduino編程期間使用的所有數據類型。
void Boolean char Unsigned char
byte int Unsigned int word
long Unsigned long short float
double array String-chararray String-object
關鍵字 說明
  1. void void關鍵字僅用于函數聲明。它表示該函數預計不會向調用它的函數返回任何信息。 例子
    Void Loop ( ) {
    // rest of the code
    }
  2. Boolean 布爾值保存兩個值之一,true或false。每個布爾變量占用一個字節的內存。
    例子
    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
  3. Char
    一種數據類型,占用一個字節的內存,存儲一個字符值。字符文字用單引號寫成:'A',對于多個字符,字符串使用雙引號:"ABC"。
    但是,字符是存儲為數字。你可以在ASCII圖表中查看特定編碼。這意味著可以對使用ASCII值的字符進行算術運算。例如,'A'+1的值為66,因為大寫字母A的ASCII值為65。
    例子
    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
  4. unsigned char
    unsigned char是一種無符號數據類型,占用一個字節的內存。unsigned char數據類型編碼數字為0到255。
    例子
    Unsigned Char chr_y = 121 ; // declaration of variable with type Unsigned char and initialize it with character y
  5. byte 一個字節存儲一個8位無符號數,從0到255。
    例子
    byte m = 25 ;//declaration of variable with type byte and initialize it with 25
  6. int
    整數(int)是數字存儲的主要數據類型。int存儲16位(2字節)值。這產生-32768至32767的范圍(最小值為-215 ,最大值為(215 )-1)。
    int的大小因板而異。例如,在Arduino Due中,int存儲32位(4字節)值。這產生-2147483648至2147483647的范圍(最小值-231 和最大值(231 )-1)。
    例子
    int counter = 32 ;// declaration of variable with type int and initialize it with 32
  7. Unsigned int
    unsigned int(無符號整數)與int相同,存儲2字節。然而,它們只存儲正值,產生0到65535(216)-1的有效范圍。Due存儲4字節(32位)值,范圍從0到4294967295(232-1)。
    例子
    Unsigned int counter = 60 ; // declaration of variable with type unsigned int and initialize it with 60
  8. Word
    在Uno和其他基于ATMEGA的板上,一個word存儲一個16位無符號數。在Due和Zero上,它存儲一個32位無符號數。
    例子
    word w = 1000 ;//declaration of variable with type word and initialize it with 1000
  9. Long
    Long變量是用于數字存儲的擴展大小變量,存儲32位(4字節),從-2147483648到2147483647。
    例子
    Long velocity = 102346 ;//declaration of variable with type Long and initialize it with 102346
  10. unsigned long
    unsigned long變量是用于數字存儲的擴展大小變量,并存儲32位(4字節)。與標準的long不同,unsigned long不會存儲負數,它們的范圍為0到4294967295(232-1)。
    例子
    Unsigned Long velocity = 101006 ;// declaration of variable with type Unsigned Long and initialize it with 101006
  11. short
    short是16位數據類型。在所有Arduinos(基于ATMega和ARM)上,一個short存儲一個16位(2字節)值。這產生-32768至32767的范圍(最小值為-215,最大值為(215)-1)。
    例子
    short val = 13 ;//declaration of variable with type short and initialize it with 13
  12. float
    浮點數的數據類型是具有小數點的數字。浮點數通常用于近似模擬值和連續值,因為它們的分辨率高于整數。
    浮點數可以大到3.4028235E+38,也可以低到-3.4028235E+38。它們被存儲為32位(4字節)信息。
    例子
    float num = 1.352;//declaration of variable with type float and initialize it with 1.352
  13. double
    在Uno和其他基于ATMEGA的板上,雙精度浮點數占用四個字節。也就是說,double實現與float完全相同,精度沒有增益。在Arduino Due上,double具有8字節(64位)精度。
    例子
    double num = 45.352 ;// declaration of variable with type double and initialize it with 45.352
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

雷山县| 南城县| 罗源县| 禄丰县| 玛纳斯县| 塔河县| 阳西县| 望城县| 淮北市| 深泽县| 乐至县| 上犹县| 石林| 东乡县| 德阳市| 凤阳县| 九寨沟县| 蓬安县| 通渭县| 内黄县| 炉霍县| 阿克苏市| 绥化市| 虞城县| 都匀市| 安康市| 米脂县| 涿鹿县| 怀来县| 大余县| 宜君县| 那坡县| 长武县| 夹江县| 临沂市| 平阳县| 北安市| 凤山市| 友谊县| 阳东县| 麻江县|