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

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

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

使用伺服機(jī)構(gòu)開(kāi)發(fā)板控制 NeoPixel LED

海闊天空的專欄 ? 來(lái)源: Don Johanneck ? 作者: Don Johanneck ? 2025-01-25 15:04 ? 次閱讀

作者: Don Johanneck

[Kitronik][Simply Servos]板(圖 1)解決了在項(xiàng)目中使用多個(gè)伺服機(jī)構(gòu)時(shí)如何提供充足的 3 V - 12 V 電源軌的問(wèn)題。內(nèi)置的 3 V 電源穩(wěn)壓功能和排針可用于快速添加 [Raspberry Pi][Pico] 以操作伺服機(jī)構(gòu)。但是,如果其他的設(shè)備采用三線式引線,且需要 5 V 電源,而且可能需要很大的電流時(shí),該怎么辦呢?比如 [Adafruit]的 [NeoPixel LED 燈條]!

圖 1:Kitronik Simply 伺服機(jī)構(gòu)板。(圖片來(lái)源:Kitronik)

最近,我有個(gè)想法,用我的遙控飛機(jī)制作一架夜間飛行器。我可以在其中安裝任何微控制器,然后想辦法把 NeoPixel 燈條與電源連接,但是,如果使用[伺服引線]能快速完成而且易于維修,將是什么樣的結(jié)果呢?Simply 伺服機(jī)構(gòu)板不僅僅適用于伺服機(jī)構(gòu)。選擇該平臺(tái)簡(jiǎn)化了項(xiàng)目,并最大限度地減少了對(duì)定制接線和大量連接器的需求。

本文結(jié)尾給出了相關(guān)的博客和有趣的視頻鏈接,幫助您詳細(xì)了解飛行平臺(tái)以及如何改裝遙控飛機(jī)。我們使用 [Arduino IDE] 對(duì) Pico 進(jìn)行編程,以便根據(jù)遙控發(fā)射器的輸入運(yùn)行 NeoPixels。我計(jì)劃在飛機(jī)機(jī)身兩側(cè)使用“發(fā)光”功能,隨著油門(mén)的加大,追逐速度也會(huì)加快。隨著夜幕降臨,Neopixels 會(huì)因亮度過(guò)高而使眼睛不舒服。一個(gè)輔助通道可用于調(diào)暗 LED。最后,當(dāng)飛機(jī)在黑暗中著陸時(shí),有著陸燈將非常方便。與其增加另一個(gè)通道,不如在油門(mén)達(dá)到或低于著陸速度時(shí)將底部 NeoPixels 變?yōu)榱涟咨?。我使用的是基本編程,但仍有改進(jìn)空間或者仍能夠探索其他功能。

復(fù)制Arduino IDE Code:

//Rx throttle as LED speed control. Rx Aux 2 as dimmer. Channels 1 and 2 as inputs on Simply Servos.
//Remaining servo ports on board (channels 3-8, pins 4-9) used as NeoPixel outputs.
#include < neopixelconnect.h >

//Number of NeoPixels in each string
#define FIN_LEN 34  //Number of NeoPixels on each fin
#define BOT_LEN 28  //Number of NeoPixels on each bottom skid
#define AUX_LEN 61  //Number of NeoPixels on each auxiliary location
#define THRESH 60   //Landing versus flight throttle threshold

//Rx channel Pico GPIO inputs
#define THROT 2
#define AUX2 3

// Create an instance of NeoPixelConnect and initialize it for each strand of NeoPixels
// (pin, number of pixels in string, programmable IO location (0 or 1), programmable IO state machine usage (0-3))
NeoPixelConnect R_Aux(4, AUX_LEN, pio0, 0);
NeoPixelConnect L_Aux(5, AUX_LEN, pio1, 0);
NeoPixelConnect R_Bot(6, BOT_LEN, pio0, 1);
NeoPixelConnect L_Bot(7, BOT_LEN, pio1, 1);
NeoPixelConnect R_Fin(8, FIN_LEN, pio0, 2);
NeoPixelConnect L_Fin(9, FIN_LEN, pio1, 2);

uint8_t AuxSingLED;  //Single LED variable on auxiliary string

//Function - Get intensity level from Rx Aux2 output
uint8_t get_pixel_intensity() {
  return map(pulseIn(AUX2, HIGH), 900, 2200, 0, 255);
}

//Function - Get speed level from Rx Throttle output
uint8_t get_pixel_speed() {
  return map(pulseIn(THROT, HIGH), 990, 1902, 100, 0);
}

void setup() {
  pinMode(THROT, INPUT);  //Set Pico GPIO pin 2 as input
  pinMode(AUX2, INPUT);   //Set Pico GPIO pin 3 as input
}

void loop() {
  uint8_t LEDInten = get_pixel_intensity();  //Get NeoPixel intensity value
  uint8_t LEDSpeed = get_pixel_speed();      //Get NeoPixel speed value
  if (LEDSpeed < 10) LEDSpeed = 0;           //Dampen lower speed limit

  if (LEDSpeed < THRESH) {                                   //Throttle high color
    R_Bot.neoPixelFill(LEDInten, 0, 0, true);                //Fill string with red
    L_Bot.neoPixelFill(LEDInten, 0, 0, true);                //Fill string with red
  } else {                                                   //Throttle low color
    R_Bot.neoPixelFill(LEDInten, LEDInten, LEDInten, true);  //Fill string with white
    L_Bot.neoPixelFill(LEDInten, LEDInten, LEDInten, true);  //Fill string with white
  }

  R_Fin.neoPixelFill(0, LEDInten, 0, true);  //Fill string with green
  L_Fin.neoPixelFill(0, LEDInten, 0, true);  //Fill string with green

  R_Aux.neoPixelFill(0, 0, LEDInten, false);                           //Fill string with blue
  R_Aux.neoPixelSetValue(AuxSingLED, LEDInten, 0, 0, false);           //Set a NeoPixel to red
  R_Aux.neoPixelSetValue(AuxSingLED - 1, LEDInten / 10, 0, 0, false);  //Set trailing NeoPixel to dimmed red
  R_Aux.neoPixelSetValue(AuxSingLED + 1, LEDInten / 10, 0, 0, true);   //Set leading NeoPixel to dimmed red
  L_Aux.neoPixelFill(0, 0, LEDInten, false);                           //Fill string with blue
  L_Aux.neoPixelSetValue(AuxSingLED, LEDInten, 0, 0, false);           //Set a NeoPixel to red
  L_Aux.neoPixelSetValue(AuxSingLED - 1, LEDInten / 10, 0, 0, false);  //Set trailing NeoPixel to dimmed red
  L_Aux.neoPixelSetValue(AuxSingLED + 1, LEDInten / 10, 0, 0, true);   //Set leading NeoPixel to dimmed red

  AuxSingLED = AuxSingLED + 3;                //Marquis - move R_Aux and L_Aux red LEDs along NeoPixel string 3 pixels at a time.
  if (AuxSingLED >= AUX_LEN) AuxSingLED = 0;  //If at end of string, return to start.

  delay(LEDSpeed);  //Set how long to delay code execution cycle depending upon throttle level.
}

Arduino IDE Code END:
< /neopixelconnect.h >

清單 1:用于控制 NeoPixel 燈條的 Arduino IDE 代碼。

消除任何延遲功能都將有益于整個(gè)程序,通過(guò)操作油門(mén)的輸入值或輸入值映射,LED 可以更快地運(yùn)行。您可根據(jù)需要,靈活地選擇其余燈條的圖案或顏色。請(qǐng)記住,飛行員需要依靠可識(shí)別的燈光圖案來(lái)確定飛機(jī)的方位和航向。夜間飛行既有趣又有挑戰(zhàn)性。在傍晚時(shí)分練習(xí)夜間飛行,仍能同時(shí)看到飛機(jī)和 LED 燈。

審核編輯 黃宇# NeoPixel

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7646

    瀏覽量

    151961
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23347

    瀏覽量

    662685
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5121

    瀏覽量

    98057
  • 伺服機(jī)構(gòu)
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    7179
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于DSP的數(shù)字伺服機(jī)構(gòu)控制系統(tǒng)設(shè)計(jì)

    為滿足對(duì)直流無(wú)刷伺服機(jī)構(gòu)的數(shù)字化控制,介紹了一種數(shù)字無(wú)刷直流電機(jī)伺服控制系統(tǒng),以TMS320F2812型DSP為控制核心,包括中央處理電路,
    發(fā)表于 11-07 14:40

    導(dǎo)彈伺服機(jī)構(gòu)與CAN總線的連接和通信

    較好的途徑。電液伺服機(jī)構(gòu)是導(dǎo)彈控制系統(tǒng)中重要的組成部分。它的性能往往嚴(yán)重影響到導(dǎo)彈的控制精度,甚至決定飛行的成敗。在總線式導(dǎo)彈控制系統(tǒng)中,導(dǎo)彈電液
    發(fā)表于 06-11 05:00

    Linklt ONE開(kāi)發(fā)板如何利用Adafruit_NeoPixel庫(kù)驅(qū)動(dòng)WS2812彩燈?

    Linklt ONE開(kāi)發(fā)板,下載Adafruit_NeoPixel庫(kù)后,按照示例上傳固件到開(kāi)發(fā)板后,發(fā)現(xiàn)編譯能通過(guò)也能上傳成功,但是掛上彩燈就是沒(méi)有反應(yīng),用Arduino UNO開(kāi)發(fā)板
    發(fā)表于 04-12 11:43

    基于VXI總線的導(dǎo)彈伺服機(jī)構(gòu)單元測(cè)試基本型系統(tǒng)

    本文以導(dǎo)彈伺服機(jī)構(gòu)單元測(cè)試為應(yīng)用背景,從硬件設(shè)計(jì)和軟件兩方面詳細(xì)介紹了基于VXI總線的導(dǎo)彈伺服機(jī)構(gòu)單元測(cè)試基本型系統(tǒng)的設(shè)計(jì),特別在通用信號(hào)轉(zhuǎn)接箱設(shè)計(jì)上進(jìn)行了有益嘗
    發(fā)表于 07-15 10:24 ?29次下載

    基于PC/104伺服機(jī)構(gòu)自動(dòng)化測(cè)試系統(tǒng)研究

    以提高導(dǎo)彈伺服機(jī)構(gòu)測(cè)試的效率和精度為目的,提出了基于PC/104 總線組建導(dǎo)彈伺服機(jī)構(gòu)自動(dòng)化測(cè)試系統(tǒng)的方案,闡述了該自動(dòng)化測(cè)試系統(tǒng)的功能、硬件構(gòu)成、軟件設(shè)計(jì)和工作原理。
    發(fā)表于 09-09 16:30 ?21次下載

    基于PC104伺服機(jī)構(gòu)自動(dòng)化測(cè)試系統(tǒng)研究

    以提高導(dǎo)彈伺服機(jī)構(gòu)測(cè)試的效率和精度為目的,提出了基于PC/104 總線組建導(dǎo)彈伺服機(jī)構(gòu)自動(dòng)化測(cè)試系統(tǒng)的方案,闡述了該自動(dòng)化測(cè)試系統(tǒng)的功能、硬件構(gòu)成、軟件設(shè)計(jì)和工作原理。
    發(fā)表于 12-22 10:50 ?29次下載

    儀器伺服機(jī)構(gòu)循環(huán)電路圖

    儀器伺服機(jī)構(gòu)循環(huán)電路圖
    發(fā)表于 06-20 11:17 ?414次閱讀
    儀器<b class='flag-5'>伺服機(jī)構(gòu)</b>循環(huán)電路圖

    伺服機(jī)構(gòu)自動(dòng)搜索及控制電路圖

    伺服機(jī)構(gòu)自動(dòng)搜索及控制電路圖
    發(fā)表于 07-02 13:12 ?561次閱讀
    <b class='flag-5'>伺服機(jī)構(gòu)</b>自動(dòng)搜索及<b class='flag-5'>控制</b>電路圖

    關(guān)于伺服機(jī)構(gòu)的動(dòng)態(tài)測(cè)試系統(tǒng)

    為了驗(yàn)證伺服機(jī)構(gòu)設(shè)計(jì)以及測(cè)試系統(tǒng)的正確性,提出并研制了伺服機(jī)構(gòu)模擬器以及相應(yīng)的動(dòng)態(tài)測(cè)試系統(tǒng);模擬器采用數(shù)字和模擬電路,能夠模擬各種型號(hào)伺服機(jī)構(gòu)工作特性;動(dòng)態(tài)測(cè)試系
    發(fā)表于 04-04 14:38 ?43次下載

    電液伺服機(jī)構(gòu)與CAN總線接口設(shè)計(jì)

    導(dǎo)彈電液伺服機(jī)構(gòu)將作為總線上的一個(gè)節(jié)點(diǎn)掛接在總線上,因此必須設(shè)計(jì)一個(gè)將總線與電液伺服機(jī)構(gòu)連接起來(lái)的接口。
    發(fā)表于 08-16 11:12 ?1507次閱讀
    電液<b class='flag-5'>伺服機(jī)構(gòu)</b>與CAN總線接口設(shè)計(jì)

    基于DSP的數(shù)字伺服機(jī)構(gòu)控制系統(tǒng)設(shè)計(jì)

    為滿足對(duì)直流無(wú)刷伺服機(jī)構(gòu)的數(shù)字化控制,介紹了一種數(shù)字無(wú)刷直流電機(jī)伺服控制系統(tǒng),以TMS320F2812型DSP為控制核心,包括中央處理電路,
    發(fā)表于 06-13 12:27 ?199次下載
    基于DSP的數(shù)字<b class='flag-5'>伺服機(jī)構(gòu)</b><b class='flag-5'>控制</b>系統(tǒng)設(shè)計(jì)

    基于LS-SVM的機(jī)載天線伺服機(jī)構(gòu)自適應(yīng)控制

    針對(duì)機(jī)載天線伺服機(jī)構(gòu)運(yùn)行時(shí)所受外力是快時(shí)變、變化范圍大、且自身摩擦等非線性特性不能忽略的問(wèn)題,提出一種基于最小二乘支持向量機(jī)(LS-SVM)的自適應(yīng)控制設(shè)計(jì)方法。此方法將
    發(fā)表于 10-24 10:48 ?32次下載

    電動(dòng)伺服機(jī)構(gòu)可靠性驗(yàn)證試驗(yàn)

    針對(duì)某型火箭第三級(jí)發(fā)動(dòng)機(jī)尾噴管姿態(tài)控制的電動(dòng)伺服機(jī)構(gòu)可靠性驗(yàn)證試驗(yàn)方法開(kāi)展研究,采用Weibull分布模型確定了電動(dòng)伺服系統(tǒng)的可靠性驗(yàn)證試驗(yàn)的試驗(yàn)時(shí)間,同時(shí)在對(duì)電動(dòng)伺服系統(tǒng)任務(wù)階段的環(huán)
    發(fā)表于 03-27 10:37 ?1次下載
    電動(dòng)<b class='flag-5'>伺服機(jī)構(gòu)</b>可靠性驗(yàn)證試驗(yàn)

    導(dǎo)彈電液伺服機(jī)構(gòu)原理仿真裝置的軟硬件設(shè)計(jì)與實(shí)現(xiàn)

    電液伺服機(jī)構(gòu)作為導(dǎo)彈控制系統(tǒng)的執(zhí)行機(jī)構(gòu),廣泛用于各種型號(hào)的彈道式導(dǎo)彈上,它的響應(yīng)速度和精度直接影響導(dǎo)彈的命中精度。對(duì)于電液伺服機(jī)構(gòu)這樣一個(gè)結(jié)構(gòu)復(fù)雜、要求精密的武器裝備,需要電路、液路和
    發(fā)表于 11-18 09:59 ?1757次閱讀
    導(dǎo)彈電液<b class='flag-5'>伺服機(jī)構(gòu)</b>原理仿真裝置的軟硬件設(shè)計(jì)與實(shí)現(xiàn)

    基于DSP的數(shù)字伺服機(jī)構(gòu)控制系統(tǒng)設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于DSP的數(shù)字伺服機(jī)構(gòu)控制系統(tǒng)設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-24 09:58 ?0次下載
    基于DSP的數(shù)字<b class='flag-5'>伺服機(jī)構(gòu)</b><b class='flag-5'>控制</b>系統(tǒng)設(shè)計(jì)