真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Arduino課程:02.數(shù)據(jù)類型及條件語(yǔ)句

2.1 課程說(shuō)明

今天制作一期人機(jī)互動(dòng)的例子帶給大家:用按鈕控制LED。將開關(guān)作為延時(shí)開關(guān)來(lái)使用,按下開關(guān)后1秒鐘,燈才會(huì)亮,燈亮5秒后才熄滅,這樣大家就能依據(jù)這個(gè)例子,自己延伸出很多好玩的玩法出來(lái)。通過(guò)案例學(xué)習(xí)變量、運(yùn)算符、條件語(yǔ)句三種語(yǔ)法知識(shí)。

創(chuàng)新互聯(lián)公司主打移動(dòng)網(wǎng)站、成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、申請(qǐng)域名、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再?zèng)Q定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會(huì)規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。

2.2. 器材:

名稱數(shù)量規(guī)格
Arduino uno控制板 1 R3
按鈕開關(guān) 1
藍(lán)色LED 1

2.3. 重點(diǎn)器材介紹

開關(guān):有按鍵式、滑動(dòng)式、微動(dòng)型,除了尺寸和外型不同,開關(guān)可分成:

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

2.3. 電路:

2.4 條件語(yǔ)句

形式1

Arduino課程:02.數(shù)據(jù)類型及條件語(yǔ)句
if (expression)
statement;
如果你有一個(gè)語(yǔ)句,你可以使用沒(méi)有大括號(hào){}的if語(yǔ)句。

形式2

if (expression) {
Block of statements;
}

形式3

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

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

-比較運(yùn)算符
比較運(yùn)算符說(shuō)明
== 如果兩者相等則成立,請(qǐng)注意,這要寫成兩個(gè)連續(xù)等號(hào),中間不能有空格
!= 如果不相等則成立
< 如果左邊小于右邊則成立
> 如果左邊大于右邊則成立
<= 如果左邊小于或等于右邊則成立
>= 如果左邊大于或等于右邊則成立

比較運(yùn)算符參與運(yùn)算后,會(huì)返回一個(gè)布爾值(true或false)。

-邏輯運(yùn)算符
名稱運(yùn)算符號(hào)表達(dá)式說(shuō)明
與(and) && A && B 只有A和B兩個(gè)值都成立時(shí),整個(gè)條件才算成立。
或(OR) || A || B 只要A或B任何一方成立,整個(gè)條件就算成立
非(NOT) ! !A 把成立的變?yōu)椴怀闪ⅲ徊怀闪⒌淖優(yōu)槌闪?/td>
-指定運(yùn)算符
運(yùn)算符意義說(shuō)明
++ 遞增 將變量值增加1
-- 遞減 將變量值減1
+= 指定增加 將變量加上某數(shù)
-= 指定減少 將變量減去某數(shù)
*= 指定相乘 將變量乘上某數(shù)
/= 指定相除 將變量除以某數(shù)

2.6 使用端口操作指令、位移運(yùn)算符

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

2.7 任務(wù)一

利用按鈕控制LED

/* 
    作用:當(dāng)你按下按鈕后1秒鐘,燈會(huì)亮,然后維持5秒鐘,熄滅 
*/  
void setup () {
    pinMode(4,INPUT);   //將4號(hào)數(shù)字口設(shè)置為輸入狀態(tài),13號(hào)數(shù)字口設(shè)置為輸出狀態(tài)  
    pinMode(13,OUTPUT);  
}
void loop(){
    int n =digitalRead(4);      //創(chuàng)建一個(gè)變量n,將4號(hào)數(shù)字口的狀態(tài)采集出來(lái)賦值給他。  
    if (n==HIGH)            //判斷n是否為高電平,如果是執(zhí)行下面的語(yǔ)句,不是則跳過(guò)。  
    {
        delay(1000);  
        digitalWrite(13,HIGH);  
        delay(5000);  
        digitalWrite(13,LOW);  
    }
}
結(jié)果:

編譯并上傳代碼之后,按著、放開幾次微動(dòng)開關(guān)試試,理論上,LED將在按著開關(guān)時(shí)被點(diǎn)亮,放開開關(guān)時(shí)熄滅。但實(shí)際上,LED可能在你放開開光之后,仍然點(diǎn)亮著,這是機(jī)械式開關(guān)的彈跳(bouncing)現(xiàn)象。

2.8 流水燈

在arduino控制板上的3、4、5引腳上連接3個(gè)LED,通過(guò)程序依次控制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);  
}

2.9 用變量來(lái)管理代碼

上例中連接在13引腳的led閃爍,如果把led接在10腳,代碼需要修改2次,利用變量可簡(jiǎn)化代碼的修改。

byte led = 13;
void setup(){
    pinMode(led, OUTPUT);
}
void loop(){
    digitalWrite(led, HIGH);
}
聲明變量的語(yǔ)法:

數(shù)據(jù)類型 變量名

例如:
int age = 18; //預(yù)留16位的存儲(chǔ)空間,并存入數(shù)字18;
int older = age +10; //先取出age的值,加上10之后,再賦值給older。

變量命名規(guī)定

? 變量名稱只能包含英文字母、數(shù)字和底線(_)。
? 第一個(gè)字符不能是數(shù)字。
? 變量的名稱大小寫有別,因此LED和led是兩個(gè)不同的變量!
? 變量名稱應(yīng)該使用有意義的文字,如LED和pin,。讓代碼變得容易理解。
? 若要用兩個(gè)單字來(lái)命名變量,可以用“駝峰式”記法,
? 避免用特殊意義的保留字來(lái)命名。

2.10 數(shù)據(jù)類型

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

基礎(chǔ)類型
類型中文名占用內(nèi)存大小數(shù)值范圍
boolean 布爾 8位 1或0 true或false)
byte 字節(jié) 8位 0~255
char 字符 8位 -127~127
int 整型 16位 -32768~32767
long 長(zhǎng)整數(shù) 32位 -2147483648~2147483647
float 浮點(diǎn)數(shù) 32位 ±3.4028235E+38
double 雙精度浮點(diǎn)數(shù) ±3.4028235E+38
表:不帶正負(fù)號(hào)的數(shù)據(jù)類型
類型中文名稱數(shù)值范圍
unsigned char 正字符 0~255
unsigned int 正整數(shù) 0~65535
unsigned long 正長(zhǎng)整數(shù) 0~4294967295
數(shù)據(jù)類型說(shuō)明
  1. 設(shè)置數(shù)據(jù)類型時(shí),需要留意該類型所能保存的最大值。如果保存值超過(guò)變量的容量,該值將從0開始計(jì)算。
    • byte類型最大只能保存十進(jìn)制的255,若存入256,則實(shí)際的保存值將是0; 數(shù)學(xué)表達(dá)式也要留意數(shù)據(jù)類型的上限,
    • long ans = 4000 100; //計(jì)算結(jié)果:6784; 這是因?yàn)槌绦蚓幾g程序用整數(shù)型態(tài)計(jì)算4000100,正確寫法:其中一個(gè)計(jì)算數(shù)字后面加上設(shè)置數(shù)值類型的格式字符, long ans = 4000L * 100L; //計(jì)算結(jié)果:400000
      表: 轉(zhuǎn)換數(shù)值數(shù)據(jù)類型的格式字符
      格式字符說(shuō)明示例
      L或l 強(qiáng)制轉(zhuǎn)換成長(zhǎng)整數(shù) 4000L
      U或u 轉(zhuǎn)化成無(wú)正負(fù)號(hào)(unsigned)整數(shù) 32800U
      UL或ul 強(qiáng)制轉(zhuǎn)換成無(wú)正負(fù)號(hào)的長(zhǎng)整數(shù)(unsigned long) 7295UL
      tips

      ATmega微處理器內(nèi)部沒(méi)有浮點(diǎn)運(yùn)算處理單元,因此,執(zhí)行浮點(diǎn)數(shù)值運(yùn)算,不僅耗時(shí)且精確度不高,請(qǐng)避免在程序中執(zhí)行大量的浮點(diǎn)數(shù)運(yùn)算。附帶一提,浮點(diǎn)數(shù)值可以用科學(xué)記號(hào)E或e表示,例如:
      1.8E3 = 1800
      在數(shù)字系統(tǒng)中,用四個(gè)二進(jìn)制數(shù)來(lái)代表十進(jìn)制的編碼,又稱為BCD碼(Binary Coded Decimal, 二進(jìn)編碼十進(jìn)數(shù))

      2.11 不變的“常量”

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

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

    若要讓常量?jī)H僅保存在程序內(nèi)存,需要在常量聲明代碼中加入PROGMEM關(guān)鍵字。

    2.13 內(nèi)存類型說(shuō)明

    計(jì)算機(jī)內(nèi)存分為RAM和ROM兩大類型

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

2.14. 補(bǔ)充閱讀材料:

Arduino 數(shù)據(jù)類型
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
關(guān)鍵字 說(shuō)明
  1. void void關(guān)鍵字僅用于函數(shù)聲明。它表示該函數(shù)預(yù)計(jì)不會(huì)向調(diào)用它的函數(shù)返回任何信息。 例子
    Void Loop ( ) {
    // rest of the code
    }
  2. Boolean 布爾值保存兩個(gè)值之一,true或false。每個(gè)布爾變量占用一個(gè)字節(jié)的內(nèi)存。
    例子
    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
    一種數(shù)據(jù)類型,占用一個(gè)字節(jié)的內(nèi)存,存儲(chǔ)一個(gè)字符值。字符文字用單引號(hào)寫成:'A',對(duì)于多個(gè)字符,字符串使用雙引號(hào):"ABC"。
    但是,字符是存儲(chǔ)為數(shù)字。你可以在ASCII圖表中查看特定編碼。這意味著可以對(duì)使用ASCII值的字符進(jìn)行算術(shù)運(yùn)算。例如,'A'+1的值為66,因?yàn)榇髮懽帜窤的ASCII值為65。
    例子
    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
  4. unsigned char
    unsigned char是一種無(wú)符號(hào)數(shù)據(jù)類型,占用一個(gè)字節(jié)的內(nèi)存。unsigned char數(shù)據(jù)類型編碼數(shù)字為0到255。
    例子
    Unsigned Char chr_y = 121 ; // declaration of variable with type Unsigned char and initialize it with character y
  5. byte 一個(gè)字節(jié)存儲(chǔ)一個(gè)8位無(wú)符號(hào)數(shù),從0到255。
    例子
    byte m = 25 ;//declaration of variable with type byte and initialize it with 25
  6. int
    整數(shù)(int)是數(shù)字存儲(chǔ)的主要數(shù)據(jù)類型。int存儲(chǔ)16位(2字節(jié))值。這產(chǎn)生-32768至32767的范圍(最小值為-215 ,最大值為(215 )-1)。
    int的大小因板而異。例如,在Arduino Due中,int存儲(chǔ)32位(4字節(jié))值。這產(chǎn)生-2147483648至2147483647的范圍(最小值-231 和最大值(231 )-1)。
    例子
    int counter = 32 ;// declaration of variable with type int and initialize it with 32
  7. Unsigned int
    unsigned int(無(wú)符號(hào)整數(shù))與int相同,存儲(chǔ)2字節(jié)。然而,它們只存儲(chǔ)正值,產(chǎn)生0到65535(216)-1的有效范圍。Due存儲(chǔ)4字節(jié)(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的板上,一個(gè)word存儲(chǔ)一個(gè)16位無(wú)符號(hào)數(shù)。在Due和Zero上,它存儲(chǔ)一個(gè)32位無(wú)符號(hào)數(shù)。
    例子
    word w = 1000 ;//declaration of variable with type word and initialize it with 1000
  9. Long
    Long變量是用于數(shù)字存儲(chǔ)的擴(kuò)展大小變量,存儲(chǔ)32位(4字節(jié)),從-2147483648到2147483647。
    例子
    Long velocity = 102346 ;//declaration of variable with type Long and initialize it with 102346
  10. unsigned long
    unsigned long變量是用于數(shù)字存儲(chǔ)的擴(kuò)展大小變量,并存儲(chǔ)32位(4字節(jié))。與標(biāo)準(zhǔn)的long不同,unsigned long不會(huì)存儲(chǔ)負(fù)數(shù),它們的范圍為0到4294967295(232-1)。
    例子
    Unsigned Long velocity = 101006 ;// declaration of variable with type Unsigned Long and initialize it with 101006
  11. short
    short是16位數(shù)據(jù)類型。在所有Arduinos(基于ATMega和ARM)上,一個(gè)short存儲(chǔ)一個(gè)16位(2字節(jié))值。這產(chǎn)生-32768至32767的范圍(最小值為-215,最大值為(215)-1)。
    例子
    short val = 13 ;//declaration of variable with type short and initialize it with 13
  12. float
    浮點(diǎn)數(shù)的數(shù)據(jù)類型是具有小數(shù)點(diǎn)的數(shù)字。浮點(diǎn)數(shù)通常用于近似模擬值和連續(xù)值,因?yàn)樗鼈兊姆直媛矢哂谡麛?shù)。
    浮點(diǎn)數(shù)可以大到3.4028235E+38,也可以低到-3.4028235E+38。它們被存儲(chǔ)為32位(4字節(jié))信息。
    例子
    float num = 1.352;//declaration of variable with type float and initialize it with 1.352
  13. double
    在Uno和其他基于ATMEGA的板上,雙精度浮點(diǎn)數(shù)占用四個(gè)字節(jié)。也就是說(shuō),double實(shí)現(xiàn)與float完全相同,精度沒(méi)有增益。在Arduino Due上,double具有8字節(jié)(64位)精度。
    例子
    double num = 45.352 ;// declaration of variable with type double and initialize it with 45.352

網(wǎng)站題目:Arduino課程:02.數(shù)據(jù)類型及條件語(yǔ)句
標(biāo)題路徑:http://weahome.cn/article/jggdgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部