สารบัญ:

สร้าง Electric Spirit Level: 15 ขั้นตอน
สร้าง Electric Spirit Level: 15 ขั้นตอน

วีดีโอ: สร้าง Electric Spirit Level: 15 ขั้นตอน

วีดีโอ: สร้าง Electric Spirit Level: 15 ขั้นตอน
วีดีโอ: (ช่างขี้คุย EP.51) ระดับน้ำ spirit levels เครื่องมือวัดที่สำคัญชิ้นหนึ่งของช่าง!! 2024, กรกฎาคม
Anonim
สร้างระดับวิญญาณไฟฟ้า
สร้างระดับวิญญาณไฟฟ้า

ใช้ระดับจิตวิญญาณนี้เพื่อแสดงความเอียงของวัตถุที่แนบมาอย่างรวดเร็วและง่ายดาย!

สร้างโดย Kaitlyn จาก Raffles Institution

ขั้นตอนที่ 1: เป้าหมาย

เรียนรู้การอ่านเอียงด้วย accelerometer ในตัวของ micro:bit

เรียนรู้การทำงานกับจอแสดงผล LED 5x5 ของ micro:bit!

ขั้นตอนที่ 2: วัสดุ

1 x BBC micro:บิต

1 x สายไมโคร USB

2 x AA แบตเตอรี่

1 x Double AA แบตเตอรี่ Pack

ขั้นตอนที่ 3: การเข้ารหัสล่วงหน้า: เชื่อมต่อ Micro:Bit. ของคุณ

  1. เชื่อมต่อ BBC micro:bit กับคอมพิวเตอร์ของคุณโดยใช้สายไมโคร USB
  2. เข้าถึงตัวแก้ไขจาวาสคริปต์สำหรับ micro:bit ที่ makecode.microbit.org

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

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

สำหรับระดับจิตวิญญาณไฟฟ้า ขั้นตอนที่เราจะทำในโค้ดสำหรับแต่ละลูปคือ:

  • อ่านค่าความเอียงจากมาตรความเร่ง
  • แปลงการอ่านค่าความเอียงเป็นระดับความเอียงเพื่อแสดงบนเมทริกซ์ LED
  • ตรวจสอบการเปลี่ยนแปลงการอ่านระดับความเอียงจากลูปก่อนหน้า
  • สร้างอาร์เรย์ของพิกัด LED สำหรับเคสเอียงและทิศทางต่างๆ
  • พล็อตพิกัด LED บน micro:bit LED matrix

ฟังก์ชันเพิ่มเติมบางอย่างที่เราต้องรวมไว้คือ:

  • การปรับเทียบตำแหน่งเอียงเริ่มต้น
  • กลับสู่การปรับเทียบความเอียงเริ่มต้น

ขั้นตอนที่ 5: ขั้นตอนที่ 1: การกำหนดตัวแปร

เราเริ่มต้นด้วยการกำหนดตัวแปรที่จำเป็นตามที่แสดง การแยกย่อยของตัวแปรบางตัวคือ:

  • tiltList: อาร์เรย์ที่เก็บขอบเขตการเอียงจากค่า 0-4 ตามลำดับ [ซ้าย ขวา ไปข้างหน้า ย้อนกลับ]
  • TiltBoundary: ขอบเขตของระดับความเอียงแรกระหว่าง 0 (ไม่เอียง) และ 1 (เอียงเล็กน้อย)
  • prevState: อาร์เรย์ที่เก็บค่าความลาดเอียงของ micro:bit จากลูปก่อนหน้าในรูปแบบเดียวกับtillist ใช้เพื่อตรวจสอบการเปลี่ยนแปลงความเอียงระหว่างการวนซ้ำ
  • ledPlotList: พล็อตนำอาร์เรย์พิกัดในรูปแบบ (x, y) ในการกำหนดอาร์เรย์ เราใช้ประเภท number เพื่อระบุอาร์เรย์ที่ซ้อนกันของตัวแปรประเภท: number

ขั้นตอนที่ 6: ขั้นตอนที่ 2: แปลงค่าการเอียงเป็นระดับ

เนื่องจากเมทริกซ์ LED 5x5 สามารถแสดงข้อมูลได้มากเท่านั้น ค่าการเอียงจริงจะไม่เป็นประโยชน์สำหรับการแสดงผล

แต่ฟังก์ชันtiltiltExtent() จะใช้ค่าพารามิเตอร์ num ซึ่งหมายถึงค่าความลาดเอียงจากมาตรความเร่ง และแปลงค่าความเอียงเหล่านี้ (num) เป็นระดับความเอียงจาก 0 เป็น 4

0 หมายถึงไม่มีการเอียงในทิศทางที่กำหนด และ 4 หมายถึงเอียงมาก ในขณะที่ -1 จะถูกส่งกลับเมื่อมีข้อผิดพลาด

ที่นี่tilBoundaryและtiltilSensitivityถูกใช้เป็นค่าขอบเขตระหว่างระดับความเอียง

ขั้นตอนที่ 7: ขั้นตอนที่ 3: รวบรวมระดับการเอียง

ทั้งสองฟังก์ชัน checkRoll() และ checkPitch() เขียนระดับความเอียงที่ได้รับจากtiltiltExtent() ลงในtilListสำหรับแกนม้วน (ซ้าย-ขวา) และระยะพิทช์ (เดินหน้า-ถอยหลัง) ตามลำดับ

ก่อนใช้ค่าความเอียง เราจะปรับเทียบโดยใช้ค่าศูนย์สำหรับทั้งระยะพิทช์ (zeroPitch) และการหมุน (zeroRoll) ที่ได้รับจากฟังก์ชันการสอบเทียบที่เขียนในภายหลัง

เนื่องจากการอ่านค่าความเร่งเป็นค่าลบสำหรับการเอียงซ้ายและการเอียงไปข้างหน้า เราจึงจำเป็นต้องใช้ฟังก์ชัน Math.abs() เพื่อรับโมดูลัสของค่าลบที่จะมอบให้กับฟังก์ชันtiltExtent() เป็นพารามิเตอร์สำหรับสองทิศทางนี้

ขั้นตอนที่ 8: ขั้นตอนที่ 4: เขียนฟังก์ชัน LEDPlotList

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

  • plotSingle(): เอียงไปในทิศทางเดียวเท่านั้น โดยให้ขอบเขตการเอียงในทิศทางที่กำหนดเป็นพารามิเตอร์
  • plotDiagonal(): เอียงไปในสองทิศทางที่มีขนาดเท่ากัน โดยให้ระดับความเอียงไปในทิศทางใดทิศทางหนึ่งเป็นพารามิเตอร์
  • plotUnequal(): เอียงในสองทิศทางที่มีขนาดต่างกัน โดยใช้ขอบเขตความเอียงในแต่ละทิศทางเป็นพารามิเตอร์ ใช้ plotDiagonal() ก่อน และเพิ่มไปยังอาร์เรย์ ledPlotList ในภายหลัง

ฟังก์ชันการลงจุดเหล่านี้จะเขียนอาร์เรย์ของพิกัดนำไปยัง ledPlotList ที่จะลงจุดในภายหลัง

ขั้นตอนที่ 9: ขั้นตอนที่ 5: พล็อต LED Matrix สำหรับแต่ละกรณี

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

PlotResult() มีหลายเงื่อนไขหากตรวจสอบชนิดของการเอียงและพล็อตเมทริกซ์ LED ตามลำดับโดยใช้ led.plot(x, y) การผสมผสานที่เป็นไปได้ของการเอียงคือ:

ทิศทางเดียว: ซ้ายเท่านั้นหรือขวาเท่านั้น

ทิศทางเดียว: ไปข้างหน้าเท่านั้นหรือย้อนกลับเท่านั้น

สองทิศทาง: ไปข้างหน้า-ซ้ายหรือถอยหลัง-ซ้าย

สองทิศทาง: เดินหน้า-ขวา หรือ ถอยหลัง-ขวา

หมายเหตุ: สำหรับการเอียงในสองทิศทาง แต่ละชุดค่าผสมสามารถมีขนาดเท่ากันหรือต่างกันได้ (ตรวจสอบโดยการเปรียบเทียบ maxX และ maxY) และด้วยเหตุนี้การพล็อตโดยใช้ plotDiagonal() หรือ plotUnequal() ตามลำดับ

ขั้นตอนที่ 10: ขั้นตอนที่ 6: เขียนฟังก์ชันการปรับเทียบ

หลังจากเสร็จสิ้นโค้ดจำนวนมาก ตอนนี้เราได้เพิ่มฟังก์ชัน calibTilt() และ resetTilt()

calibTilt() อนุญาตให้ผู้ใช้ทดค่าความเอียงเป็นศูนย์ที่ตำแหน่งปัจจุบันของ micro:bit

resetTilt() รีเซ็ตการปรับเทียบบอร์ดให้เป็นสถานะเดิม

ขั้นตอนที่ 11: ขั้นตอนที่ 7: เขียนฟังก์ชันสถานะ

เราเพิ่มฟังก์ชันง่าย ๆ checkState() เพื่อตรวจสอบว่าระดับความเอียงเปลี่ยนไปจากการทำซ้ำครั้งก่อนหรือไม่

หากไม่มีการเปลี่ยนแปลงระดับความเอียงจากการวนซ้ำก่อนหน้า เช่น stateChange == 0 เราสามารถไปยังการวนซ้ำถัดไปได้โดยตรงและข้ามการพล็อตของเมทริกซ์ LED ซึ่งช่วยลดการคำนวณที่จำเป็น

ขั้นตอนที่ 12: ขั้นตอนที่ 8: รวบรวมส่วนที่ 1

ในที่สุด เราก็วางฟังก์ชันที่จำเป็นทั้งหมดลงใน infinite loop ของ micro:bit เพื่อเรียกใช้ซ้ำๆ ได้

ประการแรก เราตั้งค่าปุ่ม A และ B บน micro:bit เป็นฟังก์ชัน calibTilt() และ resetTilt() ตามลำดับโดยใช้ input.onButtonPressed() และขีดขีดบนเมทริกซ์ LED เมื่อการปรับเทียบเสร็จสิ้น

ขั้นตอนที่ 13: ขั้นตอนที่ 9: รวบรวมส่วนที่ 2

ถัดไป เรียกใช้ฟังก์ชันที่จำเป็นตามโฟลว์โค้ดของเราในขั้นตอนที่ 0 และตรวจสอบการเปลี่ยนแปลงสถานะ (หมายความว่ามีการเปลี่ยนแปลงในความลาดเอียงของ micro:bit นับตั้งแต่การทำซ้ำครั้งล่าสุด)

หากมีการเปลี่ยนแปลงระดับความเอียง เช่น stateChange == 1 โค้ดจะอัปเดต prevState เป็นระดับความเอียงใหม่และตั้งค่า stateChange กลับเป็น 0 สำหรับการทำซ้ำครั้งต่อไป และพล็อตระดับการเอียงที่อัปเดตบนเมทริกซ์ LED โดยใช้ PlotResult()

ขั้นตอนที่ 14: ขั้นตอนที่ 10: การประกอบ

แฟลชโค้ดที่กรอกเสร็จแล้วไปที่ micro:bit

ติด micro:bit และก้อนแบตเตอรี่เข้ากับวัตถุใดๆ อย่างปลอดภัย และพร้อมใช้งาน!

สุดยอด

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

บทความนี้มาจาก TINKERCADEMY

ขั้นตอนที่ 15: แหล่งที่มา

บทความนี้มาจาก:

หากคุณมีคำถามใด ๆ คุณสามารถติดต่อ: [email protected]

แนะนำ: