精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

Arduino的使用技巧

454398 ? 來源:網絡整理 ? 作者:網絡整理 ? 2019-11-27 11:30 ? 次閱讀

Arduino UNO常見問題解答

那里有很多Arduino,這可能會引起一些混亂。我們想向人們說明最新版本中的一些更改。

Arduino的使用技巧

NB 這只是我們對Arduino做出的某些決定的看法和解釋。我們沒有與Arduino相關聯,也不要為他們說話!如果您需要對Arduino問題的正式答復,請直接與他們聯系。謝謝!

NB2 仍在進行中,我們正在收集常見問題來回答。如果您還有其他問題,請在我們的論壇中發布。

Arduino時間軸,但首先……一些歷史!首先是帶有RS232的串行Arduino(它的名字是什么?),它沒有在Arduino團隊和朋友之外使用。

第一個流行制造的Arduino被稱為NG(新一代,例如Star Trek,yknow?)。NG使用了以16 MHz運行的Atmega8芯片和用于USB接口的FT232芯片。該引導程序占用2KB的空間,并以19200波特的速度運行。

下一個版本是Diecimila。 Diecimila將芯片從Atmega8更新為Atmega168。這里最棒的事情是空間和內存增加了一倍(16K而不是8K)。它仍然以16MHz運行。 Diecimila還增加了兩個額外的3.3V插頭(來自FTDI芯片)和復位引腳,當屏蔽層覆蓋了Reset按鈕時,該引腳非常方便。引導加載程序占用2KB的空間,并以19200波特的速度運行。還添加了自動重置功能,使每個人的生活變得更加美好。

2009年,發布了Duemilanove。這也將芯片再次升級到Atmega328。空間和內存又增加了一倍!另一個升級是現在可以在USB和DC插孔之間自動切換電源,從而刪除了先前的跳線。這使得從編程過渡到獨立變得更加容易和快捷,并且擺脫了一些混亂。引導加載程序占用2KB的空間,運行速度為57600波特。

2010年,我們推出了Uno! Uno仍使用328P芯片和電源切換器。它有一個名為OptiBoot的較小引導加載程序(用戶項目有更多空間),運行速度為115K。因此,即使芯片相同,您也可以獲得引導加載程序先前使用的另外1.5K的額外閃存空間。 FTDI芯片也已替換為atmega8u2,后者可支持各種USB接口。最后,還有一個額外的3.3V穩壓器(LP2985),可提供更好的3.3V電源。

USB芯片 所以!所有較舊的Arduino(NG,Diecimila和Duemilanove)都使用FTDI芯片(FT232RL)來轉換Arduino芯片(Atmel ATmega)的TTL串行。這樣可以進行可打印的調試,并連接到PureData/Max,Processing,Python等軟件,還可以通過串行引導加載程序更新固件。

有關的好消息FT232RL具有免版稅的驅動程序,幾乎可以正常使用。壞消息是它只能用作USB/串行端口。它不能像鍵盤,鼠標,磁盤驅動器,MIDI設備等一樣起作用。

Uno通過將FT232RL芯片與atmega8u2芯片交換來改變了這種情況。這款新芯片可能有幾件事情,但是在我們進行討論之前,讓我們先弄清楚默認情況下,該芯片的功能與它所取代的FTDI芯片相同。這只是USB串行端口!

更新芯片的一項改進是,以前,Mac用戶需要安裝FTDI驅動程序。 8u2模仿“通用” CDC串行設備。因此,現在,Mac用戶不必安裝驅動程序。 Windows用戶仍然需要安裝.INF文件,但是幸運的是沒有驅動程序。這意味著新版本的Windows將出現較少的問題。遺憾的是,沒有辦法在Windows中擁有不需要INF文件的串行USB設備:(

8u2的優點是 advanced 用戶可以將其轉變為另一種USB設備,例如,它可以像鍵盤或鼠標,磁盤驅動器,或MIDI接口等一樣工作。這樣做,但我們希望很快發布。

最后,使用8u2降低了電路板的價格,彌補了其他一些不足。

為什么不只使用atmega32u4?

Arduino團隊已經表明他們考慮了這一點,但更喜歡DIP芯片的可破解性。

現在,有一些帶有32u4芯片的Arduino,例如Leonardo,Micro和Esplora

如何更改USB固件?

可以通過焊接6針ISP接頭(R3具有6針)來對8u2進行編程標頭已預先焊接)并使用標準的AVR編程器。您也可以在8u2中使用引導加載程序(DFU)。在第一代Unos上,您可以通過在板子下面焊接10K電阻器來啟用它。 (Uno的R2和R3版本使用16U2,不需要電阻!)同樣,我們沒有任何示例或教程,但希望很快。

8u2的代碼基于LUFA,這是Dean Cameran極為出色的USB-AVR庫,其中包含大量示例和文檔。它也是完全開源的。

Uno是否使用諧振器或晶體作為處理器時鐘

FT232RL具有內部振蕩器,而8u2沒有。這意味著8u2旁邊有一個16mhz晶體,以使其能夠保持精確的USB時序。

另一方面,作為Arduino中核心處理器的Atmega328p芯片現在具有16mhz陶瓷諧振器。陶瓷諧振器的精確度略低于晶體,但我們已經確信這一諧振器已經過指定并且可以很好地工作。

所以Arduino在計時方面不那么精確嗎?

簡短的答案是:是的。長答案是,人們使用Arduino所做的大多數事情都不依賴于20ppm的精確定時,否則100ppm就會失敗。對于需要長期精確計時的人,我們建議使用TCXO(溫度補償晶體振蕩器)-但您會知道是否需要它。

《我class =“ fa fa-question-circle-o”》

兩者之間共享一個16Mhz晶體?

很好的問題,從技術上講可以。但是,實際上,開發板并沒有通過一個晶體通過FCC認證(長的痕跡和快速的方波=大量的噪聲)。

好,可以說我不在乎。..

您絕對可以連接CLKO從‘8u2到’328p的晶體,但是您是一個人,因為我們不認為會有任何相關的教程。

背面的FCC徽標是什么?

Arduino現在已通過FCC認證!這意味著該板本身就通過了FCC電磁輻射認證。這不是不是意味著您的項目已通過FCC認證。更改Arduino的那一刻,它已不再經過FCC認證(盡管我們需要一些備用文檔)。

它還是歐洲人的CE認證。

新的Bootloader?

有一個新的Bootloader。它就像舊版本一樣工作-兼容STK500協議,但大小只有 1/4 !從2K開始,新的引導程序只有512b。這為您的項目代碼提供了更多空間!好極了!它也更快 -115K(而不是57.6k),因此您將在3秒內上傳代碼。

壞消息是,您必須確保在“董事會”菜單中選擇Uno !!!如果您不這樣做,則由于引導加載程序速度錯誤而使您感到困惑,并且您將無法獲得額外的1.5K!

總體而言,它是一個很好的方向,并且芯片可以很好地用于較早的Arduino(因此,您只需更換芯片即可將Diecimila或Duemilanove升級到Uno)。

有關引導加載程序的更多詳細信息,例如源代碼,請訪問Optiboot項目頁面。

為什么不只是將‘8u2用作程序員

雖然8u2可以充當完整的ISP編程器,但出于某些原因卻并非如此。

初學者使用完整的ISP編程器將導致積木。如果只是被引導加載,就不會將Arduino芯片弄得面目全非。

讓該芯片僅作為USB/串行接口來使用,從而簡化了固件,因此該芯片僅具有一種功能,而不必具有它具有程序員和串行接口的雙重作用(考慮一下,這并不容易)

向后兼容-仍然可以使用FTDI分支板或電纜對Arduino芯片進行編程,使人們很容易面包板或制作克隆。

新的’8u2如何影響Arduino衍生物?

每個USB設備都必須具有唯一的產品ID和供應商ID。供應商ID(VID)出售給公司,產品ID(PID)由該公司選擇。因此,例如,FTDI擁有VID#0403,并且他們給芯片提供的ID在#0000和#FFFF之間(65,536個不同的PID)。Ardiuno的舊會員使用FTDI的VID/PID,因為這是您購買芯片時交易的一部分。由于Uno不再使用FTDI芯片,因此Arduino團隊不得不購買USB供應商ID(VID)。現在,每個Arduino產品都將從Uno(#0001)開始具有自己的PID。

如果要制作自己的Arduino兼容板,您可以選擇以下幾種:

Don ‘不使用8u2,而是使用帶有VID的FTDI芯片代替

如果您打算制造多塊用于個人使用的板,則必須購買VID從USB IF一次性收取$ 2000的費用

如果您要為自己的實驗制作一塊單板,則可以選擇一個不會干擾您設備上的任何設備的VID/PID計算機并替換其中的那些

您可以從開發USB設備的公司購買單個VID /PID對的許可證(目前我們沒有任何特定鏈接)

但是,您分發自己的Arduino兼容產品時不能使用Arduino VID!如果VID的成本對您來說太高了,只需使用FTDI芯片K?

我試圖找到一個購買“ 8u2”的地方,卻找不到任何地方!

是的,目前全球范圍內都缺少Atmel零件。甚至Arduino內核(Atmega328P)中使用的芯片也很難獲得。經濟衰退后會發生這種情況。我們希望這些芯片和其他Atmel芯片能盡快在Digigikey之類的地方出現。直到那時,繼續在findchips.com上搜索!

那么這是否意味著Arduino短缺?

可能不是。 Arduino團隊直接從Atmel購買了成千上萬的芯片。因此,他們可能會優先于分銷商。我們假設團隊購買了足夠的東西可以持續一段時間。

i》

Arduino小組是否已將FTDI芯片從FTDI芯片移到了8u2芯片上,制造商?

雖然出現了難以獲得的芯片并VID/PID的混亂似乎有點令人討厭,我們認為這并不意味著Arduino團隊是惡意的,或試圖使衍生產品的人生活困難。向’8u2的遷移使Arduino更加強大,并且易于安裝,因為安裝的驅動程序更少。盡管現在短缺,但最終市場上會有很多芯片。

Arduino論壇中的某些人已經考慮組建一個小組,該小組將購買VID供Arduinites用于個人項目。這是一個很好的主意,并且可能是避免VID/PID沖突的最佳方法。在65,536個項目中,每個PID花費的錢很少。

當然,因為它們沒有擺脫引導加載程序系統,所以您可以始終使用FTDI芯片。

盾牌還在起作用嗎?

所有以前的屏蔽仍應能正常工作,因為插頭間距相同,核心芯片相同且零件位置相同。實際上,由于3V電源已經升級(請參見下一點),因此某些方法應該工作得更好。

機箱,平板等仍然可以使用嗎?

是的! Uno在物理上與以前的Arduino具有相同的大小和布局。安裝孔在同一位置。現在,還有一個附加的安裝孔。

更多3.3v電源!

對于較舊的主板,一件可悲的事情是它們具有3.3v電源,但這實際上就是FTDI芯片內部3.3v穩壓器所能提供的。您可能會從中獲得50mA的電流。但是諸如XBees,SD卡,某些快速ADCDAC之類的高功率設備很容易將FTDI芯片拉下并重置USB連接。 Uno通過添加一個新的3.3V穩壓器LP2985解決了這個問題,該穩壓器可以輕松提供150mA電流。

LP2985是一款非常高質量的穩壓器,非常適合于為物品供電,并且非常漂亮。堅實的1%模擬參考。

為什么Arduino芯片可以20MHz運行時為何以16MHz運行?

這是一個常見問題。原因是第一個Arduino使用的Atmega8的運行速度不能超過16Mhz。隨著芯片的升級,他們希望使主板速度兼容。 Arduino也不是真正打算用于快速處理(無論如何它僅是8位的),因此芯片以16MHz運行。

它仍然是開源硬件嗎?和軟件?

是! Uno仍可在知識共享許可下使用。您可以在Arduino網站上獲得最新的原理圖和布局。

UNO R2和R3 在2011年秋季,Arduino團隊透露將會有新的次要修訂經典Arduino的“ UNO R3”(修訂版3)。許多人向我們詢問了有關R3的信息,因此,到目前為止,我們已經掌握了所有信息。

UNO R3直到12月1日左右才對經銷商銷售。真!直到那時還沒有人!

UNO R3向后兼容UNO-相同的驅動程序,相同的上載內容,相同的外觀

UNO中有一些更改,這里是它們是什么:

USB控制器芯片已從atmega8u2(8K閃存)移動到atmega16u2(16K閃存)。 這并不意味著您的草圖具有更多的閃存或RAM 。此升級僅針對USB接口芯片 。從理論上講,這意味著使用低級USB接口(例如MIDI/操縱桿/鍵盤)會更加容易。 但是,這只是理論上的問題,沒有示例代碼或固件可以真正做到這一點。

另外還有三個突破針在PCB上,在AREF引腳旁邊有兩個I2C引腳(SDA/SCL)-這是模擬4和5引腳的重復。沒有額外的I2C接口或其他任何東西,只是因為I2C引腳位于Mega的不同位置,所以他們在那里復制了這些引腳以用作將來的屏蔽。復位引腳旁邊還有一個IOREF引腳-這是為了讓屏蔽層知道板上正在運行的I/O引腳電壓(對于UNO,為5V)。再次,這是電源引腳的重復,它不會增加UNO的電壓電平。

“ RESET”按鈕已移到電源按鈕旁邊。 USB連接器,這樣在屏蔽層位于頂部時更易于按下。

這是UNO中沒有發生的變化:

處理器的尺寸和速度-自從Duemilanove以來,它的運行頻率為16MHz的ATMega328P相同。您的代碼不會在R3上更快或更佳地運行

相同數量的插針-沒有添加額外的插針甚至有更多的突破(請參見上文!)

電路板的尺寸和形狀-與以前相同的尺寸

屏蔽罩的兼容性-每個能正常工作并插入UNO R1/R2的屏蔽罩都應該能夠在R3上正常工作

驅動程序-驅動程序是相同的

上傳速度-相同的上傳速度和技術

如果您想立即使用Arduino R3,請訪問adafruit商店,拿起木板或包裝!

Arduino庫

需要幫助庫?在此處查看我們針對所有操作系統的超級詳細教程:

http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use

什么是庫? 庫是很棒的地方,在美國還不是非法的!如果您需要學習如何做某事,例如修理摩托車,可以去當地的圖書館去拿書。當然,您可以買書,但是圖書館很好,因為作為一種資源,您可以在需要時隨時獲得書,使房子整潔。

軟件圖書館非常相似。在第3課中,我們已經研究了過程是什么:過程是要執行的事情的列表。庫是過程的大集合,其中所有過程都相關!例如,如果您想控制電動機,則可能需要找到一個電動機控制庫:一個已經為您編寫的過程的集合,您可以使用這些過程,而不必進行繁瑣的學習電動機的細微差別的工作。

例如,這是串行庫,它允許Arduino將數據發送回計算機:

使用庫 Arduino項目的最佳功能之一是能夠添加預制的庫,以增加硬件支持。它們很多,您可以選擇安裝哪個。僅當您正在處理的草圖需要它們時才加載它們,因此在大多數情況下,您可以下載并存儲它們以備將來使用。

草圖通常會依賴,在庫中,您可以通過查看草圖的頂部來查看它們的內容。如果您看到以下內容:

下載:文件

復制代碼

#include #include

這意味著您將需要一個名為FatReader的庫或包含文件FatReader的庫。如果未安裝,則會出現錯誤:

庫中有什么? 庫是其中包含一些文件的文件夾,這些文件將以 .cpp (C ++代碼文件)和 結尾。 h (C ++頭文件)。

可能還會有一些 .o 文件。 .o 文件是C ++編譯的對象。如果最終要處理庫并對其進行修改,請確保刪除 .o 文件,因為這將迫使Arduino IDE將修改后的 .cpp 編譯為 .o 。

您可能會看到的兩個可選文件是 keywords.txt (這是一個提示文件,用于告訴Arduino IDE如何為草圖和示例文件夾上色,其中可能會有一些方便的測試標記,這些標記將顯示在“文件”→“示例”→“庫”下拉菜單下。

請記住!庫文件夾的結構非常重要! .c 和 .h 文件必須位于文件夾的“最低級別”中,例如,您不能具有 Arduino/libraries/WaveHC/WaveHC/file.c 或 Arduino/libraries/MyLibraries/WaveHC/file.c -它必須為 Arduino/libraries/WaveHC/file.c

如何安裝庫在Arduino v16及更早版本中,庫存儲在 ArduinoInstallDirectory/hardware/libraries 文件夾中,該文件夾還包含所有內置庫(如Wire和Serial)。

在v17及更高版本中,用戶庫現在存儲在 ArduinoSketchDirectory/libraries 文件夾中。您可能需要第一次制作庫 子文件夾。但是,這樣做的好處是,您不必在每次升級軟件時都移動并重新安裝庫。

例如,這是在Windows中安裝NewSoftSerial時的外觀。當然您的用戶名會有所不同。)

在Mac上,您的arduino素描文件夾可能會被稱為 Documents/arduino ,因此請在名為 libraries 的內部創建一個新文件夾,然后將未壓縮的庫放入

請檢查Documents/arduino/libraries/MyNewLibary文件夾中是否包含.cpp和.h文件。

完成后,重新啟動Arduino IDE。

Bootloader

這是一些高級的Bootloader調整-99%的Arduino用戶應不要惹他們的引導程序!

用于Atmega328的引導加載程序,這里是“固定” ATmega328引導加載程序的軟件包。要對其進行編程,可能需要更改Makefile的ISPTOOL等定義。命令為 make adaboot328;。 make TARGET = adaboot328 isp328 (我無法使用默認的‘isp’目標,因此我制作了一個新目標)。

此版本具有一些修復程序:首先,它集成了下面的“ no-wait”和“ no-hang”修復程序。它還修復了在不使用IDE進行編程時令人討厭的“缺少簽名字節”的錯誤。我還修復了EEPROM代碼,以便現在您可以上傳和下載EEPROM存儲器以及閃存。最后,對于沒有TX/RX指示燈的arduino克隆,LED會提供“上傳反饋”。

請注意,由于擴展了內存,該芯片的保險絲有所不同!

“ No-Wait”引導程序 這是一個引導加載程序hack,它將在上載后自動啟動草圖,并且僅在按下重置按鈕時才會啟動引導加載程序(因此,當您插入電源時,它將直接進入草圖)。 br》

復制以下行:

下載:文件

復制代碼

ch = MCUSR;

MCUSR = 0;

WDTCSR |= _BV(WDCE) | _BV(WDE);

WDTCSR = 0;

// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.

if (! (ch & _BV(EXTRF))) // if its a not an external reset.。.

app_start(); // skip bootloader ch = MCUSR;

MCUSR = 0;

WDTCSR |= _BV(WDCE) | _BV(WDE);

WDTCSR = 0;

// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.

if (! (ch & _BV(EXTRF))) // if its a not an external reset.。.

app_start(); // skip bootloader

并粘貼它們,如下所示:

下載:文件

復制代碼

/* main program starts here */

int main(void)

{

uint8_t ch,ch2;

uint16_t w;

ch = MCUSR;

MCUSR = 0;

WDTCSR |= _BV(WDCE) | _BV(WDE);

WDTCSR = 0;

// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.

if (! (ch & _BV(EXTRF))) // if its a not an external reset.。.

app_start(); // skip bootloader

/* set pin direction for bootloader pin and enable pullup */

/* for ATmega128, two pins need to be initialized */ /* main program starts here */

int main(void)

{

uint8_t ch,ch2;

uint16_t w;

ch = MCUSR;

MCUSR = 0;

WDTCSR |= _BV(WDCE) | _BV(WDE);

WDTCSR = 0;

// Check if the WDT was used to reset, in which case we dont bootload and skip straight to the code. woot.

if (! (ch & _BV(EXTRF))) // if its a not an external reset.。.

app_start(); // skip bootloader

/* set pin direction for bootloader pin and enable pullup */

/* for ATmega128, two pins need to be initialized */

現在,以相同的方式,復制以下代碼:

下載:文件

復制代碼

// autoreset via watchdog (sneaky!)

WDTCSR = _BV(WDE);

while (1); // 16 ms // autoreset via watchdog (sneaky!)

WDTCSR = _BV(WDE);

while (1); // 16 ms

并粘貼到此處:

下載:文件

復制代碼

/* Leave programming mode */

else if(ch==‘Q’) {

nothing_response();

// autoreset via watchdog (sneaky!)

WDTCSR = _BV(WDE);

while (1); // 16 ms

}

/* Erase device, don‘t care as we will erase one page at a time anyway. */

else if(ch==’R‘) {

nothing_response();

} /* Leave programming mode */

else if(ch==’Q‘) {

nothing_response();

// autoreset via watchdog (sneaky!)

WDTCSR = _BV(WDE);

while (1); // 16 ms

}

/* Erase device, don’t care as we will erase one page at a time anyway. */

else if(ch==‘R’) {

nothing_response();

}

您也可以在此處獲取源代碼和已編譯的十六進制文件。

它將在NG或Diecimila Arduino中工作。

無掛機引導程序如果您使用的是自動安裝的Diecimila -reset當通信程序意外觸發引導加載程序時,您可能會感到沮喪。這是一個快速的技巧,可以使引導加載程序在未首先收到‘0’字符的情況下退出(這表示Arduino軟件正在嘗試與之對話。)

復制以下行:

下載:文件

復制代碼

uint8_t firstchar = 0; uint8_t firstchar = 0;

并粘貼:

下載:文件

復制代碼

/* main program starts here */

int main(void)

{

uint8_t ch,ch2;

uint16_t w;

uint8_t firstchar = 0; /* main program starts here */

int main(void)

{

uint8_t ch,ch2;

uint16_t w;

uint8_t firstchar = 0;

復制:

下載:文件

復制代碼

firstchar = 1; // we got an appropriate bootloader instruction firstchar = 1; // we got an appropriate bootloader instruction

粘貼:

下載:文件

復制代碼

/* Hello is anyone home ? */

if(ch==‘0’) {

firstchar = 1; // we got an appropriate bootloader instruction

nothing_response(); /* Hello is anyone home ? */

if(ch==‘0’) {

firstchar = 1; // we got an appropriate bootloader instruction

nothing_response();

,然后將其粘貼到上面的代碼下方:

下載:文件

復制代碼

} else if (firstchar == 0) {

// the first character we got is not ‘0’, lets bail!

// autoreset via watchdog (sneaky!)

WDTCSR = _BV(WDE);

while (1); // 16 ms

} } else if (firstchar == 0) {

// the first character we got is not ‘0’, lets bail!

// autoreset via watchdog (sneaky!)

WDTCSR = _BV(WDE);

while (1); // 16 ms

}

您也可以只用 app_start()

上傳草圖 bootloader與‘stk500’兼容,這意味著您可以使用ol‘AVRDUDE對arduino進行編程。

只需插入USB電纜即可。 ,然后在開始avrdude之前按重設。如果需要avrdude教程,請查看此頁面。

使用 -b 19200 將波特率設置為19200

設備簽名顯示為似乎不起作用,因此您需要使用 -F

編程器類型為 avrisp

設備類型為 -p m168

端口是FTDI芯片顯示的端口

升級

簡介

Arduino的“大腦”是一個稱為ATmega的微控制器。它是ATMEL(一家挪威芯片公司)的產品線。就像英特爾AMD每年發布新的更好的芯片一樣,Atmel也是如此。 Arduino的第一個版本(直至NG)使用ATmega8-一種具有8K閃存和1K RAM的芯片。然后Atmel發布了ATmega168,它是16K閃存和1K RAM的直接替代品-確實是一個很大的改進!現在有了帶有32K閃存和2K RAM的ATmega328。

更新和更換Arduino既輕松又輕松,僅花費幾美元。您的草圖將像以前一樣工作,但還有更多的呼吸空間。

要執行此升級,您將必須購買預編程的芯片,或者自己使用AVR編程器對其進行編程,也可以通過對其進行“位撞擊”。 p》

更換芯片首先,《使用小型平頭螺絲刀或類似工具從插座上強行輕輕地撬起Arduino微控制器。嘗試確保銷釘不彎曲。放在安全的地方。最好放在防靜電袋中。

下一步,準備新芯片。 IC的引腳在出廠時略有傾斜,因此需要將其彎曲一點以使其平行。

span》

最后,更換舊芯片,排列所有引腳,并確保芯片上的凹口與插座上的凹口匹配!

下載具有ATmega328兼容性的Arduino IDE 版本13和更高版本的Arduino該軟件支持328!如果您從2009年2月5日之前從Adafruit購買的芯片,則波特率將設置為19200(與舊版Arduinos相同)。 2月5日之后,升級芯片更改為57600波特率(快3倍!),以便與新的Arduino兼容。如果您使用的是19200波特率的芯片,則上傳將很困難。只需退出Arduino應用程序并在名為 boards.txt 的硬件文件夾中編輯文件,然后將行更改為:

下載:文件

復制代碼

atmega328.upload.speed=57600 atmega328.upload.speed=57600

至:

下載:文件

復制代碼

atmega328.upload.speed=19200 atmega328.upload.speed=19200

如果遇到問題,請同時嘗試以防萬一!

3.3V轉換

介紹 所有正式的Arduino都以5伏電壓運行,長期以來,這一直是業余電子產品和微控制器的“標準”電壓。但是現在最酷的新型傳感器,顯示器和芯片均為3.3V,不兼容5V。例如,XBee無線電,SD卡和天線表均以3.3V邏輯和電源運行。如果您嘗試以5V電壓連接到它們,則可能會損壞附件的內部。

我們使用CD4050之類的芯片進行電平轉換,但是如果您使用大量3.3 V設備,也許您最好將整個Arduino升級為從3.3V開始運行!

為此,我們將更換調節器,以使DC桶形插孔達到3.3v類型穩壓器,不是5V。然后重新配置5V USB電源線,使其也通過調節器。

替換調壓器 默認穩壓器為5.0V類型,但我們希望輸出3.3V,因此需要替換它。我們將在TO-252-3封裝中使用1117-3.3V(有一些1117穩壓器制造商,就像7805由許多工廠制造的)穩壓器。看起來像這樣:

您可以從任何電子零件商店購買這些產品,例如,這里是digikey鏈接。

首先,我們需要刪除舊的調節器。最簡單的方法是先夾住兩條腿。

然后,您需要加熱凸耳以使其呈液體,以便可以將舊零件提起。盡管看似不直觀,但最好將添加焊料到接線片上,然后用鐵將其熔化,這會改善導熱性,因為接線片太大。

清理選項卡并刪除所有剪切的部分仍然卡住。

現在將新的3.3V穩壓器排成一行,然后先焊接接線片,使用大量焊料并耐心等待,接線片就像散熱器一樣。

然后做兩條腿。

更換保險絲 下一部分有點棘手,USB插孔已經給了我們5V的電壓,并且通常與穩壓器的輸出有關(essentia通常,當DC插孔未通電時,它有一個連接它的小電路。)

使USB 5V也通過調節器的最簡單方法是卸下保險絲并將二極管從USB輸出焊接到穩壓器輸入。

您可以使用任何功率二極管,一個1N4001完美的,只需幾美分。

需要權衡的是,USB插孔沒有500 mA保險絲。好消息是,計算機將在USB連接器(計算機內部)上擁有自己的保險絲,因此您不太可能會破壞PC。但是請注意,這會失去一點安全性。

用烙鐵加熱保險絲,再次添加焊料可能有助于導熱。由于保險絲的導電性很強,您可以只加熱一側一段時間,兩端就會熔化。

將二極管短接并將引線彎曲。將沒有條紋(陽極)的一側焊接到最靠近電路板邊緣的舊保險絲墊上。將帶條紋的一端(陰極)焊接到調節器的右腳上。

Arduino仍將自動選擇為您提供更多電源的電源插頭。

就是這樣!您現在使用3.3V供電。這比AVR芯片的功率/頻率規格低一點,因為它們應該具有大約3.6V的電壓才能運行16Mhz,但是自 可能 AVR可以超頻一點。

Arduino黑客

保險杠 讓導電跡線接觸您的桌子并不是很好,您可以通過在底部添加保險杠來保護Arduino。

您可以從McMaster Carr零件號購買。 95495K66(大量)或Adafruit

免費占用一些RAM 如果您正在處理需要很多 的項目,則可以釋放100個以上的字節(ATmega168上RAM的10%!)通過減少串行接收緩沖區。默認情況下,它的128個字節相當多!

打開 hardware/cores/arduino (或 cores/arduino )目錄,然后編輯名為 wiring_serial.c 或 HardwareSerial.cpp

的文件,靠近頂部的是 #define RX_BUFFER_SIZE 128 ,這意味著128個字節用于緩沖區。您可以將其更改為32(甚至16!)。如果幾乎沒有串行輸入,請使其盡可能低,只要其》0。

您還可以通過將 rx_buffer_head 和 rx_buffer_tail 從更改為另外2個字節》 int 到 uint8_t

ArduinoISP

簡介 許多人開始學習使用Arduino的微控制器,但隨后又想構建自己的項目而不必犧牲開發板。或者,也許他們想制作自己的與IDE兼容的Arduino變體。無論哪種方式,一個常見的問題是如何將引導加載程序刻錄到新的AVR芯片上。由于AVR一片空白,因此需要將它們設置為與Arduino IDE兼容,但為此您需要一個AVR編程器(如USBtinyISP)。

好消息是,您可以使用現有的USB刻錄機加載引導加載程序Arduino僅需一點點工作。 arduino.cc站點上甚至還有一個迷你教程。

該教程是該教程的擴展。首先,我們將展示如何通過將28針ZIF插座焊接到原型屏蔽層并使用Arduino的PWM輸出線生成時鐘來制造永久的引導程序刻錄機。這樣一來,您可以“救援”設置為錯誤類型的振蕩器的許多芯片,或者將設置為從外部振蕩器(大多數Arduino引導加載程序)更改為內部的芯片(例如lilypad)。

零件 您將需要。..

Arduino

原型屏蔽套件

28針ZIF(零插入力)插座(您可以使用普通插座,但ZIF是理想的插座)

一些電線

空白ATmega328P

如果您從Adafruit購買了該套件,則會有一些額外的物品,例如壓電蜂鳴器,您可以在此項目的獨立版本中使用的LED,按鈕等,現在就將其忽略!

組裝 首先,將ZIF插座放置在原型屏蔽板上,如下所示:

焊接所有28個引腳一種牢固的連接!

將以下電線焊接到ZIF插座上

將數字1固定到數字10-藍色不要忘記將電線彎曲到下面以進行連接焊接時連接到ZIF插座引腳!!!

引腳7至5V-紅色

引腳8接地-黑色

針9到數字9-灰色

針17到數字11-棕色

針18到數字12-橙色

針19到數字13-黃色

針20到+ 5V-紅色

針22到地-黑色

按照protoshield教程將紅色LED焊接到 LED1 位置,綠色LED置于 LED2 位置。還要在LED旁邊焊接兩個1.0K電阻。我們將使用LED作為指示器。然后,將LED2分支(白色)到模擬0的電線焊接,LED1分支(白色)到數字8的電線焊接。

最后,您需要在接頭上焊接以允許放置屏蔽,斷開0.1英寸的公接頭并將其放入Arduino插槽中,然后將上方的屏蔽層頂部焊接到位。

加載代碼

加載草圖的時間!從我們的Github存儲庫中獲取代碼并將其粘貼到新草圖中,然后將其上傳到Arduino。

我們有報告說此過程不適用于Arduino 1.5.2。請改用最新的主流Arduino版本!

將屏蔽層插入頂部,提起閂鎖,彈出芯片,然后放低閂鎖。確保芯片方向是這樣(因此,通過左側的杠桿,您可以閱讀文本):

在仍然插入USB電纜的情況下(并選擇與以前相同的串行端口),選擇工具→刻錄Bootloader→帶有Arduino的ISP

在更高版本的Arduino IDE,從 Tools→Programmer 菜單中選擇 Arduino as ISP ,然后從Tools菜單中選擇 Burn Bootloader 。

編程時,您將看到此消息,并且LED指示燈將熄滅。

就是這樣!別忘了,您可以刻錄幾種不同的種類引導加載程序,例如Uno,Duemilanove,Lilypad,因此,根據您的情況,您可能希望使用其中一種。

獎金!與AVRdude一起使用 您可以非常輕松地從命令行使用ArduinoISP,使用AVRdude,這是通過運行以下命令對AVR進行編程的標準程序:

下載:文件

復制代碼

avrdude -c arduino -p atmega328 -P COMPORT -b 19200 -U flash:w:filetoburn.hex avrdude -c arduino -p atmega328 -P COMPORT -b 19200 -U flash:w:filetoburn.hex

代替 atmega328 ,您還可以編程 atmega8 atmega88 atmega48 atmega168等,等等
責任編輯:wv

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

    關注

    187

    文章

    6464

    瀏覽量

    186681
收藏 人收藏

    評論

    相關推薦

    基于Arduino的串口通信項目

    基于Arduino的串口通信項目涉及多個方面,包括硬件連接、軟件編程、串口參數配置等。 一、硬件準備 Arduino開發板 :確保你有一塊Arduino開發板,如Arduino Uno
    的頭像 發表于 11-22 09:24 ?255次閱讀

    stm32與Arduino的比較

    在微控制器的世界里,STM32和Arduino是兩個經常被提及的名字。STM32是一系列由STMicroelectronics生產的高性能微控制器,而Arduino則是一個開源電子原型平臺,基于易于
    的頭像 發表于 11-19 15:45 ?291次閱讀

    如何使用Arduino實現CAN總線通信

    CAN總線(Controller Area Network)是一種多主控制的串行通信協議,廣泛應用于汽車電子、工業自動化等領域。它以其高可靠性、實時性和靈活性而受到青睞。Arduino作為一個
    的頭像 發表于 11-12 10:09 ?370次閱讀

    樹莓派與Arduino的區別是什么

    在當今的科技世界中,樹莓派(Raspberry Pi)和Arduino是兩個經常被提及的名字。它們都是開源硬件平臺,但它們的目標、功能和用途卻大相徑庭。 1. 目標和用途 樹莓派(Raspberry
    的頭像 發表于 11-11 11:14 ?396次閱讀

    怎樣用Arduino測試鋰電池容量

    本文詳細介紹了如何用Arduino測量鋰電池的容量。并附有電路圖和Arduino的程序代碼。
    的頭像 發表于 07-30 09:14 ?736次閱讀
    怎樣用<b class='flag-5'>Arduino</b>測試鋰電池容量

    idf-arduino component組件怎么設置 ?

    idf -arduino component組件該怎么設置 ,。 CMake Warning at E:/COMPILE/Othert/IDF4.4/esp-idf-v4.4/tools
    發表于 06-12 07:27

    求助,在esp-idf中使用arduino作為組件后怎樣使用arduino的庫?

    在esp-idf中使用arduino作為組件后怎樣使用arduino的庫,例如我此時需要使用arduino的第三方庫blinker,怎樣使用?
    發表于 06-12 07:21

    arduino如何停止loop循環

    Arduino的loop循環是其主要的程序執行部分,該循環將在Arduino開發板上持續運行,并且只有在程序被重新上傳或開發板斷電重啟時才會停止。然而,在某些情況下,你可能需要在程序執行過程中停止或
    的頭像 發表于 02-14 16:24 ?4290次閱讀

    arduino中while循環怎么跳出

    Arduino 是一款開源的硬件平臺,廣泛應用于各種物聯網和嵌入式系統項目。在 Arduino 上編寫代碼時,循環結構起到了至關重要的作用。而其中的 while 循環更是常用于需要根據特定條件重復
    的頭像 發表于 02-14 16:22 ?2406次閱讀

    如何使用Arduino控制RGB LED

    在本指南中,您將學習如何使用Arduino控制RGB LED。RGB(紅-綠-藍)LED可以通過混合不同強度的紅、綠、藍光來產生多種顏色。您將學習創建一個基本Arduino RGB LED電路,并以一些基本顏色為例循環。
    的頭像 發表于 02-11 10:28 ?4600次閱讀
    如何使用<b class='flag-5'>Arduino</b>控制RGB LED

    如何使用Arduino UNO板和電位器控制伺服電機

    在本Arduino伺服電機教程中,您將學習如何使用Arduino UNO板和電位器控制伺服電機。
    的頭像 發表于 02-11 10:11 ?2628次閱讀
    如何使用<b class='flag-5'>Arduino</b> UNO板和電位器控制伺服電機

    2023年Arduino開放原碼報告:持續茁壯的Arduino生態系!

    所謂出錢就是買一片Arduino開發板或是付費訂閱Arduino Cloud云端服務,或單純資金贊助;出力就是撰寫Arduino相關的程序并無私的分享程序代碼或回報錯誤或投入翻譯等,筆者即有若干翻譯新版
    的頭像 發表于 01-25 16:45 ?1348次閱讀
    2023年<b class='flag-5'>Arduino</b>開放原碼報告:持續茁壯的<b class='flag-5'>Arduino</b>生態系!

    Arduino制作循跡小車教程

    Arduino制作循跡小車完全教程
    發表于 01-05 11:09 ?7次下載

    arduino和單片機的區別比較

    Arduino和單片機是兩種電子開發平臺,相互之間存在一些區別。在本文中,將詳細介紹這兩者之間的區別,并對它們的特點、應用領域和開發難度進行比較。 一、定義和功能 Arduino是一種基于開源硬件
    的頭像 發表于 01-02 16:18 ?9537次閱讀

    Arduino的功能及其限制

    Arduino是一種開源電子原型平臺,它基于易于使用的硬件和軟件,可以用于制作各種嵌入式系統。然而,盡管Arduino非常強大,但它也有一些功能上的限制。本文將詳細介紹Arduino的功能,并探討
    的頭像 發表于 12-21 14:15 ?1153次閱讀