สารบัญ:

Joking Tank: 5 ขั้นตอน
Joking Tank: 5 ขั้นตอน

วีดีโอ: Joking Tank: 5 ขั้นตอน

วีดีโอ: Joking Tank: 5 ขั้นตอน
วีดีโอ: ผลิตน้ำตาลยังไง? ทำจากอะไร? - ทัศนศึกษา [ENG SUB] 2024, กรกฎาคม
Anonim
ล้อเล่นถัง
ล้อเล่นถัง

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

ขั้นตอนที่ 1: รับชิ้นส่วน

ส่วนที่คุณต้องใช้ในการสร้างโปรเจ็กต์นี้ขึ้นมาใหม่จะเป็น

  • คอมพิวเตอร์ 1x ที่สามารถรัน Arduino IDE
  • 1x Arduino Uno
  • 1x สายต่อ usb สำหรับ Arduino Uno
  • 1x โซนาร์เซนเซอร์
  • 1x ลำโพง (ควรเป็นอันที่มีคุณภาพดี (ฉันใช้อันที่ดึงออกมาจากลำโพงบลูทูธ))
  • โมดูลแอมพลิฟายเออร์ LM386 1x (เป็นไปได้ที่จะทำเอง แต่ฉันใช้โมดูล)
  • 1x LM393 ไมโครโฟน
  • 1x LDR
  • 1x LED (สีใดก็ได้ แต่ฉันใช้สีน้ำเงิน)
  • ตัวต้านทาน 4x1kΩ
  • ตัวต้านทาน 1x 2, 7kΩ
  • 1x เขียงหั่นขนม
  • การ์ด micro SD 1x (ควรมีขนาดเล็ก (1 หรือ 2 gb))
  • 1x สว่านไฟฟ้า.
  • หัวสว่านขนาด 1x 16 มม. (เหมาะสำหรับเจาะโลหะ)
  • หัวสว่านขนาด 1x 9 มม. (ควรทำขึ้นสำหรับการเจาะโลหะด้วย)
  • หัวสว่าน 1x 1 มม. (ควรทำขึ้นอีกครั้งสำหรับการเจาะโลหะ)
  • 1x โมเดลรถถัง (ฉันใช้ขนาด 1:35 เสือดาว 2 แต่กรณีอื่นก็ใช้ได้เช่นกัน)
  • ซุปเปอร์กลู / กาวร้อน
  • และสายไฟบางเส้นควรมีสีต่างกัน
  • เคเบิ้ลไทร์ (อุปกรณ์เสริม)

ขั้นตอนที่ 2: การเดินสายไฟ

การเดินสายไฟ
การเดินสายไฟ

เราต้องเริ่มด้วยการเดินสาย รูปภาพเป็นภาพวาดทางเทคนิคของวิธีการต่อสายทั้งหมด สิ่งนี้ควรทำหน้าที่เป็นพิมพ์เขียวของคุณ หมายเหตุ: พอร์ต Arduino ทั้งหมดมีชื่อว่า AP# สำหรับแต่ละพอร์ต ดังนั้นพอร์ตที่ 4 บน Arduino คือ AP4 พอร์ต A0 คือ APA0 และพอร์ต 6~ คือ AP6~ ฯลฯ พอร์ตอื่นๆ ทั้งหมดจะถูกตั้งชื่อตามที่ปรากฏบนโมดูลเอง

ขั้นตอนที่ 3: Pre Code Things

ก่อนที่เราจะสามารถเริ่มใช้โค้ดได้ เราจำเป็นต้องมี stuf ฉันแนะนำให้คุณทำตามบทช่วยสอนนี้ตั้งแต่ขั้นตอนที่ 2 ถึง 4

www.electronoobs.com/eng_arduino_tut8.php

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

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

ตอนนี้เรากำลังจะอัปโหลดโค้ดไปยัง Arduino ให้คัดลอกทั้งหมดแล้ววางลงใน Arduino IDE แล้วอัปโหลดไปยัง Arduino ของคุณ

//รวมไลบรารีสำหรับเครื่องอ่านการ์ด SD#include "Wtv020sd16p.h" //รวมไลบรารีที่จำเป็นสำหรับเซ็นเซอร์โซนาร์ #include //กำหนดพินสำหรับ Arduino int resetPin = 4; int clockPin = 5; int dataPin = 6; int busyPin = 7; int soundDetectedPin = 12; int lightDetectedPin = A0; //กำหนดพินสำหรับไลบรารีการ์ด SD Wtv020sd16p wtv020sd16p (รีเซ็ตพิน, clockPin, dataPin, busyPin); //กำหนดพินสำหรับไลบรารีเซ็นเซอร์ Sonar NewPing โซนาร์ (11, 10); //ตั้งค่าอินพุตอื่นๆ และตั้งค่าบิตเรตของโปรแกรม การตั้งค่าเป็นโมฆะ () { wtv020sd16p.reset (); pinMode(lightDetectedPin, INPUT); pinMode(soundDetectedPin, INPUT); Serial.begin(9600); } //ส่วนหลักของโปรแกรม วงเป็นโมฆะ () {// ตั้งค่า intergers int lightDetectedVal = analogRead (lightDetectedPin); int distanceVal = sonar.ping_cm(); int soundDetectedVal = digitalRead (soundDetectedPin); // หน่วงเวลาเพื่อไม่ให้โปรเจ็กต์ที่โปรเจ็กต์ใช้ลำโพงต่อไปอย่างไม่มีที่สิ้นสุด ล่าช้า (30000); //พิมพ์แบบอนุกรมและเส้นพิมพ์ เพื่อให้คุณสามารถดูค่าที่โมดูลเซ็นเซอร์ใช้ได้อย่างง่ายดาย Serial.print("ค่าเสียง: "); //Multiple if statement เพื่อให้โปรแกรมเล่นไฟล์เสียงที่แตกต่างกันขึ้นอยู่กับค่าที่วัดโดยโมดูลเซ็นเซอร์ ถ้า (soundDetectedVal == 0) { Serial.println (soundDetectedVal); Serial.print("ระยะทาง: "); ถ้า (distanceVal == 0) { Serial.println (distanceVal); Serial.print("ค่าแสง: "); ถ้า (lightDetectedVal >= 1000) { Serial.println (lightDetectedVal); wtv020sd16p.playVoice(1); // การพิมพ์แบบอนุกรมอื่นเพื่อให้คุณสามารถดูว่าไฟล์เสียงใดที่เล่นอยู่ Serial.println("1 --------"); // หน่วงเวลาให้ไฟล์เสียงเล่นเต็มความยาวอีกครั้ง ล่าช้า (5000); } else if (lightDetectedVal >= 900) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(2); Serial.println("2-------"); ล่าช้า (5000); } else if (lightDetectedVal >= 800) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(3); Serial.println("3 --------"); ล่าช้า (5000); } else if (lightDetectedVal >= 700) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(4); Serial.println("4 --------"); ล่าช้า (5000); } อื่น if (lightDetectedVal >= 600) { Serial.println (lightDetectedVal); wtv020sd16p.playVoice(5); Serial.println("5 --------"); ล่าช้า (5000); } อื่น if (lightDetectedVal >= 500 || lightDetectedVal 0 || distanceVal == NULL) { Serial.println (distanceVal); Serial.print("ค่าแสง: "); ถ้า (lightDetectedVal >= 1000) { Serial.println (lightDetectedVal); wtv020sd16p.playVoice(7); Serial.println("7 --------"); ล่าช้า (5000); } else if (lightDetectedVal >= 900) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(8); Serial.println("8 --------"); ล่าช้า (8000); } else if (lightDetectedVal >= 800) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(9); Serial.println("9 --------"); ล่าช้า (5000); } else if (lightDetectedVal >= 700) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(10); Serial.println("10 --------"); ล่าช้า (8000); } อื่น if (lightDetectedVal >= 600) { Serial.println (lightDetectedVal); wtv020sd16p.playVoice(11); Serial.println("11 --------"); ล่าช้า (6000); } อื่น if (lightDetectedVal >= 500 || lightDetectedVal <= 1000) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(13); Serial.println("13 --------"); ล่าช้า (5000); } else if (lightDetectedVal >= 900) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(14); Serial.println("14 --------"); ล่าช้า (5000); } else if (lightDetectedVal >= 800) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(15); Serial.println("15 --------"); ล่าช้า (5000); } else if (lightDetectedVal >= 700) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(16); Serial.println("16 --------"); ล่าช้า (5000); } อื่น if (lightDetectedVal >= 600) { Serial.println (lightDetectedVal); wtv020sd16p.playVoice(17); Serial.println("17-------"); ล่าช้า (5000); } อื่น if (lightDetectedVal >= 500 || lightDetectedVal 0 || distanceVal == NULL || distanceVal >= 150) { Serial.println (distanceVal); Serial.print("ค่าแสง: "); ถ้า (lightDetectedVal >= 1000) { Serial.println (lightDetectedVal); wtv020sd16p.playVoice(19); Serial.println("19 --------"); ล่าช้า (5000); } else if (lightDetectedVal >= 900) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(20); Serial.println("20 --------"); ล่าช้า (5000); } else if (lightDetectedVal >= 800) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(21); Serial.println("21 --------"); ล่าช้า (5000); } else if (lightDetectedVal >= 700) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(22); Serial.println("22 --------"); ล่าช้า (5000); } else if (lightDetectedVal >= 600) { Serial.println(lightDetectedVal); wtv020sd16p.playVoice(23); Serial.println("23 --------"); ล่าช้า (5000); } อื่น if (lightDetectedVal >= 500 || lightDetectedVal << 500) { Serial.println (lightDetectedVal); wtv020sd16p.playVoice(24); Serial.println("24-------"); ล่าช้า (5000); } } } }

ขั้นตอนที่ 5: คดี

กรณี
กรณี
กรณี
กรณี

ตอนนี้มาถึงส่วนที่ซับซ้อนจริง

การติดตั้งทั้งหมดในกรณีอาจยุ่งยากเล็กน้อย ขึ้นอยู่กับว่าคุณติดตั้งทุกอย่างเข้ากับเขียงหั่นขนมของคุณอย่างไรหรือวิธีที่คุณบัดกรีสิ่งต่าง ๆ เข้าด้วยกัน แต่คุณจะต้องสร้างรูสองสามรูเพื่อให้เซ็นเซอร์ติดแน่น ฉันใส่ไมโครโฟน (ต้องใช้สว่าน 9 มม.) และโมดูลโซนาร์ (ต้องใช้สว่าน 6 มม.) ที่ด้านหลังและ LDR ที่ด้านหน้าของถัง แต่คุณสามารถวางไมโครโฟนไว้อย่างมีประสิทธิภาพได้ทุกเมื่อหากคุณมีพื้นที่

ตรวจสอบให้แน่ใจว่าได้เจาะรูในตัวโมเดลเพื่อให้สามารถเชื่อมต่อ Arduino ของคุณกับสายต่อได้

ฉันขอแนะนำให้วางลำโพงในป้อมปืน เพราะน่าจะมีที่ว่างเหลืออยู่พอสมควร

ภาพด้านซ้ายด้านบนเป็นวิธีที่ฉันติดตั้ง Arduino และงานพิมพ์ที่ฉันบัดกรีในรุ่น Leopard 2 ภาพด้านขวาเป็นภาพที่มีการเดินสายส่วนใหญ่

สิ่งที่คุณทำได้คือเจาะรูเล็กๆ ที่ด้านล่างของโมเดลเพื่อยึด Arduino ด้วยสายเคเบิล

แต่ถ้าจำไม่ผิดตอนนี้น่าจะเสร็จ

แนะนำ: