สารบัญ:
- ขั้นตอนที่ 1: วงจร
- ขั้นตอนที่ 2: หมุนภาพรูเล็ต
- ขั้นตอนที่ 3: เสียงบี๊บ
- ขั้นตอนที่ 4: เริ่มเมื่อกดปุ่ม
- ขั้นตอนที่ 5: โปรแกรม
วีดีโอ: รูเล็ตกราฟิกกับ Obniz: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ฉันได้ทำรูเล็ตแบบกราฟิก หากคุณกดปุ่ม รูเล็ตจะเริ่มหมุน หากคุณกดอีกครั้ง รูเล็ตจะหยุดหมุนและส่งเสียงบี๊บ!
ขั้นตอนที่ 1: วงจร
เราใช้เฉพาะลำโพงแบบมีสายและปุ่ม
หมายเลขพินของสายจะเขียนอยู่ในโปรแกรม
ปุ่ม = obniz.wired ("ปุ่ม", {สัญญาณ:6, gnd:7 }); ลำโพง = obniz.wired ("ลำโพง" {สัญญาณ:0, gnd: 1});
ขั้นตอนที่ 2: หมุนภาพรูเล็ต
ใน HTML คุณสามารถใช้ "การแปลง CSS" ตัวอย่างเช่น นี่คือรหัสการหมุนภาพ 90 องศา
document.getElementById("รูเล็ต").style = "แปลง:หมุน(90deg);";
หากต้องการเริ่มและหยุดการหมุนช้าๆ ให้เพิ่มความเร็ว var สำหรับองศาการหมุนต่อเฟรม
ให้ความเร็ว = 0; ให้องศา = 0; ฟังก์ชั่นหมุน (){ องศา += ความเร็ว; document.getElementById("roulette").style = "transform:rotate("+deg+"deg);";
}
setInterval(หมุน, 10);
ขั้นตอนที่ 3: เสียงบี๊บ
คุณต้องการที่จะส่งเสียงบี๊บบนรูเล็ตไม่มีการเปลี่ยนแปลง? ด้วยวิธีนี้ คุณสามารถส่งเสียงบี๊บที่ 440Hz 10ms ได้
ลำโพง. เล่น (440); รอ obniz.wait(10); ลำโพง. หยุด ();
นี่คือวิธีการทราบการเปลี่ยนแปลงของรูเล็ตหมายเลข
if(Math.floor((deg + speed) / (360/7.0)) - Math.floor(deg / (360/7.0)) >= 1){ onRouletteChange(); }
นี่คือรหัสการหมุนและเสียงบี๊บ
ให้ความเร็ว = 0; ให้องศา = 0; ฟังก์ชั่นหมุน (){ // เมื่อเปลี่ยนค่าถ้า (Math.floor ((องศา + ความเร็ว) / (360/7.0)) - Math.floor (องศา / (360/7.0)) >= 1){ onRouletteChange(); } องศา += ความเร็ว; document.getElementById("roulette").style = "transform:rotate("+deg+"deg);";
}
setInterval(หมุน, 10);
ฟังก์ชัน async onRouletteChange(){
if(!ลำโพง){return;} speaker.play(440); รอ obniz.wait(10); ลำโพง. หยุด (); }
ขั้นตอนที่ 4: เริ่มเมื่อกดปุ่ม
หากต้องการทราบสถานะของปุ่ม ให้เพิ่ม var buttonState และตั้งค่าสถานะปุ่มปัจจุบัน
button.onchange = ฟังก์ชั่น (กด) { buttonState = กด; };
และยังเพิ่มเฟส var สำหรับสถานะปัจจุบันของ roulette.phase ที่ตั้งค่าไว้อย่างใดอย่างหนึ่งนี้
const PHASE_WAIT_FOR_START = 0; const PHASE_ROTATE = 1; const PHASE_STOPPING = 2; const PHASE_STOPPED = 3;
ตัวอย่างเช่น เมื่อเฟสคือ PHASE_WAIT_FOR_START และคุณต้องการใช้เฟสถัดไป
ถ้า (เฟส == PHASE_WAIT_FOR_START) { ความเร็ว = 0; ถ้า (buttonState) { เฟส = PHASE_ROTATE; } }
หากต้องการเร่งความเร็วของกฎ ให้เปลี่ยน var speed
ถ้า(เฟส == PHASE_ROTATE){ ความเร็ว = ความเร็ว+0.5; }
หากต้องการลดความเร็วของกฎ ให้เปลี่ยน var speed
:
ถ้า (เฟส == PHASE_STOPPING) { ความเร็ว = ความเร็ว-0.2; }
เหล่านี้เป็นส่วนประกอบของรูเล็ต มาทำกัน!
ขั้นตอนที่ 5: โปรแกรม
โปรดดูที่นี่สำหรับโปรแกรม
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง