Arduino之點亮LED

2021-12-29 小神童機器人

您知道什麼是arduino嗎?您知道arduino可以做什麼嗎?今天讓我們認識一下arduino!

arduino是一個開源的電子原型平臺,方便,靈活,方便,方便。

包括硬體(各種型號的arduino板)和軟體(ArduinoIDE)。由歐洲開發團隊在冬季開發。其成員包括MassimoBanzi,DavidCuarTIelles,TomIgoe,GianlucaMarTIno,DavidMellis和NicholasZambetTI。

這是通過arduino點亮led的案例。

從arduino到臺式機連接線軟體。

安裝atmelstudio,其中將包含atmel的編譯器,並在pc端安裝valcommportdriver以列印信息到teraterm。

當然,您也可以下載一個arduinoide。arduinoide可以快速編程arduino,但是我更習慣於使用atmelstudio。

該軟體可以通過埠將代碼下載到arduino。

串擾通信軟體,putty或teraterm。

代碼編輯軟體,atom或任何可以編輯文本的軟體文檔。

arduino的cpuatmel328p晶片手冊,下載連結。打開arduino旅行項目介紹。

這個小項目主要帶您進入嵌入式開發領域。

編寫一個簡單的commandlineinterface來與板通信初步識別arduino硬體。

我們的核心是arduinouno開發板。下面的圖片是arduino的路線圖。我標記了它的幾個大塊,下面我將一一解釋。

voltageregulartor:其任務是為系統提供穩定的3.3v和5v電壓。藍色區域有兩個voltageregulartor,一個是lp2985,輸入5v,輸出3.3v;另一個是ncp1117,輸入最高20v,輸出5v。arduino有兩種電源,一種是usb電源。這時,僅從藍色區域左下角的usb vcc為板提供5v電壓,然後通過regulartor為板提供3.3v電壓。另一種電源是通過電源插座「在主板上的usb插座下方有一個圓形黑色電源插座」。該電源插座是中間的矩形區域,藍色區域。它的電壓可以高達20v,然後通過ncp1117變為5v電壓,然後通過lp2985變為3.3v電壓。在藍色區域出現usbvcc後,有一個值得注意的地方。連接到電晶體。電晶體上有一個比較器。比較器的正向輸入端連接到分壓電路,反向輸入端連接到3.3v。其目的是,如果從供電插座輸入的電壓小於5v,則使用usb的5v電壓,否則將使用電源插座的5v電壓。

USBControlchip:USB的控制晶片,買回來的Arduino中這個晶片的固件都是已經在裡面的,它的作用是把USB接口的東西轉成串行通信數據(在電路圖紅色的SerialComm部分)發送給CPU,還用把CPU從串行通信發出來的東西,傳換成USB信號發送給PC機。

maincpu:主cpu是atmel328p。8-bitcpu,由於arduino沒有外部serialflash或外部sdram,因此根據晶片手冊,共有32kb晶片上的programmingflash,並且可以在此flash中包含編譯的代碼。有2kb sram,一些內存信息,stack和heap,全局變化等,都放在ram中。

crystal:16mhz晶振。

led:led的輸入標記是sck,對應於atmel328p上的b5管腳. led連接到放大器,目的是電流不通過放大器,而僅通過電壓控制led,因此b5管腳可以用於其他目的。

serialcomm:埠通信埠,通過cpu上的usart向pc發送數據。

點亮arduinoled小燈創建項目。

選擇file-project-gccexecutableproject。

輸入項目名稱,請選擇atmel328p之後的晶片。

然後您需要配置avrdude,選擇tool--externaltool開始配置avrdude。

TItle:avrdudeprogrammer。

command:c:avrdudeavrdude. exe,請填寫通往avrdude的路徑。

Arguments:-F-V-carduino-pATMEGA328P-PCOM6-b115200-Uflash:w:"$(ProjectDir)Debug$(ItemFileName).hex":i裡面的COM6請從devicemanager中找出當前的commport.點亮LED燈

要點亮led燈,需要配置pb5gpio存儲設備。通過atmel328p的datasheet和arduino的電路圖,輸出高功率使led亮,而低功率則使led熄滅。ddrb|=(1<<PB5);;;配置pb5 datadirectionregisterportb|=(1<<PB5);;|讓pb5輸出高電平portb+=(1<<PB5);;.讓pb5輸出低電平埠通信。

當可以控制led開關時,可以解釋編譯器和avrdude代碼下載也可以說是正確的。這時,為了更好地進行debug程序,我們需要使埠通信正常工作,以便信息可以列印到pc端。

根據arduino的路線圖,我們需要讓紅色區域的serialcomm正常工作. usbcontrollerchip可以將數據從usb埠輸出到pc端。

atmel328p的datasheet,section24。USART的描述詳細。對於USART,必須首先配置波特率,然後需要配置一些USART傳輸模式,例如一次發送8bit或一次發送7bit,是否有stopbit等。

注意的是datasheet中的如何將波特率計算為存儲容量所需的值。計算公式與板的晶振頻率有關。具體在數據手冊的227頁中。

在傳輸過程中,它將不斷將要發送的數據寫入存儲容量中,然後atmel328p將通過兩個pin發送到usbcontrollerchip,然後usbcontrollerchip將其發送到pc端。//配置USARTUBRR0H=(uint8_t)(BAUDRATE_9600_UBRR>>8);//配置波特率UBRR0L=(uint8_t)BAUDRATE_9600_UBRR;UCSR0B=(1<1<1<< RXCIE0);//enable接收和發送數據UCSR0C=(3

=/*Waitforemptytransmitbuffer*/while!!(UCSR0A&(1

當確定arduino和pc可以正常通信時,我們可以開始編寫commandlineinterface。顧名思義,是通過pc端輸入指令,而arduino則是相應的動作。通常,大多數電子產品都有自己的cli用於與產品通信。在許多情況下,如果要開發新功能,則需要添加一個新的command,然後pc端的driver可以將此新的command發送到嵌入式設備,以便它可以執行新功能。

commandlineinterface原始碼,您可以輸入指示來打開或關閉arduino的led。

在實現commandlineinterface的過程中,有些有趣。

我使用circularbuffer來實現數據的接收和處理。有readindex和buildindex。使用buffer的目的是用戶輸入命令的速度與計算機處理的速度不同,因此我們需要buffer來平衡它們。例如,計算機需要很長時間才能處理某個命令,並且用戶在此命令之後連續輸入了多個其他命令。所有其他命令將放在此circularbuffer上,然後依次處理。

這個小project使用此volatile定義一個變量,即usart startcmdprocess,用於記錄當前receivebuffer中有多少命令。原因是我們在中斷期間將此變量添加到1。當編譯器編譯此代碼時,如果沒有volatile,編譯器將不知道變量何時添加1,因為中斷可能隨時發生。因此,主函數中有if(變量>0)。編譯器將永遠不會做出此判斷。編譯器將此判斷視為永久的true,因此此判斷將被編譯器視為永久的true。因此,添加volatile,強制編譯器在編譯中真正判斷變量的值,簡單地說,它不會優化主函數中的if(變量>0)。

輸入getledstatus,arduino返回ledoff。

輸入setledon,arduino點亮led。

輸入getledstatus,arduino返回ledon。

輸入setledoff,arduino關閉led。

相關焦點

  • arduino與labview通信——點亮LED
    ,發送一個字符下來後,「Serial.available() >0」成立,運行花括號裡的程序  {    char i = Serial.read();      //讀取Arduino串口緩衝區的一個字節    if (i == '1')digitalWrite(13, 1);     //如果Arduino收到「1」,則13引腳輸出高電平,LED點亮
  • arduino(1)--ESP8266配置
    首先需要準備一個開發板,這裡我準備的是淘寶購買的兼容arduino的ESP8266模塊。        我使用的是arduino來編程實現,故需要下載對應的庫文件,打開arduino ide,文件->首選項,在下圖紅框內輸入:http://arduino.esp8266.com/stable/package_esp8266com_index.json:
  • 使用Atmega8製作Arduino複製板
    這個教程不是我的原創,而是摘編於CSDN上的https://blog.csdn.net/weixin_43278295/article/details/84403652的內容,原文標題:基於atmega8的arduino最小系統製作(arduino uno作為下載器);轉它的原因,是自Attiny13/13A、Attiny85、Gemma/Lilapad
  • 電子藝術Processing與Arduino之間互動編程——點亮LED燈
    Processing與Arduino交互——點亮led燈作品:藍色的花出自:維度模態工作室出自:http://iprocessing.cn/2018/09/28/%E6%9C%89%E8%B6%A3%E7%9A%84%E7%B2%92%E5%AD%90%E7%BC%96%E7%A8%8B/Processing也有著許多功能強大的庫
  • Open Source Hardware、Arduino 與 Platformio之碎碎念
    Arduino for esp8266伴隨著esp8266的發展逐漸進入傳統嵌入式開發應用領域,arduino for esp32在樂鑫的支持下迅速推出了穩定版,使嵌入式開發的先行者擺脫了傳統嵌入式開發的種種約束,mbed,ST等CPU廠家的融入又推動了Arduino的發展,同時各種外設廠家不斷拓展了arduino的生態,arduino已成為OSH的主流平臺。
  • 好玩的Python——Python玩轉Arduino
    前言Python玩轉arduino的方式跟mblock的在線編程模式差不多的,都是先給arduino寫入一個固件,然後操作,不同的是mblock是通過積木來向arduino下指令,這裡我們用Python.
  • 玩轉浪漫之Arduino花式點燈
    只要稍微有一點c語言基礎和初高中物理知識,就能利用arduino創造出許多好玩的智能小物件。本篇博文將簡單介紹如何使用arduino逐步實現簡單的物聯網控制:點燈,串口點燈,利用開發板點燈。一、準備首先我們需要下載arduino的開發環境去www.arduino.cc 下載 Arduino IDE軟體。一路下一步安裝打開開發環境。代碼區域主要分為setup和loop函數:setup函數部分是指開始程序前對一些環境的測試,而loop代碼段則是執行後arduino執行的部分。
  • 1.優化arduino程序存儲空間
    0x01 查看Blink程序大家第一次在arduino上開發程序時,第一個程序應該就是blink控制D13上的led燈閃爍的程序了,程序源碼如下:// the setup function runs once when you press// reset or power the board
  • Arduino遇到Node.js:通過Web界面控制LED的亮度
    要編寫Node.js程序,請打開任何文本編輯器,然後粘貼本教程末尾附帶的「 blink_led」代碼,並將其保存為擴展名「 .js」,即「blink_led.js」,放在之前創建的「LED_Control」文件夾中。下面進行代碼分析。開始定義連接led的微控制器的引腳,在此示例中,LED連接到Arduino UNO的引腳5。Node.js中的「 var」表示變量聲明。
  • 走進Linux設備驅動程序的第一步——點亮led
    本篇文章來學習嵌入式Linux驅動程序開發中的第一步——點亮led。
  • 小豬學arduino—使用esp8266WIFI模塊實現雙向通信
    今天剛好要在pc/pi上給arduino發指令,手上沒有多餘的esp8266模塊,就拿這個板子來用吧,順便把esp8266模塊的使用方法整理一下。*註:以下方法適用於任何使用esp8266模塊的arduino板子,不論是集成還是外置esp8266的情形(開發版根據實際情況選擇即可)。
  • 通過pyFirmata實現樹莓派控制Arduino
    請按照以下步驟進行安裝:1sudo apt-get -y install arduino python-serial mercurial等待幾分鐘,這將需要一些時間。該命令將在您的Raspberry Pi中安裝Arduino IDE。
  • 初玩樹莓派BGPIO操作點亮LED燈(四)
    GPIO點亮一個LED等。一、了解樹莓派B的GPIOGPIO(英語:General-purpose input/output),通用型之輸入輸出的簡稱,功能類似8051的P0—P3,其接腳可以供使用者由程控自由使用,PIN腳依現實考量可作為通用輸入(GPI)或通用輸出(GPO)或通用輸入與輸出(GPIO),如當clk generator, chip select
  • 樹莓派用gpiozero庫控制LED燈
    15/16年的時候,makeblock的mblock(現kittenblock的CTO開發)軟體非常流行,大大降低了人們學習和使用arduino的難度。>LED燈 1個1kΩ電阻1個連接樹莓派GPIO17連接電阻電阻另外一端連接LED陽極(長)LED陰極(短)連接樹莓派Gnd 點亮
  • 【Arduino教程】第一講:Arduino是什麼?
    如果您英語頂呱呱,那推薦到arduino官方網站學習www.arduino.cc.英語不好,或者喜歡看中文教程的,就可以在論壇閱讀中文教程(傳送門:http://www.arduino.cn/thread-1066-1-1.html)認識Arduino UNOArduino UNO是Arduino入門的最佳選擇,在編著本書時,其最新的版本為UNO R3,本書大部分內容都是基於
  • Arduino使用和開發問題記錄
    與atmel168這兩個晶片的籤名不一樣,arduino自帶的avrdude無法識別。15、最小系統在5v下工作但在3.3v下不工作還是atmega168pa晶片,配合8MHz外部晶振,搭好的最小系統上傳blink程序,在5v輸入下led閃爍,但換成3.3v輸入
  • STM32F103RCT6開發板M3單片機教程01--點亮LED(基於光明谷SUN_STM32mini開發板)
    話不多話,開我們的單片機奇妙之旅吧!!!本教程使用是(光明谷SUN_STM32mini開發板)免費開發板在谷動谷力:http://bbs.sunsili.com, (複製電腦瀏覽器打開) 註冊用戶,打卡,發帖求助都可以獲取積分,當然最主要是發原創應用文檔獎勵更多積分.
  • 使用python實現win10系統和arduino usb串口通信
    其次是按照從簡原則,先從最直接的方式入手,也就是使用usb串口通信當前的arduino就是使用usb連接到pc電腦,無需其他操作(如果使用藍牙,wifi,還需要對應的模塊和較多的程序開發)pc電腦通信完成後,再用arduino通信樹莓派,無縫對接,本質都是系統,都是usb連接,都可以使用python(當前環境為居家場景)測試上位機操作
  • Arduino示例教程模塊版——開啟您的Aduino之旅
    當Arduino 主板通過USB線連接電腦供電後,標PWR旁邊的LED指示燈將點亮。4、安裝驅動  最新版的Arduino UNO、Arduino MEGA、Arduino Leonardo等控制器及各廠家的兼容控制器,在MAC OS和Linux系統下,均是不要驅動程序的,你只需直接插上,即可使用。
  • Arduino-使用IR遙控器控制LED - 【單片機教程-Arduino】
    您需要為電路布線,像這樣然後我去了arduino IDE> file> examples> IRremote> IRrecvDemo。您需要將草圖上載到arduino,打開串行監視器並開始使用遙控器,然後查看arduino接收哪些值。一段時間後,我寫下了當您按下音量調高鍵或任何其他鍵時,串行監視器中會顯示哪些值,並寫下您要使用的所有鍵。