Obsah:
- Krok 1: Componenten 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 vytvořené v De Behuizing
- Krok 9: Bedrading Aansluiten Op Protobord
- Krok 10: Verstevigen
- Krok 11: Code Voor Het Communiceren Met Reaper
- Krok 12: Ovladač Uittesten
Video: Projekt Guitar Hero Arduino: 12 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:24
Prohlédněte si Maarten Vrebos, Justin Cavanas a Wannes Stroobandt a studujeme multimediální a komunikační technologie. Váš hlavní audiovizuální a IT principy, zásady, návody, návody, návody, návody, návody, návody, návody, návody, návody Het was onze bedoeling om de bestaande knoppen op de gitaar intern te vervangen. Řídicí jednotka zapne všechny běžné a běžné normály. Aangezien weets hebben gehackt hebben we er niet veel extra materiaal in moeten verwerken.
Pokud jde o práci, můžete použít všechna schémata, která se budou týkat papírů, které vám pomohou s výrobou fotografií, ale také se setkáte s dalšími fotografiemi.
Naše největší nároky na projekt gebaseerd op volgende bronnen:
slapyak.wordpress.com/guitar-hero-midi-con…
www.instructables.com/id/Converting-a-rescu…
gizmodo.com/391834/turn-your-guitar-hero-g…
Benodigdheden voor dit project
- 6 kleine tlačítek
- 7 1kohm odpory
- 1 gele LED 1
- blauwe LED
- 1 Arduino Uno R3
- 1 groene LED
- 2 jel LED
- 1 schuifschakelaar
- 1 prkénko
- 1 potenciometr
- 1 protobord
- 1 gitaar Guitar Hero
- Voldoende bedrading
- Materiál pájky/dremelen/
- Schroevendraaier
Krok 1: Componenten Verzamelen
Hlavní prototyp (opalovací lišta) hebben we volgende componenten gebruikt:
6 tlačítek
7 1kohm odpory
1 žlutá LED
1 modrá LED
1 Arduino Uno R3
1 zelená LED
2 Červená LED
1 Schuifschakelaar
1 prkénko
1 potenciometr
Krok 2: Prototyp Bouwen
Všichni jsme prototypem, který jsme si vybrali, že jsme si vybrali základní desku, kterou jsme vybrali, a také jsme testovací objekt zodat, že jsme se setkali s měřením počasí. Jak prototyp hebben we dan ook gedigitaliseerd via tinkercad.com, op deze manier hadden we een duidelijk overzicht van ons prototype dat elk groepslid ook kon bewerken.
Více než 5 tlačítek se může pochlubit více než 5 tlačítky, která se spojí a spojí se s větším množstvím efektů, které způsobují zhoršení efektu audiovizuálního efektu a krizí. Různé LED diody mají různé možnosti ovládání a ovládání.
Krok 3: Prototyp kódu
Globale variabelen
V první řadě je inicializátorem globálních variabilních variant kolíků van arduino uno waar all all pushbuttons mee verbonden zijn.
// čísla pinů zet waar mainButton (snaar) en andere buttons aan verbonden zijn: const int mainButton = A1; // gitaar snaar const int lightSensor = A0; tlačítko 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 String namenKnoppen [aantalKnoppen] = {"knop 1", "knop 2", "knop 3", "knop 4", "knop 5"}; const int knopPinnen [aantalKnoppen] = {2, 3, 4, 5, 6};
Různé varianty kolíků a LED světel.
const int ledPin1 = 13; // číslo LED diody 13
const int ledPin2 = 12; // počet pinů LED 12 const int ledPin3 = 11; // počet pinů LED 11 const int ledPin4 = 10; // počet pinů LED 10 const int ledPin5 = 9; // počet pinů LED 9 const int potPin = A5; // počet LED diod A5
Globální variabilní variabilita dienů zahrnuje také různé typy senzorů (zijn de pushbuttons ingedrukt of niet? Poteniometer, lichtsensor).
// inicializátor buttonStates 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;
Založit
Nulové možnosti nastavení. Deze is van het type void (geeft geen waarde terug) en de instructies hierin worden maar 1 keer uitgevoerd.
Všechny funkce jsou komentáře, které vám pomohou najít konkrétní slovo. Extra uiteleg over watieen specificke functie concreet doet is te vinden in de arduino reference
neplatné nastavení () {// rychlost přenosu dat za sekundu (přenosová rychlost) nebo vyšší přenos dat Serial.begin (9600); // Inicializátor proměnných ledPin také jako výstup pinMode (ledPin1, OUTPUT); pinMode (ledPin2, OUTPUT); pinMode (ledPin3, OUTPUT); pinMode (ledPin4, OUTPUT); pinMode (ledPin5, OUTPUT); // všechna inicializační tlačítka jako 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ázdná funkce
Na de setup () funkce volgt de loop () functie, de instructies die hierin staan gaan herhaald uitgevoerd worden.
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šechny stavy tlačítek 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);
// deklarovat hlavní pole pole Stát jako standaard waarden 0 palců
int mainStates = {0, 0, 0, 0, 0};
// smyčka přes pole aantalKnoppen
for (int i = 0; i <aantalKnoppen; i ++) {pinMode (knopPinnen , INPUT); // inicializátor všech knopPinnen také vstup digitalRead (knopPinnen ); // lees de waarde van alle knoppinnen uit // indien de mainswitch (snaar) ingedrukt is, print allle knopnamen, alle buttonstates if (mainButtonState == HIGH) {Serial.print (namenKnoppen ); Serial.print (","); Serial.println (buttonStates ); }}
Krok 4: Prototyp Uittesten
Další prototyp gebouwd je volgens ons model en de code geschreven is in Processing, is het tijd om het prototype uit te testen. Op de video is all zien dat all all knoppen een reactie geven op de bijhorende ledjes en dat ook combinationaties van knoppen mogelijk zijn.
Video je tweede, což znamená, že potenciometr v ruce a potenciometr ve vašem počítači zhoršuje proces zpracování.
Krok 5: Behuizing „ontmantelen“En Kijken Welke Componenten Gebruikt Gaan Worden
Všechny kódové kódy byly správné a prototyp zijn jsme se setkali s het "ontmantelen" van onze Guitar Hero-gitaar. We hebben de gitaar opengemaakt met een schroevendraaier en bekeken welke originele componenten we eventueel nog zouden kunnen hergebruiken voor onze controller. Pokud chcete, můžete vlastní tlačítka zapnout nebo vypnout. We hebben de tremolo ook gebruikt voor ons eindproduct en voor onze hoofdbutton (initiële button om als een combinationatie af te spelen) hebben we ook de originele twee buttons gebruikt (zie vierde foto). Naše LED diody mohou být označeny správným způsobem.
Krok 6: Werking Originele Buttons + Dremelen
Hlavní video je to, co se děje a jak se to projevuje, ale také to může mít za následek generování všech kombinací van knoppen.
Naše vlastní tlačítka se mohou pochlubit původními prvky, které se mohou lišit od našich původních uživatelů, kteří mají zájem o tuto fotografii.
Krok 7: Bedrading Solderen + Buttons Vastlijmen
Omdat we niet meer met een breadboard wereken moeten de draden gesoldeerd worner om zo de verschillende componenten met elkaar te verbinden. Nejvíce se nám líbí, že jsme si vybrali tlačítka, která vám pomohou při prohlížení fotografií. Eens dit gebeurd is kunnen we doorgaan naar de volgende stap.
Krok 8: Plaaty vytvořené 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. Z tohoto důvodu jsme se rozhodli prodat více, než kolikrát budeme plavat, než se vydáme na procházku. Více informací se dozvíte, když se dozvíte více, než se dozvíte více o tom, že jsme zemřeli, ale my jsme nejlepší, co jsme potřebovali. Op de vierde en vijfde foto is te 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. Naše foto se dozvíte, když jsme se dozvěděli více o tom, jak jsme se s Arduinem setkali, a tak jsme se dostali ke dveřím.
Krok 9: Bedrading Aansluiten Op Protobord
Všechny součásti se setkaly se všemi prvky, které jsme získali. To je vše, co je důležité pro vlastní práci, ale také pro efektivní práci. We hebben de bedrading aan het bordje gesoldeerd zoals te zien is op de derde foto. To vše se soustředí hlavně na to, jak se blížíte sami (foto 2).
Krok 10: Verstevigen
Konečným dotykem je také maximální stabilita. 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 dispozici v twee delen, het eerste deel is in de arduino IDE (interactive development enviroment) geschreven. Kód kódu můžete načíst arduino zelf en dient all all waarden van de sensor van de midi controller uit te lezen en door te sturen naar processing.
Zpracování je tweede gedeelte. Všechny kódy mohou obsahovat všechny druhy dveří a dveří a také dveře.
Arduino
/* Tento kód je základní skica pro komunikaci se zpracováním přes sériový port.
Je to plán, do kterého můžete vložit vlastní kód
určené pro vaše vlastní tlačítka, potenciometry nebo senzory.
Má to podání ruky, abychom se ujistili, že máme kontakt
a je rozhodnuto o formátu, ve kterém komunikujeme
Je důležité sestavit zprávu stejným způsobem, aby Processing věděl, jak jej dekonstruovat a odeslat správné zprávy OSC do našeho DAW
vyrobeno pro werkcollege AV&IT
října 2017
*
/ přenosová rychlost
konstantní přenosová rychlost = 115200;
// čas na čekání v ms mezi hlasováním na piny
const int loopPauseTime = 200; // milisekund
// počáteční a koncové hodnoty pro zprávu odeslanou na Serial
const Řetězec startString = "*", endString = "#";
const char contactCharacter = '|';
// PIN ID
// jiné globální proměnné
const int aantalKnoppen = 5; const Řetězec 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;
// senzory analogové
const int potPin = A5; // pin voor tremolo
// Tuto funkci potřebujeme k navázání kontaktu s náčrtem Zpracování
// Ponechte to zde neplatné zaveďteContact () {while (Serial.available () <= 0) {Serial.print (contactCharacter); // pošlete znak a počkejte na odpověď… zpoždění (loopPauseTime); } Serial.read (); }
neplatné nastavení () {
// nastavení pinModes pro všechny piny pro (int i = 0; i <aantalKnoppen; i ++) {pinMode (knopPinnen , INPUT); } pinMode (mainButton, INPUT); // odkomentujte, pokud používáte senzory, které pracují na 3V místo na 5V // budete muset zapojit pin 'ext' také na 3,3V // analogReference (EXTERNAL);
// inicializace sériových komunikací
Serial.begin (baudRate); while (! Serial); // počkejte na handshake navázatContact (); }
prázdná smyčka () {
// KROK 1: TLAČÍTKA ČTENÍ // vyzvedněte všechny piny a namapujte čtení na pří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); for (int i = 0; i <aantalKnoppen; i ++) {buttonStates = digitalRead (knopPinnen ); } potValue = analogRead (potPin); // příklady: // float v0 = mapa (bpm, 0, 1023, 60, 250); // pokud chcete použít normalizovaný float (např. pro hlasitost) // float v1 = mapa (analogRead (pin2), fromMin, fromMax, 0, 100) / 100.0;
// KROK 2: NAPIŠTE ZPRÁVU
Serial.print (startString); // spuštění posloupnosti zpráv pro (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)); // napište konec zprávy Serial.print (endString);
// Počkej chvíli..
zpoždění (loopPauseTime); }
zpracovává se
Disclaimer: Niet all code van de processing sketch staat hier in geschreven, voor de volledige code zie het bestand: ProcessingSoundControl_handout_v6_1.pde in bijlage
De volgende instructies moeten aangepast worden (indien nodig):
// Baudrate moet hetzelfde zijn zoals in de arduino sketch
konečná int baudRate = 115200;
// Zoek naar het IP address in reaper (zie screenshoty in bijlage)
// Zpracování stuurt naar dit andres en reaper luistert hier naar //
// final String remoteIP = "192.168.1.43"; //např. "127.0.0.1";
final String remoteIP = "10.3.209.60";
// Poznamenejte si sendPort a vyplňte jej v Reaper.
// Toto je port, na který Processing posílá a Reaper poslouchá.
finální int poslouchat Port = 12000, sendPort = 12000;
// ListPort zde slouží k aktivnímu ladění.
// názvy portů jsou zde také k ladění.
// final String portName = "/dev/ttyACM0";
final String portName = "COM5"; // "/dev/ttyUSB0";
/////////////////////// KONEC UŽIVATELSKÝCH PARAMETRŮ ///////////////////////////// //////
zpracování 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 = '|';
// Abychom se ujistili, že odesíláme pouze parametry (hodnoty), které se mění
// tyto globální proměnné jsou zde odstraněny, ale neměly by // zde být inicializovány! HashMap oldParams, newParams, toSendParams;
// Zprávu musíme rozdělit na každou čárku
void processIncoming () {String resVec = incoming.split (","); // získáme páry název+hodnota // tedy pro každé jméno (+2) … zkuste {for (int i = 0; i <resVec.length; i+= 2) {float value = Float.parseFloat (resVec [i+ 1]); // vložte je do nového Hashtable newParams.put (resVec , hodnota); }} // pokud dojde k chybě, pojďme ji zobrazit a ukončit. catch (Exception ex) {println ("Exception Message:" + ex); printArray (resVec); výstup(); }}
// Filtrování našich zpráv
/ * Zajistíme, aby existovala pouze zpráva OSC out, když * se změní vstupní zpráva (sériová) * To znamená: pokud otočíme/stiskneme tlačítko a změní hodnotu. * Odfiltrujeme tedy příchozí hodnoty, které se ve skutečnosti mění * poznámka: nevyhneme se skokovým hodnotám * pocházejícím např. Z akcelerometrů nebo snímačů vzdálenosti * budete je muset vyhladit sami v Arduinu */ 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 (klíč))) {toSendParams.put (klíč, newParams.get (klíč)); }} else {// klíč ve starých parametrech není, tak to řekněte! toSendParams.put (klíč, newParams.get (klíč)); } oldParams.put (klíč, newParams.get (klíč)); }}
zrušit makeOSC () {
for (String key: toSendParams.keySet ()) {OscMessage myMessage = new OscMessage ("/"+ key); myMessage.add (toSendParams.get (klíč)); / * poslat zprávu */ oscP5.send (myMessage, myRemoteLocation); }}
void translateMessage () {
processIncoming (); filtrParams (); makeOSC (); } // Když chceme vytisknout do okna void ShowIncoming () {//, abychom viděli příchozí zprávu, jak je nastaveno v textu HashMap ("Příchozí z Arduina", 20, 20); int y = 20; pro (Klíč řetězce: newParams.keySet ()) {y = y+20; text (klíč, 20, y); text (newParams.get (klíč), 300, y); }}
void showOsc () {
text (IncomingOSCMessage, 300, 200); IncomingOSCMessage = ""; }
neplatné nastavení () {
velikost (1000, 800); // výplň velikosti plochy (255); pozadí (0); oldParams = nový HashMap (); newParams = new HashMap (); // printArray (Serial.list ()); commsPort = new Serial (this, portName, baudRate);
/ * spusťte oscP5, poslouchejte příchozí zprávy */
oscP5 = nový OscP5 (this, listenPort);
/* myRemoteLocation je NetAddress. síťová adresa má 2 parametry, * IP adresa a číslo portu.myRemoteLocation se používá jako parametr v * oscP5.send () při odesílání paketů osc do jiného počítače, zařízení, * aplikace. použití viz níže. pro účely testování jsou naslouchací port * a port adresy vzdáleného umístění stejné, a proto budete * posílat zprávy zpět do této skici. */ myRemoteLocation = new NetAddress (remoteIP, sendPort); }
void draw () {
if (messageArrived) {background (0); translateMessage (); ShowIncoming (); messageArrived = false; } showOsc (); }
void serialEvent (Serial commsPort) {
// načtení bajtu ze sériového portu: char inChar = commsPort.readChar (); switch (inChar) {case contactCharacter: commsPort.write (contactCharacter); // požádejte o další println („začíná…“); přestávka; případ startChar: incoming = ""; přestávka; case endChar: messageArrived = true; // println ("konec msg"); přestávka; výchozí: příchozí += inChar; přestávka; }}
/* příchozí zprávy osc jsou předávány metodě oscEvent. */
void oscEvent (OscMessage theOscMessage) {float value = theOscMessage.get (0).floatValue (); // získejte 1. argument osc
IncomingOSCMessage += "\ n" +
String.format ("### přijal osc zprávu:" + "addrpattern:" + theOscMessage.addrPattern () + ": %f", hodnota); println (IncomingOSCMessage); }
Krok 12: Ovladač Uittesten
Nu alles is aangesloten, all all code is geschreven en alles is gedubbelcheckt is het eindelijk tijd om de controller z'n werk te laten doen. Podívejte se na více efektů z Reaper ve hře s voltooide Guitar Hero MIDI ovladačem!
Doporučuje:
Použití Guitar Hero Guitar k ovládání zoomu (pouze Windows): 9 kroků
Použití kytary Hero Guitar k ovládání zoomu (pouze Windows): Protože jsme uprostřed globální pandemie, mnoho z nás se zaseklo v úklidu domu a připojování se k schůzkám na Zoom. Po nějaké době to může být velmi nevýrazné a únavné. Při úklidu svého domu jsem našel starou kytaru Guitar Hero, která byla vhozena do
Vytvořte si sadu Guitar Hero pro svůj počítač: 11 kroků
Vytvořte si sadu Guitar Hero pro svůj počítač: Tento článek se bude zabývat vytvořením sady pro váš počítač, která vám umožní procvičit vaše dovednosti v oblasti kytarových hrdinů pomocí softwaru s otevřeným zdrojovým kódem a částkou asi 30 dolarů
Klon Guitar Hero: 7 kroků (s obrázky)
Guitar Hero Clone: Chtěli jste někdy hrát Guitar Hero na počítači s vlastní domácí kytarou? Připravte se hrát za méně než 10 babek a trochu trpělivosti
Oprava bubnu Guitar Hero: World Tour: 6 kroků
Oprava bubnu Guitar Hero: World Tour: U bicích GH: World Tour byly zaznamenány některé problémy. Tento instruktáž si klade za cíl opravit tyto problémy při řádném zrušení záruky. Pokud je vaše červená hlava bubnu nefunkční, nebo možná váš oranžový činel, nebo opravdu jakýkoli problém, který zákon
Epické! Guitar Hero - kytara s dvojitým krkem selhání: 7 kroků (s obrázky)
Epické! Guitar Hero - kytara s dvojitým krkem … selhání: 2015 si připomíná 10 let od popového fenoménu Guitar Hero. Pamatujete si, že videohra, která se stala populárnější než hudební nástroj, se jí jen matně podařilo napodobit? Jaký lepší způsob, jak oslavit jeho desetiletí, než