หน้าแรก ดูโปรเจกต์ทั้งหมด
Hard

โปรเจกต์ บอร์ด Multi clock

สำหรับ: 1*Maxx7219 หรือ 4*Maxx7219 หรือ LCD ผ่าน I2C connection

โปรเจกต์ บอร์ด Multi clock

รายการอุปกรณ์และเครื่องมือ

1x MAXX7219 Display unit
🛒 สั่งซื้อ
1x 0.1 inch 5 way socket
🛒 สั่งซื้อ
2x 0.1 inch 15 way socket
🛒 สั่งซื้อ
1x 0.1 inch 4 way pin strip
🛒 สั่งซื้อ
1x 0.1 inch 6 way socket
🛒 สั่งซื้อ
1x Ds3231 clock module
🛒 สั่งซื้อ
}

รายละเอียดและวิธีทำ

Story:

ความตั้งใจแรกของผมในการสร้าง Board นี้คือการสร้างนาฬิกาปลุก Mp3 โดยใช้ Ds3231, Matrix Display และ Df Mp3 Player ผมได้ทำการทดลองกับ Df Player อยู่บ้าง แต่โปรเจกต์ของผมต้องหยุดชะงักเมื่อพบว่าฟังก์ชันสุ่มเพลง (random play) แม้จะสลับเพลงจริง แต่มันกลับเล่นลำดับเดิมซ้ำทุกครั้ง :(

ต่อมาผมได้ใช้ Board นี้เพื่อทดลองออกแบบนาฬิกาแบบอื่นๆ ที่ผมพบเจอ ผมจึงนำเสนอโปรเจกต์นี้เพื่อวัตถุประสงค์นั้น

Hardware:

Hardware ประกอบด้วย Arduino Nano, Ds3231 Clock Module และ Connector ต่างๆ ที่ช่วยให้เชื่อมต่อกับ Maxx7219 Module แบบเดี่ยวหรือหลายตัว หรือหน้าจอ LCD โดยใช้ I2C Backpack

The board:

วงจรนี้สร้างขึ้นบน Stripboard ส่วนประกอบประกอบด้วย Socket 4 อันสำหรับ Nano, Maxx7219 และ Ds3231 พร้อมด้วย Pin Strip สำหรับการเชื่อมต่อ LCD I2C และอีกอันหนึ่งเพื่อใช้เป็นทางเลือกแทน Maxx7219 Socket

หมายเหตุ: Pin Plug แบบ 4 Pin ที่ด้านหน้าของ Board เป็นส่วนที่เหลือจากการทดลอง Df Player ของผม ซึ่งควรตัดส่วนนี้และสายไฟของมันออกไป

Software:

ผมได้รวมตัวอย่างการเขียนโปรแกรมนาฬิกาแบบพื้นฐานไว้ 3 แบบ:

  • นาฬิกาแบบ Binary โดยใช้ Maxx7219 ตัวเดียว
  • นาฬิกาที่ใช้หน้าจอ Quad Maxx7219
  • นาฬิกาที่ใช้ LCD ผ่าน Interface I2C

Other peoples clocks:

อย่างที่ผมได้กล่าวไป หลังจากโปรเจกต์ของผมหยุดชะงัก ผมก็ลงเอยด้วยการใช้ Board ของผมเพื่อทดลองออกแบบนาฬิกาอื่นๆ ที่ผมพบบน Project Hub

บางดีไซน์ก็ Port ง่าย และบางอันก็ไม่ ยกตัวอย่างเช่น:

https://create.arduino.cc/projecthub/mircemk/diy-word-clock-on-single-max7219-driven-8x8-matrix-8379ed?ref=platform&ref_id=424_recent___&offset=3 โดย Mirko Pavleski แค่เพียงดาวน์โหลด Library ที่จำเป็น คอมไพล์ (Compile) และโปรแกรมลงใน Nano (อย่างไรก็ตาม คุณจำเป็นต้องวาง Maxx7219 ตะแคงข้างนะ!)

ตัวอย่างที่ซับซ้อนกว่านั้นคือ Four stroke clock โดย Lagsilva: https://create.arduino.cc/projecthub/lagsilva/4-stroke-digital-clock-with-arduino-ec4d50?ref=search&ref_id=four%20stroke%20clock&offset=0

หน้าจอ Matrix มีการต่อสายที่แตกต่างกัน ผมจึงแก้ไข LedControl Initializer ให้ตรงกับการต่อสายของผม

เดิมทีวงจรนี้ใช้ Ds1307 ซึ่งสื่อสารผ่าน I2C เหมือนกับ Ds3231

ผมพยายามใช้ Library มาตรฐานสำหรับเปลี่ยนแทน แต่พบว่าตัว Ds1307 ใช้ชื่อฟังก์ชันที่ไม่เป็นมาตรฐาน

ผมไปค้นหา Library ใน GitHub และโชคดีที่ผู้เขียน Library มีรุ่นสำหรับ Ds3232 ซึ่งระบุว่าสามารถใช้งานร่วมกับ Ds3231 ได้ ผมจึงดาวน์โหลดและติดตั้งตัวนั้น

ผมแก้ไข Ds1307 #include เพื่อให้มัน Import Library สำหรับ Ds3232 แทน

ผมพบ Error ตรง #import <Time.h> ผมจึงเลือก Comment บรรทัดนี้ออก เนื่องจากบรรทัดถัดไปมีการ Import <TimeLib.h> อยู่แล้ว

ผม Compile Code และส่งไปยัง Arduino เวลาแสดงขึ้นมาและมีการเคลื่อนไหว (Animate) แต่กลับแสดงผลเป็นแนวนอนบนจอภาพของผม

ผมบันทึกไฟล์ LedControl.cpp มาตรฐานไว้ที่อื่น จากนั้นจึงแก้ไขไฟล์ใน Arduino->libraries->LedControler->src เพื่อให้มันหมุนพิกัด 90 องศาทวนเข็มนาฬิกา

สำเร็จ!

Edit: ลืมบอกไปว่าผมได้ใส่ Code RPM=10; ไว้ทันทีหลังจาก analogRead ซึ่งเป็นตัวกำหนดอัตราการเคลื่อนไหว (Animation rate)

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: multi-clock-board-25ec83
2450 บาท
PromptPay QR Code