色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎樣添加使用Arduino串行監視器控制計算機上的LED的功能

454398 ? 來源:網絡整理 ? 作者:網絡整理 ? 2019-11-28 08:51 ? 次閱讀

概述

在本課中,您將在第4課的基礎上,添加使用Arduino串行監視器控制計算機上的LED的功能。串行監視器是計算機和Arduino之間的“紐帶”-它使您可以發送和接收文本消息,方便調試以及通過鍵盤控制Arduino!

怎樣添加使用Arduino串行監視器控制計算機上的LED的功能

例如,您將能夠從計算機發送命令來打開LED 。

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

串行監視器

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

下載:文件

復制代碼

/*

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工具欄上最右邊的按鈕。該按鈕在下方圈出。

將打開以下窗口。

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

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

嘗試在串行監視器的頂部區域中鍵入以下命令,并與“發送”按鈕對齊。鍵入以下每個字符后,按‘Send’:x 0 3 5

鍵入x無效,如果LED指示燈已全部熄滅,但是在輸入每個數字時,相應的LED指示燈應點亮,并且您將從Arduino板獲得確認消息,以便串行監視器如下所示。

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

如您所料, Arduino代碼

該草圖基于第4課中使用的草圖。因此,我們將在此處介紹新內容。您會發現在Arduino IDE中引用完整的草圖很有用。

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

下載:文件

復制代碼

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可以通過USB連接發送命令。值9600稱為連接的“波特率”。這是數據發送的速度。您可以將其更改為更高的值,但還必須將Arduio Serial監視器更改為相同的值。我們將在后面討論,但現在將其保留在9600。

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

‘設置”發出我們在串行監視器頂部看到的消息。

“循環”功能是發生所有操作的地方:

下載:文件

復制代碼

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”);

}

}

}

循環中發生的所有事情都包含在’if‘語句中。因此,除非對內置Arduino函數’Serial.available()‘的調用為’true‘,否則將不會發生其他任何事情。

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

如果已接收到消息,則將其轉到下一行代碼:

下載:文件

復制代碼

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

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

如果您已按照串行監視器頂部提示中的說明進行操作,則此字符可以是0到7之間的一個數字或字母’x‘。

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

每個字符都由一個唯一的數字表示,稱為ASCII值。這意味著當我們使用《=和》 =比較字符時,實際上是被比較的ASCII值。

如果測試通過,則進入下一行:

下載:文件

復制代碼

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

現在,我們正在對字符進行算術運算!我們將從輸入的任何數字中減去數字“ 0”。因此,如果鍵入’0‘,則’0‘–’0‘將等于0。如果鍵入’7‘,則’7‘–’0‘將等于數字7,因為實際上是正在使用的ASCII值

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

下載:文件

復制代碼

bitSet(leds, led);

updateShiftRegister(); bitSet(leds, led);

updateShiftRegister();

接下來的兩行將確認消息寫回到串行監視器。

下載:文件

復制代碼

Serial.print(“Turned on LED ”);

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

Serial.println(led);

第一行使用Serial.print而不是Serial.println。兩者之間的區別在于,Serial.print在打印其參數中的任何內容后都不會開始新行。我們在第一行中使用它,因為我們將消息分為兩部分進行打印。首先是通用位:“打開LED”,然后是LED的編號。

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

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

下載:文件

復制代碼

if (ch == ’x‘)

{

leds = 0;

updateShiftRegister();

Serial.println(“Cleared”);

} if (ch == ’x‘)

{

leds = 0;

updateShiftRegister();

Serial.println(“Cleared”);

}

如果是,則清除所有指示燈并發送確認消息。

其他要做的事情

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

x0246

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

您應該發現一切仍然有效。高速通信通常不是必需的,因此經常使用9600的波特率,因為許多串行外圍設備(例如GPS模塊)會將其作為默認波特率,因此這是一個標準。

請嘗試不匹配波特率-例如,使用Serial.begin(9600)并在下拉菜單中選擇57600??吹娇雌饋硐袷裁磫??全部亂碼?錯了如果您在串行監視器中收到奇怪的數據,請三遍檢查波特率并確保它們匹配!

串行監視器也是調試行為異常的草圖的一種好方法。有時,當草圖不符合您的想法時,將Serial.println()語句放在關鍵位置將有助于您查看發生的情況。

責任編輯:wv

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 監視器
    +關注

    關注

    1

    文章

    780

    瀏覽量

    33150
  • 串行
    +關注

    關注

    0

    文章

    237

    瀏覽量

    33883
  • Arduino
    +關注

    關注

    188

    文章

    6471

    瀏覽量

    187244
收藏 人收藏

    評論

    相關推薦

    計算機存儲系統的工作原理和功能

    計算機存儲系統作為計算機系統中至關重要的組成部分,其原理和功能對于理解計算機的運行機制具有關鍵意義。以下將詳細闡述計算機存儲系統的原理和
    的頭像 發表于 09-26 16:42 ?1047次閱讀

    計算機進行程序控制工作的基本原理是怎樣

    計算機程序控制計算機科學中的一個核心概念,它涉及到計算機如何根據預設的指令序列執行任務。 1. 計算機硬件基礎 在深入程序
    的頭像 發表于 09-04 16:57 ?554次閱讀

    微處理如何控制計算機系統

    微處理,作為計算機系統的核心部件,承擔著控制整個計算機系統運行的重要任務。它不僅是計算機的運算中心,還是
    的頭像 發表于 08-22 14:21 ?515次閱讀

    計算機系統的組成和功能

    計算機系統是一個復雜而龐大的概念,它涵蓋了計算機硬件、軟件以及它們之間相互作用的所有元素。為了全面而深入地探討計算機系統,本文將從定義、組成、功能、發展歷程以及未來趨勢等方面進行詳細闡
    的頭像 發表于 07-24 17:41 ?1041次閱讀

    計算機控制器的結構和功能

    隨著信息技術的迅猛發展,計算機已經深入我們生活的方方面面。而計算機控制器,作為計算機系統的核心部件之一,承擔著協調各部件工作、指揮整個計算機按程序運行的重要任務。本文將詳細介紹
    的頭像 發表于 06-17 15:47 ?1710次閱讀

    工業控制計算機的發展趨勢有哪些

    控制計算機的硬件性能也在不斷提升。主要表現在以下幾個方面: 1.1 處理性能的提升 處理是工業控制
    的頭像 發表于 06-16 11:41 ?1058次閱讀

    工業控制計算機的體系結構是什么

    。 硬件結構 工業控制計算機的硬件結構主要包括以下幾個部分: 1.1 中央處理單元(CPU) CPU是工業控制計算機的核心部件,負責執行程序指令和處理數據。工業
    的頭像 發表于 06-16 11:38 ?1041次閱讀

    工業控制計算機的硬件組成有哪些

    工業控制計算機(Industrial Personal Computer,IPC)是一種專門為工業環境設計的計算機系統,具有高可靠性、高穩定性、高實時性等特點。在工業自動化、智能制造等領域中,工業
    的頭像 發表于 06-16 11:33 ?1721次閱讀

    工業控制計算機的特點 工業控制計算機的應用領域

    工業控制計算機是一種專門為工業自動化和控制系統設計的計算機。它具有高度的可靠性、穩定性和實時性,能夠滿足工業生產過程中對控制精度和響應速度的
    的頭像 發表于 06-16 11:30 ?1490次閱讀

    工業控制計算機的特點和要求

    工業控制計算機是一種專門設計用于工業環境的計算機系統,它們在自動化、監控和控制工業生產過程中發揮著關鍵作用。由于工業環境的特殊性,工業控制
    的頭像 發表于 06-11 10:48 ?1202次閱讀

    工業控制計算機與普通個人計算機相比有何區別?

    景等方面存在顯著差異。本文將詳細探討這兩種計算機的區別。 設計差異 2.1 硬件設計 工業控制計算機通常采用模塊化設計,以滿足不同工業應用的需求。它們具有更高的擴展性和靈活性,可以根據需要添加
    的頭像 發表于 06-11 10:45 ?995次閱讀

    工業計算機功能和特點

    在數字化和自動化的浪潮中,工業計算機以其獨特的功能和強大的計算能力,逐漸在工業領域中嶄露頭角。本文將對工業計算機進行詳細介紹,包括其定義、功能
    的頭像 發表于 06-06 17:01 ?772次閱讀

    工業計算機與普通計算機的區別

    在信息化和自動化日益發展的今天,計算機已經成為了我們日常生活和工作中不可或缺的工具。然而,在計算機領域中,工業計算機和普通計算機雖然都具備基本的計算
    的頭像 發表于 06-06 16:45 ?1447次閱讀

    【量子計算機重構未來 | 閱讀體驗】+ 初識量子計算機

    大語言模型訓練會是一個怎樣的情景。。。。。。 希望量子計算機盡快走出實驗室,能夠早日進入尋常百姓家,更希望我國的量子計算機取得突破,蓬勃發展,也能遙遙領先! 今天先研讀至此,后續所讀所感將繼續分享。 附
    發表于 03-05 17:37

    微機原理和計算機組成原理的區別

    來看微機原理和計算機組成原理的區別。微機原理是指微型計算機的工作原理,主要包括計算機的基本組成和運行原理,如中央處理(CPU)、存儲、輸
    的頭像 發表于 01-14 14:56 ?3468次閱讀
    主站蜘蛛池模板: 妹妹成人网| 亚洲精品tv久久久久久久久久| 永久免费毛片| 久久免费看视频| 《乳色吐息》无删减版在线观看| 美女扒开腿让男生桶免费看动态图 | 国产免费网站看v片在线| 亚洲精品久久久午夜福利电影网| 久久精品美女久久| 被公疯狂玩弄的漂亮人妻| 三叶草成人| 精品久久久麻豆国产精品 | 99福利在线观看| 色爱区综合小说| 黄色三级网站在线观看| a在线视频免费观看| 亚欧洲乱码视频一二三区| 美女拉开腿让男生桶到爽| 高清午夜福利电影在线| 亚洲视频中文字幕在线观看| 男人天堂999| 国产香蕉尹人视频在线| 99久久免费国产精品特黄| 羞羞漫画在线播放| 欧美の无码国产の无码影院| 国产露脸无码A区久久| 2020美女视频黄频大全视频| 偷拍久久国产视频免费| 久久久久夜| 国产AV国片精品无套内谢无码| 在镜头里被CAO翻了H| 色爱AV综合区| 麻豆精品传媒一二三区| 国产欧美一区二区精品仙草咪| 97SE亚洲国产综合在线| 亚洲精品成人AV在线观看爽翻| 欧美伊人久久大香线蕉综合69| 精品国产乱码久久久久久乱码 | 高跟丝袜岳第一次| 970女主播电台歌曲| 亚洲中文字幕乱码熟女在线|