สารบัญ:
- ขั้นตอนที่ 1: เป้าหมาย
- ขั้นตอนที่ 2: วัสดุ
- ขั้นตอนที่ 3: การเข้ารหัสล่วงหน้า: เชื่อมต่อ Micro:Bit. ของคุณ
- ขั้นตอนที่ 4: ขั้นตอนที่ 0: รหัส Flow
- ขั้นตอนที่ 5: ขั้นตอนที่ 1: การกำหนดตัวแปร
- ขั้นตอนที่ 6: ขั้นตอนที่ 2: แปลงค่าการเอียงเป็นระดับ
- ขั้นตอนที่ 7: ขั้นตอนที่ 3: รวบรวมระดับการเอียง
- ขั้นตอนที่ 8: ขั้นตอนที่ 4: เขียนฟังก์ชัน LEDPlotList
- ขั้นตอนที่ 9: ขั้นตอนที่ 5: พล็อต LED Matrix สำหรับแต่ละกรณี
- ขั้นตอนที่ 10: ขั้นตอนที่ 6: เขียนฟังก์ชันการปรับเทียบ
- ขั้นตอนที่ 11: ขั้นตอนที่ 7: เขียนฟังก์ชันสถานะ
- ขั้นตอนที่ 12: ขั้นตอนที่ 8: รวบรวมส่วนที่ 1
- ขั้นตอนที่ 13: ขั้นตอนที่ 9: รวบรวมส่วนที่ 2
- ขั้นตอนที่ 14: ขั้นตอนที่ 10: การประกอบ
- ขั้นตอนที่ 15: แหล่งที่มา
วีดีโอ: สร้าง Electric Spirit Level: 15 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ใช้ระดับจิตวิญญาณนี้เพื่อแสดงความเอียงของวัตถุที่แนบมาอย่างรวดเร็วและง่ายดาย!
สร้างโดย 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. ของคุณ
- เชื่อมต่อ BBC micro:bit กับคอมพิวเตอร์ของคุณโดยใช้สายไมโคร USB
- เข้าถึงตัวแก้ไขจาวาสคริปต์สำหรับ 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]
แนะนำ:
สร้าง Arduino MIDI Controller: 5 ขั้นตอน (พร้อมรูปภาพ)
สร้าง Arduino MIDI Controller: สวัสดีทุกคน! ในคำแนะนำนี้ฉันจะแสดงวิธีสร้างคอนโทรลเลอร์ MIDI ที่ขับเคลื่อนด้วย Arduino ของคุณเอง MIDI ย่อมาจาก Musical Instrument Digital Interface และเป็นโปรโตคอลที่ช่วยให้คอมพิวเตอร์ เครื่องดนตรี และฮาร์ดแวร์อื่นๆ สามารถสื่อสาร
ระดับ Digital Spirit จาก Arduino & MPU6050: 3 ขั้นตอน
ระดับจิตวิญญาณดิจิตอลที่ใช้ Arduino & MPU6050: ยินดีต้อนรับสู่คำสั่งแรกของฉัน! ฉันหวังว่าคุณจะพบว่ามันเป็นข้อมูล โปรดส่งข้อเสนอแนะไม่ว่าจะเป็นบวกหรือลบโครงการนี้คือการสร้าง Arduino & ระดับจิตวิญญาณดิจิตอลตาม MPU6050 ในขณะที่การออกแบบเสร็จสิ้นแล
DIY Digital Spirit Level: 5 ขั้นตอน (พร้อมรูปภาพ)
DIY Digital Spirit Level: ในโปรเจ็กต์นี้ เราจะเจาะลึกเกี่ยวกับไอซีของตัวตรวจวัดความเร่ง และดูว่าเราจะใช้งานไอซีเหล่านี้กับ Arduino ได้อย่างไร หลังจากนั้น เราจะรวม IC ดังกล่าวเข้ากับส่วนประกอบเสริมสองสามชิ้นและกล่องหุ้มที่พิมพ์ 3 มิติ เพื่อสร้าง
Digital Spirit ยกระดับโมดูลโครงการ DIY โดย Electronicslovers: 6 ขั้นตอน
Digital Spirit Level a DIY Project Module โดย Electronicslovers: มีเวลาที่คุณต้องติดตั้งเฟอร์นิเจอร์หรือสิ่งที่คล้ายกันในบ้านของคุณและสำหรับการติดตั้งตรงทุกคนมักใช้ระดับจิตวิญญาณ ทีมงาน ElectronicsLovers Tech ได้สร้างโมดูลนี้ขึ้นมา ซึ่งมีความแตกต่างจากโมดูลปกติอย่างหนึ่ง: i
Spooky Tesla Spirit Radio: 17 ขั้นตอน (พร้อมรูปภาพ)
Spooky Tesla Spirit Radio: ข่าว Flash !!!"น่ากลัว" มีชีวิตอยู่ต่อไป! ขอบคุณมากสำหรับ Mike of Mikes Electronic Parts ซึ่ง ณ เดือนตุลาคม 2015 มีเว็บไซต์ใหม่ที่มีชุดวิทยุวิญญาณของเทสลาที่น่ากลัวพร้อมชิ้นส่วนที่จำเป็นส่วนใหญ่สำหรับโปรเจ็กต์สุดเจ๋งนี้ NS