สารบัญ:
- ขั้นตอนที่ 1: สร้างวงจรรับสัญญาณ IR
- ขั้นตอนที่ 2: เชื่อมต่อเซอร์โว คอลัมน์ และที่วางโทรศัพท์
- ขั้นตอนที่ 3: เชื่อมต่อจอแสดงผล LCD สำหรับการอ่านข้อมูลเซอร์โว
- ขั้นตอนที่ 4: ใช้รหัสและไลบรารีที่แนบมากับโปรแกรม Arduino
- ขั้นตอนที่ 5: เชื่อมต่อแหล่งพลังงานที่ต้องการกับ Arduino และใช้รีโมทเพื่อหมุน Mount
- ขั้นตอนที่ 6: อ่านสิ่งนี้เพื่ออธิบายซอร์สโค้ด
- ขั้นตอนที่ 7: ดูวิดีโอ Youtube ของฉันเพื่อขอความช่วยเหลือ
วีดีโอ: หมุนที่วางโทรศัพท์: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
คำแนะนำนี้สร้างขึ้นเพื่อตอบสนองความต้องการของโครงการ Makecourse ที่มหาวิทยาลัยเซาท์ฟลอริดา (www.makecourse.com)
ต้องการทำที่ยึดโทรศัพท์แบบหมุนเพื่อให้คุณสามารถดูเนื้อหาในโทรศัพท์ของคุณในแนวตั้งหรือแนวนอนโดยไม่ต้องถือหรือไม่ แล้วอย่ามองไกล
ในการสร้างโครงการนี้ คุณจะต้อง:
- ไมโครคอนโทรลเลอร์ Arduino และ IDE
- สาย USB สำหรับอัพโหลดโค้ด
- เขียงหั่นขนม
- สายจัมเปอร์
- จอ LCD
- เซอร์โว
- เสาที่ต่อกับเซอร์โวได้
- IR รีโมท
- ตัวรับสัญญาณ IR
- ตัวต้านทาน 10k โอห์ม
- Kenu Airframe + คลิปโทรศัพท์ (หรือสิ่งที่ถือโทรศัพท์ไว้)
- แบตเตอรี่ 9 V สำหรับพลังงานแบบพกพาหรือเพียงแค่ Arduino ที่ขับเคลื่อนด้วย USB
ขั้นตอนที่ 1: สร้างวงจรรับสัญญาณ IR
ขั้นแรก ให้กระโดด GND และ +5V จาก Arduino ไปยังรางจ่ายไฟบนเขียงหั่นขนมของคุณ จากนั้นข้ามตัวต้านทาน 10k ohm ของคุณจากรางจ่ายไฟ +5V ไปยังพินเอาต์พุตของโฟโตทรานซิสเตอร์ตัวรับ IR ของคุณ ถัดไป ใช้สายจัมเปอร์เพื่อเชื่อมต่อกับพิน 11 บน Arduino จากพินเอาต์พุตของตัวรับสัญญาณ IR จากนั้น ใช้สายจัมเปอร์สองเส้นเพื่อส่งกราวด์และ +5V ไปยังพินตามลำดับบนตัวรับสัญญาณ IR ไม่จำเป็นต้องใช้ฟิลเตอร์ RC ที่แสดงในแผนผังด้านบน สุดท้ายนี้ ฉันไม่ได้สร้างแผนผังที่แสดงในขั้นตอนนี้ และแหล่งที่มาของแผนผังแสดงอยู่ในรูปภาพ
ขั้นตอนที่ 2: เชื่อมต่อเซอร์โว คอลัมน์ และที่วางโทรศัพท์
ตอนนี้ ใช้สายจัมเปอร์สองเส้นเพื่อกระโดดจากพื้นและ +5V ของรางไฟแบบเขียงหั่นขนมเข้ากับสายสีน้ำตาลและสีแดงของเซอร์โวตามลำดับ จากนั้นใช้สายจัมเปอร์หนึ่งเส้นเพื่อต่อพิน 9 บน Arduino กับสายสีส้มของเซอร์โว
จากนั้นแนบคอลัมน์กับส่วนหัวของเซอร์โวตามที่แสดงในภาพที่สอง
สุดท้าย แนบสิ่งที่ถือโทรศัพท์เข้ากับคอลัมน์ เช่น Kenu Airframe+ ดังแสดงในภาพที่ 3
ขั้นตอนที่ 3: เชื่อมต่อจอแสดงผล LCD สำหรับการอ่านข้อมูลเซอร์โว
กระโดดกราวด์และ +5V จากรางไฟแบบเขียงหั่นขนมของคุณไปยังพินที่เกี่ยวข้องบนจอ LCD นอกจากนี้ ให้ข้ามพิน SDA และ SCL จาก LCD ไปยัง Ardiuno พิน SDA และ SCL ของ Arduino สามารถระบุได้จากด้านหลังของบอร์ด Arduino และเป็นพินสองตัวที่อยู่เหนือ AREF และกราวด์เหนือพิน 13 พิน SCL เป็นพินที่สูงที่สุด ซึ่งช่วยให้จอ LCD อ่านตำแหน่งเซอร์โวปัจจุบันได้
ขั้นตอนที่ 4: ใช้รหัสและไลบรารีที่แนบมากับโปรแกรม Arduino
ดาวน์โหลดไฟล์ RotatingMountCode.zip ติดตั้ง Arduino IDE และแตกไฟล์ที่ดาวน์โหลดมาลงใน Documents\Arduino ตรวจสอบให้แน่ใจว่าคุณคัดลอกเนื้อหาของโฟลเดอร์สเก็ตช์และไลบรารีของฉันไปยังโฟลเดอร์สเก็ตช์และไลบรารีของคุณ เปิดร่าง ServoIRandLCD และอัปโหลดไปยัง Arduino ของคุณ
ดูขั้นตอนภายหลังสำหรับคำอธิบายโค้ด
ขั้นตอนที่ 5: เชื่อมต่อแหล่งพลังงานที่ต้องการกับ Arduino และใช้รีโมทเพื่อหมุน Mount
ปล่อยให้ Arduino เสียบอยู่กับคอมพิวเตอร์ของคุณหรือถอดปลั๊กออกจากคอมพิวเตอร์และใช้แบตเตอรี่ 9V เพื่อจ่ายไฟ DC ให้กับ Arduino สุดท้าย ใช้รีโมท IR ราคาถูกเพื่อควบคุมเซอร์โวและดังนั้นการวางแนวของที่วางโทรศัพท์!
หมายเลข 1 บนรีโมทควรตั้งค่าตำแหน่งเซอร์โวเป็น 0 องศา หมายเลข 2 ถึง 90 องศา และหมายเลข 3 ถึง 180 องศา ในขณะเดียวกันปุ่ม + และ - บนรีโมทควรเพิ่มหรือลดมุมของเซอร์โว 1 องศาตามลำดับ
หมายเหตุ: หากคุณใช้ IR Remote ที่แตกต่างจากที่แสดงในภาพนี้ อาจเป็นไปได้ว่ารหัส IR ที่สอดคล้องกับปุ่มต่างๆ จะเปลี่ยนไป หากเป็นเช่นนั้น ให้แก้ไขร่าง ServoIRandLCD เพื่อใช้รหัส IR เหล่านั้นแทน
ขั้นตอนที่ 6: อ่านสิ่งนี้เพื่ออธิบายซอร์สโค้ด
ซอร์สโค้ดสำหรับร่าง Arduino สามารถพบได้ที่ด้านล่างหรือในไฟล์.zip ที่แนบมาก่อนหน้านี้ ไลบรารีที่จำเป็นสามารถพบได้ในไฟล์.zip ที่แนบมาก่อนหน้านี้ในขั้นตอนที่ 4
สิ่งแรกที่โค้ดทำคือรวมไลบรารีที่จำเป็นเพื่อเรียกใช้ฟังก์ชันทั้งหมดในแบบร่าง ถัดไปจะประกาศพิน 9 บน Arduino ให้เป็นพินสัญญาณที่เปิดใช้งาน PWM สำหรับเซอร์โว นอกจากนี้ยังทำให้พิน 11 บน Arduino เป็นพินที่ใช้สำหรับตัวรับสัญญาณ IR ถัดไป จะประกาศตัวแปรจำนวนเต็มที่ใช้ในการติดตามตำแหน่งของเซอร์โวเป็นองศาและตั้งค่าเป็น 0 องศาในขั้นต้น จากนั้น จะสร้างอินสแตนซ์ของอ็อบเจ็กต์ที่จำเป็นสำหรับอ็อบเจ็กต์ IRrecv, ออบเจ็กต์เซอร์โว และอ็อบเจ็กต์ myDisplay LCD (ที่กำหนดค่าไว้ในบรรทัดเดียวกันด้วย) เพื่อให้สามารถใช้อ็อบเจ็กต์เหล่านี้ได้ในภายหลัง
ถัดไป ในฟังก์ชันการตั้งค่า พอร์ตอนุกรมจะเริ่มต้นที่ 9600 บิต/วินาที ดังนั้นจึงสามารถใช้มอนิเตอร์อนุกรมเพื่อติดตามตำแหน่งของเซอร์โวได้หากต้องการ นอกจากนี้ยังยึดวัตถุ myservo เข้ากับพิน 9 เริ่มตัวรับสัญญาณ IR และเริ่มต้นการแสดงผล LCD
ในฟังก์ชันลูปหลัก เนื้อหาจะถูกดำเนินการก็ต่อเมื่อได้รับการส่งผ่าน IR จากตัวรับสัญญาณ IR ตัวรับสัญญาณ IR จะถอดรหัสสัญญาณที่ส่งไปยังรีโมต IR โดยใช้ฟังก์ชันถอดรหัส (&ผลลัพธ์) จากนั้นหากคำสั่งกำหนดว่าสิ่งใด เพื่อตั้งค่าเซอร์โวขึ้นอยู่กับค่า IR ที่ได้รับ ฟังก์ชันเขียนใช้เพื่อตั้งค่าเซอร์โวให้มีองศาที่เหมาะสม และฟังก์ชันอ่านจะใช้เพื่อค้นหามุมปัจจุบันของเซอร์โวและเพิ่มหรือลดตามความจำเป็น
สุดท้าย มุมปัจจุบันของเซอร์โวจะถูกส่งไปยังทั้งมอนิเตอร์แบบอนุกรมและจอ LCD โดยใช้ฟังก์ชัน myservo.read() และลูปหลักจะวนซ้ำไปเรื่อย ๆ
รหัสแหล่งที่มา:
#include //Arduino standard library#include //IR library #include "Wire.h" //Wire.h สำหรับ LCD (บางครั้งจำเป็น) #include "LiquidCrystal_I2C.h" //LCD library
#define servopin 9 // นี่กำหนดพิน 9 เป็นพินที่ใช้สำหรับสายควบคุมเซอร์โว (สีส้ม)
int RECV_PIN = 11; //IR photo-transistor ส่งเอาต์พุตไปที่พิน 11
int currentAngle = 0; //ประกาศตัวแปรจำนวนเต็ม currentAngle และตั้งค่าเป็น0
IRrecv irrecv(RECV_PIN); // แสดงตัวอย่างวัตถุตัวรับสัญญาณ IR decode_results ผลลัพธ์; // แสดงตัวอย่างวัตถุ decode_results วัตถุนี้แยกจากตัวรับ IR
เซอร์โว myservo; // สร้างอ็อบเจ็กต์เซอร์โวชื่อ 'myservo' // สามารถสร้างอ็อบเจ็กต์เซอร์โวได้สูงสุดแปดตัว
LiquidCrystal_I2C myDisplay(0x27, 16, 2); // สร้างวัตถุ LCD และตั้งค่า config
การตั้งค่าเป็นโมฆะ () {
Serial.begin(9600); //เริ่มพอร์ตอนุกรม
myservo.attach(เซอร์โวปิน); //ติดเซอร์โวบนพิน 9 กับอ็อบเจกต์เซอร์โว
irrecv.enableIRIn(); //เปิดเครื่องรับ
myDisplay.init(); // เริ่มต้น LCD
myDisplay.backlight(); //เปิดไฟหลังจอ LCD
}
วงเป็นโมฆะ () {
if (irrecv.decode(&results)) // ถ้าการส่งได้รับ…
{ Serial.print ("ได้รับค่า IR: ");
Serial.println(ผลลัพธ์.ค่า); //แสดงค่าที่ได้รับ
// ตีความคำสั่งที่ได้รับ… if (results.value == 16724175) //1 { //left myservo.write(0); }
ถ้า (results.value == 16718055) ///2 { //middle myservo.write (90); }
ถ้า (results.value == 167430445) ///3 { // right myservo.write (180); }
ถ้า (results.value == 16754775) //+ { // increment currentAngle = myservo.read (); myservo.write (มุมปัจจุบัน + 1); } if (results.value == 16769055) //- { //ลดค่า currentAngle = myservo.read (); myservo.write (มุมปัจจุบัน - 1); } }
irrecv.resume(); //รับค่าต่อไป
// Serial monitor พิมพ์ Serial.print ("ตำแหน่งเซอร์โวปัจจุบัน: ");
Serial.println(myservo.read()); //สิ่งนี้ดึงตำแหน่งเซอร์โวและส่งไปยังมอนิเตอร์แบบอนุกรม
//พิมพ์ LCD myDisplay.clear();
myDisplay.print("ระดับเซอร์โว: ");
myDisplay.print(myservo.read());
ล่าช้า(200); // หน่วงเวลาเพื่อให้การสั่งงานเซอร์โวเสถียร
}
ขั้นตอนที่ 7: ดูวิดีโอ Youtube ของฉันเพื่อขอความช่วยเหลือ
ดูวิดีโอ YouTube ที่ไม่เป็นสาธารณะของฉัน ซึ่งอธิบายและสาธิตโครงการอย่างครบถ้วน หากคุณมีคำถามใดๆ!
แนะนำ:
การออกแบบเกมในการสะบัดใน 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 ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง