Arduino模擬信號(hào)與PWM控制:從電位器到LED亮度調(diào)節(jié)的完整實(shí)現(xiàn)
1. 從旋鈕到光暈一個(gè)燈光調(diào)節(jié)器的誕生最近在整理工作室的舊物翻出來(lái)一塊吃灰已久的Arduino Edison開(kāi)發(fā)板。看著它我忽然想起很多朋友包括當(dāng)年的我自己在入門嵌入式開(kāi)發(fā)時(shí)常常會(huì)卡在一個(gè)看似簡(jiǎn)單卻至關(guān)重要的環(huán)節(jié)如何將物理世界的連續(xù)變化平滑、直觀地映射到數(shù)字世界的控制信號(hào)上比如我們想用一個(gè)旋鈕來(lái)調(diào)節(jié)一盞燈的亮度。這聽(tīng)起來(lái)簡(jiǎn)單不就是讀個(gè)電位器的值然后去控制LED嗎但實(shí)際操作起來(lái)新手往往會(huì)遇到亮度跳變、調(diào)節(jié)范圍不對(duì)、或者代碼邏輯混亂的問(wèn)題。今天我們就以這塊Edison板為核心手把手搭建一個(gè)“燈光調(diào)節(jié)器”把“模擬輸入-數(shù)字處理-模擬輸出”這條鏈路徹底打通。這個(gè)項(xiàng)目不僅是驅(qū)動(dòng)一個(gè)LED那么簡(jiǎn)單它更是理解Arduino生態(tài)中模擬信號(hào)采集、PWM模擬輸出以及核心的map()函數(shù)應(yīng)用的絕佳范例。無(wú)論你是剛接觸Eduino/Arduino的新手還是想重溫基礎(chǔ)的老鳥(niǎo)這個(gè)項(xiàng)目都能讓你對(duì)“交互”有更扎實(shí)的理解。2. 硬件清單與電路連接構(gòu)建物理交互的橋梁動(dòng)手之前我們先得把硬件理清楚。這個(gè)項(xiàng)目的硬件構(gòu)成極其經(jīng)典是無(wú)數(shù)電子項(xiàng)目的起點(diǎn)。2.1 核心元件解析Arduino Edison開(kāi)發(fā)板這是我們的大腦。Edison功能強(qiáng)大但今天我們只用到它最基礎(chǔ)的功能讀取模擬電壓和輸出PWM信號(hào)。它的IO口兼容Arduino標(biāo)準(zhǔn)這意味著我們可以使用豐富的Arduino生態(tài)代碼和庫(kù)。對(duì)于本項(xiàng)目任何一款具有模擬輸入Analog Input和PWM輸出PWM Output功能的Arduino兼容板如Uno, Nano, ESP32等都可以直接替換代碼幾乎無(wú)需改動(dòng)。模擬角度傳感器電位器這是我們的輸入設(shè)備通常是一個(gè)10k歐姆的旋轉(zhuǎn)電位器。它本質(zhì)上是一個(gè)可變電阻。當(dāng)我們旋轉(zhuǎn)旋鈕時(shí)中心抽頭Wiper與兩端的電阻比值發(fā)生變化從而在中心抽頭上輸出一個(gè)0V到工作電壓如5V之間連續(xù)變化的電壓。這個(gè)連續(xù)的電壓信號(hào)就是“模擬”信號(hào)的典型代表。LED與限流電阻這是我們的輸出設(shè)備。LED發(fā)光二極管需要恒流驅(qū)動(dòng)但我們通過(guò)PWM來(lái)“欺騙”它實(shí)現(xiàn)亮度調(diào)節(jié)。至關(guān)重要的一點(diǎn)是必須串聯(lián)一個(gè)限流電阻通常為220歐姆或330歐姆直接連接在LED和IO口之間。沒(méi)有這個(gè)電阻過(guò)大的電流會(huì)瞬間損壞LED甚至開(kāi)發(fā)板。電阻接在陽(yáng)極正極或陰極負(fù)極均可電路邏輯上等價(jià)。杜邦線與面包板用于快速、非永久性地連接電路。2.2 電路連接步驟詳解連接電路時(shí)務(wù)必在斷電狀態(tài)下操作。遵循“電源-地-信號(hào)”的順序可以最大程度避免短路。電位器連接將電位器的兩個(gè)外側(cè)引腳分別連接到Edison板的5V引腳和GND地引腳。哪個(gè)接5V哪個(gè)接GND只會(huì)影響旋轉(zhuǎn)方向與讀數(shù)變化的關(guān)系順時(shí)針增大或減小不影響功能。將電位器的中間引腳抽頭連接到Edison板的一個(gè)模擬輸入引腳例如A0。這個(gè)引腳將負(fù)責(zé)讀取變化的電壓值。LED電路連接將LED的長(zhǎng)腳陽(yáng)極正極通過(guò)一個(gè)220歐姆的電阻連接到Edison板的一個(gè)PWM引腳。在大多數(shù)Arduino板上帶有波浪線~符號(hào)的引腳支持PWM例如引腳3。將LED的短腳陰極負(fù)極直接連接到Edison板的GND引腳。注意在連接LED時(shí)如果你不確定正負(fù)極可以仔細(xì)觀察LED內(nèi)部較小的金屬片連接的是陰極負(fù)極?;蛘哂萌f(wàn)用表二極管檔測(cè)試LED僅在正向?qū)〞r(shí)會(huì)微亮。連接完成后的電路邏輯非常清晰旋轉(zhuǎn)電位器改變A0引腳上的電壓0-5VEdison讀取這個(gè)電壓值并轉(zhuǎn)換為一個(gè)數(shù)字0-1023然后通過(guò)程序?qū)⑦@個(gè)數(shù)字映射為PWM引腳3的輸出占空比0-255從而控制LED的亮度。整個(gè)系統(tǒng)的供電由Edison的USB口提供。3. 代碼核心map()函數(shù)的魔力與PWM的本質(zhì)硬件是軀體代碼是靈魂。這個(gè)項(xiàng)目的代碼短小精悍但包含了兩個(gè)最核心的概念map()函數(shù)和PWM脈沖寬度調(diào)制。理解了它們你就掌握了模擬世界與數(shù)字世界對(duì)話的語(yǔ)法。3.1 模擬讀取與PWM輸出數(shù)據(jù)的來(lái)龍去脈首先我們看看最基礎(chǔ)的讀取和輸出語(yǔ)句int sensorValue analogRead(A0); // 讀取A0引腳電壓 analogWrite(ledPin, brightness); // 向LED引腳寫入亮度值analogRead(pin)這個(gè)函數(shù)讀取指定模擬引腳上的電壓。Edison的ADC模數(shù)轉(zhuǎn)換器精度是10位這意味著它會(huì)把0-5V的電壓線性劃分為2^101024個(gè)等級(jí)用0到1023之間的整數(shù)來(lái)表示。所以當(dāng)A0引腳電壓為0V時(shí)sensorValue是0電壓為5V時(shí)sensorValue是10232.5V則對(duì)應(yīng)大約512。analogWrite(pin, value)這個(gè)函數(shù)并非輸出真正的模擬電壓那需要DAC模塊。它輸出的是PWM信號(hào)。PWM通過(guò)快速開(kāi)關(guān)數(shù)字輸出HIGH和LOW來(lái)模擬一個(gè)平均電壓。value參數(shù)范圍是0-255它決定了一個(gè)周期內(nèi)高電平所占的時(shí)間比例占空比。value0表示占空比0%LED不亮value255表示占空比100%LED最亮value127表示占空比約50%LED半亮。人眼由于視覺(jué)暫留看到的是穩(wěn)定的亮度而非閃爍。那么問(wèn)題來(lái)了sensorValue的范圍是0-1023而brightness的范圍是0-255。我們?nèi)绾螌⑶罢摺稗D(zhuǎn)換”為后者最直接的想法是除以4因?yàn)?024/2564。但這樣真的好嗎3.2 為什么必須用map()而不僅僅是除法很多新手會(huì)這樣做brightness sensorValue / 4;。這在數(shù)學(xué)上沒(méi)錯(cuò)但存在幾個(gè)實(shí)踐中的問(wèn)題精度損失與非線性整數(shù)除法會(huì)截?cái)嘈?shù)。當(dāng)sensorValue為0,1,2,3時(shí)除以4的結(jié)果都是0這意味著電位器旋轉(zhuǎn)的一小段范圍內(nèi)LED亮度沒(méi)有任何變化存在“死區(qū)”。隨后亮度會(huì)以4個(gè)數(shù)字為一級(jí)跳躍調(diào)節(jié)手感是“階梯式”的不平滑。靈活性差如果我想讓電位器只在一半的旋轉(zhuǎn)角度內(nèi)就完成從全暗到全亮的調(diào)節(jié)呢或者反過(guò)來(lái)讓整個(gè)旋轉(zhuǎn)過(guò)程只控制中間一段亮度范圍簡(jiǎn)單的除法公式無(wú)法輕松實(shí)現(xiàn)這種輸入輸出范圍的重新映射。這時(shí)map()函數(shù)就該登場(chǎng)了。它的作用正是線性映射。brightness map(sensorValue, 0, 1023, 0, 255);這行代碼的意思是將sensorValue這個(gè)值從其原始范圍0, 1023線性地映射到新的目標(biāo)范圍0, 255。map()函數(shù)內(nèi)部會(huì)進(jìn)行浮點(diǎn)計(jì)算最終結(jié)果轉(zhuǎn)換為整數(shù)但這個(gè)過(guò)程比簡(jiǎn)單除法精細(xì)得多能最大程度保持變化的線性度使亮度調(diào)節(jié)感覺(jué)平滑、跟手。更重要的是它的靈活性。假設(shè)我覺(jué)得從全暗到全亮電位器旋轉(zhuǎn)90度就夠了剩下的角度作為冗余。我可以這樣寫brightness map(sensorValue, 0, 800, 0, 255); // 僅用前800個(gè)讀數(shù)對(duì)應(yīng)全亮度范圍或者我想讓LED在電位器旋轉(zhuǎn)的前半段就達(dá)到最亮后半段保持最亮一個(gè)非線性響應(yīng)if (sensorValue 512) { brightness map(sensorValue, 0, 511, 0, 255); } else { brightness 255; }map()函數(shù)賦予了我們?cè)谳斎牒洼敵鲋g建立任意線性關(guān)系的能力這是實(shí)現(xiàn)復(fù)雜交互邏輯的基礎(chǔ)。3.3 完整代碼實(shí)現(xiàn)與逐行解讀結(jié)合以上知識(shí)我們來(lái)看完整的Arduino Sketch代碼// 定義引腳常量提高代碼可讀性和可維護(hù)性 const int potPin A0; // 電位器連接至模擬引腳A0 const int ledPin 3; // LED通過(guò)電阻連接至數(shù)字PWM引腳3 // 變量聲明 int sensorValue 0; // 存儲(chǔ)從電位器讀取的原始值0-1023 int brightness 0; // 存儲(chǔ)映射后的LED亮度值0-255 void setup() { // 初始化串口通信用于調(diào)試輸出數(shù)據(jù) Serial.begin(9600); // 設(shè)置LED引腳為輸出模式 pinMode(ledPin, OUTPUT); // 模擬輸入引腳A0默認(rèn)就是輸入模式無(wú)需特別設(shè)置 } void loop() { // 1. 讀取模擬值獲取電位器的當(dāng)前位置 sensorValue analogRead(potPin); // 2. 數(shù)據(jù)映射將0-1023的范圍轉(zhuǎn)換為0-255的范圍 brightness map(sensorValue, 0, 1023, 0, 255); // 3. 輸出控制將映射后的值作為PWM占空比輸出控制LED亮度 analogWrite(ledPin, brightness); // 4. 串口打印調(diào)試信息可選但強(qiáng)烈推薦用于驗(yàn)證 Serial.print(Sensor: ); Serial.print(sensorValue); Serial.print( - Brightness: ); Serial.println(brightness); // 加入一個(gè)短暫的延遲穩(wěn)定讀數(shù)并降低串口數(shù)據(jù)洪流 delay(10); }代碼要點(diǎn)與調(diào)試技巧使用const定義引腳這是一個(gè)好習(xí)慣。如果后續(xù)需要更改引腳只需修改一處而不是在整個(gè)代碼中搜索數(shù)字。串口調(diào)試的重要性Serial.begin()和Serial.print()語(yǔ)句不是裝飾。上傳代碼后打開(kāi)Arduino IDE的串口監(jiān)視器工具-串口監(jiān)視器波特率設(shè)為9600你就能實(shí)時(shí)看到sensorValue和brightness的數(shù)值。旋轉(zhuǎn)電位器觀察數(shù)值變化是否平滑、范圍是否正確。這是排查硬件連接問(wèn)題如讀數(shù)始終為0或1023和代碼邏輯問(wèn)題最直接的方法。延遲delay(10)的作用它有兩個(gè)目的。一是讓每次循環(huán)之間有微小間隔使模擬讀數(shù)更穩(wěn)定二是控制串口輸出的頻率避免數(shù)據(jù)刷屏太快導(dǎo)致監(jiān)視器卡頓。在實(shí)際產(chǎn)品中如果對(duì)響應(yīng)速度要求極高可以去掉延遲和串口打印。4. 進(jìn)階探索與常見(jiàn)問(wèn)題排查項(xiàng)目基本功能實(shí)現(xiàn)后我們可以思考如何讓它變得更好以及當(dāng)它不工作時(shí)該如何排查。4.1 功能擴(kuò)展不止于調(diào)節(jié)亮度這個(gè)基礎(chǔ)框架可以衍生出許多有趣的應(yīng)用多級(jí)亮度/模式切換不用線性映射而是將0-1023的范圍劃分為幾個(gè)區(qū)間每個(gè)區(qū)間對(duì)應(yīng)一個(gè)固定的亮度或閃爍模式。if (sensorValue 341) { // 低區(qū) analogWrite(ledPin, 85); // 1/3亮度 } else if (sensorValue 682) { // 中區(qū) analogWrite(ledPin, 170); // 2/3亮度 } else { // 高區(qū) analogWrite(ledPin, 255); // 全亮 }控制其他設(shè)備將PWM輸出連接到電機(jī)驅(qū)動(dòng)模塊就可以調(diào)節(jié)電機(jī)速度連接到MOSFET或繼電器驅(qū)動(dòng)電路甚至可以調(diào)節(jié)臺(tái)燈、風(fēng)扇等家用電器注意高壓安全。添加按鈕切換模式增加一個(gè)按鈕單擊可以在“亮度調(diào)節(jié)”、“呼吸燈模式”、“閃爍警示模式”之間切換而電位器在亮度調(diào)節(jié)模式下起作用。使用constrain()函數(shù)map()映射后的值有可能因?yàn)橛?jì)算誤差或輸入超范圍而略微超出0-255。使用brightness constrain(brightness, 0, 255);可以確保亮度值永遠(yuǎn)落在有效范圍內(nèi)。4.2 常見(jiàn)問(wèn)題與深度排查指南事情總不會(huì)一帆風(fēng)順。以下是幾個(gè)典型問(wèn)題及其排查思路問(wèn)題一LED完全不亮。排查鏈檢查電源與接地首先確認(rèn)Edison板已通過(guò)USB線正常供電電源指示燈亮。用萬(wàn)用表測(cè)量電位器兩端和LED兩端的電壓是否正常。檢查L(zhǎng)ED極性LED插反了肯定不會(huì)亮。確認(rèn)長(zhǎng)腳正極通過(guò)電阻接到了PWM引腳短腳負(fù)極接GND。檢查電阻值電阻是否損壞或阻值過(guò)大如用了10k歐姆對(duì)于普通LED220-330歐姆在5V下是安全且亮度足夠的。檢查代碼與引腳確認(rèn)代碼中l(wèi)edPin定義的引腳號(hào)如3與實(shí)際連接的引腳一致。確認(rèn)代碼已成功上傳到開(kāi)發(fā)板。串口監(jiān)視器看數(shù)據(jù)打開(kāi)串口監(jiān)視器旋轉(zhuǎn)電位器觀察sensorValue和brightness是否有變化。如果sensorValue始終為0檢查電位器連接如果brightness有變化但LED不亮問(wèn)題集中在LED電路部分。問(wèn)題二LED亮度不隨旋鈕平滑變化而是跳躍或僅在某個(gè)點(diǎn)突變。原因與解決電位器接觸不良老舊的電位器內(nèi)部碳膜磨損會(huì)導(dǎo)致讀數(shù)跳動(dòng)。嘗試更換一個(gè)電位器。未使用map()函數(shù)如果用了sensorValue / 4就會(huì)出現(xiàn)前文所述的階梯式跳躍。改用map()函數(shù)。電源噪聲如果使用不穩(wěn)定的電源如有些電腦USB口供電不足可能導(dǎo)致模擬讀數(shù)波動(dòng)。嘗試用手機(jī)充電器或移動(dòng)電源給開(kāi)發(fā)板供電。軟件消抖在analogRead后加入簡(jiǎn)單的濾波如取多次讀數(shù)的平均值可以平滑數(shù)據(jù)。int readSmooth(int pin) { int total 0; for (int i 0; i 10; i) { total analogRead(pin); delay(1); } return total / 10; } // 在loop中調(diào)用 sensorValue readSmooth(potPin);問(wèn)題三旋轉(zhuǎn)到頭了LED還沒(méi)達(dá)到最亮或最暗。原因與解決電位器范圍未用滿可能電位器兩端電壓不是嚴(yán)格的0V和5V或者ADC參考電壓有偏差??梢允褂胢ap()函數(shù)進(jìn)行校準(zhǔn)先將電位器擰到物理最小位置讀取sensorValue比如是minVal12擰到最大位置讀取sensorValue比如是maxVal1010。然后將映射語(yǔ)句改為brightness map(sensorValue, minVal, maxVal, 0, 255); brightness constrain(brightness, 0, 255); // 約束最終結(jié)果LED特性有些高亮度LED或不同顏色的LED其電流-亮度曲線并非完全線性在低PWM值時(shí)可能不發(fā)光存在死區(qū)在高PWM值時(shí)亮度增長(zhǎng)已不明顯。這屬于器件物理特性可以通過(guò)更精細(xì)的映射曲線非線性映射來(lái)改善手感但這需要更復(fù)雜的代碼或查找表。問(wèn)題四想用ESP32、STM32等其他開(kāi)發(fā)板實(shí)現(xiàn)。核心邏輯不變無(wú)論哪種開(kāi)發(fā)板核心流程“讀取模擬信號(hào)-處理映射-輸出PWM”都是一樣的。注意差異ADC精度ESP32的ADC默認(rèn)是12位0-4095STM32的ADC可能是12位或更高。你需要修改map()函數(shù)的原始范圍例如ESP32map(sensorValue, 0, 4095, 0, 255)。PWM分辨率Arduino的analogWrite()是8位PWM0-255。ESP32和STM32的PWM分辨率可以配置得更高如16位0-65535實(shí)現(xiàn)更精細(xì)的亮度控制但這需要調(diào)用相應(yīng)的庫(kù)函數(shù)如ESP32的ledcWrite()。引腳編號(hào)注意核對(duì)目標(biāo)開(kāi)發(fā)板的模擬輸入引腳和PWM輸出引腳編號(hào)。這個(gè)燈光調(diào)節(jié)器項(xiàng)目就像一把鑰匙打開(kāi)了物理計(jì)算世界的大門。它教會(huì)我們的不僅僅是幾行代碼和幾個(gè)元件的連接更是一種思維方式如何感知世界如何處理信息如何反饋控制。當(dāng)你成功讓燈光隨著你的旋鈕溫柔明滅時(shí)你已經(jīng)完成了一次與硬件世界的成功對(duì)話。接下來(lái)試著去控制電機(jī)的轉(zhuǎn)速、舵機(jī)的角度或者一個(gè)智能家居設(shè)備的開(kāi)關(guān)你會(huì)發(fā)現(xiàn)背后的原理萬(wàn)變不離其宗。

相關(guān)新聞

國(guó)內(nèi)專業(yè)網(wǎng)站建設(shè)公司盤點(diǎn),2026 精選十家高口碑網(wǎng)站設(shè)計(jì)公司全方位梳理

國(guó)內(nèi)專業(yè)網(wǎng)站建設(shè)公司盤點(diǎn),2026 精選十家高口碑網(wǎng)站設(shè)計(jì)公司全方位梳理

一、2026 網(wǎng)站建設(shè)行業(yè)現(xiàn)狀深度解析生成式 AI、GEO 搜索優(yōu)化、llms 協(xié)議規(guī)范、多系統(tǒng)數(shù)據(jù)互通等新技術(shù)落地,市場(chǎng)對(duì)網(wǎng)站建設(shè)服務(wù)商的能力要求發(fā)生根本性分層。中大型企業(yè)、上市公司、出海品牌更青睞兼具行業(yè)深耕、定制開(kāi)發(fā)、AI 營(yíng)銷配套、長(zhǎng)期運(yùn)維迭代能力的綜合服務(wù)…

2026/7/29 9:26:11 閱讀更多
Agent 平臺(tái)化思考:從定制化開(kāi)發(fā)到通用 Agent 平臺(tái)的架構(gòu)演進(jìn)

Agent 平臺(tái)化思考:從定制化開(kāi)發(fā)到通用 Agent 平臺(tái)的架構(gòu)演進(jìn)

Agent 平臺(tái)化思考:從定制化開(kāi)發(fā)到通用 Agent 平臺(tái)的架構(gòu)演進(jìn) 一、從"一個(gè) Agent 一個(gè)項(xiàng)目"到"Agent 平臺(tái)":工程化必經(jīng)之路 2026 年初,某 SaaS 公司面臨一個(gè)困境:過(guò)去一年,他們?yōu)椴煌蛻粜枨箝_(kāi)發(fā)了…

2026/7/29 9:16:11 閱讀更多
ZX8002D單通道觸摸臺(tái)燈 化妝鏡 觸摸芯片帶鋰電池充電功能IC

ZX8002D單通道觸摸臺(tái)燈 化妝鏡 觸摸芯片帶鋰電池充電功能IC

一、ZX8002D方案概述 本方案以泛海微電子推出的ZX8002D單通道觸摸調(diào)光芯片為核心,針對(duì)LED臺(tái)燈、LED化妝鏡等小型LED照明產(chǎn)品設(shè)計(jì),實(shí)現(xiàn)單按鍵控制三檔亮度循環(huán)調(diào)節(jié)的功能。芯片集成了鋰電池充電管理模塊,支持2.5V-5V寬電壓輸入,無(wú)…

2026/7/29 9:16:11 閱讀更多
【2024最新AI編程啟蒙框架】:用ChatGPT+Code Interpreter零配置起步,72小時(shí)內(nèi)完成3個(gè)真實(shí)項(xiàng)目(限前200名領(lǐng)取教學(xué)沙箱)

【2024最新AI編程啟蒙框架】:用ChatGPT+Code Interpreter零配置起步,72小時(shí)內(nèi)完成3個(gè)真實(shí)項(xiàng)目(限前200名領(lǐng)取教學(xué)沙箱)

更多請(qǐng)點(diǎn)擊: https://codechina.net 第一章:AI零基礎(chǔ)學(xué)編程:從認(rèn)知重構(gòu)到能力躍遷 傳統(tǒng)編程學(xué)習(xí)常陷入“語(yǔ)法先行、項(xiàng)目滯后”的誤區(qū),而AI時(shí)代的學(xué)習(xí)路徑必須以問(wèn)題驅(qū)動(dòng)、反饋閉環(huán)與認(rèn)知建模為核心。對(duì)零基礎(chǔ)學(xué)習(xí)者而言&#xff…

2026/7/29 10:36:25 閱讀更多
小眾語(yǔ)言文稿AI率超標(biāo)?WriteGenie多語(yǔ)種降A(chǔ)IGC工具實(shí)測(cè):打破語(yǔ)種壁壘,一站式解決小語(yǔ)種優(yōu)化難題

小眾語(yǔ)言文稿AI率超標(biāo)?WriteGenie多語(yǔ)種降A(chǔ)IGC工具實(shí)測(cè):打破語(yǔ)種壁壘,一站式解決小語(yǔ)種優(yōu)化難題

當(dāng)AI寫作遇上“小語(yǔ)種”:一道被忽視的門檻 AI輔助寫作工具的普及,讓主流通用語(yǔ)種(中英文)的內(nèi)容生產(chǎn)變得空前高效。然而,對(duì)于需要處理小語(yǔ)種文稿的創(chuàng)作者而言,情況卻截然不同——無(wú)論是留學(xué)非英語(yǔ)國(guó)家的課…

2026/7/29 10:36:25 閱讀更多
Supervisor exit status 143

Supervisor exit status 143

文章目錄服務(wù)器沒(méi)有重啟,Java服務(wù)為什么自動(dòng)重啟?一次Ubuntu自動(dòng)更新導(dǎo)致Supervisor服務(wù)重啟的排查實(shí)錄故障背景故障現(xiàn)象exit status 143是什么意思?SIGTERM和SIGKILL區(qū)別排查Supervisor是否異常繼續(xù)追查是誰(shuí)觸發(fā)systemd停止服務(wù)定位Ubuntu自…

2026/7/29 10:36:25 閱讀更多
Day 024|條件路由:讓 Agent 根據(jù)結(jié)果選擇下一步

Day 024|條件路由:讓 Agent 根據(jù)結(jié)果選擇下一步

系列:100 天系統(tǒng)學(xué)習(xí) AI Agent 開(kāi)發(fā) 當(dāng)前階段:LangChain 與 LangGraph 工程化 今日目標(biāo):條件路由可以根據(jù)工具結(jié)果、置信度、用戶權(quán)限或錯(cuò)誤類型決定流程分支。真正讓流程像 Agent 的,不是節(jié)點(diǎn),而是岔路口 檢索到充分證…

2026/7/29 10:26:24 閱讀更多
面試官大笑:“一個(gè)任務(wù)拆給 5 個(gè) Subagent 并行跑,不比 1 個(gè)快 5 倍?“我搖頭:“快不了,還可能更慢“

面試官大笑:“一個(gè)任務(wù)拆給 5 個(gè) Subagent 并行跑,不比 1 個(gè)快 5 倍?“我搖頭:“快不了,還可能更慢“

前兩個(gè)月,我在重構(gòu) AlgoMooc 網(wǎng)站過(guò)程中,發(fā)現(xiàn)一個(gè)問(wèn)題:在 Claude Code 里把一個(gè)任務(wù)拆給 5 個(gè) Subagent 并行跑,結(jié)果可能比 1 個(gè) agent 從頭干到尾還慢? 大多數(shù)人的第一反應(yīng)是反過(guò)來(lái)的:活是并行干的&#…

2026/7/29 0:15:24 閱讀更多
# 鴻蒙 HarmonyOS 應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)(第25期)|骰子(Dice Roller)— Unicode 符號(hào)與動(dòng)畫渲染精講

# 鴻蒙 HarmonyOS 應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)(第25期)|骰子(Dice Roller)— Unicode 符號(hào)與動(dòng)畫渲染精講

一、應(yīng)用概述 骰子(Dice Roller) 是一款經(jīng)典的休閑娛樂(lè)應(yīng)用,模擬了真實(shí)擲骰子的過(guò)程。應(yīng)用投擲兩個(gè)骰子(六面標(biāo)準(zhǔn)骰),使用 Unicode 骰面符號(hào)直觀展示每個(gè)骰子的點(diǎn)數(shù),并伴有快速滾動(dòng)的動(dòng)畫效果?!?/p>

2026/7/29 0:15:24 閱讀更多