Obsah:
- Krok 1: Súčasti Verzamelen
- Krok 2: Prototyp Bouwen
- Krok 3: Prototyp kódu
- Krok 4: Prototyp Uittesten
- Krok 5: Behuizing „ontmantelen“En Kijken Welke Componenten Gebruikt Gaan Worden
- Krok 6: Werking Originele Buttons + Dremelen
- Krok 7: Bedrading Solderen + Buttons Vastlijmen
- Krok 8: Plaaty vyrobené v De Behuizing
- Krok 9: Bedrading Aansluiten Op Protobord
- Krok 10: Verstevigen
- Krok 11: Code Voor Het Communiceren Met Reaper
- Krok 12: Ovládač Uittesten
Video: Projekt Guitar Hero Arduino: 12 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:01
Vyberte si jednu z nasledujúcich kategórií: Justin Cavanas a Wannes Stroobandt, kde študujeme multimédiá a komunikačnú technológiu. Váš Groepsproject obsahuje množstvo audiovizuálnych a IT princípov, ktoré nájdete v hlavnom článku Gitara-hlavná hra s veľkým počtom MIDI ovládačov. Hore sa pohyboval po celom svete. Väčšina ovládačov sa líši od bežných noriem. Aangezien weets hebben gehackt hebben we er niet veel extra materiaal in moeten verwerken.
In bebeelding can un allereerste schets op paper zien van hoe het eindproduct er zou moeten uitzien met daarnaast een foto van de gitaar die ass behuizing zal worden gebruikt.
Teraz môžete začať s ďalším projektom, ktorý by mohol mať nasledujúci rozsah:
slapyak.wordpress.com/guitar-hero-midi-con…
www.instructables.com/id/Converting-a-rescu…
gizmodo.com/391834/turn-your-guitar-hero-g…
Projekt Benodigdheden voor dit
- 6 tlačidiel Kleine
- 7 1kohm odpory
- 1 dióda LED 1
- blauwe LED
- 1 Arduino Uno R3
- 1 Groene LED
- 2 jazdené LED diódy
- 1 schuifschakelaar
- 1 chlebník
- 1 potenciometer
- 1 protobord
- 1 gitaar Guitar Hero
- Voldoende posteľné obliečky
- Materiál spájky/dremelen/
- Schroevendraaier
Krok 1: Súčasti Verzamelen
Väčšina prototypov (na chlebových doskách), ktoré sú k dispozícii, majú nasledujúce komponenty:
6 tlačidiel
7 1kohm odpory
1 žltá LED dióda
1 modrá LED dióda
1 Arduino Uno R3
1 zelená LED dióda
2 Červená LED dióda
1 Schuifschakelaar
1 Breadboard
1 potenciometer
Krok 2: Prototyp Bouwen
Naše prototypy môžu obsahovať rôzne prvky, ako sú napríklad dosky na chlieb, testovacie objekty a ďalšie testovacie objekty, z ktorých sme zisťovali počet meteorov pri hľadaní. Pozrite sa na prototyp projektu, ktorý nájdete na webovej stránke tinkercad.com, pričom si môžete najskôr pozrieť jeho prototyp a prototyp.
Viac ako 5 tlačidiel tlačí všetky tlačidlá, ako napríklad, spájajú všetky tlačidlá, ktoré kombinujú jeden z najdôležitejších „chrapľavých“tlačidiel, ktoré zhoršujú štruktúru audia. Naše rôzne LED diódy môžu ovládať alebo ovládať všetky svoje interakcie.
Krok 3: Prototyp kódu
Globale variabelen
Inicializácia všetkých kódov inicializátora je globálna variabilita vašich kolíkov od dodávateľov, ktorí používajú všetky tlačidlá, ako tlačiť.
// čísla pinov zet waar mainButton (snaar) en andere buttons aan verbonden zijn: const int mainButton = A1; // gitaar snaar const int lightSensor = A0; tlačidlo const intPin1 = 2; // nummer van pushbutton1 const int buttonPin2 = 3; // nummer van pushbutton2const int buttonPin3 = 4; // nummer van pushbutton3const int buttonPin4 = 5; // nummer van pushbutton4const int buttonPin5 = 6; // nummer van pushbutton5
Hierna worden er twee arrays aangemaakt voor de namen van de pushbuttons en hun pinnummer.
const int aantalKnoppen = 5; const Reťazec namenKnoppen [aantalKnoppen] = {"knop 1", "knop 2", "knop 3", "knop 4", "knop 5"}; const int knopPinnen [aantalKnoppen] = {2, 3, 4, 5, 6};
Môžete si vybrať z rôznych variantov LED diód.
const int ledPin1 = 13; // číslo kolíka LED 13
const int ledPin2 = 12; // počet pinov LED 12 const int ledPin3 = 11; // počet pinov LED 11 const int ledPin4 = 10; // počet pinov LED 10 const int ledPin5 = 9; // počet pinov LED 9 const int potPin = A5; // počet LED kolíkov A5
Globálne variabilné variabilné diódy sú tiež k dispozícii vo všetkých štátoch (ako sú tlačidlá vybavené štruktúrou malého potenciometra, lichtsensor).
// tlačidlo inicializátoraStavy voor de knoppen (ingedrukt of niet) int mainButtonState = 0; int buttonState1 = 0; int buttonState2 = 0; int buttonState3 = 0; int buttonState4 = 0; int buttonState5 = 0; int lightSensorState = 0; int potValue = 0; int lightValue = 0;
Nastaviť
Nulové možnosti nastavenia. Deze is van het type neplatné (geeft geen waarde terug) en de instructies hierin worden maar 1 keer uitgevoerd.
Všetky funkcie sú komentáre, ktoré sú stručné a zreteľné. Extra uitleg over watieen functie concreet doet is te vinden in de arduino reference
void setup () {// rýchlosť prenosu dát za sekundu (prenosová rýchlosť) alebo vyššia prenosová rýchlosť dát Serial.begin (9600); // Inicializátor premenných LEDPin môže tiež mať výstup pinMode (ledPin1, OUTPUT); pinMode (ledPin2, OUTPUT); pinMode (ledPin3, OUTPUT); pinMode (ledPin4, OUTPUT); pinMode (ledPin5, OUTPUT); // všetky inicializačné tlačidlá ako vstup: pinMode (mainButton, INPUT); pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); pinMode (buttonPin5, INPUT); pinMode (potPin, INPUT); pinMode (lightSensor, INPUT); }
Prázdna funkcia
Na základe nastavenej () funkcie voľnej smyčky () funkcie, pokyny k hierarchickej situácii, ako sa zhoršujú.
void loop () {// lees de staat van de pushbuttons uit (ingedrukt of niet) mainButtonState = digitalRead (mainButton); buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); buttonState3 = digitalRead (buttonPin3); buttonState4 = digitalRead (buttonPin4); buttonState5 = digitalRead (buttonPin5);
// všetky stavy tlačidiel v poli
int buttonStates = {buttonState1, buttonState2, buttonState3, buttonState4, buttonState5};
// leest de waarde uit van de potenciometer en de lichtsensor
potValue = analogRead (potPin); lightValue = analogRead (lightSensor);
// deklarovať hlavné pole Štáty, ktoré majú za následok nedostatok 0 palcov.
int mainStates = {0, 0, 0, 0, 0};
// slučka nad poľom aantalKnoppen
pre (int i = 0; i <aantalKnoppen; i ++) {pinMode (knopPinnen , INPUT); // inicializátor všetkých knopPinnen ako vstup digitalRead (knopPinnen ); // lees de waarde van alle knoppinnen uit // indien de mainswitch (snaar) ingedrukt is, print all all knopnamen, all all buttonstates if (mainButtonState == HIGH) {Serial.print (namenKnoppen ); Serial.print (","); Serial.println (buttonStates ); }}
Krok 4: Prototyp Uittesten
Nasledujúci prototyp gebouwd je volgens ons model en de code geschreven is in Processing, is het tijd om het prototyp uit te testen. Op de video is you zien dat all all knoppen een reactie geven op de bijhorende ledjes en dat ook combinationaties van knoppen mogelijk zijn.
In tweede video is you zien hoe onze tremolo werkt aan de hand van een poteniometer in de gitaar en hoe de waardes worden uitgelezen in Processing.
Krok 5: Behuizing „ontmantelen“En Kijken Welke Componenten Gebruikt Gaan Worden
Tiež sú správne kódované prototypy prototypov, ktoré sme začali stretávať s ďalšími "gitarovými hrdinami". Viac informácií nájdete v hlavnom článku pôvodných komponentov, z ktorých si môžete vybrať, či chcete, alebo nie. Niektoré z našich tlačidiel zapíname vlastnými tlačidlami gekregen (zie volgende stap). Viac informácií nájdete v hlavnom článku (prvé tlačidlo na kombináciu rôznych tlačidiel), kliknite na pôvodné tlačidlá geotextu (zie vierde foto). Podľa toho, ako sa správame, čítame všetky potrebné informácie, aby sme zistili všetky správne chyby.
Krok 6: Werking Originele Buttons + Dremelen
Nasledujúce video je k dispozícii vo všetkých pôvodných verziách, ktorých súčasťou je tiež široké spektrum efektov, ktoré môžete kombinovať s kombináciou dodávok.
Viac informácií o pôvodných tlačidlách získate z pôvodného počtu pôvodných výrobcov, dodávateľov a dodávateľov, ktorí môžu zoologickú záhradu navštíviť.
Krok 7: Bedrading Solderen + Buttons Vastlijmen
Všetko, čo sa stretávame, je, že sme narazili na rôzne dosky. Pozrite sa, ako tlačíme veľké množstvo zoologických záhrad v Ziene a op foto. Eens dit gebeurd is kunnen we doorgaan naar de volgende stap.
Krok 8: Plaaty vyrobené v De Behuizing
Omdat dit Guitar Hero-model redelijk krap was om mee te werken hebben we extra plaats moeten maken d.m.v. dremelen. Pozrite sa, ako to dopadne, keď sa pozrieme na to, ako sme sa presťahovali. Viac informácií o všetkých prekážkach upozorňujeme, že budeme musieť začať pracovať, pretože v dôsledku toho zomrieme. Op d vierde en vijfde foto is you zien dat we in de achterkant van de gitaar een doorgang hebben gecreëerd voor de draden die naar de buttons gaan omdat de gitaar anders niet meer te sluiten was. Fotografie, ktoré sa oplatí vidieť, sa odvíjajú od začiatku, keď sa stretnete s dverami Arduina, kde nájdete množstvo zaujímavých faktov.
Krok 9: Bedrading Aansluiten Op Protobord
Všetky tieto komponenty sa stretnú s veľkým počtom hlavných protagonistov. To je všetko, čo je dôležité pre efektívnu prácu. Ponúkame viac fotografií zo zoologickej záhrady, ktoré môžete vidieť. Väčšina z nich sa sústreďuje na najdôležitejšiu časť hry (zie foto 2).
Krok 10: Verstevigen
Dokončovací dotyk je tiež veľmi stabilný. Op deze foto is te zien hoe we het deel dat we er hebben uitgehaald d.m.v. dremelen achteraan de buttons verstevigen met stukjes karton.
Krok 11: Code Voor Het Communiceren Met Reaper
Deze kód je k dispozícii v dvoch verziách, zatiaľ čo ostatné sú k dispozícii v IDE (interaktívne vývojové prostredie). Zadajte kód, aby ste mohli načítať arduino zelf en dient all all waarden van de brands van de midi controller uit te lezen en door to sturen naar processing.
Spracovanie je tweede gedeelte. Všetky kódy môžu obsahovať všetky druhy dverí a dverí a otvárať dvere Reaper.
Arduino
/* Tento kód je základným náčrtkom na komunikáciu so sériovým spracovaním.
Je to plán, do ktorého môžete vložiť svoj vlastný kód
určené pre vaše vlastné tlačidlá, potenciometre alebo senzory.
Má to podanie ruky, aby sme sa uistili, že sme v kontakte
a je rozhodnuté o formáte, v ktorom komunikujeme
Je dôležité zostaviť správu rovnakým spôsobom, aby Processing vedel, ako ho dekonštruovať a odosielať správne správy OSC do nášho DAW
vyrobené pre werkcollege AV&IT
október 2017
*
/ prenosová rýchlosť
konštantná prenosová rýchlosť = 115200;
// čas čakania v ms medzi hlasovaniami na piny
const int loopPauseTime = 200; // milisekundy
// počiatočné a koncové hodnoty pre správu odoslanú na Serial
const Reťazec startString = "*", endString = "#";
const char contactCharacter = '|';
// identifikátory pinov
// ostatné globálne premenné
const int aantalKnoppen = 5; const Reťazec namenKnoppen [aantalKnoppen] = {"knop 1", "knop 2", "knop 3", "knop 4", "knop 5"}; const int knopPinnen [aantalKnoppen] = {2, 3, 4, 5, 6}; const int mainButton = A1;
int mainButtonState = 0;
int potValue = 0;
// analoge senzory
const int potPin = A5; // pin voor tremolo
// Túto funkciu potrebujeme na nadviazanie kontaktu so skice spracovania
// Ponechajte to tu neplatné estabContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // odoslanie znaku a čakanie na odpoveď … zdržanie (loopPauseTime); } Serial.read (); }
neplatné nastavenie () {
// nastavenie pinModes pre všetky piny pre (int i = 0; i <aantalKnoppen; i ++) {pinMode (knopPinnen , INPUT); } pinMode (mainButton, INPUT); // odkomentujte, ak použijete senzory, ktoré pracujú na 3V namiesto 5V // budete musieť zapojiť pin 'ext' aj na 3,3V // analogReference (EXTERNAL);
// inicializácia sériových komunikácií
Serial.begin (baudRate); while (! Serial); // pockaj na handshake zavedenieContact (); }
prázdna slučka () {
// KROK 1: TLAČIDLÁ PREČÍTAJTE // vyzvite všetky piny a namapujte čítanie na príslušný rozsah int buttonStates [aantalKnoppen]; /* buttonStates [0] = digitalRead (knopPinnen [0]); buttonStates [1] = digitalRead (knopPinnen [1]); buttonStates [2] = digitalRead (knopPinnen [2]); buttonStates [3] = digitalRead (knopPinnen [3]); buttonStates [4] = digitalRead (knopPinnen [4]); */ mainButtonState = digitalRead (mainButton); pre (int i = 0; i <aantalKnoppen; i ++) {buttonStates = digitalRead (knopPinnen ); } potValue = analogRead (potPin); // príklady: // float v0 = mapa (bpm, 0, 1023, 60, 250); // ak chcete použiť normalizovaný float (napr. pre hlasitosť) // float v1 = mapa (analogRead (pin2), fromMin, fromMax, 0, 100) / 100.0;
// KROK 2: NAPÍŠTE SPRÁVU
Serial.print (startString); // spustenie sekvencie správ pre (int i = 0; i <aantalKnoppen; i ++) {if (mainButtonState == HIGH) {Serial.print (namenKnoppen ); Serial.print (","); Serial.print (buttonStates ); if (i <aantalKnoppen - 1) {Serial.print (","); }} else {buttonStates = 0; Serial.print (namenKnoppen ); Serial.print (","); Serial.print (buttonStates ); if (i <aantalKnoppen - 1) {Serial.print (","); }}} Serial.print (","); Serial.print ("tremolo"); Serial.print (","); Serial.print (mapa (potValue, 0, 1023, 0, 100)); // napíšte koniec správy Serial.print (endString);
// počkajte chvíľu..
oneskorenie (loopPauseTime); }
Spracovanie
Disclaimer: Niet alle code van de processing sketch staat hier in geschreven, voor de volledige code zie het bestand: ProcessingSoundControl_handout_v6_1.pde in bijlage
Naše pokyny môžu zhoršiť (indien nodig):
// Baudrate moet hetzelfde zijn zoals in de arduino sketch
konečná int baudRate = 115200;
// Zoar naar IP address in reaper (zie screenshoty in bijlage)
// Spracovanie vzoriek je veľmi rozsiahle //
// final String remoteIP = "192.168.1.43"; // napr. "127.0.0.1";
final String remoteIP = "10.3.209.60";
// Poznačte si sendPort a zadajte ho do Reaper.
// Toto je port, na ktorý Processing odosiela a Reaper ho počúva.
konečné int počúvaťPort = 12000, sendPort = 12000;
// ListPort tu má aktívne ladiť.
// názvy portov sú tu aj na ladenie.
// final String portName = "/dev/ttyACM0";
final String portName = "COM5"; // "/dev/ttyUSB0";
/////////////////////// KONIEC UŽÍVATEĽSKÝCH PARAMETROV // ///////////////////////////// ////
spracovanie importu.sériové.*;
import java.util.*;
import oscP5.*;
import netP5.*;
OscP5 oscP5;
NetAddress myRemoteLocation;
Sériový komunikačný port; // Sériový port
boolean messageArrived = false;
String incoming = "", IncomingOSCMessage = "";
final char startChar = '*', endChar = '#'; final char contactCharacter = '|';
// Aby sme sa uistili, že odosielame iba parametre (hodnoty), ktoré sa zmenia
// tieto globálne premenné sú tu vymazané, ale nemali by // sa tu inicializovať! HashMap oldParams, newParams, toSendParams;
// Správu musíme rozdeliť na každú čiarku
neplatný processIncoming () {String resVec = incoming.split (","); // dostaneme páry meno+hodnota // takže pre každé meno (+2) … skúste {for (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+ 1]); // vložte ich do nového Hashtable newParams.put (resVec , hodnota); }} // ak sa vyskytne chyba, zachytíme ju a ukončíme. catch (Exception ex) {println ("Správa o výnimke:" + ex); printArray (resVec); východ(); }}
// Na filtrovanie našich správ
/ * Zaisťujeme, aby existovala iba správa s výstupom OSC, keď sa * zmení vstupná správa (sériová) * To znamená: ak otočíme/stlačíme tlačidlo a zmení sa hodnota. * Odfiltrujeme teda prichádzajúce hodnoty, ktoré sa v skutočnosti menia * poznámka: nevyhneme sa skokovým hodnotám *, ktoré pochádzajú napr. Od akcelerometrov alebo senzorov vzdialenosti * budete ich musieť vyhladiť sami v Arduino */ void filterParams () {toSendParams = nový HashMap (); for (String key: newParams.keySet ()) {// if the key is already present if (oldParams.containsKey (key)) {// key present and value not the same, then update if (! oldParams.get (key).equals (newParams.get (key))) {toSendParams.put (key, newParams.get (key)); }} else {// kľúč nie je v starých parametroch, tak ho dajte! toSendParams.put (kľúč, newParams.get (kľúč)); } oldParams.put (kľúč, newParams.get (kľúč)); }}
zrušiť makeOSC () {
for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ key); myMessage.add (toSendParams.get (kľúč)); / * poslať správu */ oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {
processIncoming (); filterParams (); makeOSC (); } // Keď chceme vytlačiť do okna neplatné ShowIncoming () {//, aby sme videli prichádzajúcu správu, ako je nastavené v texte HashMap („Prichádzajúce z Arduina“, 20, 20); int y = 20; pre (Kľúč reťazca: newParams.keySet ()) {y = y+20; text (kľúč, 20, y); text (newParams.get (kľúč), 300, y); }}
neplatné showOsc () {
text (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }
neplatné nastavenie () {
veľkosť (1000, 800); // výplň veľkosti pódia (255); pozadie (0); oldParams = nový HashMap (); newParams = nový HashMap (); // printArray (Serial.list ()); commsPort = new Serial (this, portName, baudRate);
/ * spustite oscP5, počúvajte prichádzajúce správy */
oscP5 = nový OscP5 (this, listenPort);
/* myRemoteLocation je NetAddress. sieťová adresa má 2 parametre, * IP adresa a číslo portu.myRemoteLocation sa používa ako parameter v * oscP5.send () pri odosielaní paketov osc do iného počítača, zariadenia, * aplikácie. použitie viď nižšie. na testovacie účely sú počúvací port * a port adresy vzdialeného umiestnenia rovnaké, a preto budete * posielať správy späť na tento náčrt. */ myRemoteLocation = nová sieťová adresa (remoteIP, sendPort); }
void draw () {
if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = false; } showOsc (); }
void serialEvent (Serial commsPort) {
// načítanie bajtu zo sériového portu: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // požiadajte o viac println („začína …“); prestávka; prípad startChar: incoming = ""; prestávka; case endChar: messageArrived = true; // println ("koniec spravy"); prestávka; predvolené: prichádzajúce += inChar; prestávka; }}
/* prichádzajúce správy osc sú preposlané na metódu oscEvent. */
void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // získajte 1. argument osc
IncomingOSCMessage += "\ n" +
String.format ("### prijal správu osc:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", hodnota); println (IncomingOSCMessage); }
Krok 12: Ovládač Uittesten
Nu alles is aangesloten, all code is geschreven en alles is gedubbelcheckt is het eindelijk tijd om de controller z'n werk te laten doen. Pozrite sa na niekoľko efektov, ktoré ponúka Reaper s veľkým výberom MIDI ovládača Guitar Hero!
Odporúča:
Použitie gitary Guitar Hero na ovládanie lupy (iba Windows): 9 krokov
Použitie gitary Guitar Hero na ovládanie lupy (iba Windows): Keďže sme uprostred globálnej pandémie, mnohí z nás uviazli v upratovaní domu a pripájajú sa k schôdzam v programe Zoom. Po určitom čase to môže byť veľmi nevýrazné a únavné. Pri upratovaní môjho domu som našiel starú gitaru Guitar Hero, ktorú vhodili do
Oprava odpojenia gitary od spoločnosti Guitar Hero: 5 krokov (s obrázkami)
Oprava odpojenia gitary Guitar Hero: Takže ste si kúpili túto peknú použitú gitaru pre gitarových hrdinov z ebay a keď vám prišla, jednoducho sa nepripojí k tomuto USB donglu, takže si myslíte, že ste práve minuli 30 € dolu odtokom. Existuje však oprava a táto oprava bude pravdepodobne fungovať
MIDI bicie Arduino (Wii Band Hero)+DAW+VST: 6 krokov (s obrázkami)
MIDU bicie Arduino (Wii Band Hero)+DAW+VST: Ahoj! Tento tutoriál je o úprave súpravy konzoly Wii pre bicie, hrdinu kapely, v ktorom nájdete nástrahu, 2 tomy, 2 činely a kick pedál. Tiež ako získať zvuk zo súpravy bicích nástrojov pomocou podrobného sprievodcu pomocou bezplatných dostupných DAW a VST. Just
Oprava bubna Guitar Hero: World Tour: 6 krokov
Oprava bubna Guitar Hero: World Tour: S bubnami GH: World Tour boli zaznamenané určité problémy. Tento návod si kladie za cieľ opraviť tieto problémy a zároveň riadne zrušiť záruku. Ak je vaša červená hlava bubna nefunkčná, alebo možno váš oranžový činel, alebo skutočne akýkoľvek problém, ktorý zákon
Epické! Guitar Hero - gitara s dvojitým krkom zlyhanie: 7 krokov (s obrázkami)
Epické! Guitar Hero - gitara s dvojitým krkom … Neúspech: V roku 2015 si pripomíname 10. výročie fenoménu popkultúry Guitar Hero. Pamätáte si, videohra, ktorá sa stala populárnejšou ako hudobný nástroj, sa jej len matne podarilo napodobniť? Ako lepšie osláviť desaťročie, než