INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-23 12:53
Inleiding:
Ek is nuut in die werk met Arduino, maar ek hoop om my kennis uit te brei deur ander te leer en terugvoer te ontvang. Dit is 'n baie basiese MIDI -kontroleerder met 4 knoppies en 'n potensiometer. Die uiteensetting van hierdie projek lyk so:
1. Bou die broodbord op
2. Laai die skets op na die Arduino
3. Verstaan haarlose MIDI en interne MIDI -lus (loopbe1)
4. lei u MIDI na 'n DAW (Ableton)
Voorrade
1 x Arduino Mega 2560
1 x broodbord
1 x USB -kabel
1 x Potensiometer
4 x Tact -knoppies
4 x 120 Ohm weerstande
14 x springkabels vir broodbord
Stap 1: Bou die broodbord uit
Koppel u broodbord sodat al die komponente ooreenstem met prent 1 hierbo. Elke knoppie moet dieselfde lyk as prent 2. Knoppie -insette is 2, 3, 4 en 5 op die Arduino en die middelste pen van die potensiometer is gekoppel aan ANALOG -ingang A0.
Stap 2: Laai die skets op
Kopieer en plak die onderstaande kode in die Arduino IDE. Kies die korrekte bord onder 'gereedskap' en laai die skets op na die Arduino.
byte noteON = 144; // noot op commandbyte noot; // stoorplek vir die tans speel noot int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int potPin = A0; boolean currentState = LOW; // stroage for current button state boolean lastState = LOW; // berging vir die opstel van die laaste knoppie toestand () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); pinMode (buttonPin3, INPUT); pinMode (buttonPin4, INPUT); // hierdie keer stel ons die pen as INPUT Serial.begin (9600); // initialiseer Serial connection} void loop () {int PotVal = analogRead (potPin); bytesnelheid = kaart (PotVal, 0, 1023, 0, 127); currentState = digitalRead (buttonPin1); if (currentState == HIGH && lastState == LOW) {MIDImessage (noteON, 60, snelheid); // skakel noot 60 aan met 127 snelheidsvertraging (200); // ruwe vorm van knoppie wat weerkaats} anders as (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // skakel noot 60 vertraging af (2); // ru vorm van knoppie -ontbinding} lastState = currentState; currentState = digitalRead (buttonPin2); if (currentState == HIGH && lastState == LOW) {// as net op die knoppie gedruk is MIDImessage (noteON, 61, snelheid); // skakel noot 60 aan met 127 snelheidsvertraging (200); // ru vorm van knoppie debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // skakel noot 60 af vertraging (2); // ru vorm van knoppie wat ontbreek} lastState = currentState; currentState = digitalRead (buttonPin3); if (currentState == HIGH && lastState == LOW) {// as net op die knoppie gedruk is MIDImessage (noteON, 62, snelheid); // skakel noot 60 aan met 127 snelheidsvertraging (200); // ru vorm van knoppie debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // skakel noot 60 af vertraging (2); // ru vorm van knoppie wat ontbreek} lastState = currentState; currentState = digitalRead (buttonPin4); if (currentState == HIGH && lastState == LOW) {// as net op die knoppie gedruk is MIDImessage (noteON, 63, snelheid); // skakel noot 60 aan met 127 snelheidsvertraging (200); // ru vorm van knoppie debouncing} else if (currentState == LOW && lastState == HIGH) {MIDImessage (noteON, 60, 0); // skakel noot 60 af vertraging (2); // ru vorm van knoppie wat ontbreek} lastState = currentState; } // stuur MIDI -boodskap leeg MIDImessage (byte -opdrag, byte -data1, byte -data2) {Serial.write (command); Serial.write (data1); Serial.write (data2); }
Ek is nog steeds baie nuut in die skryf van kode … in die algemeen kan diegene met 'n bietjie meer ervaring dit opruim …
Stap 3: Verstaan haarlose MIDI- en interne MIDI -lusse
Die Arduino moet deur 'n seriële brug soos Hairless MIDI loop, dan deur 'n interne MIDI -lus, soos loopbe1 (of IAC -bus vir Mac).
Let wel: u kan nie 'n skets na die Arduino oplaai terwyl dit aan die haarlose MIDI -seriële brug gekoppel is nie.
Kies u Arduino in die Hairless MIDI -seriële poort en loopbe1 of IAC Bus in die MIDI out.
Let wel: maak seker dat die demp nie aan is as u loopbe1 gebruik nie.
Stap 4: Koppel aan u DAW
As u 'n sein na die Hairless MIDI -app kry as u op 'n knoppie op die broodbord druk (ligte flikker), moet u MIDI -data na 'n DAW kan stuur. Ek het Ableton gebruik, maar enige DAW behoort te werk. Maak seker dat u interne MIDI -lus (loopbe1) aangeskakel is in u DAW -voorkeure (in Ableton wil u hê dat 'track' geaktiveer moet word). Kies dan een van u MIDI -spoorinvoer na die MIDI -lus (loopbe1) soos in die prent hierbo getoon.
Stap 5: Speel
Die knoppies werk nou soos enige ander MIDI -beheerder! Die potensiometer verander die snelheid van die note wat na die DAW gestuur word. Die (baie donker …) video hierbo toon 'n vleuelklavier in aksie!
Aanbeveel:
NAIN 1.0 - die basiese humanoïde robot met behulp van Arduino: 6 stappe
NAIN 1.0 - die basiese Humanoid -robot wat Arduino gebruik: Nain 1.0 sal basies 5 afneembare modules hê - 1) Arm - wat via servo's beheer kan word. 2) Wiele - wat met gsm -motors beheer kan word. 3) Been - Nain sal kan wissel tussen wiele of bene vir beweging. 4) Kop &
Basiese tutoriaal vir Arduino Bluetooth: 6 stappe (met foto's)
Arduino Bluetooth Basiese tutoriaal: UPDATE: DIE OPDATERDE VERSIE VAN HIERDIE ARTIKEL KAN HIER GEVIN WORD, het u al ooit daaraan gedink om elektroniese toestelle met u slimfoon te beheer? Hier is 'n eenvoudige en basiese
Basiese Arduino Light Intensity Lamp!: 5 stappe
Basiese Arduino Light Intensity Lamp!: Die kring van vandag is 'n prettige klein Arduino -projek vir kwarantyn! Hierdie kring fokus op twee interessante materiale; die Relay SPDT & Fotoresistor. Boonop is die doel van relais om elektronies 'n skakelaar in 'n stroombaan te wees. Verder, fotore
Interfacing drukknop - basiese beginsels van Arduino: 3 stappe
Interfacing drukknop - basiese beginsels van Arduino: die drukknop is 'n komponent wat twee punte in 'n stroombaan verbind wanneer u daarop druk. volt (deur die optrekresi
Arduino Uno -tutoriaal #1 - Basiese knipprogram: 4 stappe
Arduino Uno Tutorial #1 - Basiese knipprogram: Hallo almal! Ek is bly om my eerste instruksies te publiseer! Hierdie idee het by my opgekom toe ek gesukkel het om my Arduino Uno te laat werk, so as ek 'n paar probleme ondervind het, sal ek 'n verduideliking aan al die mense hier gee, soos ek nie weet nie