chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣添加使用Arduino串行監(jiān)視器控制計(jì)算機(jī)上的LED的功能

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-28 08:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

在本課中,您將在第4課的基礎(chǔ)上,添加使用Arduino串行監(jiān)視器控制計(jì)算機(jī)上的LED的功能。串行監(jiān)視器是計(jì)算機(jī)和Arduino之間的“紐帶”-它使您可以發(fā)送和接收文本消息,方便調(diào)試以及通過(guò)鍵盤控制Arduino!

怎樣添加使用Arduino串行監(jiān)視器控制計(jì)算機(jī)上的LED的功能

例如,您將能夠從計(jì)算機(jī)發(fā)送命令來(lái)打開LED 。

在本課程中,您將使用與第4課完全相同的部件和類似的面包板布局。因此,如果您尚未這樣做,請(qǐng)立即按照第4課進(jìn)行。

串行監(jiān)視器

將以下草圖上傳到Arduino。稍后,我們將確切了解其工作原理

下載:文件

復(fù)制代碼

/*

Adafruit Arduino - Lesson 5. Serial Monitor

*/

int latchPin = 5;

int clockPin = 6;

int dataPin = 4;

byte leds = 0;

void setup()

{

pinMode(latchPin, OUTPUT);

pinMode(dataPin, OUTPUT);

pinMode(clockPin, OUTPUT);

updateShiftRegister();

Serial.begin(9600);

while (! Serial); // Wait untilSerial is ready - Leonardo

Serial.println(“Enter LED Number 0 to 7 or ‘x’ to clear”);

}

void loop()

{

if (Serial.available())

{

char ch = Serial.read();

if (ch 》= ‘0’ && ch 《= ‘7’)

{

int led = ch - ‘0’;

bitSet(leds, led);

updateShiftRegister();

Serial.print(“Turned on LED ”);

Serial.println(led);

}

if (ch == ‘x’)

{

leds = 0;

updateShiftRegister();

Serial.println(“Cleared”);

}

}

}

void updateShiftRegister()

{

digitalWrite(latchPin, LOW);

shiftOut(dataPin, clockPin, LSBFIRST, leds);

digitalWrite(latchPin, HIGH);

} /*

Adafruit Arduino - Lesson 5. Serial Monitor

*/

int latchPin = 5;

int clockPin = 6;

int dataPin = 4;

byte leds = 0;

void setup()

{

pinMode(latchPin, OUTPUT);

pinMode(dataPin, OUTPUT);

pinMode(clockPin, OUTPUT);

updateShiftRegister();

Serial.begin(9600);

while (! Serial); // Wait untilSerial is ready - Leonardo

Serial.println(“Enter LED Number 0 to 7 or ‘x’ to clear”);

}

void loop()

{

if (Serial.available())

{

char ch = Serial.read();

if (ch 》= ‘0’ && ch 《= ‘7’)

{

int led = ch - ‘0’;

bitSet(leds, led);

updateShiftRegister();

Serial.print(“Turned on LED ”);

Serial.println(led);

}

if (ch == ‘x’)

{

leds = 0;

updateShiftRegister();

Serial.println(“Cleared”);

}

}

}

void updateShiftRegister()

{

digitalWrite(latchPin, LOW);

shiftOut(dataPin, clockPin, LSBFIRST, leds);

digitalWrite(latchPin, HIGH);

}

將此草圖上傳到Arduino之后,單擊Arduino IDE工具欄上最右邊的按鈕。該按鈕在下方圈出。

將打開以下窗口。

該窗口稱為“串行監(jiān)視器”,它是Arduino IDE軟件的一部分。它的工作是使您既可以從計(jì)算機(jī)向Arduino板發(fā)送消息(通過(guò)USB),也可以從Arduino接收消息。

消息“輸入LED編號(hào)0至9或‘x’清除”是由Arduino發(fā)送的,它告訴我們可以向Arduino發(fā)送哪些命令,這些命令要么發(fā)送“ x”(關(guān)閉所有LED),要么發(fā)送您想要打開的LED數(shù)量(其中0是底部的LED,1是下一個(gè)LED,頂部是LED,最多7個(gè)LED)。

嘗試在串行監(jiān)視器的頂部區(qū)域中鍵入以下命令,并與“發(fā)送”按鈕對(duì)齊。鍵入以下每個(gè)字符后,按‘Send’:x 0 3 5

鍵入x無(wú)效,如果LED指示燈已全部熄滅,但是在輸入每個(gè)數(shù)字時(shí),相應(yīng)的LED指示燈應(yīng)點(diǎn)亮,并且您將從Arduino板獲得確認(rèn)消息,以便串行監(jiān)視器如下所示。

您可以看到,在再次輸入“ x”后,我即將按發(fā)送。這樣做,所有的LED都將熄滅。

如您所料, Arduino代碼

該草圖基于第4課中使用的草圖。因此,我們將在此處介紹新內(nèi)容。您會(huì)發(fā)現(xiàn)在Arduino IDE中引用完整的草圖很有用。

首先,在“設(shè)置”功能中,最后增加了三行:

下載:文件

復(fù)制代碼

void setup()

{

pinMode(latchPin, OUTPUT);

pinMode(dataPin, OUTPUT);

pinMode(clockPin, OUTPUT);

updateShiftRegister();

Serial.begin(9600);

while (! Serial); // Wait until Serial is ready - Leonardo

Serial.println(“Enter LED Number 0 to 7 or ‘x’ to clear”);

} void setup()

{

pinMode(latchPin, OUTPUT);

pinMode(dataPin, OUTPUT);

pinMode(clockPin, OUTPUT);

updateShiftRegister();

Serial.begin(9600);

while (! Serial); // Wait until Serial is ready - Leonardo

Serial.println(“Enter LED Number 0 to 7 or ‘x’ to clear”);

}

首先,我們有命令‘Serial.begin(9600)’。這將開始串行通信,以便Arduino可以通過(guò)USB連接發(fā)送命令。值9600稱為連接的“波特率”。這是數(shù)據(jù)發(fā)送的速度。您可以將其更改為更高的值,但還必須將Arduio Serial監(jiān)視器更改為相同的值。我們將在后面討論,但現(xiàn)在將其保留在9600。

以“ while”開頭的行可確保USB連接的另一端有一些東西供Arduino在開始發(fā)送消息之前與之交談。否則,可能會(huì)發(fā)送該消息,但不會(huì)顯示。僅當(dāng)您使用Arduino Leonardo時(shí),此行實(shí)際上才是必需的,因?yàn)楫?dāng)您打開串行監(jiān)視器時(shí),Arduino Uno會(huì)自動(dòng)重置Arduino板,而Leonardo則不會(huì)。

‘設(shè)置”發(fā)出我們?cè)诖斜O(jiān)視器頂部看到的消息。

“循環(huán)”功能是發(fā)生所有操作的地方:

下載:文件

復(fù)制代碼

void loop()

{

if (Serial.available())

{

char ch = Serial.read();

if (ch 》= ’0‘ && ch 《= ’7‘)

{

int led = ch - ’0‘;

bitSet(leds, led);

updateShiftRegister();

Serial.print(“Turned on LED ”);

Serial.println(led);

}

if (ch == ’x‘)

{

leds = 0;

updateShiftRegister();

Serial.println(“Cleared”);

}

}

}

void loop()

{

if (Serial.available())

{

char ch = Serial.read();

if (ch 》= ’0‘ && ch 《= ’7‘)

{

int led = ch - ’0‘;

bitSet(leds, led);

updateShiftRegister();

Serial.print(“Turned on LED ”);

Serial.println(led);

}

if (ch == ’x‘)

{

leds = 0;

updateShiftRegister();

Serial.println(“Cleared”);

}

}

}

循環(huán)中發(fā)生的所有事情都包含在’if‘語(yǔ)句中。因此,除非對(duì)內(nèi)置Arduino函數(shù)’Serial.available()‘的調(diào)用為’true‘,否則將不會(huì)發(fā)生其他任何事情。

Serial.available()如果數(shù)據(jù)已發(fā)送至Arduino和準(zhǔn)備好要處理了嗎?傳入的消息保存在所謂的緩沖區(qū)中,如果該緩沖區(qū)不為空,則Serial.available()返回true。

如果已接收到消息,則將其轉(zhuǎn)到下一行代碼:

下載:文件

復(fù)制代碼

char ch = Serial.read(); char ch = Serial.read();

這將從緩沖區(qū)中讀取下一個(gè)字符,并將其從緩沖區(qū)中刪除。它還將其分配給變量“ ch”。變量“ ch”的類型為“ char”,代表“字符”,顧名思義,它包含一個(gè)字符。

如果您已按照串行監(jiān)視器頂部提示中的說(shuō)明進(jìn)行操作,則此字符可以是0到7之間的一個(gè)數(shù)字或字母’x‘。

下一行的’if‘語(yǔ)句通過(guò)查看’ch‘是否大于或等于來(lái)檢查它是否是一個(gè)數(shù)字。等于字符“ 0”且小于或等于字符“ 7”。以這種方式比較字符看起來(lái)有些奇怪,但是完全可以接受。

每個(gè)字符都由一個(gè)唯一的數(shù)字表示,稱為ASCII值。這意味著當(dāng)我們使用《=和》 =比較字符時(shí),實(shí)際上是被比較的ASCII值。

如果測(cè)試通過(guò),則進(jìn)入下一行:

下載:文件

復(fù)制代碼

int led = ch – ’0‘; int led = ch – ’0‘;

現(xiàn)在,我們正在對(duì)字符進(jìn)行算術(shù)運(yùn)算!我們將從輸入的任何數(shù)字中減去數(shù)字“ 0”。因此,如果鍵入’0‘,則’0‘–’0‘將等于0。如果鍵入’7‘,則’7‘–’0‘將等于數(shù)字7,因?yàn)閷?shí)際上是正在使用的ASCII值

由于我們知道要打開的LED的數(shù)量,因此只需要在變量“ leds”中設(shè)置該位并更新移位寄存器即可。

下載:文件

復(fù)制代碼

bitSet(leds, led);

updateShiftRegister(); bitSet(leds, led);

updateShiftRegister();

接下來(lái)的兩行將確認(rèn)消息寫回到串行監(jiān)視器。

下載:文件

復(fù)制代碼

Serial.print(“Turned on LED ”);

Serial.println(led); Serial.print(“Turned on LED ”);

Serial.println(led);

第一行使用Serial.print而不是Serial.println。兩者之間的區(qū)別在于,Serial.print在打印其參數(shù)中的任何內(nèi)容后都不會(huì)開始新行。我們?cè)诘谝恍兄惺褂盟?,因?yàn)槲覀儗⑾⒎譃閮刹糠诌M(jìn)行打印。首先是通用位:“打開LED”,然后是LED的編號(hào)。

LED的編號(hào)保存在“ int”變量中,而不是文本字符串。 Serial.print可以采用雙引號(hào)括起來(lái)的文本字符串,也可以采用’int‘或與此相關(guān)的幾乎任何類型的變量。

處理情況的’if‘語(yǔ)句之后,一位數(shù)字已被處理,還有第二個(gè)’if‘語(yǔ)句,用于檢查’ch‘是否為字母’x‘。

下載:文件

復(fù)制代碼

if (ch == ’x‘)

{

leds = 0;

updateShiftRegister();

Serial.println(“Cleared”);

} if (ch == ’x‘)

{

leds = 0;

updateShiftRegister();

Serial.println(“Cleared”);

}

如果是,則清除所有指示燈并發(fā)送確認(rèn)消息。

其他要做的事情

我們通過(guò)在每個(gè)字符后單擊“發(fā)送”來(lái)發(fā)送字符來(lái)分別控制LED。但是,如果您在一行中發(fā)送所有字符命令,它將同樣有效。嘗試在串行監(jiān)視器中輸入以下內(nèi)容,然后單擊“發(fā)送”:

x0246

現(xiàn)在,讓我們看看Arduino可以通訊的速度。將草圖中的波特率從9600更改為115200,然后再次將其上載到板。然后,在打開串行監(jiān)視器后,從下拉列表中選擇115200。

您應(yīng)該發(fā)現(xiàn)一切仍然有效。高速通信通常不是必需的,因此經(jīng)常使用9600的波特率,因?yàn)樵S多串行外圍設(shè)備(例如GPS模塊)會(huì)將其作為默認(rèn)波特率,因此這是一個(gè)標(biāo)準(zhǔn)。

請(qǐng)嘗試不匹配波特率-例如,使用Serial.begin(9600)并在下拉菜單中選擇57600??吹娇雌饋?lái)像什么嗎?全部亂碼?錯(cuò)了如果您在串行監(jiān)視器中收到奇怪的數(shù)據(jù),請(qǐng)三遍檢查波特率并確保它們匹配!

串行監(jiān)視器也是調(diào)試行為異常的草圖的一種好方法。有時(shí),當(dāng)草圖不符合您的想法時(shí),將Serial.println()語(yǔ)句放在關(guān)鍵位置將有助于您查看發(fā)生的情況。

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 監(jiān)視器
    +關(guān)注

    關(guān)注

    1

    文章

    804

    瀏覽量

    35038
  • 串行
    +關(guān)注

    關(guān)注

    0

    文章

    256

    瀏覽量

    35365
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6526

    瀏覽量

    196785
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    工業(yè)邊緣計(jì)算機(jī)是什么?有什么功能?

    工業(yè)邊緣計(jì)算機(jī)是部署在工業(yè)現(xiàn)場(chǎng)邊緣側(cè),具備計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)能力,能就近處理工業(yè)數(shù)據(jù)并實(shí)現(xiàn)快速?zèng)Q策的專用設(shè)備。它通過(guò)將算力下沉至靠近數(shù)據(jù)源的位置,減少數(shù)據(jù)傳輸延遲,提升系統(tǒng)實(shí)時(shí)性和可靠性,成為工業(yè)
    的頭像 發(fā)表于 02-12 14:43 ?454次閱讀

    工控機(jī)與普通計(jì)算機(jī)的核心差異解析

    在工業(yè)自動(dòng)化和智能制造領(lǐng)域,計(jì)算機(jī)設(shè)備作為核心控制單元,其選擇直接影響整個(gè)系統(tǒng)的穩(wěn)定性與可靠性。工控機(jī)與普通計(jì)算機(jī)雖同屬計(jì)算設(shè)備,但其設(shè)計(jì)目標(biāo)、性能側(cè)重和應(yīng)用場(chǎng)景存在根本性差異。準(zhǔn)確理
    的頭像 發(fā)表于 11-25 14:45 ?1758次閱讀
    工控機(jī)與普通<b class='flag-5'>計(jì)算機(jī)</b>的核心差異解析

    貿(mào)澤電子開售全新Arduino UNO Q單板計(jì)算機(jī)

    貿(mào)澤電子開售全新Arduino UNO Q單板計(jì)算機(jī)。Arduino UNO Q單板計(jì)算機(jī)(SBC)將高性能計(jì)算與實(shí)時(shí)
    的頭像 發(fā)表于 11-08 09:50 ?1316次閱讀

    【作品合集】賽昉科技VisionFive 2單板計(jì)算機(jī)開發(fā)板測(cè)評(píng)

    單板計(jì)算機(jī)試用體驗(yàn)】GPIO口點(diǎn)亮LED燈【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】移植libgpiod【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】VNC遠(yuǎn)程桌面【VisionF
    發(fā)表于 09-04 09:08

    請(qǐng)問(wèn)NuMicro? Cortex-M? 系列芯片是否支持 I2C 監(jiān)視器功能?

    NuMicro? Cortex-M? 系列芯片是否支持 I2C 監(jiān)視器功能?
    發(fā)表于 08-21 06:04

    工業(yè)計(jì)算機(jī)的重要性

    于管理用于產(chǎn)品檢查、數(shù)據(jù)記錄和數(shù)據(jù)分析的運(yùn)動(dòng)控制系統(tǒng),以提高制造生產(chǎn)率。例如,汽車行業(yè)從工業(yè)邊緣計(jì)算機(jī)中受益匪淺,這些計(jì)算機(jī)用于自動(dòng)化制造汽車所涉及的各種過(guò)程。工業(yè)邊
    的頭像 發(fā)表于 07-28 16:07 ?544次閱讀
    工業(yè)<b class='flag-5'>計(jì)算機(jī)</b>的重要性

    自動(dòng)化計(jì)算機(jī)經(jīng)過(guò)加固后有什么好處?

    讓我們討論一下部署堅(jiān)固的自動(dòng)化計(jì)算機(jī)的一些好處。1.溫度范圍寬自動(dòng)化計(jì)算機(jī)經(jīng)過(guò)工程設(shè)計(jì),配備了支持寬溫度范圍的組件,使自動(dòng)化計(jì)算解決方案能夠在各種不同的極端環(huán)境中運(yùn)行。自動(dòng)化計(jì)算機(jī)能夠
    的頭像 發(fā)表于 07-21 16:44 ?597次閱讀
    自動(dòng)化<b class='flag-5'>計(jì)算機(jī)</b>經(jīng)過(guò)加固后有什么好處?

    Texas Instruments AMC6V704模擬監(jiān)視器控制器數(shù)據(jù)手冊(cè)

    Texas Instruments AMC6V704模擬監(jiān)視器控制器專為光收發(fā)應(yīng)用而設(shè)計(jì)。它包括四個(gè)具有可編程輸出范圍的12位VDAC和四個(gè)12位電流輸出型數(shù)模轉(zhuǎn)換 (IDAC)
    的頭像 發(fā)表于 07-17 10:13 ?786次閱讀
    Texas Instruments AMC6V704模擬<b class='flag-5'>監(jiān)視器</b>和<b class='flag-5'>控制器</b>數(shù)據(jù)手冊(cè)

    自動(dòng)化計(jì)算機(jī)功能與用途

    工業(yè)自動(dòng)化是指利用自動(dòng)化計(jì)算機(jī)來(lái)控制工業(yè)環(huán)境中的流程、機(jī)器人和機(jī)械,以制造產(chǎn)品或其部件。工業(yè)自動(dòng)化的目的是提高生產(chǎn)率、增加靈活性,并提升制造過(guò)程的質(zhì)量。工業(yè)自動(dòng)化在汽車制造中體現(xiàn)得最為明顯,其中許多
    的頭像 發(fā)表于 07-15 16:32 ?719次閱讀
    自動(dòng)化<b class='flag-5'>計(jì)算機(jī)</b>的<b class='flag-5'>功能</b>與用途

    使用SIL級(jí)電源監(jiān)視器的優(yōu)勢(shì)

    此前強(qiáng)調(diào)了診斷活動(dòng)對(duì)于滿足基本功能安全標(biāo)準(zhǔn)的定性和定量的意義,如圖1所示。出于定性考慮,無(wú)論安全完整性等級(jí)(SIL)如何,都必須實(shí)施電源監(jiān)視器。而對(duì)于定量要求,主要有兩個(gè)考慮因素:可靠性預(yù)測(cè)和架構(gòu)
    的頭像 發(fā)表于 07-11 15:40 ?1625次閱讀

    工業(yè)計(jì)算機(jī)與商用計(jì)算機(jī)的區(qū)別有哪些

    工業(yè)計(jì)算機(jī)是一種專為工廠和工業(yè)環(huán)境設(shè)計(jì)的計(jì)算系統(tǒng),具有高可靠性和穩(wěn)定性,能夠應(yīng)對(duì)惡劣環(huán)境下的自動(dòng)化、制造和機(jī)器人操作。其特點(diǎn)包括無(wú)風(fēng)扇散熱技術(shù)、無(wú)電纜連接和防塵防水設(shè)計(jì),使其在各種工業(yè)自動(dòng)化場(chǎng)景中
    的頭像 發(fā)表于 07-10 16:36 ?718次閱讀
    工業(yè)<b class='flag-5'>計(jì)算機(jī)</b>與商用<b class='flag-5'>計(jì)算機(jī)</b>的區(qū)別有哪些

    工業(yè)計(jì)算機(jī)如何設(shè)計(jì)用于沖擊和振動(dòng)

    探討了使工業(yè)計(jì)算機(jī)能夠抵御沖擊和振動(dòng)的關(guān)鍵設(shè)計(jì)原則和功能。了解工業(yè)環(huán)境中的沖擊和振動(dòng)沖擊是指突然的、高強(qiáng)度的沖擊,例如重物撞擊系統(tǒng)或運(yùn)輸過(guò)程中突然停止。另一方面,振
    的頭像 發(fā)表于 05-19 15:27 ?483次閱讀
    工業(yè)<b class='flag-5'>計(jì)算機(jī)</b>如何設(shè)計(jì)用于沖擊和振動(dòng)

    計(jì)算機(jī)網(wǎng)絡(luò)入門指南

    計(jì)算機(jī)網(wǎng)絡(luò)是指將地理位置不同且具有獨(dú)立功能的多臺(tái)計(jì)算機(jī)及其外部設(shè)備,通過(guò)通信線路連接起來(lái),在網(wǎng)絡(luò)操作系統(tǒng)、網(wǎng)絡(luò)管理軟件及網(wǎng)絡(luò)通信協(xié)議的管理和協(xié)調(diào)下,實(shí)現(xiàn)資源共享和信息傳遞的計(jì)算機(jī)系統(tǒng)。
    的頭像 發(fā)表于 04-22 14:29 ?2198次閱讀
    <b class='flag-5'>計(jì)算機(jī)</b>網(wǎng)絡(luò)入門指南

    如何在計(jì)算機(jī)上安裝麒麟操作系統(tǒng)Kylin V10 SP3

    麒麟操作系統(tǒng) Kylin V10 SP3 是一款基于 Linux 的操作系統(tǒng),廣泛應(yīng)用于政府、企業(yè)和個(gè)人用戶。本文將詳細(xì)介紹如何在計(jì)算機(jī)上安裝麒麟操作系統(tǒng) Kylin V10 SP3,幫助您順利完成安裝并開始使用。
    的頭像 發(fā)表于 04-11 15:32 ?3864次閱讀
    如何在<b class='flag-5'>計(jì)算機(jī)上</b>安裝麒麟操作系統(tǒng)Kylin V10 SP3

    NVIDIA 宣布推出 DGX Spark 個(gè)人 AI 計(jì)算機(jī)

    臺(tái)式超級(jí)計(jì)算機(jī)由 NVIDIA Grace Blackwell 驅(qū)動(dòng),為開發(fā)者、研究人員和數(shù)據(jù)科學(xué)家提供加速 AI 功能;系統(tǒng)由頭部計(jì)算機(jī)制造商(包括華碩、Dell Technologies、HP
    發(fā)表于 03-19 09:59 ?740次閱讀
       NVIDIA 宣布推出 DGX Spark 個(gè)人 AI <b class='flag-5'>計(jì)算機(jī)</b>