สารบัญ:

นาฬิกาแผนที่ใต้ดินในลอนดอน: 9 ขั้นตอน (พร้อมรูปภาพ)
นาฬิกาแผนที่ใต้ดินในลอนดอน: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: นาฬิกาแผนที่ใต้ดินในลอนดอน: 9 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: นาฬิกาแผนที่ใต้ดินในลอนดอน: 9 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: London - Easy way to use the London underground (แนะนำวิธีโดยสาร Underground ในLondon แบบง่ายๆ) 2024, พฤศจิกายน
Anonim
นาฬิกาแผนที่ใต้ดินในลอนดอน
นาฬิกาแผนที่ใต้ดินในลอนดอน
นาฬิกาแผนที่ใต้ดินในลอนดอน
นาฬิกาแผนที่ใต้ดินในลอนดอน

ในปี 2014 หลังจากการฝึกงานที่บริษัทที่ปรึกษาด้านการพิมพ์ 3 มิติในลอนดอน และการทดลองกับหินลิโธเฟนสีโดยใช้เครื่อง Stratasys ของพวกเขา ฉันออกแบบของขวัญที่กำลังจะไปอยู่ของฉันเอง ซึ่งเป็นการพิมพ์ 3 มิติสีของสายยางในพื้นที่สำนักงานของพวกเขา ฉันตั้งใจที่จะทำอะไรบางอย่างจากมัน 2 ปีต่อมาในปี 2016 สั้น ๆ ฉันมีเครื่องพิมพ์ 3 มิติของตัวเองและพร้อมที่จะทำเป็นนาฬิกา

ตอนเด็กๆ ฉันคิดว่านาฬิกาดิจิตอล Tokyo Flash เป็นสิ่งที่ยิ่งใหญ่ที่สุดตลอดกาล และคิดว่านั่นจะเป็นแรงบันดาลใจในการออกแบบ

และตอนนี้ก็เป็นแค่ช่วงพักเล็ก ๆ น้อย ๆ 4 ปีจนกระทั่งฉันได้เขียนมันขึ้นมา!

ในขณะที่คำแนะนำที่แน่นอนจะทำซ้ำได้ยาก และการลดต้นทุนในการผลิต PCB สำหรับงานอดิเรกในช่วงสองสามปีที่ผ่านมาอาจทำให้วิธีการที่แน่นอนของฉันสำหรับการจัดวาง LED ล้าสมัย ฉันหวังว่าความคิดที่แบ่งปันกันอาจทำให้คนอื่น ๆ ทำนาฬิกาแปลก ๆ จากวัตถุบาง ๆ ได้!

ขั้นตอนที่ 1: Front Layer

ชั้นหน้า
ชั้นหน้า
ชั้นหน้า
ชั้นหน้า
ชั้นหน้า
ชั้นหน้า

ตามที่กล่าวไว้ในบทนำ นี่คือการพิมพ์ 3 มิติแบบสี ฉันเชื่อว่าเครื่อง Stratasys ซึ่งใช้แป้งฝุ่นและตลับหมึกดัดแปลงสำหรับสารยึดเกาะและเม็ดสี

ไฟล์นี้สูญหายไปจากประวัติศาสตร์ แต่เลเยอร์นี้อาจเป็นอะไรก็ได้ รูปภาพหรือหินลิโธเฟนสีเดียวก็ใช้งานได้อย่างอัศจรรย์

ส่วนนี้สร้างขึ้นใน 3DS max ในปี 2014 แต่วันนี้มีเครื่องมือออนไลน์ในการเปลี่ยนรูปภาพเป็น SLT ตามความสว่าง

ขั้นตอนที่ 2: การออกแบบ Guide Layer

การออกแบบ Guide Layer
การออกแบบ Guide Layer
การออกแบบ Guide Layer
การออกแบบ Guide Layer
การออกแบบ Guide Layer
การออกแบบ Guide Layer
การออกแบบ Guide Layer
การออกแบบ Guide Layer

นี่คือที่ที่เราตัดสินใจความซับซ้อนของโครงการและวิธีการอ่านเวลา รูปภาพแสดง 2 แนวคิดที่ฉันกำลังเล่นอยู่

สิ่งเหล่านี้สร้างขึ้นโดยการสแกนในการออกแบบและวาดเส้นข้ามใน Inkscape

นาฬิกาเรือนนี้ไม่ใช่นาฬิกาที่อ่านง่าย แต่ฉันชอบความคิดที่จะเติมเส้นตลอดทั้งวันเพื่อให้กลายเป็นเป้าหมายของการออกแบบ

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

เป็นเรื่องปกติในนาฬิกา Tokyo Flash ที่จะลดจำนวน LED ให้เหลือน้อยที่สุด แต่มีส่วนหนึ่งที่นับใน 3 หรือ 5 แล้วเติมอีกส่วนสำหรับแต่ละส่วนที่เติม ฉันใช้เทคนิคนี้สำหรับนาทีเพื่อลดพวกเขาจาก 60 เป็น 20 บวก 2 ฉัน ไม่ได้กังวลเกี่ยวกับความแม่นยำในวินาทีนี้

ขั้นตอนที่ 3: สร้าง Guide Layer

การสร้าง Guide Layer
การสร้าง Guide Layer
การสร้าง Guide Layer
การสร้าง Guide Layer
การสร้าง Guide Layer
การสร้าง Guide Layer

เลเยอร์ไกด์นี้สำหรับ LED มีวัตถุประสงค์ 2 ประการ คือ ยึด LED ไว้กับที่ และป้องกันการรั่วไหลระหว่างกัน

มันถูกวาดเป็นเลเยอร์บน Inkscape โดยตรงที่ด้านบนของการสแกนที่ฉันใช้สำหรับเลย์เอาต์การออกแบบ เพิ่มความหนา 1 มม. ในเครื่องปั่นก่อนส่งไปยังเครื่องพิมพ์ของฉัน

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

ภาพสุดท้ายแสดงให้เห็นว่ามันถือโคมไฟเพื่อตรวจสอบระยะห่าง

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

ขั้นตอนที่ 4: การเดินสายไฟ LED

การเดินสายไฟ LED
การเดินสายไฟ LED
การเดินสายไฟ LED
การเดินสายไฟ LED
การเดินสายไฟ LED
การเดินสายไฟ LED

ภาพแรกแสดงภาพพิมพ์ทดสอบที่ฉันทำเพื่อตรวจสอบขนาดรู ฉันเล็งให้ LED พอดีกับลูกไม้พอดีโดยใช้แรงเพียงเล็กน้อย จากนั้นจึงวางรูปร่างที่ถูกต้องด้วยมือเมื่อวางเลเยอร์ไกด์

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

เพื่อลดจำนวนสายไฟ LED ถูกบัดกรีในเมทริกซ์ขนาด 7 คูณ 8 ซึ่งหมายความว่าไฟ LED ทั้ง 55 ดวงสามารถควบคุมได้เพียง 13 พินเท่านั้น ฉันมีแผนที่ที่วาดด้วยมือของการเชื่อมต่อเหล่านี้ซึ่งสูญหายไปอย่างน่าเสียดาย

ใช้ลวดเคลือบเพื่อให้สามารถเปิดส่วนต่างๆ ได้โดยการให้ความร้อนกับส่วนเหล็กและกระป๋องก่อนที่จะทำการเชื่อมต่อ

กระบวนการนี้ใช้เวลานานมาก ฉันขอแนะนำเป็นอย่างยิ่งให้ออกแบบ PCB

ขั้นตอนที่ 5: การออกแบบอุปกรณ์อิเล็กทรอนิกส์

การออกแบบอุปกรณ์อิเล็กทรอนิกส์
การออกแบบอุปกรณ์อิเล็กทรอนิกส์
การออกแบบอุปกรณ์อิเล็กทรอนิกส์
การออกแบบอุปกรณ์อิเล็กทรอนิกส์
การออกแบบอุปกรณ์อิเล็กทรอนิกส์
การออกแบบอุปกรณ์อิเล็กทรอนิกส์
การออกแบบอุปกรณ์อิเล็กทรอนิกส์
การออกแบบอุปกรณ์อิเล็กทรอนิกส์

แผนเริ่มต้นของฉันคือการใช้ไมโครคอนโทรลเลอร์ Arduino กับ RTC แต่เลือกใช้ ESP8266 บนบอร์ด Node MCU D1 เนื่องจากอนุญาตให้ใช้การปรับเวลาตามฤดูกาลโดยอัตโนมัติและมีศักยภาพในการควบคุม WIFI

เพื่อลดจำนวนพินให้มากขึ้น ฉันมี LED จำนวนที่สมบูรณ์แบบที่สามารถใช้ MAX7219 ได้ (ซึ่งสามารถรองรับไฟ LED ได้มากถึง 64 ดวง)

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

ฉันตัดสินใจใช้โปรโตบอร์ดในการเดินสาย แต่อินทรีมีประโยชน์ในการจัดวางชิ้นส่วนและทำความเข้าใจการเดินสาย

ฉันได้แนบไฟล์บอร์ดมาด้วย แต่นี่เป็นครั้งแรกที่ฉันใช้ eagle (และเป็นเวอร์ชันที่ล้าสมัยไปแล้วด้วย) ดังนั้นจึงใช้สำหรับอ้างอิงเท่านั้น

ขั้นตอนที่ 6: การเดินสายไฟอุปกรณ์อิเล็กทรอนิกส์

การเดินสายไฟอิเล็กทรอนิกส์
การเดินสายไฟอิเล็กทรอนิกส์
การเดินสายไฟอิเล็กทรอนิกส์
การเดินสายไฟอิเล็กทรอนิกส์
การเดินสายไฟอิเล็กทรอนิกส์
การเดินสายไฟอิเล็กทรอนิกส์
การเดินสายไฟอิเล็กทรอนิกส์
การเดินสายไฟอิเล็กทรอนิกส์

นี่เป็นขั้นตอนง่ายๆ ที่เกิดขึ้นซ้ำๆ ตามแผนผังของ Eagle โดยใช้ส่วนหัวสำหรับ ESP และเมทริกซ์ LED ช่วยในการประกอบอย่างมหาศาล

พิน 1 บนส่วนหัว LED ของขั้วบวกและแคโทดถูกทำเครื่องหมายด้วยมีดสีเงิน พวกเขาสามารถแยกความแตกต่างระหว่าง 7 กับอีก 8 อันได้

ขั้นตอนที่ 7: การเขียนโปรแกรม

การเขียนโปรแกรม
การเขียนโปรแกรม

เนื่องจากการแสดงผลของเราไม่ใช่เมทริกซ์แบบดั้งเดิม ฉันจึงต้องหาวิธีในการแสดงภาพว่าบิตใดที่จะเปิดซึ่งส่งไปยัง MAX IC ใน HEX โชคดีที่ฉันรู้ดีพอที่จะประสบปัญหา และสร้าง 'ตัวช่วยสร้าง Hex' เพื่อแนะนำฉันถึงรูปแบบที่ฉันต้องการแสดง ช่องกาเครื่องหมายวางด้วยมือทั้งหมด

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

ดังนั้นเกือบจะถึงจุดสิ้นสุด และเวลาสำหรับการตัดสินใจอีกครั้งซึ่งยังไม่แก่เกินไป

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

ฉันตัดสินใจอย่างน่าสงสัยในการ ping เซิร์ฟเวอร์ Google เพื่ออ่านเวลาเป็นประจำ สิ่งนี้ต้องใช้ RTC เพื่อลดการล่องลอย ใช้งานได้ แต่คุณควรใช้ API ตามเวลาจริงจะดีกว่า

halfSec = 0 ชั่วโมง=0 นาที=0 วินาที=0

ความเข้มต่ำ = 0

ความเข้มสูง = 9

SSID ท้องถิ่น = "Wifi"

SSID_PASSWORD ท้องถิ่น ="รหัสผ่าน"

เวลาทำงาน () - เชื่อมต่ออินเทอร์เน็ตเพื่อรับเวลาและวันที่ปัจจุบัน

ถ้า wifi.sta.getip() แล้ว local conn=net.createConnection(net. TCP, 0) conn:connect(80, "google.com")

conn:on("การเชื่อมต่อ", function(conn, payload) conn:send("HEAD / HTTP/1.1\r\n".. "Host: time.is\r\n".. "Accept: */*\r\n".. " User-Agent: Mozilla/4.0 (เข้ากันได้; esp8266 Lua;)".. "\r\n\r\n") สิ้นสุด)

conn:on("รับ", function(conn, payload) --print(payload) conn:close() local p=string.find(payload, "GMT") -- ค้นหาสตริงเวลาและวันที่ในเพย์โหลดจากอินเทอร์เน็ต เปลี่ยนเป็นเขตเวลาถ้า p~ =ไม่มี จากนั้น -- แยกตัวเลขที่สัมพันธ์กับชั่วโมง นาที วินาที วัน เดือน ชั่วโมง=tonumber(string.sub(payload, p-9, p-8)) minutes=tonumber(string.sub(payload, p- 6, p-5)) วินาที = tonumber (string.sub (payload, p-3, p-2)) addHour () --hard coded BST (เวลาฤดูร้อนของอังกฤษ) การพิมพ์ประหยัดเวลากลางวัน (ชั่วโมง นาที วินาที) halfSec = (second%6)*2 --print(halfSec) else print("web update failed!") end end --function) --end of on "receive" event handler

conn:on("ขาดการเชื่อมต่อ", ฟังก์ชั่น (conn, payload) conn=nil payload=nil end) สิ้นสุดการพิมพ์ ("ยังไม่มี wifi") สิ้นสุด

ฟังก์ชัน borTable(a, b, …) --bitwise OR ตารางเข้าด้วยกัน

ถ้า arg[1] แล้ว b = borTable(b, unpack(arg)) end local z = {} for i, v in ipairs(a) do table.insert(z, bit.bor(v, b)) end return z end

ฟังก์ชั่น bxorTable(a, b, …) --bitwise OR ตารางเข้าด้วยกัน

ถ้า arg[1] แล้ว b = bxorTable(b, unpack(arg)) end local z = {} for i, v in ipairs(a) do table.insert(z, bit.bxor(v, b)) end return z end

ฟังก์ชัน addSecond()

วินาที=วินาที+1 ถ้าวินาที>=60 จากนั้นวินาที=0 นาที=นาที+1 ถ้านาที>=60 แล้วนาที=0 addHour() สิ้นสุด สิ้นสุด

ฟังก์ชัน addHour()

hour=hour+1 if hour>=24 then hour=0 end if hour == 2 or hour == 16 then max7219.setIntensity(lowIntensity) end if hour == 8 or hour == 18 then max7219.setIntensity(highIntensity) การอัปเดตฟังก์ชันสิ้นสุด end () local secGap = 6 local minGap = 3 horGap ในพื้นที่ = 1 วินาทีในเครื่อง = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x03}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x03}, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x03}, { 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x01, 0x03}, { 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03}, { 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03 }, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x03} }; นาทีท้องถิ่น = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00}, { 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x02, 0x00}, { 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00}, { 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00}, { 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00}, { 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x10}, { 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x12, 0x10}, { 0x02, 0x02, 0x02, 0x02, 0x02, 0x10, 0x12, 0x10}, { 0x02, 0x02, 0x02, 0x02, 0x12, 0x10, 0x12, 0x10 } { 0x02, 0x02, 0x02, 0x12, 0x12, 0x10, 0x12, 0x10}, { 0x02, 0x02, 0x12, 0x12, 0x12, 0x10, 0x12, 0x10}, { 0x02, 0x12, 0x12, 0x12, 0x12, 0x10, 0x12, 0x10}, { 0x12, 0x12, 0x12, 0x12, 0x12, 0x10, 0x12, 0x10}, { 0x12, 0x12, 0x12, 0x12, 0x12, 0x30, 0x12, 0x10}, {0x12, 0x12, 0x12, 0x12, 0x32, 0x30, 0x12, 0x10}, { 0x12, 0x12, 0x12, 0x32, 0x32, 0x30, 0x12, 0x10}, { 0x12, 0x12, 0x32, 0x32, 0x32, 0x30, 0x12, 0x10}, {0x12, 0x32, 0x32, 0x32, 0x32, 0x30, 0x12, 0x10}, { 0x32, 0x32, 0x32, 0x32, 0x32, 0x30, 0x12, 0x10} }; ชั่วโมงท้องถิ่น = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00}, { 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x00}, { 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00}, { 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00}, { 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00}, { 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08}, { 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0C, 0x08}, { 0x04, 0x04, 0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C } { 0x04, 0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x08}, { 0x04, 0x04, 0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, {0x04, 0x04, 0x0C, 0x0C, 0, 0x0C, 0x0C, 0,, 0x0C, 0x08}, { 0x04, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08}, { 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x08, 0x0, 0x0C, 0x0C, 0x0C, 0x0C, 0x48}, { 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x48}, {0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x4C, 0x0, 0C, 0x0C, 0x0C, 0x0C, 0x4C 0,48 0C}4, 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x48}, { 0x0C, 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48} { 0x0C, 0x0C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48}, { 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48} }; --พิมพ์(ชั่วโมง นาที วินาที)

--ตารางเริ่มต้นที่ 0 ดังนั้นที่ 1 ในขณะที่วินาที[0] = ไม่มี)

max7219.write({animate(borTable(sec[1+(second/secGap)], min[1+(minute/minGap)], ฮอ[1+(ชั่วโมง/horGap)]))})

สิ้นสุด --function

wifi.setmode (wifi. STATION)

wifi.sta.config(SSID, SSID_PASSWORD) wifi.sta.autoconnect(1)

--กำหนดค่าmax7219

max7219 = ต้องการ ("max7219") max7219.setup ({numberOfModules = 1, slaveSelectPin = 8, ความเข้ม = ความเข้มสูง })

--โปรแกรมหลัก

checkOnline = tmr.create()

tmr.alarm(0, 180000, 1 ครั้ง)

tmr.alarm(1, 1000, 1, เพิ่มวินาที)

tmr.alarm(2, 500, 1, อัปเดต)

ฟังก์ชั่นเคลื่อนไหว (นิ่ง)

เฟรมในเครื่อง = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00}, { 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}, { 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} }; halfSec=halfSec+1 ถ้า halfSec >=12 แล้ว halfSec = 0 end --print(halfSec) return bxorTable(frames[halfSec+1], still) end

ขั้นตอนที่ 8: ที่อยู่อาศัย

ที่อยู่อาศัย
ที่อยู่อาศัย
ที่อยู่อาศัย
ที่อยู่อาศัย
ที่อยู่อาศัย
ที่อยู่อาศัย

ตอนนี้เป็นเวลาของคุณที่จะแสดงฝีมืออันน่าทึ่งของคุณและจัดโครงการ

หรือไม่ก็หยิบห่ออเมซอนออกจากการรีไซเคิลแล้วสร้างที่พักชั่วคราวที่ยังคงใช้งานอยู่ในปัจจุบัน

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

ขั้นตอนที่ 9: ปิดข้อสังเกต

ขอบคุณสำหรับการอ่าน อย่างที่หลายๆ คนทราบดีว่าการบันทึกโครงการอาจเป็นเรื่องยากพอๆ กับการสร้าง มีเศษของวิดีโอที่คุยกับฉันซึ่งในที่สุดอาจเห็นแสงของวัน

ในช่วงหลายปีระหว่างการทำโปรเจ็กต์นี้และเขียนขึ้น ฉันคาดว่าจะเห็นตัวอย่างเพิ่มเติมของจอแสดงผล LED ที่กำหนดเองโดยใช้การพิมพ์ 3 มิติ แต่การลดแถบ RGB ได้ทำให้ไม่จำเป็นต้องมีทางเลือกอื่นเป็นส่วนใหญ่

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

ไชโย

แนะนำ: