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

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

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

3天內不再提示

怎樣使用Arduino制作Buzz Wire游戲

454398 ? 來源:網絡整理 ? 作者:網絡整理 ? 2019-12-03 16:57 ? 次閱讀

在這個有趣的項目中,我們將學習如何使用Arduino制作嗡嗡聲有線游戲。您可以在入門工具包(入門工具包中有什么?)和房屋周圍找到許多所需的零件。該項目使用Arduino,盡管您幾乎可以使用周圍的任何微控制器(以下是5美元的微控制器之間的比較,以獲取一些啟發)。

查看最終結果-它甚至可以播放音樂:

您需要什么

以下是完成此項目所需的核心部分:

1 x Arduino UNO或類似產品

1 x金屬衣架。

2 x 220歐姆電阻

1 x面包板。

1 x壓電蜂鳴器。

2 x鱷魚夾。

各種熱縮管。

公對公連接線。

以下是一些可選部件增強構造:

1 x附加壓電蜂鳴器。

1 x定位桿。

1 x四個七段式顯示器。

1 x 220歐姆電阻。

1 x瞬時按鈕。

公對母連接線。

木板(用于保護箱)。

各種木螺釘。

只要有足夠的引腳,幾乎所有的Arduino都可以使用。如果不確定您的需求,請查看此購買指南。

構建計劃

雖然這可能看起來很復雜,這實際上是一個非常簡單的項目。我將從基本游戲開始,然后添加其他組件以增加復雜性。您可以根據自己的需要選擇“選擇”。

核心機制由線形和手柄上的環組成。玩家必須引導整個路線的循環,而不能使兩個方向接觸。如果兩者接觸,則電路完成,并且蜂鳴器響起。當然也可以不使用微控制器來構建該電路,但是這樣做的樂趣何在(以及還能聽到Monty Python的“ Flying Circus”主題曲)?

課程 strong》

這是玩家指導自己的回合的形狀。這是整個游戲的基礎,所以做得好!我選擇先降一小點,然后再進行一次大的爬升。將金屬衣架彎曲成所需的形狀。黃銅線或銅管也可以正常工作,盡管衣架可能是最便宜的。

您可能需要戴手套,用鉗子或錘子才能使事情變得完美。用斷線鉗剪掉多余的部分。留下兩個垂直的立柱以推入基座。為了安全起見,您想歸檔切割端。最后,切開兩根熱縮管,并如下放置在末端:

這將使回路與過程絕緣,從而提供一個起點/末端或安全區域。另外,如果您沒有熱縮管,也可以用膠帶甚至是吸管。

現在將電纜連接到課程的一端。您在這里有兩個選擇:可以焊接,也可以使用鱷魚夾。鱷魚夾是較容易的選擇,但焊接是更可靠和長期的選擇。確保首先用砂紙“弄粗”衣架表面,并使用大量助焊劑。 (以前從來沒有焊接過?請學習這里的方法。)

根據下一步在底座上鉆的孔的大小,您可能需要先將電纜穿過安裝孔。使用兩根絞在一起的電線會提高耐用性:

使用電鉆來做這有很大幫助:

基礎

是時候創建基礎了。這用于將航線保持在直立位置,并提供將電子設備固定到的位置。我使用了一些松木碎片,盡管您可以使用房子周圍的任何物品,甚至可以用紙板箱。

將三塊切成“ n”形。只需將這三部分擰(或膠)在一起。切記先在側板上鉆一個導向孔,以防止側板裂開。您可能需要沉頭螺釘(特別是如果要填充然后上漆),因此我強烈建議使用沉頭鉆頭。如果您沒有沉頭工具或鉆孔,則可以使用較大直徑的鉆頭。

鉆兩個孔,其距離應足夠遠,以便安裝過程的末端。 ink孔下面的東西,準備粘貼。

手柄

現在是時候制作回路/控制器了。在一端扭曲一小部分衣架,以形成帶有小金屬手柄的環。確保銼平切割邊緣,然后在必要時用膠帶/泡沫覆蓋。

這將形成電路的另一半-當此循環接觸到當然它將完成電路(就像一個開關)。將另一根線焊接(或使用鱷魚夾)到其底部,與之前在該過程中所做的完全相同。

為實際手柄切去一小段銷釘。該金屬環將插入該手柄中。如果沒有銷釘,則可以使用皮帶或圓盤砂光機將一塊方形的軟木修圓(也可以使用砂紙,但這會花費很長時間)。

鉆一個洞這個手柄。它必須足夠大以適合金屬環和導線穿過:

盡管很棘手,但這可以在立柱鉆機上完成。 Alathe可以完美地完成這項工作:

是的,我很清楚這是金屬車床(對于感興趣的人,這是Boley制表車床,來自1930年代。我認為這是3C,但是如果您對此有所了解,我希望能收到您的來信。)

您還可以使用去除中心的圓珠筆。

最后,使用熱膠將電纜和回路固定到手柄中。熱膠會提供牢固的(但不是永久性的)固定裝置,因此非常適合。

完成

將導線束插入底座的孔中。不要忘了先添加回路/控制器。再次使用熱熔膠,通過如下方式填充底座底部的沉孔,將路線固定到底座上:

電路 》

這是完整的電路。您不必如此復雜—在分解每個部分時請繼續閱讀。

首先,將兩個壓電元件連接到數字引腳10和11極性無關緊要:

您不必使用兩個壓電體-我這樣做的唯一原因是在出現以下情況時會發出更大的嗡嗡聲電線接觸。將一側連接到數字引腳,另一側接地。

現在插入金屬層并處理:

同樣,它不會無論這兩個連接方式如何。電路的這一部分就像按鈕或開關一樣,當循環觸碰到路線時,玩家將完成電路。確保同時包括兩個電阻。

一個電阻將電路接地(稱為下拉電阻),以確保其不會“浮空”(這使Arduino能夠檢測到電路的變化)。另一個電阻器保護Arduino。當兩個部分接觸時,+ 5V進入數字引腳。如果不存在此電阻,則可能會出現短路故障–如果幸運的話,您的計算機將斷開USB插座的連接,以吸收過多的電流。

連接信號線(紫色,如圖所示)連接到數字引腳9。

下一步,將按鈕連接到數字引腳2:

最后,連接七段式LED顯示屏:

該特殊型號來自Seeed。它使用TM1637驅動四個顯示器-這意味著僅需要兩個數字引腳。將 GND 連接到Arduino地面,將 VCC 連接到Arduino + 5V。將 D10 連接到Arduino數字引腳13,將 CLK 連接到數字引腳12。

代碼

要使該項目正常工作將需要兩個附加文件。第一個稱為pitches.h。該文件僅將音符名稱映射到其壓電值。例如,您可以簡單地說“ NOTE_C3”而不是“ 31”,這使編寫樂曲變得容易得多。這是在公共領域,可以在Arduino網站上找到。按照說明創建一個名為pitches.h的新文件(或者,將代碼粘貼到現有腳本中。)

接下來,您需要一種方法來實際在壓電板上彈奏音符/旋律。 Anthony DiGirolamo在Github上撰寫的要點包含您需要的代碼。復制“ void buzz”和“}}”之間的所有內容并將其粘貼到您的主文件中。作為參考,這里是:

void buzz(int targetPin, long frequency, long length) {

/* Buzzer example function by Rob Faludi

http://www.faludi.com

https://gist.github.com/AnthonyDiGirolamo/1405180

*/

long delayValue = 1000000/frequency/2; // calculate the delay value between transitions

//// 1 second‘s worth of microseconds, divided by the frequency, then split in half since

//// there are two phases to each cycle

long numCycles = frequency * length/ 1000; // calculate the number of cycles for proper timing

//// multiply frequency, which is really cycles per second, by the number of seconds to

//// get the total number of cycles to produce

for (long i=0; i 《 numCycles; i++){ // for the calculated length of time.。.

digitalWrite(targetPin,HIGH); // write the buzzer pin high to push out the diaphragm

delayMicroseconds(delayValue); // wait for the calculated delay value

digitalWrite(targetPin,LOW); // write the buzzer pin low to pull back the diaphragm

delayMicroseconds(delayValue); // wait again for the calculated delay value

}

}

您需要的最后一個庫是控制七段顯示-如果您不使用它,則可以跳過此步驟。該庫名為 TM1637 ,由創建驅動板的同一家公司Seeed創建。

在Arduino IDE中,轉到“管理庫”( Sketch 》 包含庫》 管理庫)。這將調出庫管理器。等待幾秒鐘進行更新,然后在右上方的搜索框“ TM1637”中搜索。將找到兩個庫-您需要“ TM1637”而不是“ TM1637Display”。選擇,然后單擊“安裝”。

此庫的最后一項任務-它尚未完成!就目前而言,該庫只能顯示數字0–9和字母A–F。如果這涵蓋了您要顯示的所有內容,則可以跳過此步驟。如果不是,則需要修改代碼。放松!這聽起來并不那么困難,并且如果您可以使用Arduino IDE編寫代碼,則可以執行此操作。

首先,打開您的庫文件夾。這將在您的Arduino文件夾中。在Mac OS X上,該文件位于/Users/Joe/Documents/Arduino/Libraries中。打開名為 TM1637 的文件夾。您將需要編輯名為TM1637.cpp的文件-您可以放心地忽略擴展名為.h的其他文件。在您喜歡的文本編輯器(對我來說,這是Sublime Text 3),記事本或Arduino IDE中打開此文件。

從此修改第三行代碼:

static int8_t TubeTab[] = {0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};//0~9,A,b,C,d,E,F

為此:

static int8_t TubeTab[] = {

/* defaults */

0x3f, // 0

0x06, // 1

0x5b, // 2

0x4f, // 3

0x66, // 4

0x6d, // 5

0x7d, // 6

0x07, // 7

0x7f, // 8

0x6f, // 9

0x77, // A -- 10

0x7c, // b -- 11

0x39, // C -- 12

0x5e, // d -- 13

0x79, // E -- 14

0x71, // F -- 15

/* additional */

0x174, // h -- 16

0x176, // H -- 17

0x138, // L -- 18

0x15, // M -- 19

0x137, // n -- 20

0x73, // P -- 21

0x67, // q -- 22

0x131, // r -- 23

0x78, // t -- 24

0x240 // - 25

};

您現在可以保存并關閉此文件。在每個元素之后,注釋描述了這是什么字符。注釋的下一部分是元素的索引。

是時候編寫實際的代碼了。首先,包括前面提到的兩個庫:

#include

#include

現在創建顯示對象:

TM1637 *_display = new TM1637(12, 13);

不要擔心,如果您不了解語法-此行告訴Arduino,將針腳12和13連接到七段顯示器,并進行適當配置。

這首歌存儲在melody和tempo。這些包含所有音符和音樂的音符持續時間。如果您想更改音樂,請修改這些數組(盡管它不如粘貼音符值那么簡單,定時是音樂中非常重要的一部分)。 songState變量僅存儲最后播放的音符的位置。這樣可以確保從頭到尾播放旋律,而不是前后不停跳動:

int songState = 0;

int melody[] = {

NOTE_F4,。..}

int tempo[] = {

8,。..}

請注意,我已經刪除了數組的內容,有關完整代碼,請參見下文

此代碼是非阻塞的-這意味著Arduino可以同時執行多個任務。請查看此說明以獲取更多信息。計時器的設置方法如下:

unsigned long previousMillis1 = 0;

const long interval1 = 1500;

變量previousMillis1將在以后的階段進行更新以存儲當前時間。 interval1變量存儲兩次代碼執行之間的等待時間-在這種情況下為1.5秒。它定義為const,這意味著它是恒定的并且永遠不會改變-這允許Arduino進一步優化代碼。

在setup()函數中,有一些事情繼續。首先,設置輸入和輸出。這是必須要做的,因此Arduino知道每個引腳都連接了什么:

pinMode(9, INPUT); // setup circuit

pinMode(10, OUTPUT); // setup buzzer 1

pinMode(11, OUTPUT); // setup buzzer 2

pinMode(2, INPUT); // setup button

現在顯示器需要配置:

_display-》set(5); // set brightness

_display-》point(false); // remove colon

_display-》init(); // start display

方法set,point和init全部包含在_display對象中。代替點,使用指針(“-》”)訪問它們。再次,不必擔心語法(盡管,如果您想了解更多,請查閱C ++指針)。

主循環有兩種游戲模式:挑戰和免費游戲。免費游戲允許玩家無限次地玩游戲。挑戰模式使用showCountdown方法將計時器設置為20秒。它使用按鈕來啟動和停止計時器。當前,更改游戲模式的唯一方法是手動編輯名為mode的變量??纯词欠窨梢蕴砑恿硪粋€按鈕來執行此操作并適當地修改代碼。

buzz方法將播放為其提供的注釋。與sing結合使用。唱歌方法會遍歷每個音符并進行演奏。定期調用此方法,盡管僅在自上次演奏以來經過了足夠的時間后才會演奏下一個音符。一旦歌曲到達結尾,它將把歌曲重置為1節(songState = 14)。您可以將其設置為零以從頭開始播放歌曲,但是這樣做的原因是跳過介紹。簡介會在Arduino通電后播放一次,然后不再播放。

showFree和showPlay方法只需將單詞“ FrEE”和“ PLAY”寫入”顯示。注意,當所有其他字符均為大寫時,free中的“ r”如何變為小寫。這是七段顯示器的局限之一。它們不能顯示字母表中的每個字母,并且它們可以顯示的某些字符必須是大小寫混合的。

toggleFreePlay方法在“ FREE”和“ PLAY”之間閃爍顯示。再次,它以非阻塞方式進行此操作。

另一個有用的方法是showNumber。這樣會在顯示屏的中間兩個字符中寫入一個數字,如下所示:

顯示屏不夠智能,無法知道如何顯示大數字,它必須明確告知該怎么做。此方法使用一些簡單的邏輯在每個字符上顯示適當的數字。

最后使用的方法稱為showCountdown。這將在20處開始計數,并每秒減少1。如果該值達到零,它會嗡嗡響三聲,表明時間已用完。

所有代碼都放在這里:

#include // include display library

#include // include pitches

TM1637 *_display = new TM1637(12, 13); // create display object, 12 = CLK (clock), 13 = D10 (data)

// music

int songState = 0;

int melody[] = {

NOTE_F4, NOTE_E4, NOTE_D4, NOTE_CS4,

NOTE_C4, NOTE_B3, NOTE_AS3, NOTE_A3,

NOTE_G3, NOTE_A3, NOTE_AS3, NOTE_A3,

NOTE_G3, NOTE_C4, 0,

NOTE_C4, NOTE_A3, NOTE_A3, NOTE_A3,

NOTE_GS3, NOTE_A3, NOTE_F4, NOTE_C4,

NOTE_C4, NOTE_A3, NOTE_AS3, NOTE_AS3,

NOTE_AS3, NOTE_C4, NOTE_D4, 0,

NOTE_AS3, NOTE_G3, NOTE_G3, NOTE_G3,

NOTE_FS3, NOTE_G3, NOTE_E4, NOTE_D4,

NOTE_D4, NOTE_AS3, NOTE_A3, NOTE_A3,

NOTE_A3, NOTE_AS3, NOTE_C4, 0,

NOTE_C4, NOTE_A3, NOTE_A3, NOTE_A3,

NOTE_GS3, NOTE_A3, NOTE_A4, NOTE_F4,

NOTE_F4, NOTE_C4, NOTE_B3, NOTE_G4,

NOTE_G4, NOTE_G4, NOTE_G4, 0,

NOTE_G4, NOTE_E4, NOTE_G4, NOTE_G4,

NOTE_FS4, NOTE_G4, NOTE_D4, NOTE_G4,

NOTE_G4, NOTE_FS4, NOTE_G4, NOTE_C4,

NOTE_B3, NOTE_C4, NOTE_B3, NOTE_C4, 0

};

int tempo[] = {

8, 16, 8, 16,

8, 16, 8, 16,

16, 16, 16, 8,

16, 8, 3,

12, 16, 16, 16,

8, 16, 8, 16,

8, 16, 8, 16,

8, 16, 4, 12,

12, 16, 16, 16,

8, 16, 8, 16,

8, 16, 8, 16,

8, 16, 4, 12,

12, 16, 16, 16,

8, 16, 8, 16,

8, 16, 8, 16,

8, 16, 4, 16,

12, 17, 17, 17,

8, 12, 17, 17,

17, 8, 16, 8,

16, 8, 16, 8, 1

};

// non blocking setup

// free play

unsigned long previousMillis1 = 0; // time words last changed

const long interval1 = 1500; // interval between changing

// music

unsigned long previousMillis2 = 0; // time last changed

const long interval2 = 100; // interval between notes

int displayStatus = 0; // keep track of what’s displayed

int mode = 0; // keep track of game mode -- change to 0 or 1 for different modes

bool countdown = false;

unsigned long previousMillis3 = 0; // time last changed

const long interval3 = 1000; // interval between countdown

int count = 20; // challenge mode timer

void setup() {

// put your setup code here, to run once:

pinMode(9, INPUT); // setup circuit

pinMode(10, OUTPUT); // setup buzzer 1

pinMode(11, OUTPUT); // setup buzzer 2

pinMode(2, INPUT); // setup button

_display-》set(5); // set brightness

_display-》point(false); // remove colon

_display-》init(); // start display

}

void loop() {

// put your main code here, to run repeatedly:

if(mode == 0) {

// challenge mode

if(digitalRead(2) == HIGH) {

delay(25);

if(digitalRead(2) == HIGH) {

countdown = true; // stop the countdown

}

else {

countdown = false; // stop the countdown

}

}

if(countdown) {

showCountdown(); // advance countdown

}

}

else {

// free play

toggleFreePlay();

}

if(digitalRead(10) == HIGH) {

delay(25);

if(digitalRead(10) == HIGH) {

while(digitalRead(10) == HIGH) {

buzz(11, NOTE_B0, 1000/24);

}

}

}

else

sing();

}

void showCountdown() {

// countdown the time remaining

unsigned long currentMillis = millis(); // current time

if (currentMillis - previousMillis3 》= interval3) {

previousMillis3 = currentMillis;

--count;

showNumber(count);

if(count == 0) {

// game over

countdown = false;

count = 20;

// reset countdown

// buzz 3 times

buzz(11, NOTE_B0, 1000/24);

delay(100);

buzz(11, NOTE_B0, 1000/24);

delay(100);

buzz(11, NOTE_B0, 1000/24);

}

}

}

void showNumber(int number) {

// show numbers (maximum 99) on display

_display-》display(0, 25); // write - to segment 1

_display-》display(3, 25); // write - to segment 4

// write number to middle of display

if(number == 10)

{

_display-》display(1,1);

_display-》display(2,0);

}

else if(number 》 9)

{

_display-》display(1,1);

int newVal = number - 10;

_display-》display(2, newVal);

}

else

{

_display-》display(1,0);

_display-》display(2,number);

}

}

void toggleFreePlay() {

// scroll between words without blocking

unsigned long currentMillis = millis(); // current time

if (currentMillis - previousMillis1 》= interval1) {

previousMillis1 = currentMillis;

if(displayStatus == 1)

showPlay();

else

showFree();

}

}

void showPlay() {

// write “PLAY” to the display

_display-》display(0, 21); // write P to segment 1

_display-》display(1, 18); // write L to segment 2

_display-》display(2, 10); // write A to segment 3

_display-》display(3, 4); // write Y to segment 4

displayStatus = 2;

}

void showFree() {

// write “Free” to the display

_display-》display(0, 15); // write F to segment 1

_display-》display(1, 23); // write r to segment 2

_display-》display(2, 14); // write E to segment 3

_display-》display(3, 14); // write E to segment 4

displayStatus = 1;

}

void buzz(int targetPin, long frequency, long length) {

/* Buzzer example function by Rob Faludi

http://www.faludi.com

https://gist.github.com/AnthonyDiGirolamo/1405180

*/

long delayValue = 1000000/frequency/2; // calculate the delay value between transitions

//// 1 second‘s worth of microseconds, divided by the frequency, then split in half since

//// there are two phases to each cycle

long numCycles = frequency * length/ 1000; // calculate the number of cycles for proper timing

//// multiply frequency, which is really cycles per second, by the number of seconds to

//// get the total number of cycles to produce

for (long i=0; i 《 numCycles; i++){ // for the calculated length of time.。.

digitalWrite(targetPin,HIGH); // write the buzzer pin high to push out the diaphragm

delayMicroseconds(delayValue); // wait for the calculated delay value

digitalWrite(targetPin,LOW); // write the buzzer pin low to pull back the diaphragm

delayMicroseconds(delayValue); // wait again for the calculated delay value

}

}

void sing() {

// play the song in a non blocking way

unsigned long currentMillis = millis();

if (currentMillis - previousMillis2 》= interval2) {

previousMillis2 = currentMillis;

int noteDuration = 1000 / tempo[songState];

buzz(10, melody[songState], noteDuration);

int pauseBetweenNotes = noteDuration;

delay(pauseBetweenNotes);

// stop the tone playing:

buzz(10, 0, noteDuration);

++songState;

// start song again if finished

if(songState 》 79) {

songState = 14; // skip intro

}

}

}

保存將該文件作為“ buzzwire”(文件》另存為),然后將其上傳到您的開發板上(文件》上傳)。如果您不確定如何上傳Arduino,或者該代碼看起來有些嚇人,請查看我們的《 Arduino入門指南》。一切都很好,您現在應該擁有自己的嗡嗡聲有線游戲-很棒!

責任編輯:wv

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

    關注

    187

    文章

    6464

    瀏覽量

    186669
收藏 人收藏

    評論

    相關推薦

    怎樣Arduino測試鋰電池容量

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

    ESP32使用Arduino啟用藍牙后編譯固件過大,怎樣縮減大小呢?

    ESP32使用Arduino啟用藍牙后編譯固件過大,怎樣縮減大小,日志級別已經最低了,分區不能動,已經是1.9M的OTA分區配置了,怎樣還能縮減大小,藍牙功能能否裁剪
    發表于 06-28 11:27

    Arduino怎樣配置LVGL8.1.0訪問spiffs里面的字庫或圖片?

    抱歉把Arduino的內容發在這個版塊了. 在Arduino的示例中LITTLEFS_test.ino SPIFFS_Test.ino FFat_Test.ino已經測試成功, 并且使用ESP32
    發表于 06-19 06:15

    使用idf.py命令方式編譯,怎樣才能編譯arduino的庫,并且在項目中可調用?

    在編譯過程中,提示找不到對應的頭文件。 請問使用idf.py命令方式編譯,怎樣才能編譯arduino的庫,并且在項目中可調用。
    發表于 06-13 06:56

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

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

    微軟升級Xbox游戲輔助功能,發布Proteus無障礙游戲手柄

    昨日,微軟在其Xbox Wire博客發布了關于Proteus游戲手柄的詳細資訊,該產品預售價為255美元(約1841元),正式發售后售價299美元(約2159元),預計于2024年秋季交付。
    的頭像 發表于 05-16 11:35 ?388次閱讀

    如何用Arduino制作一個簡易自動喂魚器

    如果你家里養有魚,并想找到一種自動化喂食的方法,這個項目可能會對你有所啟發。 在這個教程中,作者將展示如何制作自己的基于Arduino的自動喂魚器,讓小魚不在餓肚子。 自動喂魚器的工作原理非常
    發表于 03-28 11:25

    使用Arduino I2C配置CY8C9560A-24AXI gpio,GPIO0的所有位配置為低位時會報錯的原因?

    你好團隊,我正在嘗試使用 Arduino I2C 配置 CY8C9560A-24AXI gpio。將 GPIO0 的所有位配置為低位時會遇到問題。Wire
    發表于 03-05 06:07

    如何制作自己的Arduino電容計

    在這個項目中,您將學習如何制作自己的Arduino電容計(測量電容器的值,范圍從pF到1000的uF)。一般來說,電子愛好者喜歡設計自己的小工具而不是購買。在這個項目中,我們使用兩種電容測量方法,即
    的頭像 發表于 02-25 15:10 ?1469次閱讀
    如何<b class='flag-5'>制作</b>自己的<b class='flag-5'>Arduino</b>電容計

    如何使用Arduino制作智能垃圾箱

    在這個項目中,我將向您展示如何使用Arduino制作智能垃圾箱,當您帶著垃圾接近時,垃圾箱的蓋子會自動打開。
    的頭像 發表于 02-11 12:22 ?2865次閱讀
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>智能垃圾箱

    使用Arduino Nano制作一個4×4×4 LED立方體

    在這個項目中,我們將使用 Arduino Nano 制作一個很酷的 4×4×4 LED立方體。LED 立方體,也稱為 LED矩陣,可以照亮您的房間、學習空間或創客區域,使其看起來非常酷炫。此外,它非常容易構建,并幫助您在電子和編碼方面發揮創意。
    的頭像 發表于 02-11 12:07 ?3074次閱讀
    使用<b class='flag-5'>Arduino</b> Nano<b class='flag-5'>制作</b>一個4×4×4 LED立方體

    Arduino制作循跡小車教程

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

    利用Arduino實現控制AD5933進行溫度采集并通過串口發送

    。 本想做一個完整的基于Arduino的AD5933阻抗測量系統,目前由于時間關系,先探索下其IIC通信方式,嘗試實現控制AD5933進行溫度采集并通過串口發送 軟件代碼主要包括以下個部分 1 發送
    發表于 12-22 06:06

    Arduino的功能及其限制

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

    Arduino操作AD5933,讀取狀態寄存器的時候老是讀取0x70是什么原因造成的?

    最近用Arduino操作AD5933出現了問題,讀取狀態寄存器的時候 老是讀取0x70,有沒有知道是什么原因啊。 貼一下我的代碼 // AD5933 control // #include
    發表于 12-21 06:42