Πίνακας περιεχομένων:

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: Πράγματα που θα χρειαστείτε

Συστατικά υλικού

Walabot - Walabot

Raspberry Pi - Raspberry Pi 3 Model B

Sunfounder LCD1602

SunFounder PCA9685 16 Channel 12 Bit PWM Servo Driver για Arduino και Raspberry Pi

Servo (γενικό) Δεν υπάρχει σύνδεσμος

Κλιπ μπαταρίας 9V

Υποδοχή μπαταρίας 4xAA

Μπαταρίες AA

Καλώδια βραχυκυκλωτήρων (γενικά)

DPDT Latching Action Foot Switch

Korg SDD3000-PDL

Λογισμικά λειτουργικά συστήματα, εφαρμογές και διαδικτυακές υπηρεσίες

Autodesk Fusion360 -

Blynk -

Εργαλεία κλπ

Τρισδιάστατος εκτυπωτής

Συγκολλητικό σίδερο

Βήμα 2: Περίληψη

Getting Started
Getting Started

Πώς θα ήταν να ελέγχετε τη μουσική έκφραση χωρίς να χρησιμοποιείτε παρά τη θέση της κιθάρας σας σε τρισδιάστατο χώρο; Λοιπόν, ας πρωτοτυπήσουμε κάτι και θα το μάθουμε!

Βήμα 3: Η βασική ιδέα

Wantedθελα να μπορώ να ελέγξω την παράμετρο 3 εφέ σε πραγματικό χρόνο, ήθελα να το κάνω χρησιμοποιώντας τον τρόπο τοποθέτησης της κιθάρας μου. Έτσι, ένα πράγμα ήταν ξεκάθαρο, θα χρειαζόμουν μερικά πράγματα.

  • Ένας αισθητήρας που μπορεί να δει 3D χώρο
  • Σέρβο για να γυρίσετε τα πόμολα
  • Οθόνη LCD
  • Πρόγραμμα οδήγησης I2C Servo
  • Ένα Raspberry Pi
  • Για να μάθεις Python

Βήμα 4: Walabot

Θέλετε να δείτε μέσα από τους τοίχους; Αισθητήρια αντικείμενα στον τρισδιάστατο χώρο; Αίσθηση αν αναπνέετε από το δωμάτιο; Λοιπόν, είστε τυχεροί!

Το Walabot είναι ένας εντελώς νέος τρόπος ανίχνευσης του χώρου γύρω σας χρησιμοποιώντας ραντάρ χαμηλής ισχύος.

Αυτό επρόκειτο να είναι το κλειδί για αυτό το έργο, θα μπορούσα να πάρω τα καρτεσιανά (X-Y-Z) coodinates αντικειμένων σε τρισδιάστατο χώρο και να τα χαρτογραφήσω σε servo θέσεις αλλάζοντας τον τρόπο που ακούγεται ένα εφέ κιθάρας, σε πραγματικό χρόνο, χωρίς να αγγίζω το πεντάλ.

Νίκη.

Περισσότερες πληροφορίες για το Walabot μπορείτε να βρείτε εδώ

Βήμα 5: Ξεκινώντας

Πρώτα απ 'όλα, θα χρειαστείτε έναν υπολογιστή για να οδηγήσετε το Walabot, για αυτό το έργο χρησιμοποιώ ένα Raspberry Pi 3 (εδώ αναφέρεται στο RPi) λόγω του ενσωματωμένου WiFi και γενικότερης πρόσθετης λειτουργίας.

Αγόρασα μια κάρτα SD 16 GB με προεγκατεστημένο το NOOBS για να διατηρήσω τα πράγματα ωραία και απλά και επέλεξα να εγκαταστήσω το Raspian ως Linux OS της επιλογής μου

(αν δεν είστε εξοικειωμένοι με τον τρόπο εγκατάστασης του Raspian, αφιερώστε λίγο χρόνο για να το διαβάσετε λίγο)

Εντάξει, μόλις ενεργοποιήσετε το Raspian στο RPi, πρέπει να ακολουθήσετε μερικά βήματα διαμόρφωσης για να προετοιμάσετε τα πράγματα για το έργο μας

Βήμα 6: Ρύθμιση του Raspberry Pi - 1

Πρώτα βεβαιωθείτε ότι εκτελείτε την πιο πρόσφατη έκδοση Kernel και ελέγξτε για ενημερώσεις ανοίγοντας ένα κέλυφος εντολών και πληκτρολογώντας

sudo apt-get ενημέρωση

sudo apt-get dist-upgrade

(το sudo προστίθεται για να διασφαλιστεί ότι έχετε δικαιώματα διαχειριστή, π.χ. τα πράγματα θα λειτουργήσουν)

Αυτό μπορεί να πάρει λίγο χρόνο για να ολοκληρωθεί, οπότε πηγαίνετε και πιείτε ένα ωραίο φλιτζάνι τσάι.

Βήμα 7: Ρύθμιση του Raspberry Pi - 2

Πρέπει να εγκαταστήσετε το SDK Walabot για RPi. Από το πρόγραμμα περιήγησης ιστού RPi μεταβείτε στη διεύθυνση https://www.walabot.com/gettingstarted και κάντε λήψη του πακέτου εγκατάστασης Raspberry Pi.

Από ένα κέλυφος εντολών:

λήψεις cd

sudo dpkg -I walabotSDK_RasbPi.deb

Βήμα 8: Ρύθμιση του Raspberry Pi - 3

Πρέπει να ξεκινήσουμε τη διαμόρφωση του RPi για χρήση του διαύλου i2c. Από ένα κέλυφος εντολών:

sudo apt-get install python-smbus

sudo apt-get install 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; Λοιπόν, καθώς είναι εξαιρετικά εύκολο να κωδικοποιηθεί, γρήγορα να τρέξει και υπάρχουν πολλά καλά παραδείγματα python διαθέσιμα! δεν το είχα χρησιμοποιήσει ποτέ πριν και σύντομα ξεκίνησε να λειτουργεί σε χρόνο μηδέν. Τώρα το RPi έχει ρυθμιστεί για αυτό που θέλουμε, το επόμενο βήμα είναι να διαμορφώσουμε την Python ώστε να έχει πρόσβαση στις διεπαφές Walabot API, LCD Servo

Βήμα 11: Για το Walabot

Από ένα κέλυφος εντολών

Sudo pip install "/usr/share/walabot/python/WalabotAPI-1.0.21.zip"

Βήμα 12: Για τη διεπαφή Servo

Από ένα κέλυφος εντολών

sudo apt-get install git build-απαραίτητο python-dev

cd

git clone

cd Adafruit_Python_PCA9685

sudo python setup.py install

Γιατί πρέπει να χρησιμοποιήσουμε ένα σερβο πρόγραμμα οδήγησης; Λοιπόν, για ένα RPi δύο λόγους.

1. Το ρεύμα που αντλεί ένα σερβο μπορεί να είναι πολύ υψηλό και αυτός ο αριθμός γίνεται μεγαλύτερος όσο περισσότερα σερβίς έχετε (φυσικά). Εάν οδηγείτε το servo directky από RPi, διατρέχετε τον κίνδυνο να φυσήξετε το τροφοδοτικό του

2. Οι χρονισμοί του PWM (Pulse Width Modulation) που ελέγχουν τη θέση του servos είναι πολύ σημαντικοί. Δεδομένου ότι το RPi δεν χρησιμοποιεί λειτουργικό σύστημα σε πραγματικό χρόνο (μπορεί να υπάρχουν διακοπές και τέτοια) οι χρονισμοί δεν είναι ακριβείς και μπορούν να κάνουν τα servos να αναστατωθούν νευρικά. Ένα ειδικό πρόγραμμα οδήγησης επιτρέπει τον ακριβή έλεγχο, αλλά επιτρέπει επίσης την προσθήκη έως 16 servos, οπότε αυτό είναι εξαιρετικό για επέκταση.

Βήμα 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 ως υλικό.

Η εφαρμογή θα σας διαθέσει ένα διακριτικό πρόσβασης (αυτό θα χρειαστεί για να βάλετε τον κωδικό σας)

Μόλις το κάνετε αυτό. θα χρειαστεί να ρυθμίσετε την εφαρμογή όπως φαίνεται στις εικόνες. Έτσι θα διασυνδεθεί με το walabot.

Βήμα 15: Διαμόρφωση της εφαρμογής Blynk

Διαμόρφωση της εφαρμογής Blynk
Διαμόρφωση της εφαρμογής Blynk
Διαμόρφωση της εφαρμογής Blynk
Διαμόρφωση της εφαρμογής Blynk
Διαμόρφωση της εφαρμογής Blynk
Διαμόρφωση της εφαρμογής Blynk

Βήμα 16: Μπορείτε να χρησιμοποιήσετε αυτόν τον κωδικό QR με την εφαρμογή Blynk για να κλωνοποιήσετε το έργο μου για να εξοικονομήσετε χρόνο

Μπορείτε να χρησιμοποιήσετε αυτόν τον κωδικό QR με την εφαρμογή Blynk για να κλωνοποιήσετε το έργο μου για να εξοικονομήσετε χρόνο
Μπορείτε να χρησιμοποιήσετε αυτόν τον κωδικό QR με την εφαρμογή Blynk για να κλωνοποιήσετε το έργο μου για να εξοικονομήσετε χρόνο

OK Τώρα που η εφαρμογή έχει ρυθμιστεί, μπορούμε να διαμορφώσουμε την Python και το RPi για να μιλάμε σε αυτήν μέσω των διαδικτυακών δικτύων. Μαγεία

Βήμα 17: Εκτέλεση του Blynk With the Raspberry Pi και χρήση του Blynk HTTPS για Python

Πρώτον, πρέπει να εγκαταστήσετε το περιτύλιγμα Blynk HTTPS για Python

Από ένα κέλυφος εντολών:

sudo git κλώνος

sudo pip install blynkapi

Δεύτερον, πρέπει να εγκαταστήσετε την υπηρεσία Blynk στο RPi

Από ένα κέλυφος εντολών:

git clone

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.τοπική εκκίνηση

Η υπηρεσία Blynk θα πρέπει τώρα να λειτουργεί

Βήμα 18: Αυτόματη εκτέλεση του σεναρίου

Τώρα που όλα αυτά έχουν ρυθμιστεί και διαμορφωθεί και έχουμε έτοιμο τον κώδικα python. μπορούμε να ρυθμίσουμε τα πράγματα να εκτελούνται αυτόματα, ώστε να μπορούμε να αποβάλλουμε το πληκτρολόγιο και τις οθόνες

Υπάρχουν μερικά πράγματα που πρέπει να κάνετε

Δημιουργήστε ένα νέο αρχείο σεναρίου για να τελειώσει το πρόγραμμα Python

sudo nano guitareffect.sh

προσθέστε αυτές τις γραμμές

#!/bin/sh

python /home/pi/GuitarEffectCLI.py

φροντίστε να το αποθηκεύσετε

Στη συνέχεια, πρέπει να δώσουμε στο σενάριο άδεια για εκτέλεση πληκτρολογώντας

Sudo chmod +x /home/pi/guitareffect.sh

Και τέλος, πρέπει να προσθέσουμε αυτό το σενάριο στο αρχείο /etc/rc.local με το οποίο ασχοληθήκαμε νωρίτερα.

Sudo nano /κ.λπ.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 στη βάση

Για να στερεώσετε το Walabot στη βάση
Για να στερεώσετε το Walabot στη βάση

Χρησιμοποιήστε τον αυτοκόλλητο μεταλλικό δίσκο που συνοδεύει το walabot για να το στερεώσετε στη θέση του

Βήμα 24: Αρχεία STL υλικού για τρισδιάστατη εκτύπωση

Βήμα 25: Σχήματα για την καλωδίωση του πράγματος

Βήμα 26: Κωδικός

Χρησιμοποιήστε το συνημμένο σενάριο Python για το έργο σας

από _future_ import print_functionfor sys import platform from os import system from blynkapi import Blynk import WalabotAPI import time import RPi. GPIO as GPIO

#ρυθμίστε το GPIO χρησιμοποιώντας την αρίθμηση πίνακα

GPIO.setmode (GPIO. BOARD) GPIO.setup (18, GPIO. IN, pull_up_down = GPIO. PUD_UP)

διακριτικό #blynk auth

auth_token = "your_auth_token_here"

# Εισαγάγετε τη μονάδα PCA9685 για έλεγχο σερβο.

εισαγωγή Adafruit_PCA9685

#εισαγωγή μονάδας LCD από την τοποθεσία

από imp import load_source LCD1602 = load_source ('LCD1602', '/usr/share/sunfounder/Python/LCD1602.py')

# Αρχικοποιήστε το PCA9685 χρησιμοποιώντας την προεπιλεγμένη διεύθυνση (0x40).

pwm = Adafruit_PCA9685. PCA9685 ()

# αντικείμενα blynk

προεπιλογές = 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, pin = "V2")

ThetaMax = Blynk (auth_token, pin = "V4")

ThetaRes = Blynk (auth_token, pin = "V5")

PhiMax = Blynk (auth_token, pin = "V6")

PhiRes = Blynk (auth_token, pin = "V7")

Threshold = Blynk (auth_token, pin = "V8")

ServoMin = Blynk (auth_token, pin = "V10")

ServoMax = Blynk (auth_token, pin = "V11")

def LCDsetup ():

LCD1602.init (0x27, 1) # init (διεύθυνση slave, φως φόντου)

def numMap (x, in_min, in_max, out_min, out_max): "" χρησιμοποιείται για τη χαρτογράφηση των ενδείξεων του walabot στη θέση σερβο "" επιστροφής int ((x- in_min) * (out_max - out_min) / (in_max - in_min) + έξω_λεπτά)

# χρησιμοποιήστε αυτό για στρογγυλοποίηση των ακατέργαστων δεδομένων στην καθορισμένη τιμή

def myRound (x, base = 2): return int (base * round (float (x)/base))

#εξαγάγει τον αριθμό από την επιστρεφόμενη συμβολοσειρά blynk

def numberEstract (val): val = str (val) return int (φίλτρο (str.isdigit, val))

# Ρυθμίστε τη συχνότητα στα 60Hz, καλό για servos.

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

# μεταβλητές για εναλλαγή blynk

on = "[u'1 ']"

κατηγορία Walabot:

def _init _ (self):

self.wlbt = WalabotAPI self.wlbt. Init () self.wlbt. SetSettingsFolder () self.isConnected = Λάθος self.isTargets = Λάθος

def blynkConfig (self):

load_defaults = defaults.get_val () if str (load_defaults) == on: SERVO_MAX = ServoMax.get_val () SERVO_MAX = numberExtract (SERVO_MAX) print ("Servo Max =", SERVO_MAX)

SERVO_MIN = ServoMin.get_val ()

SERVO_MIN = αριθμόςΕξαγωγή (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) print ("R Min =", R_MIN)

R_RES = Rres.get_val ()

R_RES = numberExtract (R_RES) print ("R Res =", R_RES)

THETA_MAX = ThetaMax.get_val ()

THETA_MAX = αριθμόςΕξαγωγή (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 = αριθμόςΕξαγωγή (PHI_MAX) εκτύπωση ("Phi Max =", PHI_MAX) PHI_RES = PhiRes.get_val () PHI_RES = numberExtract (PHI_RES) εκτύπωση ("Phi Res =", PHI_RES)

THRESHOLD = Threshold.get_val ()

THRESHOLD = numberExtract (THRESHOLD) εκτύπωση ("Threshold =", THRESHOLD)

else: # εάν τίποτα από την εφαρμογή 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 connect (self): try: self.wlbt. ConnectAny () self.isConnected = True self.wlbt. SetProfile (self.wlbt. PROF_SENSOR) #self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TyPI_TYPE (self.wlbt. FILTER_TYPE_NONE) #self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_DERIVATIVE) self.wlbt. SetArenaTheta (-THETA_MAX, THETA_AX, PHAX, PH, PH, PH, PH, PH, PH, PH, PH, PH, PH, PH, SetArenaR (R_MIN, R_MAX, R_RES) self.wlbt. SetThreshold (THRESHOLD) εκτός από self.wlbt. WalabotError as err: if err.code! = 19: # WALABOT_INSTRUMENT_NOT_FOUND 'raise err err

def start (self):

self.wlbt. Start ()

def calibrate (self):

self.wlbt. StartCalibration ()

def get_targets (self):

self.wlbt. Trigger () επιστροφή self.wlbt. GetSensorTargets ()

def stop (self):

self.wlbt. Stop ()

def disconnect (self):

self.wlbt. Αποσύνδεση ()

def main ():

flag = True check = "" LCDsetup () while flag: LCD1602.write (0, 0, 'Guitar') LCD1602.write (0, 1, 'Effect Control') time.sleep (2) LCD1602.write (0, 0, 'Πατήστε Έναρξη') LCD1602.γράψτε (0, 1, 'έναρξη') time.sleep (2) if (str (check) == on): flag = False else: check = start_button.get_val () # ελέγξτε για το κουμπί έναρξης του blynk πατήστε if (GPIO.input (18) == 0): #ελέγξτε τη σημαία footswitch = 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') else: LCD1602.write (0, 0, 'Connected') time.sleep (2) wlbt.start () wlbt.calibrate () LCD1602.write (0, 0, 'Calibrating…..') time.sleep (3) LCD1602.write (0, 0, 'Starting Walabot')

appcheck = start_button.app_status () flag = True # reset σημαία για κύριο prog

ενώ σημαία: # χρησιμοποιείται για να τεθεί σε ισχύ σε κατάσταση αναμονής (αποτελεσματικά)

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 καθυστερήσειςΧρόνος = 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/μέσο όρο

xval = numMap (xval, -60, 60, SERVO_MIN, SERVO_MAX)

xval = myRound (xval) if 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) if zval SERVO_MAX: zval = SERVO_MAX LCD1602.write (8, 1, 'z =' + str (zval)) pwm.set_pwm (2, 0, zval)

αλλού:

εκτύπωση ("χωρίς στόχους") LCD1602.write (0, 0, "Shutting Down") LCD1602.write (0, 1, 'The Walabot') time.sleep (3) wlbt.stop () wlbt.disconnect ()

αν _name_ == '_main_':

ενώ True: main ()

για το guitareffect.sh

#!/bin/sh

cd /home /pi

sudo python GuitarEffectCLI.py

Αντίγραφο του τοπικού αρχείου RC για αναφορά

#!/bin/sh -e # # rc.local # # Αυτό το σενάριο εκτελείται στο τέλος κάθε επιπέδου runlevel πολλαπλών χρηστών. # Βεβαιωθείτε ότι το σενάριο θα "βγεί από το 0" για επιτυχία ή οποιαδήποτε άλλη # τιμή για σφάλμα. # # Για να ενεργοποιήσετε ή να απενεργοποιήσετε αυτό το σενάριο, απλώς αλλάξτε # bit εκτέλεσης. # # Από προεπιλογή, αυτό το σενάριο δεν κάνει τίποτα.

# Εκτυπώστε τη διεύθυνση IP

_IP = $ (όνομα κεντρικού υπολογιστή -I) || true αν ["$ _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.. αποδεικνύεται ότι είναι άσος
  • Διασυνδέθηκε με την Python στο Raspberry Pi με την υπηρεσία Blynk IoT. Αυτό δεν υποστηρίζεται επίσημα, οπότε υπάρχουν ορισμένα όρια στις λειτουργίες του. Ακόμα δουλεύει άψογα όμως!
  • Αποδεικνύεται ότι το Walabot είναι εξαιρετικό για μουσική έκφραση. Το χρησιμοποίησα σε ένα Korg SDD3000, αλλά μπορείτε να χρησιμοποιήσετε οποιοδήποτε εφέ σας αρέσει

Πηγαίνετε μόνοι σας. Αυτό δεν περιορίζεται στα εφέ κιθάρας, μπορώ να χρησιμοποιηθώ με οποιοδήποτε όργανο με οποιοδήποτε εφέ.

Διαγωνισμός Raspberry Pi 2017
Διαγωνισμός Raspberry Pi 2017
Διαγωνισμός Raspberry Pi 2017
Διαγωνισμός Raspberry Pi 2017

Επόμενος στο Διαγωνισμό Raspberry Pi 2017

Συνιστάται: