<h4 class="" id="回到-Webduino-GPT 使用手冊"><a class="anchor hidden-xs" href="#回到-Webduino-GPT 使用手冊" title="回到-Webduino-GPT 使用手冊" smoothhashscroll=""><i class="fa fa-link"></i></a>回到 <a href="https://md.webduino.io/s/Fzh6vAPjY" target="_self" rel="noopener"><code>Webduino-GPT 使用手冊</code></a></h4>
密碼鎖
===
## 題目
用 Web:Bit 開發板設計一個密碼鎖,密碼是 ABAA,上鎖時 LED 亮白燈。透過按鈕 A 和 B 輸入密碼,每按一次會有蜂鳴器發出提示音。
如果密碼正確,LED 亮綠燈,過一下變回白燈;如果密碼錯誤,LED 亮紅燈,過一下變回白燈。
## 怎麼讓 AI 知道我想要什麼?
### 1. 拆解需求,釐清問題
首先我們需要將題目需求分解成更小的子問題,以便更容易理解和解決。可以將問題分解成以下幾個子問題:
* 如何讓 AI 知道正確的密碼?
* 如何透過按下按鈕輸入密碼?
* 如何讓按下按鈕時發出提示音?
* 如何判斷輸入的密碼是否正確?
* 如何在適當的時機,顯示對應的燈號?
### 2. 比對經驗,找出相似
密碼鎖是生活中常見的物品,我們可以參考密碼鎖的使用方式,設計我們自己的版本。一般密碼鎖由這些元素組成:
* 正確密碼
* 數字或英文字母按鈕,或是轉盤
* 至少有「上鎖」和「解鎖」兩種狀態
* 輸入正確密碼,可以解鎖
### 3. 提取核心,化繁為簡
接下來,我們要收斂前面列出的細節,整理出密碼鎖的必要條件:
* 偵測輸入的密碼,儲存成「密碼輸入」
* 將「密碼輸入」和「正確密碼」進行比對,判斷密碼是否正確。
* 找到「燈號」的一般性規則。「如果上鎖,亮白燈」、「如果密碼正確,亮綠燈後間隔 n 秒亮白燈」、「如果密碼錯誤,亮紅燈後間隔 n 秒亮白燈」。
* 如果按下按鈕 A 或 B,蜂鳴器發出聲音。
### 4. 精準表達,轉譯需求
最後,我們需要將需求翻譯成 AI 比較好理解的語言,以下是其中一種表達方式:
:::info
#### **我們可以告訴 ChatGPT 這樣做**
- 設定[正確密碼]為ABAA
- 設定LED為白色
- 偵測按鈕被按下的順序,設定為[密碼輸入]。例如依序按下按鈕A、按鈕B、按鈕A、按鈕A,[密碼輸入]為ABAA
- 按下按鈕A或B,蜂鳴器發出 Re
- 重複執行,如果[正確密碼]等於[密碼輸入],LED變綠色,蜂鳴器發出Sol La Si,2秒後變成白色。否則LED為紅色,蜂鳴器發出 Do Do,2秒後變成白色
:::
> - 重複出現的專有名詞,可以用中括號[],讓 AI 明確知道你反覆提及的是同一個詞彙。
> - **善用舉例**,讓 AI 更清楚你的想法。例如上面的描述告訴 AI,當「依序按下按鈕A、按鈕B、按鈕A、按鈕A」時,代表[密碼輸入]為ABAA,讓 AI 能依此類推。
### [使用範例 >>](https://chat.webduino.io/test/index.html?prompt=%E8%A8%AD%E5%AE%9A%5B%E6%AD%A3%E7%A2%BA%E5%AF%86%E7%A2%BC%5D%E7%82%BAABAA%0A%E8%A8%AD%E5%AE%9ALED%E7%82%BA%E7%99%BD%E8%89%B2%0A%E5%81%B5%E6%B8%AC%E6%8C%89%E9%88%95%E8%A2%AB%E6%8C%89%E4%B8%8B%E7%9A%84%E9%A0%86%E5%BA%8F%EF%BC%8C%E8%A8%AD%E5%AE%9A%E7%82%BA%5B%E5%AF%86%E7%A2%BC%E8%BC%B8%E5%85%A5%5D%E3%80%82%E4%BE%8B%E5%A6%82%E4%BE%9D%E5%BA%8F%E6%8C%89%E4%B8%8B%E6%8C%89%E9%88%95A%E3%80%81%E6%8C%89%E9%88%95B%E3%80%81%E6%8C%89%E9%88%95A%E3%80%81%E6%8C%89%E9%88%95A%EF%BC%8C%5B%E5%AF%86%E7%A2%BC%E8%BC%B8%E5%85%A5%5D%E7%82%BAABAA%0A%E6%8C%89%E4%B8%8B%E6%8C%89%E9%88%95A%E6%88%96B%EF%BC%8C%E8%9C%82%E9%B3%B4%E5%99%A8%E7%99%BC%E5%87%BA%20Re%0A%E9%87%8D%E8%A4%87%E5%9F%B7%E8%A1%8C%EF%BC%8C%E5%A6%82%E6%9E%9C%5B%E6%AD%A3%E7%A2%BA%E5%AF%86%E7%A2%BC%5D%E7%AD%89%E6%96%BC%5B%E5%AF%86%E7%A2%BC%E8%BC%B8%E5%85%A5%5D%EF%BC%8CLED%E8%AE%8A%E7%B6%A0%E8%89%B2%EF%BC%8C%E8%9C%82%E9%B3%B4%E5%99%A8%E7%99%BC%E5%87%BASol%20La%20Si%EF%BC%8C2%E7%A7%92%E5%BE%8C%E8%AE%8A%E6%88%90%E7%99%BD%E8%89%B2%E3%80%82%E5%90%A6%E5%89%87LED%E7%82%BA%E7%B4%85%E8%89%B2%EF%BC%8C%E8%9C%82%E9%B3%B4%E5%99%A8%E7%99%BC%E5%87%BA%20Do%20Do%EF%BC%8C2%E7%A7%92%E5%BE%8C%E8%AE%8A%E6%88%90%E7%99%BD%E8%89%B2&actor=wbit)
將產生的程式碼,部署到 Web:Bit 開發板,就可以完成這樣的效果囉!
<iframe width="700" height="400" src="https://photo.webduino.io/resource/blog/bda32e29-26e6-4d12-a465-298c4a783348.mp4" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
## 延伸思考
1. 如何讓密碼正確時,LED 顯示一朵小花?
2. 如果想要增加「重設密碼」的功能,可以如何表達需求?