สารบัญ:

The Artificial Plant Emotion Expressor (A.P.E.X. ): 7 ขั้นตอน (พร้อมรูปภาพ)
The Artificial Plant Emotion Expressor (A.P.E.X. ): 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: The Artificial Plant Emotion Expressor (A.P.E.X. ): 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: The Artificial Plant Emotion Expressor (A.P.E.X. ): 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Красивая история о настоящей любви! Мелодрама НЕЛЮБОВЬ (Домашний). 2024, ธันวาคม
Anonim
Image
Image

แต่เดี๋ยวก่อน… ยังมีอีก!

ขั้นตอนที่ 1: บทนำ

บทนำ
บทนำ
บทนำ
บทนำ
บทนำ
บทนำ

เอเพ็กซ์คืออะไร?

APEX เป็นอุปกรณ์ตรวจสอบพืชที่ฉลาด (ไม่ต้องพูดถึงว่าน่ารัก) เพียงแค่เสียบเข้ากับต้นไม้ใด ๆ และจะแสดงระดับ "ความสุข" ของพืช! นี่เป็นเครื่องเตือนใจที่ดีในการรดน้ำต้นไม้หากคุณมีนิสัยที่ไม่ดีที่จะลืมรดน้ำต้นไม้

มันทำงานอย่างไร?

มายากล. ผมล้อเล่น! APEX ใช้ Arduino ที่ติดอยู่กับเซ็นเซอร์ความชื้นซึ่งสอดเข้าไปในดินของพืช เซ็นเซอร์นี้จะอ่านค่าความชื้นในดิน จากนั้น Arduino จะคำนวณว่าหน้าใดที่จะแสดง

แต่ทำไม?

ทำไมจะไม่ล่ะ?

ขั้นตอนที่ 2: รวบรวมชิ้นส่วนและเครื่องมือ

การรวบรวมชิ้นส่วนและเครื่องมือ
การรวบรวมชิ้นส่วนและเครื่องมือ
การรวบรวมชิ้นส่วนและเครื่องมือ
การรวบรวมชิ้นส่วนและเครื่องมือ
การรวบรวมชิ้นส่วนและเครื่องมือ
การรวบรวมชิ้นส่วนและเครื่องมือ

เข้าไปกันเถอะ! สำหรับคำแนะนำนี้ คุณจะต้องมีชิ้นส่วนและเครื่องมือค่อนข้างน้อย โชคดีสำหรับคุณ รายการทั้งหมดอยู่ด้านล่าง:

ด้วยเจตนารมณ์ของการแข่งขันไมโครคอนโทรลเลอร์ โปรเจ็กต์นี้สร้างขึ้นโดยชิ้นส่วนที่ซื้อใน Amazon อย่างสมบูรณ์! (ไม่ได้รับการสนับสนุน)

ส่วนรายการ:

  • Arduino Uno
  • จอแสดงผล LED 8x8
  • เซ็นเซอร์สัมผัสแบบ Capacitive
  • เซ็นเซอร์ความชื้น
  • ขั้วต่อแบตเตอรี่ 9V
  • แบตเตอรี่ 9V

รายการเครื่องมือ:

  • สายเกจ 22 เส้น
  • เทปพันสายไฟ
  • เครื่องปอกสายไฟ
  • หัวแร้ง
  • ปั๊ม Desoldering

เมื่อคุณรวบรวมอุปกรณ์ที่จำเป็นทั้งหมดแล้ว ก็ถึงเวลาติดตั้งซอฟต์แวร์ Arduino!

ขั้นตอนที่ 3: การติดตั้ง Arduino IDE

การติดตั้ง Arduino IDE
การติดตั้ง Arduino IDE
การติดตั้ง Arduino IDE
การติดตั้ง Arduino IDE
การติดตั้ง Arduino IDE
การติดตั้ง Arduino IDE

เพื่อให้โครงการนี้ใช้งานได้ เราจะต้องสามารถตั้งโปรแกรม Arduino ได้ จำเป็นต้องดาวน์โหลดและติดตั้ง Arduino Integrated Development Environment (IDE) ลงในคอมพิวเตอร์ของคุณ เป็นคำอธิบายที่ค่อนข้างง่าย แต่ฉันจะแนะนำคุณตลอดกระบวนการ:

1. เยี่ยมชมเว็บไซต์ Arduino

2. ไปที่หน้าดาวน์โหลด (ซอฟต์แวร์ > ดาวน์โหลด)

3. คลิกลิงก์ดาวน์โหลดสำหรับระบบปฏิบัติการของคุณ

หมายเหตุด้านข้าง: โปรแกรมจะทำงานบน Windows, Mac และ Linux

4. การติดตั้งบน Windows

  • ดับเบิลคลิกที่ไฟล์ที่ดาวน์โหลดเพื่อเรียกใช้
  • คลิก "ตกลง" เพื่อยอมรับใบอนุญาต
  • ทำตามคำแนะนำที่เหลือ
  • ตอนนี้ควรติดตั้งโปรแกรมแล้ว!

(อย่าลืมดูภาพหน้าจอหากคุณหลงทาง)

5. การติดตั้งบน Mac

  • คลิกที่ไฟล์ที่ดาวน์โหลด
  • เลือก "เปิด"
  • โปรแกรมจะติดตั้งและรันโดยอัตโนมัติ!

(อย่าลืมตรวจสอบภาพหน้าจอหากคุณสับสน)

6. แค่นั้นแหละ

และคุณทำเสร็จแล้ว! ตอนนี้คุณได้ดาวน์โหลด Arduino IDE ลงในระบบของคุณแล้ว!

ขั้นตอนที่ 4: รหัส

รหัส
รหัส
รหัส
รหัส
รหัส
รหัส

ขั้นตอนนี้เป็นข้อมูลเกี่ยวกับรหัส เป็นโปรแกรมที่ค่อนข้างสั้น ดังนั้นฉันจะอธิบายกับคุณและอธิบายว่ามันทำงานอย่างไร อย่างแรก ภาพรวมโดยย่อ ต่อด้วยคำอธิบายเชิงลึก และสุดท้ายจะพุชไปยัง Arduino ได้อย่างไร!

ภาพรวมโดยย่อ

สำหรับผู้ที่ไม่สนใจคำอธิบายโค้ดโดยละเอียด ฉันกำลังจัดเตรียมเซ็กเมนต์ TL;DR! นี่คือคำอธิบายพื้นฐาน Arduino จับค่าจากเซ็นเซอร์ความชื้นทุก ๆ สองสามวินาที ข้อมูลนี้จะใช้ในการคำนวณและแสดงใบหน้าที่แน่นอน! นอกจากนี้ยังมีรหัสเล็กน้อยในตอนท้ายซึ่งให้ปุ่มสัมผัสแบบ capacitive เปิดและปิดจอแสดงผล สวยเรียบง่ายใช่มั้ย?

The Nitty Gritty

บทช่วยสอนส่วนนี้มีไว้สำหรับผู้ที่มีความสนใจอย่างมากเกี่ยวกับวิธีการทำงานของโปรแกรมทั้งหมด ทีละบรรทัด เราจะจัดเตรียมภาพหน้าจอด้านบนเพื่อช่วยให้คุณเข้าใจสิ่งที่คุณกำลังพูดถึง รวมทั้งรวมโค้ดบางบรรทัดไว้ในคำอธิบายนี้

โปรแกรมนี้แบ่งออกเป็นห้าส่วน:

  1. รวมไลบรารี่และการสร้างตัวแปร
  2. ฟังก์ชันการตั้งค่า
  3. ฟังก์ชั่นสำหรับการแสดงออกทางสีหน้า
  4. ฟังก์ชันเขียน Arduino บนเมทริกซ์
  5. ฟังก์ชันลูป

รวมถึงไลบรารีและการสร้างตัวแปร:

ส่วนแรกของรหัสนี้เป็นข้อมูลเกี่ยวกับตัวแปรและไลบรารีที่เราจะใช้

#include "LedControlMS.h"

#define TouchSensor 7 LedControl lc=LedControl(12, 11, 10, 1); int เซ็นเซอร์พิน = A5; int sensorValue = 0; บูลเริ่มต้น = เท็จ; บูลบน = จริง; บูลีนกด = ต่ำ;

บรรทัดแรกมีไลบรารีชื่อ LedControlMS ไลบรารีนี้จำเป็นสำหรับการส่งค่าไปยังจอแสดงผล LED บรรทัดถัดไปคือคำสั่ง define ซึ่งกำหนดพินสำหรับเซ็นเซอร์สัมผัสเป็น 7 หลังจากนั้น เรามีตัวแปรอีกสามตัวที่กำหนดพินสำหรับจอแสดงผล LED เซ็นเซอร์ความชื้น และค่าของมัน สามบรรทัดสุดท้ายเป็นบูลีนทั้งหมดที่ควบคุมสถานะของปุ่มสัมผัสและจอแสดงผล หลังจากนี้เรามีค่าไบต์ของเรา:

ไบต์ยิ้ม[4]={B0000010, B00110010, B01100100, B01100000};ไบต์แปลกใจ[4]={B00001110, B00001010, B01101110, B10010000}; ไบต์ [4]={B0000000100, B00100100, B00100100, B00100000}; ไบต์เศร้า[4]={B00000010, B01100100, B00110010, B00110000}; ไบต์ตาย[6]={B00001010, B00100100, B00101010, B000000000, B01100000, B01101010}; ข้อผิดพลาดไบต์[8]={B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; // Evil Faces ไบต์ esmile[4]={B00000010, B00101010, B01000100, B01000000}; ไบต์อีลาห์[4]={B00000010, B00101010, B01100100, B01100000}; ไบต์ eplain[4]={B00000010, B00101010, B00100100, B00100000}; ไบต์ eyell[4]={B00000001, B01101001, B01100010, B01100000}; ไบต์ etalk[4]={B00000001, B00101001, B01100010, B01100000};

ค่าเหล่านี้แสดงถึงใบหน้าทั้งหมดของ APEX แต่ละไบต์เป็นอาร์เรย์ที่มีหลายบิตที่กำหนดสถานะของแต่ละพิกเซลในแถวที่กำหนด "1" และ "0" หมายถึงเปิด/ปิดตามลำดับ

ฟังก์ชั่นการตั้งค่า:

ไปยังส่วนถัดไป เรามีฟังก์ชันการตั้งค่าของเรา

การตั้งค่าเป็นโมฆะ () {// MS Serial Output Serial.begin (9600);

โหมดพิน (เซ็นเซอร์สัมผัส, อินพุต);

// LED Matrix Setup lc.shutdown (0, เท็จ); lc.setIntensity(0, 4); lc.clearDisplay(0); }

ชื่ออธิบายได้ดีมาก นี่คือที่ที่เรา "ตั้งค่า" เซ็นเซอร์สัมผัสและจอแสดงผลของเรา สองบรรทัดแรกเริ่มต้นเอาต์พุตแบบอนุกรมของเรา (ใช้สำหรับการแก้ไขข้อบกพร่อง) บรรทัดที่สามตั้งค่าพินเซ็นเซอร์สัมผัสเป็นอินพุต และสี่บรรทัดสุดท้ายเริ่มต้นการแสดงผล

ฟังก์ชั่นสำหรับการแสดงออกทางสีหน้า:

นี่อาจเป็นส่วนที่ยาวที่สุด แต่ทั้งหมดนั้นเรียบง่ายและซ้ำซาก

โมฆะหัก () { lc.setRow (0, 0, ข้อผิดพลาด [0]); lc.setRow(0, 1, ข้อผิดพลาด [1]); lc.setRow(0, 2, ข้อผิดพลาด[2]); lc.setRow(0, 3, ข้อผิดพลาด[3]); lc.setRow(0, 4, ข้อผิดพลาด[4]); lc.setRow(0, 5, ข้อผิดพลาด[5]); lc.setRow(0, 6, ข้อผิดพลาด[6]); lc.setRow(0, 7, ข้อผิดพลาด[7]); }

โมฆะมีความสุข () {

lc.setRow(0, 0, ยิ้ม[0]); lc.setRow(0, 1, ยิ้ม[1]); lc.setRow(0, 2, ยิ้ม[2]); lc.setRow(0, 3, ยิ้ม[3]); lc.setRow(0, 4, ยิ้ม[3]); lc.setRow(0, 5, ยิ้ม[2]); lc.setRow(0, 6, ยิ้ม[1]); lc.setRow(0, 7, ยิ้ม[0]); }

เป็นโมฆะธรรมดา () {

lc.setRow(0, 0, meh[0]); lc.setRow(0, 1, meh[1]); lc.setRow(0, 2, meh[2]); lc.setRow(0, 3, meh[3]); lc.setRow(0, 4, meh[3]); lc.setRow(0, 5, meh[2]); lc.setRow(0, 6, meh[1]); lc.setRow(0, 7, meh[0]); }

โมฆะประหลาดใจ (){

lc.setRow(0, 0, เซอร์ไพรส์[0]); lc.setRow(0, 1, เซอร์ไพรส์[1]); lc.setRow(0, 2, เซอร์ไพรส์[2]); lc.setRow(0, 3, เซอร์ไพรส์[3]); lc.setRow(0, 4, เซอร์ไพรส์[3]); lc.setRow(0, 5, เซอร์ไพรส์[2]); lc.setRow(0, 6, เซอร์ไพรส์ [1]); lc.setRow(0, 7, เซอร์ไพรส์[0]); }

โมฆะตาย () {

lc.setRow(0, 0, ตาย[0]); lc.setRow(0, 1, ตาย[1]); lc.setRow(0, 2, ตาย[2]); lc.setRow(0, 3, ตาย[3]); lc.setRow(0, 4, ตาย[4]); lc.setRow(0, 5, ตายแล้ว[5]); lc.setRow(0, 6, ตาย[1]); lc.setRow(0, 7, ตาย[0]); }

โมฆะร้องไห้ () {

lc.setRow(0, 0, เศร้า[0]); lc.setRow(0, 1, เศร้า[1]); lc.setRow(0, 2, เศร้า[2]); lc.setRow(0, 3, เศร้า[3]); lc.setRow(0, 4, เศร้า[3]); lc.setRow(0, 5, เศร้า[2]); lc.setRow(0, 6, เศร้า[1]); lc.setRow(0, 7, เศร้า[0]); }

โมฆะ Evilsmile () {

lc.setRow(0, 0, เอสไมล์[0]); lc.setRow(0, 1, เอสไมล์[1]); lc.setRow(0, 2, เอสไมล์[2]); lc.setRow(0, 3, เอสไมล์[3]); lc.setRow(0, 4, เอสไมล์[3]); lc.setRow(0, 5, เอสไมล์[2]); lc.setRow(0, 6, เอสไมล์[1]); lc.setRow(0, 7, เอสไมล์[0]); }

โมฆะ evillaugh() {

lc.setRow(0, 0, elaugh[0]); lc.setRow(0, 1, elaugh[1]); lc.setRow(0, 2, elaugh[2]); lc.setRow(0, 3, elaugh[3]); lc.setRow(0, 4, elaugh[3]); lc.setRow(0, 5, elaugh[2]); lc.setRow(0, 6, elaugh[1]); lc.setRow(0, 7, elaugh[0]); }

โมฆะ evilplain () {

lc.setRow(0, 0, eplain[0]); lc.setRow(0, 1, eplain[1]); lc.setRow(0, 2, eplain[2]); lc.setRow(0, 3, eplain[3]); lc.setRow(0, 4, eplain[3]); lc.setRow(0, 5, eplain[2]); lc.setRow(0, 6, eplain[1]); lc.setRow(0, 7, eplain[0]); }

เป็นโมฆะ evilyell() {

lc.setRow(0, 0, eyell[0]); lc.setRow(0, 1, eyell[1]); lc.setRow(0, 2, eyell[2]); lc.setRow(0, 3, eyell[3]); lc.setRow(0, 4, eyell[3]); lc.setRow(0, 5, eyell[2]); lc.setRow(0, 6, eyell[1]); lc.setRow(0, 7, eyell[0]); }

เป็นโมฆะ eviltalk() {

lc.setRow(0, 0, etalk[0]); lc.setRow(0, 1, etalk[1]); lc.setRow(0, 2, etalk[2]); lc.setRow(0, 3, etalk[3]); lc.setRow(0, 4, etalk[3]); lc.setRow(0, 5, etalk[2]); lc.setRow(0, 6, etalk[1]); lc.setRow(0, 7, etalk[0]); }

ฟังก์ชันเหล่านี้ใช้เพื่อกำหนดการแสดงสีหน้าแต่ละครั้งโดยใช้ค่าไบต์ของเราจากส่วนแรก แต่ละบรรทัดกำหนดตำแหน่ง x และค่าไบต์ จากนั้นจึงนำค่าไปใช้กับคอลัมน์นั้น บางฟังก์ชันต้องการเส้นมากขึ้น เนื่องจากมีแถวที่ใช้แสดงค่าของใบหน้านั้นมากขึ้น ใบหน้าแต่ละหน้ามีความสมมาตร เราจึงวาดเส้นซ้ำ

ฟังก์ชัน WriteArduinoOnMatrix:

ส่วนที่สี่ใช้ในการคำนวณและเขียนหน้าที่ถูกต้องบนจอแสดงผล LED ประกอบด้วยชุดคำสั่ง else if ซึ่งตรวจสอบค่าน้ำแล้วตั้งค่าการแสดงผลโดยเรียกใช้ฟังก์ชันที่แตกต่างจากส่วนก่อนหน้า

เป็นโมฆะ writeArduinoOnMatrix () { if (sensorValue > 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) { ประหลาดใจ (); } อื่น ๆ { เสีย (); } }

คุณอาจสังเกตเห็นว่าเราเพิ่มใบหน้าที่ "หัก" ไว้ในกรณีที่เซ็นเซอร์อยู่นอกช่วงการทำงาน ซึ่งจะป้องกันข้อผิดพลาด null แปลก ๆ ที่เกิดขึ้น และทำให้เราเข้าใจสิ่งที่เกิดขึ้นภายในโค้ดได้ดีขึ้น

ฟังก์ชันลูป:

สุดท้ายแต่ไม่ท้ายสุดคือฟังก์ชันลูป รหัสนี้ทำงานตรงตามชื่อ มันวนซ้ำ! แม้ว่าฟังก์ชันนี้จะมีเพียงไม่กี่บรรทัด แต่จริงๆ แล้วค่อนข้างง่าย รหัสจะอ่านสถานะของปุ่มก่อนและดูว่าการแสดงผลเป็น "เปิด" หรือไม่ หากพบว่าเป็นจริง ก็จะเรียกฟังก์ชัน WriteArduinoOnMatrix ซึ่งจะวาดใบหน้าบน APEX เนื่องจากฟังก์ชั่นนี้วนซ้ำ มันจะอัปเดตการแสดงผลได้บ่อยเท่าที่เราต้องการ ความล่าช้านี้ถูกกำหนดโดยตัวแปรเวลาหน่วงเวลา

วงเป็นโมฆะ () { ถ้า (เริ่มต้น == จริง) { เวลาหน่วง = 3000; } // กดปุ่มอ่าน = digitalRead (TouchSensor);

ถ้า (กด) {

ถ้า (บน == จริง) { lc.clearDisplay(0); บน = เท็จ; ล่าช้า (ล่าช้า); } อื่น ๆ { บน = จริง; ล่าช้า (ล่าช้า); } } sensorValue = analogRead (เซ็นเซอร์พิน); ล่าช้า (ล่าช้า); ถ้า (บน == จริง) {// วาดใบหน้า writeArduinoOnMatrix (); }

เริ่ม = จริง;

}

นั่นคือทั้งหมดที่มีในรหัส หวังว่าตอนนี้คุณจะเข้าใจวิธีการทำงานทั้งหมดได้ดีขึ้น และสามารถใช้ความรู้นี้เพื่อเริ่มปรับแต่งให้เข้ากับโครงการของคุณได้!

ดันโค้ดไปที่ Arduino

เมื่อเราได้ครอบคลุมโค้ดทั้งหมดแล้ว ก็ถึงเวลาที่จะพุชไปที่ Arduino! โชคดีที่ IDE ทำให้สิ่งนี้ง่ายมาก สิ่งที่คุณต้องทำคือเสียบ Arduino เข้ากับคอมพิวเตอร์ด้วยสาย USB จากนั้นคลิกลูกศรขวาที่ด้านบนซ้ายของ IDE ปล่อยให้รหัสผลักและคุณจะเห็นข้อความแสดงความสำเร็จที่ด้านล่างของโปรแกรมหากคุณทำถูกต้อง!

ขั้นตอนที่ 5: แผนภาพวงจร

แผนภูมิวงจรรวม
แผนภูมิวงจรรวม

เช่นเดียวกับโค้ด แผนภาพวงจรไม่ซับซ้อนเกินไป ประกอบด้วยเซ็นเซอร์สามตัวและ Arduino เท่านั้น ดังนั้นฉันจะบอกคุณถึงพินเอาต์สำหรับแต่ละตัว และหากคุณต้องการความช่วยเหลืออื่น ๆ ให้อ้างอิงกับไดอะแกรมด้านบน

จอแสดงผล LED:

  • VCC -> 5V
  • GRD -> GRD
  • DIN -> พิน 12
  • CS -> ปักหมุด 10
  • CLK -> ปักหมุด 11

เซ็นเซอร์ความชื้น:

  • บวก -> 5V
  • เชิงลบ -> GRD
  • สัญญาณ -> A5

เซ็นเซอร์สัมผัสแบบ Capacitive:

  • VCC -> 5V
  • GRD -> GRD
  • SIG -> 7

ไม่ยากเกินไปใช่ไหม หากคุณมีปัญหาใด ๆ กับพินเอาต์นี้ โปรดดูวิดีโอด้านล่างซึ่งเราจะแนะนำวิธีการต่อสายให้คุณทราบ

ขั้นตอนที่ 6: นำทุกอย่างมารวมกัน

วางมันทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกัน
วางมันทั้งหมดเข้าด้วยกัน

เป็นการยากที่จะอธิบายด้วยข้อความว่ามันเข้ากันได้อย่างไร ดังนั้นฉันขอแนะนำให้ดูวิดีโอสำหรับส่วนนี้อย่างแน่นอน ฉันจะไม่อธิบายอย่างแน่ชัดว่าฉันรวบรวมของฉันอย่างไร มันยากเกินไป แต่เพื่ออธิบายสิ่งต่าง ๆ อย่างคลุมเครือ ฉันบัดกรีการต่อสายไฟและพันไว้รอบ ๆ ด้านหลังของกระดาน จากนั้นฉันก็จัดตำแหน่งเซ็นเซอร์และใช้เทปพันสายไฟเพื่อยึดทั้งหมดเข้าด้วยกัน สุดท้าย ฉันทดสอบด้วยแบตเตอรี่ 9V และเมื่อฉันรู้ว่ามันใช้งานได้ ให้วางแบตเตอรี่ที่ด้านหลังและติดเทปไว้ด้วย อย่างที่ฉันพูดไปก่อนหน้านี้ ลองดูวิดีโอสำหรับขั้นตอนนี้ มันมีส่วนบัดกรีเล็กๆ ที่ดีที่เร่งความเร็วและจะช่วยให้คุณพันสายไฟได้อย่างถูกต้อง อย่าลังเลที่จะหยุดชั่วคราวหรือเล่นด้วยความเร็วครึ่งหนึ่งหากคุณหลงทาง

ยินดีด้วย! ถ้าทุกอย่างสำเร็จ ตอนนี้คุณควรมีหน่วย APEX ที่ทำงานได้อย่างสมบูรณ์!

หากต้องการทดสอบยูนิตของคุณ ให้หาต้นไม้ที่รดน้ำแล้วเสียบปลั๊ก! คุณควรพบว่ามันมีความสุขหรือประหลาดใจ นั่นหมายความว่ามันควรจะได้ผล!!! ทำได้ดีมากสำหรับการทำโครงการให้เสร็จ!

ขั้นตอนที่ 7: บทสรุป

บทสรุป
บทสรุป

และนั่นคือคำแนะนำทั้งหมด! ขอบคุณสำหรับการตรวจสอบโครงการ! ฝากคำถามและความคิดเห็นไว้ด้านล่าง และอย่าลืมติดตาม Urban Farming Guys เพื่อรับบทเรียนเจ๋งๆ แบบนี้! เราชอบที่จะได้ยินว่า APEX บิลด์ของคุณดำเนินไปอย่างไร และรูปภาพต่าง ๆ ก็น่าชื่นชมมาก! ขอขอบคุณอีกครั้งสำหรับการหยุด ขอให้มีวันที่ดี!

(คำแนะนำนี้ได้รับแรงบันดาลใจจากโครงการเก่า Plant Emoji!)

ป.ล. Instructable นี้เข้าร่วมการแข่งขัน Microcontrollers ดังนั้นอย่าลืมโหวตให้เรา! เราขอขอบคุณมันมาก:)

ป.ล. มาสร้าง APEX ใน Make Magazine กันเถอะ! โหวตที่นี่ ! ขอบคุณ:)

แนะนำ: