สารบัญ:
- ขั้นตอนที่ 1: สิ่งที่คุณต้องการ
- ขั้นตอนที่ 2: บทคัดย่อ
- ขั้นตอนที่ 3: แนวคิดพื้นฐาน
- ขั้นตอนที่ 4: Walabot
- ขั้นตอนที่ 5: เริ่มต้น
- ขั้นตอนที่ 6: การตั้งค่า Raspberry Pi - 1
- ขั้นตอนที่ 7: การตั้งค่า Raspberry Pi - 2
- ขั้นตอนที่ 8: การตั้งค่า Raspberry Pi - 3
- ขั้นตอนที่ 9: การตั้งค่า Raspberry Pi - 4
- ขั้นตอนที่ 10: Python
- ขั้นตอนที่ 11: สำหรับ Walabot
- ขั้นตอนที่ 12: สำหรับส่วนต่อประสานเซอร์โว
- ขั้นตอนที่ 13: สำหรับ LCD
- ขั้นตอนที่ 14: Blynk
- ขั้นตอนที่ 15: กำหนดค่าแอพ Blynk
- ขั้นตอนที่ 16: คุณสามารถใช้รหัส QR นี้กับแอป Blynk เพื่อโคลนโครงการของฉันเพื่อประหยัดเวลา
- ขั้นตอนที่ 17: เรียกใช้ Blynk ด้วย Raspberry Pi และใช้ Blynk HTTPS สำหรับ Python
- ขั้นตอนที่ 18: การรันสคริปต์อัตโนมัติ
- ขั้นตอนที่ 19: ฮาร์ดแวร์
- ขั้นตอนที่ 20: การออกแบบสิ่งที่แนบมา
- ขั้นตอนที่ 21: กล้ายิง
- ขั้นตอนที่ 22: ภาพการประกอบขั้นสุดท้าย
- ขั้นตอนที่ 23: วิธีแก้ไข Walabot ไปที่ Stand
- ขั้นตอนที่ 24: ไฟล์ STL ของฮาร์ดแวร์สำหรับการพิมพ์ 3 มิติ
- ขั้นตอนที่ 25: แผนผังสำหรับการเดินสายสิ่งของ
- ขั้นตอนที่ 26: รหัส
- ขั้นตอนที่ 27: ที่เก็บ Github เพื่อใช้
- ขั้นตอนที่ 28: บทสรุป
วีดีโอ: Walabot FX - การควบคุมเอฟเฟกต์กีตาร์: 28 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:09
ควบคุมเอฟเฟกต์กีตาร์ที่คุณชื่นชอบโดยใช้ท่ากีตาร์สุดเจ๋ง!
ขั้นตอนที่ 1: สิ่งที่คุณต้องการ
ส่วนประกอบฮาร์ดแวร์
วลาบอท - วลาบอท
Raspberry Pi - Raspberry Pi 3 รุ่น B
Sunfounder LCD1602
SunFounder PCA9685 16 ช่อง 12 บิต PWM ไดร์เวอร์เซอร์โวสำหรับ Arduino และ Raspberry Pi
เซอร์โว (ทั่วไป) ไม่มีลิงค์
คลิปแบตเตอรี่ 9V
ที่ใส่แบตเตอรี่ 4xAA
ถ่าน AA
สายจัมเปอร์ (ทั่วไป)
DPDT Latching Action Foot Switch
คอร์ SDD3000-PDL
ระบบปฏิบัติการซอฟต์แวร์ แอพ และบริการออนไลน์
Autodesk Fusion360 -
Blynk -
เครื่องมือ ฯลฯ
เครื่องพิมพ์ 3 มิติ
หัวแร้ง
ขั้นตอนที่ 2: บทคัดย่อ
การควบคุมการแสดงออกทางดนตรีโดยใช้ตำแหน่งกีตาร์ในพื้นที่ 3 มิติจะเป็นอย่างไร มาสร้างต้นแบบกันและหาคำตอบกันเถอะ!
ขั้นตอนที่ 3: แนวคิดพื้นฐาน
ฉันต้องการควบคุมพารามิเตอร์เอฟเฟกต์ 3 แบบแบบเรียลไทม์ ฉันต้องการทำสิ่งนี้โดยใช้การจัดตำแหน่งกีตาร์ของฉัน สิ่งหนึ่งที่ชัดเจนคือ ฉันต้องการบางสิ่ง
- เซ็นเซอร์ที่สามารถมองเห็นพื้นที่ 3 มิติ
- เซอร์โวเพื่อหมุนลูกบิด
- จอ LCD
- ไดรเวอร์ I2C Servo
- ราสเบอร์รี่ Pi
- เพื่อเรียนรู้ Python
ขั้นตอนที่ 4: Walabot
ต้องการมองทะลุกำแพง? สัมผัสวัตถุในพื้นที่ 3 มิติ? รู้สึกว่าคุณกำลังหายใจจากอีกฟากหนึ่งของห้อง? คุณโชคดีแล้ว!
Walabot เป็นวิธีใหม่ในการตรวจจับพื้นที่รอบตัวคุณโดยใช้เรดาร์พลังงานต่ำ
นี่จะเป็นกุญแจสำคัญสำหรับโปรเจ็กต์นี้ ฉันจะสามารถใช้ carteasan (X-Y-Z) coodinates ของวัตถุในพื้นที่ 3 มิติ และจับคู่สิ่งเหล่านั้นกับตำแหน่งเซอร์โวเพื่อเปลี่ยนลักษณะเสียงของกีตาร์ในแบบเรียลไทม์โดยไม่ต้องแตะแป้นเหยียบ
ชนะ.
ดูข้อมูลเพิ่มเติมเกี่ยวกับ Walabot ได้ที่นี่
ขั้นตอนที่ 5: เริ่มต้น
อย่างแรกเลย คุณต้องมีคอมพิวเตอร์เพื่อขับเคลื่อน Walabot สำหรับโครงการนี้ ฉันใช้ Raspberry Pi 3 (ในที่นี้เรียกว่า RPi) เนื่องจาก WiFi ในตัวและอุ้มพิเศษทั่วไป
ฉันซื้อการ์ด SD ขนาด 16GB ที่ติดตั้ง NOOBS ไว้ล่วงหน้าเพื่อให้สิ่งต่างๆ ดูดีและเรียบง่าย และเลือกที่จะติดตั้ง Raspian เป็นระบบปฏิบัติการ Linux ที่ฉันเลือก
(หากคุณไม่คุ้นเคยกับวิธีการติดตั้ง Raspian โปรดสละเวลาสักครู่เพื่ออ่านข้อมูลนี้เล็กน้อย)
ตกลง เมื่อคุณให้ Raspian ทำงานบน RPi แล้ว มีขั้นตอนการกำหนดค่าบางอย่างที่ต้องทำเพื่อเตรียมสิ่งต่างๆ ให้พร้อมสำหรับโครงการของเรา
ขั้นตอนที่ 6: การตั้งค่า Raspberry Pi - 1
ขั้นแรก ตรวจสอบให้แน่ใจว่าคุณใช้ Kernel เวอร์ชันล่าสุดและตรวจสอบการอัปเดตโดยเปิด command shell แล้วพิมพ์
sudo apt-get update
sudo apt-get dist-upgrade
(มีการเพิ่ม sudo เพื่อให้แน่ใจว่าคุณมีสิทธิ์ระดับผู้ดูแลระบบ เช่น สิ่งต่างๆ จะใช้งานได้)
อาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์ ไปดื่มชาดีๆ สักถ้วย
ขั้นตอนที่ 7: การตั้งค่า Raspberry Pi - 2
คุณต้องติดตั้ง Walabot SDK สำหรับ RPi จากเว็บเบราว์เซอร์ RPi ให้ไปที่ https://www.walabot.com/gettingstarted และดาวน์โหลด Raspberry Pi Installer Package
จากเชลล์คำสั่ง:
ดาวน์โหลดซีดี
sudo dpkg -I walabotSDK_RasbPi.deb
ขั้นตอนที่ 8: การตั้งค่า Raspberry Pi - 3
เราต้องเริ่มกำหนดค่า RPi เพื่อใช้บัส i2c จากเชลล์คำสั่ง:
sudo apt-get ติดตั้ง python-smbus
sudo apt-get ติดตั้ง i2c-tools
เมื่อเสร็จแล้วคุณต้องเพิ่มสิ่งต่อไปนี้ในไฟล์โมดูล
จากเชลล์คำสั่ง:
sudo nano /etc/modules
เพิ่ม 2 สตริงเหล่านี้ในบรรทัดแยก:
i2c-dev
i2c-bcm2708
ขั้นตอนที่ 9: การตั้งค่า Raspberry Pi - 4
Walabot ดึงกระแสออกมาพอสมควร และเราจะใช้ GPIO เพื่อควบคุมสิ่งต่าง ๆ ดังนั้นเราจึงจำเป็นต้องตั้งค่าเหล่านี้
จากเชลล์คำสั่ง:
sudo nano /boot/config.txt
เพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์:
safe_mode_gpio=4
max_usb_current=1
RPi เป็นเครื่องมือที่ยอดเยี่ยมสำหรับผู้ผลิต แต่ในปัจจุบันมีข้อจำกัดในการส่งไปยัง Walabot เหตุใดเราจึงเพิ่มกระแสสูงสุด 1Amp มากกว่ามาตรฐาน 500mA
ขั้นตอนที่ 10: Python
ทำไมต้องไพทอน? เนื่องจากมันเขียนโค้ดได้ง่ายสุด ๆ ใช้งานได้เร็ว และมีตัวอย่าง python ดีๆ มากมายให้เลือกใช้! ฉันไม่เคยใช้มันมาก่อนและในไม่ช้าก็ใช้งานได้ทันที ตอนนี้ RPi ได้รับการกำหนดค่าสำหรับสิ่งที่เราต้องการแล้ว ขั้นตอนต่อไปคือการกำหนดค่า Python ให้สามารถเข้าถึง Walabot API, อินเทอร์เฟซ LCD Servo
ขั้นตอนที่ 11: สำหรับ Walabot
จากเชลล์คำสั่ง
Sudo pip ติดตั้ง “/usr/share/walabot/python/WalabotAPI-1.0.21.zip”
ขั้นตอนที่ 12: สำหรับส่วนต่อประสานเซอร์โว
จากเชลล์คำสั่ง
sudo apt-get ติดตั้ง git build-essential python-dev
ซีดี ~
โคลน git
cd Adafruit_Python_PCA9685
sudo python setup.py ติดตั้ง
ทำไมเราต้องใช้ไดรเวอร์เซอร์โว? ด้วยเหตุผลสองสามประการสำหรับ RPi
1. กระแสที่เซอร์โวดึงออกมาอาจสูงมาก และจำนวนนั้นก็จะมากขึ้นตามจำนวนเซอร์โวที่คุณมี (แน่นอน) หากคุณกำลังขับเซอร์โวไดเร็กคกี้จาก RPi คุณเสี่ยงต่อการเป่าที่พาวเวอร์ซัพพลาย
2. เวลาของ PWM (Pulse Width Modulation) ที่ควบคุมตำแหน่งเซอร์โวมีความสำคัญมาก เนื่องจาก RPi ไม่ได้ใช้ระบบปฏิบัติการแบบเรียลไทม์ (อาจมีการขัดจังหวะ เป็นต้น) การกำหนดเวลาจึงไม่ถูกต้องและอาจทำให้เซอร์โวกระตุกอย่างกังวลใจ ไดรเวอร์เฉพาะช่วยให้สามารถควบคุมได้อย่างแม่นยำ แต่ยังเพิ่มเซอร์โวได้ถึง 16 ตัว ดังนั้นจึงเหมาะอย่างยิ่งสำหรับการขยาย
ขั้นตอนที่ 13: สำหรับ LCD
เปิดเว็บเบราว์เซอร์ RPi ของคุณ
www.sunfounder.com/learn/category/sensor-k…
ดาวน์โหลด
github.com/daveyclk/SunFounder_SensorKit_…
จากเชลล์คำสั่ง:
sudo mkdir /usr/share/sunfounder
ใช้ตัวสำรวจกราฟิก คัดลอกโฟลเดอร์ python จากไฟล์ zip ไปยังโฟลเดอร์ sunfounder ใหม่ของคุณ
LCD ใช้เพื่อแจ้งให้ผู้ใช้ทราบว่าเกิดอะไรขึ้น แสดงกระบวนการกำหนดค่าผ่านไปยังค่า x, y และ z ที่ถูกแมปบนแต่ละเซอร์โว
ขั้นตอนที่ 14: Blynk
Blynk เป็นบริการ IoT ที่ยอดเยี่ยมที่ช่วยให้คุณสามารถสร้างแอปที่กำหนดเองเพื่อควบคุมข้อมูลของคุณได้ ดูเหมือนว่าจะเป็นทางออกที่สมบูรณ์แบบในการให้การควบคุมระยะไกลของ walabot เพื่อหมุนในการตั้งค่า…
ปัญหาหนึ่ง. ขณะนี้ Blynk ไม่ได้รับการสนับสนุนบนแพลตฟอร์ม Python, bugger แต่ไม่ต้องกลัว! ฉันสามารถหางานเล็ก ๆ น้อย ๆ ที่ดีที่ช่วยให้การควบคุมระยะไกลและอินพุตพารามิเตอร์ระยะไกล! มันแฮ็คเล็กน้อย
ขั้นตอนแรกคือการดาวน์โหลดแอป Blynk จากร้านแอปที่คุณชื่นชอบ
ประการที่สอง ลงทะเบียนสำหรับบัญชี
เมื่อเสร็จแล้ว ให้เปิดแอปและเริ่มต้นโครงการใหม่ โดยเลือก Raspberry Pi 3 เป็นฮาร์ดแวร์
แอพจะจัดสรรโทเค็นการเข้าถึงให้คุณ (คุณจะต้องใช้สิ่งนี้เพื่อใส่รหัสของคุณ)
เมื่อคุณได้ทำอย่างนั้นแล้ว คุณจะต้องตั้งค่าแอพตามที่แสดงในภาพ นี่คือวิธีที่มันจะติดต่อกับวาลาบอท
ขั้นตอนที่ 15: กำหนดค่าแอพ Blynk
ขั้นตอนที่ 16: คุณสามารถใช้รหัส QR นี้กับแอป Blynk เพื่อโคลนโครงการของฉันเพื่อประหยัดเวลา
ตกลง เมื่อตั้งค่าแอปเสร็จแล้ว เราสามารถกำหนดค่า Python และ RPi ให้พูดคุยกับมันผ่านอินเทอร์เน็ตได้ มายากล
ขั้นตอนที่ 17: เรียกใช้ Blynk ด้วย Raspberry Pi และใช้ Blynk HTTPS สำหรับ Python
ก่อนอื่น คุณต้องติดตั้งเครื่องห่อ Blynk HTTPS สำหรับ Python
จากเชลล์คำสั่ง:
โคลน sudo git
sudo pip ติดตั้ง blynkapi
ประการที่สอง คุณต้องติดตั้ง Blynk Service บน RPi
จากเชลล์คำสั่ง:
โคลน git
cd blynk-library/linux
ทำความสะอาดทั้งหมด
เพื่อเรียกใช้บริการ blynk
sudo./blynk --token=YourAuthToken
เพื่อให้แน่ใจว่าบริการ Blynk ทำงานเมื่อเริ่มต้น คุณต้องแก้ไขไฟล์ /etc/rc.local
จากการทำ
sudo nano /etc/rc.local
ใส่ท้ายนี้
./blynk-library/linux/blynk --token=โทเค็นของฉัน &
(ฉันได้รวมไฟล์ /etc/rc.local ของฉันไว้ในส่วนรหัสเพื่อใช้อ้างอิง)
เพื่อทดสอบว่ามันใช้งานได้เพียงพิมพ์
sudo /etc/rc.local start
Blynk Service ควรจะทำงานอยู่
ขั้นตอนที่ 18: การรันสคริปต์อัตโนมัติ
เมื่อตั้งค่าและกำหนดค่าทั้งหมดแล้ว เราก็เตรียมรหัสหลามให้พร้อม เราสามารถตั้งค่าให้ทำงานอัตโนมัติเพื่อให้เราสามารถทิ้งคีย์บอร์ดและจอภาพได้
มีบางอย่างที่ต้องทำ
สร้างไฟล์สคริปต์ใหม่เพื่อเรียกใช้โปรแกรม Python
sudo nano guitareffect.sh
เพิ่มบรรทัดเหล่านี้
#!/bin/sh
หลาม /home/pi/GuitarEffectCLI.py
อย่าลืมบันทึก
ต่อไปเราต้องให้สิทธิ์สคริปต์ทำงานโดยพิมพ์
Sudo chmod +x /home/pi/guitareffect.sh
และสุดท้าย เราต้องเพิ่มสคริปต์นี้ในไฟล์ /etc/rc.local ที่เราแก้ไขก่อนหน้านี้
Sudo nano /etc/rc.local
เพิ่ม
/home/pi/guitareffect.sh &
อย่าลืมใส่ "&" เพื่อให้ Python Script ทำงานในพื้นหลัง
ถูกต้อง! นั่นคือทั้งหมดการกำหนดค่าและซอฟต์แวร์ที่จัดเรียง ต่อไปก็ถึงเวลาต่อฮาร์ดแวร์
ขั้นตอนที่ 19: ฮาร์ดแวร์
ต้นแบบ Breadboard ตัวแรก
ขั้นตอนที่ 20: การออกแบบสิ่งที่แนบมา
ตู้ได้รับการออกแบบและแสดงผลใน Fusion360. ที่ยอดเยี่ยม
ขั้นตอนที่ 21: กล้ายิง
ขั้นตอนที่ 22: ภาพการประกอบขั้นสุดท้าย
ขั้นตอนที่ 23: วิธีแก้ไข Walabot ไปที่ Stand
ใช้แผ่นโลหะแบบมีกาวในตัวที่มาพร้อมกับ walabot เพื่อยึดเข้าที่
ขั้นตอนที่ 24: ไฟล์ STL ของฮาร์ดแวร์สำหรับการพิมพ์ 3 มิติ
ขั้นตอนที่ 25: แผนผังสำหรับการเดินสายสิ่งของ
ขั้นตอนที่ 26: รหัส
ใช้สคริปต์ Python ที่แนบมาสำหรับโครงการของคุณ
จาก _future_ นำเข้า print_function จากแพลตฟอร์มการนำเข้า sys จากระบบนำเข้าระบบปฏิบัติการ จากการนำเข้า blynkapi นำเข้า Blynk นำเข้าเวลานำเข้า WalabotAPI RPi. GPIO เป็น GPIO
#ตั้งค่า GPIO โดยใช้หมายเลขบอร์ด
GPIO.setmode(GPIO. BOARD) GPIO.setup(18, GPIO. IN, pull_up_down = GPIO. PUD_UP)
#blynk รับรองความถูกต้อง
auth_token = "ของคุณ_auth_token_ที่นี่"
# นำเข้าโมดูล PCA9685 สำหรับการควบคุมเซอร์โว
นำเข้า Adafruit_PCA9685
#นำเข้าโมดูล LCD จากตำแหน่ง
จากการนำเข้า imp load_source LCD1602 = load_source('LCD1602', '/usr/share/sunfounder/Python/LCD1602.py')
# เริ่มต้น PCA9685 โดยใช้ที่อยู่เริ่มต้น (0x40)
pwm = Adafruit_PCA9685. PCA9685()
#วัตถุกะพริบตา
defaults = Blynk(auth_token, pin = "V9") start_button = Blynk(auth_token, pin = "V3") Rmax = Blynk(auth_token, pin = "V0") Rmin = Blynk(auth_token, pin = "V1") Rres = Blynk(auth_token, พิน = "V2")
ThetaMax = Blynk(auth_token, พิน = "V4")
ThetaRes = Blynk(auth_token, พิน = "V5")
PhiMax = Blynk(auth_token, พิน = "V6")
PhiRes = Blynk(auth_token, พิน = "V7")
เกณฑ์ = Blynk(auth_token, pin = "V8")
ServoMin = Blynk(auth_token, พิน = "V10")
ServoMax = Blynk(auth_token, พิน = "V11")
def LCDsetup():
LCD1602.init(0x27, 1) # init (ที่อยู่สลาฟ, ไฟพื้นหลัง)
def numMap(x, in_min, in_max, out_min, out_max): """ ใช้สำหรับจับคู่การอ่าน walabot ไปยังตำแหน่งเซอร์โว """ return int((x- in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
# ใช้สำหรับปัดเศษข้อมูลดิบให้เป็นค่าที่กำหนด
def myRound(x, base=2): คืนค่า int(base * round(float(x)/base))
#แยกตัวเลขจากสตริง blynk ที่ส่งคืน
def numberExtract(val): val = str(val) คืนค่า int(filter(str.isdigit, val))
# ตั้งความถี่เป็น 60hz เหมาะสำหรับเซอร์โว
pwm.set_pwm_freq(60)
# กำหนดค่าเริ่มต้นของความยาวพัลส์เซอร์โวขั้นต่ำและสูงสุด
SERVO_MIN = 175 # ความยาวพัลส์ต่ำสุดจาก 4096 SERVO_MAX = 575 # ความยาวพัลส์สูงสุดจาก 4096
# ค่าเริ่มต้น walabot
R_MAX = 60 R_MIN = 20 R_RES = 5
THETA_MAX = 20
THETA_RES = 5
PHI_MAX = 20
PHI_RES = 5
THRESHOLD = 1
# ตัวแปรสำหรับการสลับกะพริบตา
บน = "[u'1']"
คลาส วาลาบอท:
def _init_ (ตัวเอง):
self.wlbt = WalabotAPI self.wlbt. Init () self.wlbt. SetSettingsFolder () self.isConnected = เท็จ self.isTargets = เท็จ
def blynkConfig (ตัวเอง):
load_defaults = defaults.get_val() ถ้า str(load_defaults) == on: SERVO_MAX = ServoMax.get_val() SERVO_MAX = numberExtract(SERVO_MAX) พิมพ์ ("Servo Max =", SERVO_MAX)
SERVO_MIN = ServoMin.get_val()
SERVO_MIN = numberExtract(SERVO_MIN) พิมพ์ ("Servo MIN =", SERVO_MIN) R_MAX = Rmax.get_val() R_MAX = numberExtract(R_MAX) พิมพ์ ("R max =", R_MAX)
R_MIN = Rmin.get_val()
R_MIN = numberExtract(R_MIN) พิมพ์ ("R Min =", R_MIN)
R_RES = Rres.get_val()
R_RES = numberExtract(R_RES) พิมพ์ ("R Res =", R_RES)
THETA_MAX = ThetaMax.get_val()
THETA_MAX = numberExtract(THETA_MAX) พิมพ์ ("Theta Max =", THETA_MAX) THETA_RES = ThetaRes.get_val() THETA_RES = numberExtract(THETA_RES) พิมพ์ ("Theta Res =", THETA_RES)
PHI_MAX = PhiMax.get_val()
PHI_MAX = numberExtract(PHI_MAX) พิมพ์ ("Phi Max =", PHI_MAX) PHI_RES = PhiRes.get_val() PHI_RES = numberExtract(PHI_RES) พิมพ์ ("Phi Res =", PHI_RES)
THRESHOLD = เกณฑ์.get_val()
THRESHOLD = numberExtract(THRESHOLD) พิมพ์ ("Threshold =", THRESHOLD)
อื่น: # หากไม่มีอะไรจากแอป blynk ให้โหลดค่าเริ่มต้น SERVO_MIN = 175 # ความยาวพัลส์ขั้นต่ำจาก 4096 SERVO_MAX = 575 # ความยาวพัลส์สูงสุดจาก 4096
# ค่าเริ่มต้น walabot
R_MAX = 60 R_MIN = 20 R_RES = 5
THETA_MAX = 20
THETA_RES = 5
PHI_MAX = 20
PHI_RES = 5
THRESHOLD = 1
def เชื่อมต่อ (ตัวเอง): ลอง: self.wlbt. ConnectAny() self.isConnected = True self.wlbt. SetProfile (self.wlbt. PROF_SENSOR) #self.wlbt. SetDynamicImageFilter(self.wlbt. FILTER_TYPE_MTI) self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_NONE) #self.wlbt. SetDynamicImageFilter(self.wlbt. FILTER_TYPE_DERIVATIVE) self.wlbt. SetArenaTheta(-THETA_MAX, THETA_MAX, THETA_RES) self.wlbt. SetArenaPhi(-PHI_MAX. Phi(-PHI_MAX.) SetArenaR(R_MIN, R_MAX, R_RES) self.wlbt. SetThreshold(THRESHOLD) ยกเว้น self.wlbt. WalabotError เป็นข้อผิดพลาด: ถ้า err.code != 19: # 'WALABOT_INSTRUMENT_NOT_FOUND' ยก err
def เริ่มต้น (ตัวเอง):
self.wlbt. Start()
def สอบเทียบ (ตัวเอง):
self.wlbt. StartCalibration()
def get_targets (ตัวเอง):
self.wlbt. Trigger () ส่งคืน self.wlbt. GetSensorTargets ()
def หยุด (ตัวเอง):
self.wlbt.หยุด()
def ยกเลิกการเชื่อมต่อ (ตัวเอง):
self.wlbt. ตัดการเชื่อมต่อ ()
def หลัก ():
flag = True check = "" LCDsetup() while flag: LCD1602.write(0, 0, 'Guitar ') LCD1602.write(0, 1, 'Effect Control') time.sleep(2) LCD1602.write(0,) 0, 'กด Start to ') LCD1602.write(0, 1, 'begin ') time.sleep(2) if (str(check) == on): flag = False else: check = start_button.get_val() # ตรวจสอบการกดปุ่มเริ่มต้น blynk ถ้า (GPIO.input (18) == 0): #check footswitch flag = False
LCD1602.write(0, 0, "ตกลง! มาทำกันเถอะ")
LCD1602.write(0, 1, ' ') wlbt = Walabot() wlbt.blynkConfig() wlbt.connect() LCD1602.clear() ถ้าไม่ใช่ wlbt.isConnected: LCD1602.write(0, 0, 'Not Connected ') อื่นๆ: LCD1602.write(0, 0, 'Connected ') time.sleep(2) wlbt.start() wlbt.calibrate() LCD1602.write(0, 0, 'Calibrating…..') time.sleep(3)) LCD1602.write(0, 0, 'การเริ่มต้น Walabot')
appcheck = start_button.app_status () ตั้งค่าสถานะ = True # รีเซ็ตการตั้งค่าสถานะสำหรับโปรแกรมหลัก
while flag: # ใช้เพื่อใส่เอฟเฟกต์ในโหมดสแตนด์บาย (อย่างมีประสิทธิภาพ)
if (appcheck == True): if (str(check) != on): if (GPIO.input(18) != 0): #check footswitch flag = False else: check = start_button.get_val() #check for ปุ่มเริ่ม กด appcheck = start_button.app_status()
อื่น:
if (GPIO.input(18) != 0): #check footswitch flag = False
xval = 0
yval = 0 zval = 0 ค่าเฉลี่ย = 2 delayTime = 0
เป้าหมาย = wlbt.get_targets()
ถ้า len(เป้าหมาย) > 0:
สำหรับ j ในช่วง (เฉลี่ย):
เป้าหมาย = wlbt.get_targets()
ถ้า len(เป้าหมาย) > 0: พิมพ์(len(เป้าหมาย)) เป้าหมาย = เป้าหมาย[0]
พิมพ์(str(targets.xPosCm))
xval += int(targets.xPosCm) yval += int(targets.yPosCm) zval += int(targets.zPosCm) time.sleep(delayTime) อื่น: พิมพ์ ("ไม่มีเป้าหมาย") xval = xval/average
xval = numMap(xval, -60, 60, SERVO_MIN, SERVO_MAX)
xval = myRound(xval) ถ้า xval SERVO_MAX: xval = SERVO_MAX LCD1602.write(0, 0, 'x=' + str(xval) + ' ') pwm.set_pwm(0, 0, xval)
yval = yval/ค่าเฉลี่ย
yval = numMap(yval, -60, 60, SERVO_MIN, SERVO_MAX)
yval = myRound(yval) ถ้า yval SERVO_MAX: yval = SERVO_MAX LCD1602.write(0, 1, 'y=' + str(yval)) pwm.set_pwm(1, 0, yval)
zval = zval/เฉลี่ย
zval = numMap(zval, R_MIN, R_MAX, SERVO_MIN, SERVO_MAX)
zval = myRound(zval) ถ้า zval SERVO_MAX: zval = SERVO_MAX LCD1602.write(8, 1, 'z=' + str(zval)) pwm.set_pwm(2, 0, zval)
อื่น:
พิมพ์ ("ไม่มีเป้าหมาย") LCD1602.write(0, 0, "ปิดเครื่อง") LCD1602.write(0, 1, 'The Walabot ') time.sleep(3) wlbt.stop() wlbt.disconnect()
ถ้า _name_ == '_main_':
ในขณะที่ True: main()
สำหรับผลกีตาร์.sh
#!/bin/sh
cd /home/pi
sudo python GuitarEffectCLI.py
สำเนาของไฟล์ในเครื่อง RC สำหรับการอ้างอิง
#!/bin/sh -e# # rc.local # # สคริปต์นี้ทำงานเมื่อสิ้นสุดการทำงานระดับผู้ใช้หลายคน # ตรวจสอบให้แน่ใจว่าสคริปต์จะ "ออกจาก 0" เมื่อสำเร็จหรือค่า # อื่น ๆ ที่มีข้อผิดพลาด # # เพื่อเปิดใช้งานหรือปิดใช้งานสคริปต์นี้เพียงแค่เปลี่ยนการดำเนินการ # บิต # # โดยค่าเริ่มต้นสคริปต์นี้ไม่ทำอะไรเลย
# พิมพ์ที่อยู่ IP
_IP=$(ชื่อโฮสต์ -I) || จริงถ้า ["$_IP"]; จากนั้น printf "ที่อยู่ IP ของฉันคือ %s\n" "$_IP" fi
./blynk-library/linux/blynk --token="คุณโทเค็นไปที่นี่" &
นอน 10 sudo /home/pi/guitareffect.sh & ออก 0
ขั้นตอนที่ 27: ที่เก็บ Github เพื่อใช้
ใช้สำหรับ Sunfounder LCD
github.com/daveyclk/SunFounder_SensorKit_f…
ใช้สำหรับไดรเวอร์เซอร์โว
github.com/daveyclk/Adafruit_Python_PCA968…
ใช้สำหรับ Blynk Python HTTPS Wrapper
github.com/daveyclk/blynkapi
ขั้นตอนที่ 28: บทสรุป
นี่เป็นช่วงการเรียนรู้ที่สูงชัน แต่ก็คุ้มค่ามาก
ซื้อกลับบ้านของฉันคือ
- ฉันต้องเรียน Python.. กลายเป็น ace
- เชื่อมต่อ Python บน Raspberry Pi กับบริการ Blynk IoT สิ่งนี้ไม่ได้รับการสนับสนุนอย่างเป็นทางการ ดังนั้นจึงมีข้อจำกัดบางประการในการทำงานของมัน ยังคงใช้งานได้ดีแม้ว่า!
- ปรากฎว่า Walabot นั้นยอดเยี่ยมสำหรับการแสดงออกทางดนตรี ฉันใช้กับ Korg SDD3000 แต่คุณสามารถใช้เอฟเฟกต์ใดก็ได้ตามต้องการ
ไปเอง. ไม่จำกัดเฉพาะเอฟเฟกต์กีตาร์ ฉันสามารถใช้ได้กับเครื่องดนตรีชนิดใดก็ได้ที่มีเอฟเฟกต์ใดก็ได้
รองชนะเลิศการแข่งขัน Raspberry Pi 2017
แนะนำ:
DIY 37 Leds เกมรูเล็ต Arduino: 3 ขั้นตอน (พร้อมรูปภาพ)
DIY 37 Leds เกมรูเล็ต Arduino: รูเล็ตเป็นเกมคาสิโนที่ตั้งชื่อตามคำภาษาฝรั่งเศสหมายถึงวงล้อเล็ก
หมวกนิรภัย Covid ส่วนที่ 1: บทนำสู่ Tinkercad Circuits!: 20 ขั้นตอน (พร้อมรูปภาพ)
Covid Safety Helmet ตอนที่ 1: บทนำสู่ Tinkercad Circuits!: สวัสดีเพื่อน ๆ ในชุดสองตอนนี้ เราจะเรียนรู้วิธีใช้วงจรของ Tinkercad - เครื่องมือที่สนุก ทรงพลัง และให้ความรู้สำหรับการเรียนรู้เกี่ยวกับวิธีการทำงานของวงจร! หนึ่งในวิธีที่ดีที่สุดในการเรียนรู้คือการทำ ดังนั้น อันดับแรก เราจะออกแบบโครงการของเราเอง: th
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-