สารบัญ:

การใช้งานปุ่มที่ขยายได้พร้อมการตอบสนองการสั่น: 7 ขั้นตอน (พร้อมรูปภาพ)
การใช้งานปุ่มที่ขยายได้พร้อมการตอบสนองการสั่น: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การใช้งานปุ่มที่ขยายได้พร้อมการตอบสนองการสั่น: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การใช้งานปุ่มที่ขยายได้พร้อมการตอบสนองการสั่น: 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: 15 ปุ่มลัดที่น่าทึ่งที่คุณไม่ได้ใช้ 2024, พฤศจิกายน
Anonim
แอปพลิเคชันของปุ่มที่ขยายได้พร้อมการตอบสนองการสั่น
แอปพลิเคชันของปุ่มที่ขยายได้พร้อมการตอบสนองการสั่น
แอปพลิเคชันของปุ่มที่ขยายได้พร้อมการตอบสนองการสั่น
แอปพลิเคชันของปุ่มที่ขยายได้พร้อมการตอบสนองการสั่น

ในบทช่วยสอนนี้ ก่อนอื่นเราจะแสดงให้คุณเห็นถึงวิธีใช้ Arduino Uno เพื่อควบคุมมอเตอร์สั่นผ่านปุ่มขยาย บทช่วยสอนส่วนใหญ่เกี่ยวกับปุ่มกดเกี่ยวข้องกับปุ่มบนเขียงหั่นขนมจริง ในขณะที่ในบทช่วยสอนนี้ ปุ่มได้รับการแก้ไขเพื่อเชื่อมต่อกับเขียงหั่นขนมผ่านสายจัมเปอร์แทน ปุ่มนี้จะช่วยให้คุณควบคุมรูปแบบความแรงและการสั่นสะเทือนของมอเตอร์ได้ ต่อจากนี้ไป เราจะแสดงต้นแบบที่เป็นไปได้ของเทคโนโลยีสวมใส่ได้โดยใช้การตั้งค่านี้ ถุงมือที่สวมใส่ได้นี้เป็นถุงมือที่ขยายปลายนิ้วได้ โดยมีปุ่มติดอยู่ที่ส่วนปลาย ซึ่งตั้งโปรแกรมให้ตอบสนองการสั่นไหวที่ไม่เหมือนใครแก่ผู้สวมใส่โดยอิงจากการกดปุ่มเฉพาะ

ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็นสำหรับการตั้งค่าปุ่มเพื่อตั้งค่ามอเตอร์สั่นสะเทือน

ส่วนประกอบที่จำเป็นสำหรับการตั้งค่าปุ่มสำหรับมอเตอร์สั่นสะเทือน
ส่วนประกอบที่จำเป็นสำหรับการตั้งค่าปุ่มสำหรับมอเตอร์สั่นสะเทือน
  • Arduino Uno
  • เขียงหั่นขนม
  • มอเตอร์สั่นเหรียญสั่น
  • Grove Button
  • สายจัมเปอร์ตัวผู้-ตัวผู้ (x10)
  • สายจัมเปอร์ 4 ขา
  • ตัวขับมอเตอร์แบบสัมผัส
  • ตัวเชื่อมต่อขอบชายกับหญิง
  • หัวแร้ง

ขั้นตอนที่ 2: แผนผังสำหรับการตั้งค่าปุ่มเพื่อตั้งค่ามอเตอร์สั่นสะเทือน

แผนผังสำหรับการตั้งค่าปุ่มสำหรับมอเตอร์สั่นสะเทือน
แผนผังสำหรับการตั้งค่าปุ่มสำหรับมอเตอร์สั่นสะเทือน

ไดอะแกรมก่อนหน้านี้ถูกสร้างขึ้นด้วย Fritzing.org

ขั้นตอนที่ 3: การตั้งค่าปุ่มเพื่อตั้งค่ามอเตอร์สั่นสะเทือน

ขั้นตอนที่ 1: ประสานขั้วต่อขอบเข้ากับตัวขับมอเตอร์สั่นสะเทือน ประสานสายไฟของเครื่องสั่นแบบเหรียญเข้ากับขั้วของตัวขับมอเตอร์สั่น

ขั้นตอนที่ 2: เชื่อมต่อสายจัมเปอร์ 4 พินเข้ากับปุ่มเบรก

ขั้นตอนที่ 3: ใช้สายจัมเปอร์เส้นใดเส้นหนึ่งเชื่อมต่อพิน GRD บน Arduino กับแถวบนเขียงหั่นขนม

ขั้นตอนที่ 4: ใช้สายจัมเปอร์อื่นเชื่อมต่อพิน Volt 3.3 บน Arduino กับแถวอื่นบนเขียงหั่นขนม

ขั้นตอนที่ 5: ตอนนี้เราจะเชื่อมต่อไดรเวอร์มอเตอร์สั่นสะเทือนกับ Arduino ใช้สายจัมเปอร์ที่สามเชื่อมต่อพิน GND บนไดรเวอร์มอเตอร์สั่นสะเทือนกับแถวเดียวกันบนเขียงหั่นขนมเป็นพิน GRD จาก Arduino ทำเช่นเดียวกันกับสายอื่นสำหรับ VCC (โวลต์) บนตัวขับมอเตอร์แบบสั่น จนถึงแถวโวลต์ของเขียงหั่นขนม

ขั้นตอนที่ 6: ใช้สายอื่นเพื่อเชื่อมต่อพิน SDA บนไดรเวอร์มอเตอร์สั่นสะเทือนกับพิน SDA บน Arduino โดยตรง ทำเช่นเดียวกันกับหมุด SCL ของทั้งสองอีกครั้ง อีกทางหนึ่ง ให้ปฏิบัติตามแนวทางเดียวกันกับขั้นตอนที่ 5 และเชื่อมต่อหมุด SDA และ SCL บน Arduino กับแถวของตัวเองบนเขียงหั่นขนมโดยใช้สายจัมเปอร์ จากนั้นเรียกใช้สายไฟจากแถวที่เชื่อมต่อพิน SDA บนเขียงหั่นขนมกับพิน SDA บนไดรเวอร์มอเตอร์ ทำเช่นเดียวกันสำหรับแถว SCL บนเขียงหั่นขนมกับพิน SCL บนไดรเวอร์มอเตอร์

ขั้นตอนที่ 7: ตอนนี้เราจะเสร็จสิ้นโดยเชื่อมต่อปุ่มกับไดรเวอร์มอเตอร์สั่นสะเทือนและ Arduino ใช้สายจัมเปอร์อื่นเพื่อเชื่อมต่อ GRD จากสายจัมเปอร์ 4 พินที่เชื่อมต่อกับปุ่มฝ่าวงล้อมไปยังแถวเดียวกันกับสาย GRD อื่นๆ บนเขียงหั่นขนม ทำเช่นเดียวกันกับโวลต์อีกครั้ง (VCC)

ขั้นตอนที่ 8: เชื่อมต่อการเขียนขั้นสุดท้ายจาก SIG บนปุ่มลัดไปยังพินบน Arduino (เราใช้พิน 7) เพื่อจุดประสงค์ของโค้ดของเรา

ขั้นตอนที่ 9: เสียบ Arduino และอัปโหลดโค้ด และดูว่ามันใช้งานได้!

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

ปุ่ม-การสั่นสะเทือน-Motor.c

/* โค้ดดัดแปลงจาก https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide?_ga=2.227031901.1514248658.1513372975-1149214600.1512613196 */
#รวม//SparkFun Haptic Motor Driver Library
#รวม//ห้องสมุด I2C
SFE_HMD_DRV2605L HMD; //สร้างวัตถุไดรเวอร์มอเตอร์สัมผัส
ปุ่ม int = 7; // เลือกพินอินพุต 7 สำหรับปุ่มกด
int button_val = 0; // ตัวแปรสำหรับอ่านสถานะพิน
voidsetup()
{
/* เริ่มต้นวัตถุไดรเวอร์ Haptic Motor */
HMD.begin();
Serial.begin(9600);
HMD. Mode(0); // โหมดอินพุตทริกเกอร์ภายใน -- ต้องใช้ฟังก์ชัน GO() เพื่อทริกเกอร์การเล่น
HMD. MotorSelect(0x36); // มอเตอร์ ERM, เบรก 4x, เกนกลาง, เกน EMF กลับ 1.365x
HMD. Library(2); //1-5 & 7 สำหรับมอเตอร์ ERM, 6 สำหรับมอเตอร์ LRA
}
โมฆะลูป ()
{
/* สตาร์ทมอเตอร์สั่น */
HMD.go();
button_val = digitalRead (ปุ่ม);
ถ้า (button_val== สูง) {
/* เอาต์พุตนี้เพื่อบันทึกการกดปุ่มนั้น ใช้สำหรับ debugginh*/
Serial.println("กดปุ่มแล้ว");
/* ไลบรารีรูปคลื่นมีคลื่นประเภทต่างๆ 0-122 แบบ */
HMD.รูปคลื่น(0, 69);}
อื่น{
/* หากไม่ได้กดปุ่มให้หยุดมอเตอร์สั่น */
HMD.หยุด();
}
}

ดู rawButton-Vibration-Motor.c โฮสต์ด้วย ❤ โดย GitHub

ขั้นตอนที่ 5: วิดีโอของปุ่มเพื่อตั้งค่ามอเตอร์สั่นสะเทือน

Image
Image

ขั้นตอนที่ 6: ต้นแบบของถุงมือที่ขยายได้

ต้นแบบของถุงมือที่ยืดออกได้
ต้นแบบของถุงมือที่ยืดออกได้
ต้นแบบของถุงมือที่ยืดออกได้
ต้นแบบของถุงมือที่ยืดออกได้

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

กระบวนการคิดที่อยู่เบื้องหลังถุงมือดังกล่าวคือการอนุญาตให้ผู้ที่สวมถุงมือ "สัมผัส" สิ่งของต่างๆ ที่เกินขอบเขตของปลายนิ้วปกติ และรับข้อเสนอแนะว่าพวกเขากำลังสัมผัสพื้นผิวเหล่านี้ การตอบสนองการสั่นจะเปลี่ยนไปตามนิ้วที่สัมผัสพื้นผิว ผู้ใช้จึงบอกได้ว่านิ้วใดกำลังสัมผัสพื้นผิวตามรูปแบบการสั่น

มีหลายวิธีที่จะพัฒนาต้นแบบให้ก้าวหน้ายิ่งขึ้น เช่น ทำให้นิ้วสามารถขยายออกได้มากขึ้น หรือเปลี่ยนผลป้อนกลับโดยพิจารณาจากประเภทของพื้นผิวที่สัมผัส ตามหลักการแล้ว นิ้วที่ขยายได้จะถูกสร้างขึ้นผ่านการพิมพ์ 3 มิติ เพื่อตัวเลือกการเหลื่อมที่ดีขึ้น เซ็นเซอร์อุณหภูมิสามารถใช้แทนปุ่มต่างๆ ได้ เพื่อให้สามารถตอบกลับว่าพื้นผิวที่ผู้ใช้สัมผัสนั้นร้อนเพียงใด หรือเซ็นเซอร์ความชื้นสำหรับวัตถุประสงค์ที่คล้ายคลึงกัน วิธีการรับรู้ว่าสามารถขยาย "นิ้ว" ออกไปได้ไกลแค่ไหน เพื่อให้ผู้ใช้ทราบว่าวัตถุที่พวกเขาสัมผัสอยู่ไกลแค่ไหน นี่เป็นเพียงไม่กี่ตัวเลือกที่เป็นไปได้สำหรับการสร้างต้นแบบนี้ต่อไป

ถุงมือนี้สามารถทำด้วยวัสดุทั่วไปเป็นวิธีที่ง่ายในการขยายความรู้สึกของคุณและสร้างข้อเสนอแนะที่ผู้ใช้สามารถสัมผัสและเข้าใจได้

ขั้นตอนที่ 7: โค้ดสำหรับปุ่มหลายปุ่มพร้อมเอาต์พุตการสั่นสะเทือนที่ไม่เหมือนใคร

mutliple_buttons_to_vibmotor.ino

/* โค้ดดัดแปลงจาก SparkFun https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide */
#รวม//SparkFun Haptic Motor Driver Library
#รวม//ห้องสมุด I2C
SFE_HMD_DRV2605L HMD; //สร้างวัตถุไดรเวอร์มอเตอร์สัมผัส
int button_middle = 7;
int button_index = 5; // เลือกพินอินพุตสำหรับปุ่มกด
int button_ring = 9;
int button_pinky = 3;
voidsetup()
{
HMD.begin();
Serial.begin(9600);
HMD. Mode(0); // โหมดอินพุตทริกเกอร์ภายใน -- ต้องใช้ฟังก์ชัน GO() เพื่อทริกเกอร์การเล่น
HMD. MotorSelect(0x36); // มอเตอร์ ERM, เบรก 4x, เกนกลาง, เกน EMF กลับ 1.365x
HMD. Library(2); //1-5 & 7 สำหรับมอเตอร์ ERM, 6 สำหรับมอเตอร์ LRA
}
โมฆะลูป ()
{
HMD.go(); // สตาร์ทมอเตอร์สั่น
/* ตรวจสอบว่ากดปุ่มใดและส่งสัญญาณออกรูปคลื่น 0-122 */
ถ้า (digitalRead (button_middle) == สูง) {
Serial.println("กดปุ่มแล้ว");
HMD.รูปคลื่น(0, 112);}
elseif(digitalRead(button_index) == สูง){
HMD.รูปคลื่น(0, 20);
}
elseif(digitalRead(button_ring) == สูง){
HMD.รูปคลื่น(0, 80);
}
elseif(digitalRead(button_pinky) == สูง){
HMD.รูปคลื่น(0, 100);
}
/* ถ้าไม่ได้กดปุ่มใดๆ ให้หยุด */
อื่น{
HMD.หยุด();
}
}

view rawmutliple_buttons_to_vibmotor.ino โฮสต์ด้วย ❤ โดย GitHub

แนะนำ: