สารบัญ:
- ขั้นตอนที่ 1: รายการชิ้นส่วน
- ขั้นตอนที่ 2: ขั้นตอนของการประกอบ
- ขั้นตอนที่ 3: 1. ฐานอยู่กับที่ด้วยมอเตอร์กระแสตรง
- ขั้นตอนที่ 4: 2. ไฟล์แนบ Neopixel
- ขั้นตอนที่ 5: 3. การประกอบแท่นหมุน
- ขั้นตอนที่ 6: 4. การเดินสายไฟของอุปกรณ์ไฟฟ้า
- ขั้นตอนที่ 7: 5. รหัส Arduino
วีดีโอ: Advent Lantern พร้อมแอนิเมชั่น POV: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
โครงการ Persistence of Vision (POV) มีมาระยะหนึ่งแล้ว มีชุดอุปกรณ์ DIY แบบเรียบง่ายและราคาถูกพร้อมจำหน่ายทางออนไลน์ POV ขึ้นอยู่กับภาพลวงตาที่เราเห็นวัตถุที่ส่องสว่างหลังจากที่วัตถุไม่ได้รับแสงอีกต่อไป แม้ว่าจะเพียงชั่วครู่เท่านั้น โปรเจ็กต์ POV แบบดั้งเดิมมีภาพนิ่งโดยอิงตามหลักการนี้หรือนาฬิกาทำงานอย่างมากที่สุด อย่างไรก็ตาม ไม่มีสิ่งใดป้องกันแอนิเมชันของโปรเจ็กต์โดยใช้ไมโครคอนโทรลเลอร์ที่มีความเร็วสัญญาณนาฬิกาเพียงพอและไฟ LED RGB อัจฉริยะ แอนิเมชั่นนี้เป็นของกวางเรนเดียร์ลากเลื่อนคริสต์มาสสำหรับการตกแต่ง Advent ที่สามารถควบคุมจากระยะไกลโดยอุปกรณ์พกพาที่เปิดใช้งาน WiFi ด้วยเว็บเบราว์เซอร์ โคมไฟนี้ใช้พลังงานจากไมโครคอนโทรลเลอร์ Wemos ESP8266 D1 Mini ของตระกูล Arduino เครดิตสำหรับเฟรมกวางเรนเดียร์ 8 บิตที่เคลื่อนไหวได้นั้นตกเป็นของ Richard Fenyo ศิลปินกราฟิกมากความสามารถ
ขั้นตอนที่ 1: รายการชิ้นส่วน
คุณจะต้องมีเคสสำหรับโปรเจ็กต์นี้ที่หนักพอที่จะทำให้ยูนิตหมุนอยู่กับที่โดยไม่ต้องพลิกคว่ำ เคส PSU แบบเก่านั้นสมบูรณ์แบบ ระวังปล่อยให้ตัวเก็บประจุคายประจุก่อนทำการถอดประกอบ คุณจะต้องใช้อะแดปเตอร์จ่ายไฟ 5V-12V ชนิดใดก็ได้เพื่อจ่ายไฟให้กับมอเตอร์กระแสตรง ค่าแอมแปร์ใด ๆ จาก 500mA ขึ้นไปจะทำได้
ชิ้นส่วนที่จำเป็นแสดงอยู่ด้านล่างพร้อมลิงค์ร้านค้าและราคาปัจจุบัน
- 2 ชิ้น 18650 แบตเตอรี่ USD 4, 78
- ที่ใส่แบตเตอรี่สำหรับ 2x18650, USD 0, 63
- Wemos D1 Mini, USD 2, 14
- Black Straw, USD 0, 10
- เซนเซอร์สะท้อนแสงอินฟราเรด USD 0, 38
- สวิตช์โยกพาวเวอร์ 250V, USD 0, 10
- สวิตช์สไลด์สลับ USD 0, 02
- มอเตอร์ DC 6-900 รอบต่อนาที, USD 3, 99
- Adafruit Neopixel WS2812 8 บิต 1 ดอลลาร์สหรัฐ 01
ค่าใช้จ่ายโดยรวมน้อยกว่า USD 15 แต่คุณยังต้องใช้เครื่องมือช่าง เจาะ กาวร้อน พร้อมด้วยอุปกรณ์และทักษะในการบัดกรี
ขั้นตอนที่ 2: ขั้นตอนของการประกอบ
สามารถประกอบเครื่องได้อย่างสมบูรณ์ตามขั้นตอนเหล่านี้
- ฐานเครื่องเขียนประกอบด้วยมอเตอร์กระแสตรงและสวิตช์
- นีโอพิกเซลถูกบัดกรีและติดเข้ากับด้ามฟาง
- แท่นขุดเจาะแบบหมุนสร้างขึ้นด้วยไมโครคอนโทรลเลอร์ สวิตช์สไลด์ เซ็นเซอร์อินฟาเรด และก้านหลอด
- ต่อสายไฟเข้ากับขั้วต่อของชิ้นส่วนไฟฟ้า
- รหัส Arduino ถูกอัปโหลดไปยังไมโครคอนโทรลเลอร์ Wemos
ขั้นตอนที่ 3: 1. ฐานอยู่กับที่ด้วยมอเตอร์กระแสตรง
- เจาะรูบนเคสและยึดมอเตอร์กระแสตรงโดยให้เพลาชี้ขึ้น
- ประสานสวิตช์ไฟโยกและอะแดปเตอร์จ่ายไฟ 5V-12V ปกติตามแผนภาพการเดินสายไฟด้านล่าง
- มอเตอร์กระแสตรงที่อ้างอิงนั้นหมุนที่ประมาณ 800 รอบต่อนาที (หมุนต่อนาที) ที่ 12V ส่งผลให้รอบสุดท้ายอยู่ที่ 10 FPS (เฟรมต่อวินาที) ขึ้นอยู่กับความต้านทานลมที่แท้จริงของก้านฟาง
- ต่ออะแดปเตอร์จ่ายไฟเข้ากับเต้ารับ (110 หรือ 220V)
- เปิดสวิตช์โยกและตรวจสอบการทำงานของมอเตอร์กระแสตรง
ถัดไป อุปกรณ์หมุนจะถูกประกอบและยึดเข้ากับเพลามอเตอร์กระแสตรงของฐาน
ขั้นตอนที่ 4: 2. ไฟล์แนบ Neopixel
- ตัดปลายหลอดออกเป็นสองด้านตรงข้ามกันที่ปลายด้านหนึ่งประมาณ 1.5 ซม. ตามภาพ
- มัดเชือกยาวสามเส้นขึ้นไปบนฟาง สิ่งเหล่านี้จะเชื่อมต่อหมุด Neopixel เข้ากับพอร์ต Wemos บนแท่นขุดเจาะ
- ประสานสายไฟสามเส้นเข้ากับหมุด Neopixel GND, 5V และ D-IN
- กาวร้อนสายไฟให้เรียบร้อยและเป็นระเบียบจาก Neopixels ที่บัดกรีจนสุดตรงกลางแถบ LED
- ดึงปีกที่ตัดแล้วของหลอดออกจากกัน แล้วกาวร้อนให้สมมาตรตรงตรงกลางแถบ LED (ด้านบนของสายไฟด้านหนึ่ง)
- สายไฟวิ่งผ่านเข้าไปในฟางจนถึงแท่นขุดเจาะเพื่อไปยังพอร์ต Wemos ที่ตรงกัน
ขั้นตอนที่ 5: 3. การประกอบแท่นหมุน
ต้องประกอบทั้งแท่นขุดเจาะจนสุดก่อนที่จะยึดกับเพลามอเตอร์กระแสตรง นั่นเป็นเพราะจุดยึดต้องมีความสมดุลเพื่อให้การหมุนอยู่ตรงกลางอย่างสมบูรณ์โดยไม่โยกเยก
- กาวไมโครคอนโทรลเลอร์ Wemos D1 Mini และเลื่อนสวิตช์ไปที่ด้านหนึ่งของที่ใส่แบตเตอรี่ตามภาพที่แสดง
- กาวเซ็นเซอร์สะท้อนแสงอินฟาเรดกับอีกด้านหนึ่งของที่ใส่แบตเตอรี่
- ใส่แบตเตอรี่ลงในที่ยึด
- วางและขันปลายอีกด้านของหลอดไว้บนแบตเตอรี่ สกรูขนาดเล็กหรือแหวนยางจะทำ ตรวจสอบให้แน่ใจว่าอุปกรณ์จะไม่สูญหายเมื่ออุปกรณ์เริ่มหมุนที่ 10 รอบต่อนาที
- ค้นหาจุดศูนย์ถ่วงของแท่นขุดเจาะทั้งหมดที่ด้านล่าง การปรับสมดุลบนปลายนิ้วของคุณจะช่วยได้
- ทำรูเล็กๆ ตรงจุดที่ด้านล่างของที่ใส่แบตเตอรี่
- ทากาวร้อนแล้วยึดเพลามอเตอร์เข้าไปในรูนั้น ตรวจสอบให้แน่ใจว่ากาวร้อนไม่เข้าไปในตัวมอเตอร์ เก็บไว้อย่างมั่นคงจนกว่ากาวจะแห้ง
- ตัดกระดาษสีขาวชิ้นเล็กๆ แล้วพันเทปไว้บนฐานนิ่ง โดยให้เซ็นเซอร์สะท้อนแสงอินฟราเรดหันไปใกล้กระดาษนั้นพอดี สิ่งนี้จะกระตุ้นการวาดเฟรมของแอนิเมชั่นในตำแหน่งที่แน่นอนในทุกการหมุน ภาพแสดงชิ้นส่วนสะท้อนแสงนี้ที่มุมล่างซ้ายของฐาน
ขั้นตอนที่ 6: 4. การเดินสายไฟของอุปกรณ์ไฟฟ้า
ตามแผนภาพการเดินสายไฟ ให้บัดกรีอุปกรณ์ไฟฟ้าตามขั้นตอนต่อไปนี้ โปรดทราบว่าพอร์ตเดียวกันของไมโครคอนโทรลเลอร์ Wemos D1 Mini จะถูกบัดกรีหลายครั้งด้วยสายไฟที่แตกต่างกันหลายสาย ต้องฝึกฝนหรือเชื่อมต่อสายเหล่านี้เพื่อเตรียมการก่อนที่จะบัดกรีเข้ากับพอร์ต Wemos
- สายไฟสามเส้น (GND, 5V และ D-IN) ถูกบัดกรีบนพอร์ต Wemos G, 5V และ D3 ตามลำดับ
- สายไฟสองเส้นจากเซ็นเซอร์สะท้อนแสงอินฟราเรด (VCC, GND, OUT) บัดกรีบนพอร์ต Wemos 5V, G และ D2 ตามลำดับ
- สายกราวด์ของตัวยึดแบตเตอรี่ (สีดำ) ถูกบัดกรีเข้ากับพอร์ต Wemos G
- ลวดขั้วบวก (สีแดง) ของแบตเตอรี่ถูกบัดกรีบนขาสวิตช์เลื่อนที่ใกล้ที่สุด
- พอร์ต Wemos 5V ถูกบัดกรีเข้ากับขาอีกข้างของสวิตช์สไลด์
ขั้นตอนที่ 7: 5. รหัส Arduino
โค้ดเฉพาะนี้มีไว้สำหรับ POV Lantern เวอร์ชัน 24 บิต ซึ่งสามารถควบคุมจากระยะไกลโดยอุปกรณ์เคลื่อนที่ใดๆ ที่มีเว็บเบราว์เซอร์และมีเอฟเฟ็กต์ภาพ เช่น World Map, Matrix Animation Effect และภาพเคลื่อนไหว Reindeer Sleight ปรับเปลี่ยนจำนวนพิกเซล พารามิเตอร์เอฟเฟกต์ หรืออินเทอร์เฟซระยะไกล WiFi ได้ตามต้องการในซอร์สโค้ด
// 24 บิต POV Lantern - 2019 Peter Csurgay
#รวม ESP8266WiFiMulti.h
#รวม WiFiClient.h #include ESP8266WebServer.h #include WebSocketsServer.h #include Adafruit_NeoPixel.h
#define DEBUG 1
ข้อความสตริง[3] = { "คำสั่งสอน", "ARDUINO", "การประกวด" };
const uint8_t จานสี[8][3] = {
{ 0, 0, 0 }, // 0 - โปร่งใส { 0, 0, 127 }, // 1 - สีน้ำเงิน { 127, 0, 0 }, // 2 - แดง { 127, 127, 0 }, // 3 - สีเหลือง { 0, 127, 0 }, // 4 - สีเขียว { 127, 24, 0 }, // 5 - สีส้ม { 127, 0, 127 }, // 6 - สีม่วงแดง { 127, 127, 127 } // 7 - สีขาว };
const unsigned char world[24][42] PROGMEM =
{ { 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0 }, { 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
const unsigned char พริกไทย[24][8+31] PROGMEM =
{ { 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 4, 4, 4, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 0, 0, 4, 0, 0, 4, 0 }, { 1, 1, 0, 1, 1, 0, 1, 1, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0 }, { 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 4, 4, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 0, 0 }, { 0, 1, 1, 0, 0, 1, 1, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 4, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 4, 0, 4, 0, 0, 4, 0 }, { 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 4, 4, 4, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 }, { 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 4, 4, 4, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 0, 0, 4, 0, 0, 4, 0 }, { 1, 1, 0, 1, 1, 0, 1, 1, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0 }, { 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 4, 4, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 0, 0 }, { 0, 1, 1, 0, 0, 1, 1, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 4, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 4, 0, 4, 0, 0, 4, 0 }, { 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
const unsigned char abc[8][27*5] PROGMEM = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
const ถ่านซานต้าที่ไม่ได้ลงนาม[4][8][41] PROGMEM = {
{ { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0 }, { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } }, { { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0 }, { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0 }, { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 0 }, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0 }, { 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0 }, { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 0 }, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 } } };
#define INFRATRIGGER_PIN D2
#define NEOPIXELS_PIN D3 #define NEO_NUMPIXELS 24
Adafruit_NeoPixel พิกเซล = Adafruit_NeoPixel (NEO_NUMPIXELS, NEOPIXELS_PIN, NEO_GRB + NEO_KHZ800);
IPAddress localIPaddress;
IPAddress apIPaddress; เซิร์ฟเวอร์ WiFiServer(80); WebSocketsServer webSocket = WebSocketsServer (81); uint8_t ผ้าใบ[24][65]; uint8_t ร่วม = 0; ฉาก uint8_t = 0; uint8_t numScenes = 5; ฉากสตริง[6] = { "WORLD", "SANTA", "PEPPER", "TEXT", "MATRIX" }; uint8_t หมุน = 1; uint8_t numGreens = 0; // MATRIX จำนวนเส้นตก uint8_t กรีน[64][2]; // MATRIX สุ่ม pos x และ y ของเส้นล้ม
การตั้งค่าเป็นโมฆะ () {
ถ้า (ดีบัก) { Serial.begin(9600); Serial.println("เริ่ม…"); } ล่าช้า (3000);
ESP8266 WiFi หลาย wifi หลาย;
wifiMulti.addAP("wifissid", "pwd"); wifiMulti.addAP("mobilessid", "pwd"); wifiMulti.addAP("laptopssid", "pwd"); ถ้า (DEBUG) Serial.print ("กำลังเชื่อมต่อสถานีกับ "); ในขณะที่ (wifiMulti.run () != WL_CONNECTED) { ล่าช้า (1000); ถ้า (DEBUG) Serial.print("."); } ถ้า (DEBUG) Serial.println(""); ถ้า (DEBUG) Serial.print ("เชื่อมต่อ WiFi: SSID="); ถ้า (DEBUG) Serial.println (WiFi. SSID()); localIPaddress = WiFi.localIP(); ถ้า (DEBUG) Serial.print ("ที่อยู่ IP ของสถานีท้องถิ่น: "); ถ้า (DEBUG) Serial.println (localIPaddress);
เซิร์ฟเวอร์.begin();
ถ้า (DEBUG) Serial.println ("เซิร์ฟเวอร์ (80) เริ่มทำงาน"); webSocket.begin(); webSocket.onEvent (webSocketEvent); ถ้า (DEBUG) Serial.println ("WebSocket (81) เริ่มทำงาน"); uint8_t coli = 0; สำหรับ (int i=0; i<24; i++) { สำหรับ (int j=0; j<64; j++) { canvas[j] = coli++; โคไล = โคไล % 7; } ผ้าใบ[64] = 0; } โหมดพิน (INFRATRIGGER_PIN, INPUT); แนบInterrupt(digitalPinToInterrupt(INFRATRIGGER_PIN), สี, เพิ่มขึ้น); พิกเซล.begin(); พิกเซล.show(); ถ้า (DEBUG) { Serial.print ("Neopixel เริ่มทำงาน NUMPIXELS: "); Serial.println(pixels.numPixels()); } }
เป็นโมฆะ webSocketEvent (uint8_t num, ประเภท WStype_t, uint8_t * เพย์โหลด, ความยาว size_t) {
ถ้า (ประเภท == WStype_TEXT) { สตริง req = สตริง ((const ถ่าน *) เพย์โหลด); ถ้า (ดีบัก) { Serial.print ("81 คำขอ: "); Serial.println(req); } processReq(req); } }
สตริง rip2 (สตริง s) {
ความละเอียดของสตริง; int i=0; while(s!='/') i++; ผม++; while(s!='/') i++; ผม++; while(s!='/' && s!=' ' && s!='\r' && s!='\n') res += s[i++]; ผลตอบแทน res; }
เป็นโมฆะ processReq (คำขอสตริง) {
if (req.indexOf ("/rotate") != -1) { หมุน = 1; } else if (req.indexOf ("/scene") != -1) { หมุน = 0; สตริง sc = rip2(req); ถ้า (isDigit(sc[0])) ฉาก = sc.toInt(); อื่น ๆ { ฉาก = 0; สำหรับ (int i=0; i
วงเป็นโมฆะ () {
webSocket.loop(); ไคลเอนต์ WiFiClient = server.available (); if (!client) { return; } String req = client.readStringUntil('\r'); ถ้า (DEBUG) { Serial.print ("80 Req: "); Serial.println(req); } processReq(req);
client.flush();
String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\nAccess-Control-Allow-Headers: Content-Type\r\nAccess-Control-Allow-Origin: *\r\nการเชื่อมต่อ: ปิด\r\n\r\n"; s += "localIP: " + ipToString(localIPaddress) + ""; s += "apIP: " + ipToString(apIPaddress) + ""; client.print(s); ล่าช้า (100); client.stop(); }
สีเป็นโมฆะ () {
สำหรับ (int i=0; i<65; i++) { สำหรับ (int j=0; j<24; j++) { unsigned char ind = canvas[j]; pixels.setPixelColor(j, พิกเซล.สี(จานสี[ind][0], จานสี[ind][1], จานสี[ind][2])); } pixels.show(); ดีเลย์ไมโครวินาที(10); } co = (co + 1) % 40; ถ้า (หมุน) { ถ้า (ร่วม = = 0) { ฉาก = (ฉาก+1) % numScenes; ถ้า (DEBUG) { Serial.print ("ฉาก: "); Serial.println (ฉาก); } } if (co==0) loadCanvas(ฉาก[ฉาก]); } if (scenes[scene].indexOf("SANTA") != -1) { สำหรับ (int i=0; i<8; i++) สำหรับ (int j=0; j=co && j
เป็นโมฆะ loadCanvas (สตริงอะไร) {
clearCanvas(); ถ้า (ดีบัก) { Serial.print ("loadCanvas: "); Serial.println(อะไร); } if (what.indexOf("TEXT") != -1) { สำหรับ (int l=0; l<3; l++) สำหรับ (int n=0; n=12 && j<51) canvas[j] = pgm_read_byte_near(พริกไทย+j-12); } else if (what.indexOf("WORLD") != -1) { สำหรับ (int i=0; i<24; i++) สำหรับ (int j=0; j=11 && j<53) canvas [j] = pgm_read_byte_near(โลก+j-11); } }
เป็นโมฆะ clearCanvas () {
ถ้า (DEBUG) Serial.println ("clearCanvas"); สำหรับ (int i=0; i<24; i++) สำหรับ (int j=0; j<65; j++) canvas[j] = 0; }
สตริง ipToString (IPAddress ip) {
สตริง s=""; สำหรับ (int i=0; i<4; i++) s += i ? "." + สตริง(ip): สตริง(ip); กลับ s; }
แนะนำ:
DIY LED Advent Calendar: 3 ขั้นตอน
DIY LED Advent Calendar: ฉันจะอธิบายว่าเราทำนาฬิกาอะนาล็อกนี้ได้อย่างไร ซึ่งทำหน้าที่เป็นปฏิทินการถือกำเนิด มีไฟ LED 24 ws2811 ตลอดเวลาในวงกลมและแต่ละดวงจะสว่างเป็นสีเขียวจนถึงวันก่อนคริสต์มาส ในวันคริสต์มาส ไฟทุกดวงจะสว่างไ
Jack-O-Lantern ที่สวมใส่ได้: 5 ขั้นตอน (พร้อมรูปภาพ)
Wearable Light Up Jack-O-Lantern: นี่คือโปรเจ็กต์การพิมพ์ 3 มิติที่ยอดเยี่ยมที่ต้องทำก่อนวันฮัลโลวีน ทำตามขั้นตอนด้านล่าง เพื่อทำให้ตัวเองเป็นแจ็ค-โอ-แลนเทิร์นที่พิมพ์โดย Wearable Light Up 3D ซึ่งคุณสามารถสวมรอบคอหรือวางไว้บนโต๊ะทำงานเพื่อพาคุณเข้าสู่ Hallowe
Hack-O-Lantern!: 6 ขั้นตอน
Hack-O-Lantern!: สร้างแจ็คโอแลนเทิร์นที่เล่นและกะพริบ LED หลากสีให้กับเพลงฮัลโลวีนที่ทุกคนชื่นชอบ
Jack-o'-lantern's Lantern: 3 ขั้นตอน
ตะเกียงของ Jack-o'-lantern: นี่คือโครงการที่คุณสามารถทำได้ที่บ้านกับเด็ก ๆ และครอบครัวในช่วงเวลาที่น่ากลัวเหล่านี้! ประกอบด้วยการเพิ่มแสงสว่างให้กับฟักทองของคุณ (อาจเป็นของจริงหรือของปลอม) เพื่อให้คุณสามารถมีตะเกียง Jack-o´-lanterns ได้อย่างแท้จริง
Active Music Party LED Lantern & ลำโพง Bluetooth พร้อม Glow in the Dark PLA: 7 ขั้นตอน (พร้อมรูปภาพ)
Active Music Party LED Lantern & Bluetooth Speaker with Glow in the Dark PLA: สวัสดี และขอขอบคุณที่ปรับแต่ง Instructable ของฉัน! ทุกปี ฉันทำโปรเจ็กต์ที่น่าสนใจกับลูกชายของฉันซึ่งตอนนี้อายุ 14 ปี เราได้สร้าง Quadcopter นาฬิกาว่ายน้ำ (ซึ่งเป็นคำสั่งสอนได้เช่นกัน) ม้านั่งตู้ CNC และ Fidget Spinners.Wi