สารบัญ:

Walabot FX - การควบคุมเอฟเฟกต์กีตาร์: 28 ขั้นตอน (พร้อมรูปภาพ)
Walabot FX - การควบคุมเอฟเฟกต์กีตาร์: 28 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Walabot FX - การควบคุมเอฟเฟกต์กีตาร์: 28 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Walabot FX - การควบคุมเอฟเฟกต์กีตาร์: 28 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Walabot FX- Guitar Effect Control. Full Demo 2024, กรกฎาคม
Anonim
Walabot FX - การควบคุมเอฟเฟกต์กีตาร์
Walabot FX - การควบคุมเอฟเฟกต์กีตาร์

ควบคุมเอฟเฟกต์กีตาร์ที่คุณชื่นชอบโดยใช้ท่ากีตาร์สุดเจ๋ง!

ขั้นตอนที่ 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: บทคัดย่อ

Getting Started
Getting Started

การควบคุมการแสดงออกทางดนตรีโดยใช้ตำแหน่งกีตาร์ในพื้นที่ 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

Blynk
Blynk

เปิดเว็บเบราว์เซอร์ 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
Blynk
Blynk
Blynk

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

ปัญหาหนึ่ง. ขณะนี้ Blynk ไม่ได้รับการสนับสนุนบนแพลตฟอร์ม Python, bugger แต่ไม่ต้องกลัว! ฉันสามารถหางานเล็ก ๆ น้อย ๆ ที่ดีที่ช่วยให้การควบคุมระยะไกลและอินพุตพารามิเตอร์ระยะไกล! มันแฮ็คเล็กน้อย

ขั้นตอนแรกคือการดาวน์โหลดแอป Blynk จากร้านแอปที่คุณชื่นชอบ

ประการที่สอง ลงทะเบียนสำหรับบัญชี

เมื่อเสร็จแล้ว ให้เปิดแอปและเริ่มต้นโครงการใหม่ โดยเลือก Raspberry Pi 3 เป็นฮาร์ดแวร์

แอพจะจัดสรรโทเค็นการเข้าถึงให้คุณ (คุณจะต้องใช้สิ่งนี้เพื่อใส่รหัสของคุณ)

เมื่อคุณได้ทำอย่างนั้นแล้ว คุณจะต้องตั้งค่าแอพตามที่แสดงในภาพ นี่คือวิธีที่มันจะติดต่อกับวาลาบอท

ขั้นตอนที่ 15: กำหนดค่าแอพ Blynk

การกำหนดค่าแอพ Blynk
การกำหนดค่าแอพ Blynk
การกำหนดค่าแอพ Blynk
การกำหนดค่าแอพ Blynk
การกำหนดค่าแอพ Blynk
การกำหนดค่าแอพ Blynk

ขั้นตอนที่ 16: คุณสามารถใช้รหัส QR นี้กับแอป Blynk เพื่อโคลนโครงการของฉันเพื่อประหยัดเวลา

คุณสามารถใช้รหัส QR นี้กับแอป Blynk เพื่อโคลนโครงการของฉันเพื่อประหยัดเวลา
คุณสามารถใช้รหัส 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: ฮาร์ดแวร์

Image
Image
Walabot guitar effects control proto1
Walabot guitar effects control proto1

ต้นแบบ Breadboard ตัวแรก

ขั้นตอนที่ 20: การออกแบบสิ่งที่แนบมา

การออกแบบสิ่งที่แนบมา
การออกแบบสิ่งที่แนบมา
การออกแบบสิ่งที่แนบมา
การออกแบบสิ่งที่แนบมา

ตู้ได้รับการออกแบบและแสดงผลใน Fusion360. ที่ยอดเยี่ยม

ขั้นตอนที่ 21: กล้ายิง

กล้ายิง
กล้ายิง
กล้ายิง
กล้ายิง
กล้ายิง
กล้ายิง

ขั้นตอนที่ 22: ภาพการประกอบขั้นสุดท้าย

ภาพการประกอบขั้นสุดท้าย
ภาพการประกอบขั้นสุดท้าย
ภาพการประกอบขั้นสุดท้าย
ภาพการประกอบขั้นสุดท้าย
ภาพการประกอบขั้นสุดท้าย
ภาพการประกอบขั้นสุดท้าย

ขั้นตอนที่ 23: วิธีแก้ไข Walabot ไปที่ Stand

ในการซ่อม Walabot ไปที่ Stand
ในการซ่อม 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: บทสรุป

Image
Image
Walabot FX- Guitar Effect Control. Full Demo
Walabot FX- Guitar Effect Control. Full Demo
บทสรุป
บทสรุป
บทสรุป
บทสรุป

นี่เป็นช่วงการเรียนรู้ที่สูงชัน แต่ก็คุ้มค่ามาก

ซื้อกลับบ้านของฉันคือ

  • ฉันต้องเรียน Python.. กลายเป็น ace
  • เชื่อมต่อ Python บน Raspberry Pi กับบริการ Blynk IoT สิ่งนี้ไม่ได้รับการสนับสนุนอย่างเป็นทางการ ดังนั้นจึงมีข้อจำกัดบางประการในการทำงานของมัน ยังคงใช้งานได้ดีแม้ว่า!
  • ปรากฎว่า Walabot นั้นยอดเยี่ยมสำหรับการแสดงออกทางดนตรี ฉันใช้กับ Korg SDD3000 แต่คุณสามารถใช้เอฟเฟกต์ใดก็ได้ตามต้องการ

ไปเอง. ไม่จำกัดเฉพาะเอฟเฟกต์กีตาร์ ฉันสามารถใช้ได้กับเครื่องดนตรีชนิดใดก็ได้ที่มีเอฟเฟกต์ใดก็ได้

การประกวด Raspberry Pi 2017
การประกวด Raspberry Pi 2017
การประกวด Raspberry Pi 2017
การประกวด Raspberry Pi 2017

รองชนะเลิศการแข่งขัน Raspberry Pi 2017

แนะนำ: