Arduino Step Sequencer: 5 Schritte (mit Bildern) - 2020 - How ToDo Well

Arduino Step Sequencer: 5 Schritte (mit Bildern) - 2020 - How ToDo Well

Inhaltsverzeichnis:

Anonim

Ich habe mich gefragt, ob ich einen Sequenzer machen soll, einen großen 16-Step-Sequenzer wollte ich machen. Es ist eine vollständige Erweiterung mit vielen Funktionen, einschließlich einzelner LEDs für jeden Schritt, MIDI-Ein- und -Ausgang usw. Dann wurde mir klar, dass ich von einem einfacheren Modell ausgehen und mich dann vielleicht umsehen sollte, was ich tun kann. Beim Surfen im Internet und zwischen anderen kleinen Sequenzerprojekten fand ich diesen Arduino-Sequenzer mit dem Namen "Arduino-Punk-Konsole" nach dem einfachen Tonausgabegerät des 555 (Atari-Punk-Konsole) und dem Arduino als Tongenerator.
Hier ist also ein einfaches Projekt, das später geändert und in verschiedenen Projekten verwendet werden kann. Überprüfen Sie im letzten Schritt, ob weitere Details zu diesem Sequenzer vorliegen.
Das Schema, der Code und die ursprüngliche Idee stammen von Beavis Audio. Alles ist auf der Website zu finden:
www.beavisaudio.com
Hier ist ein kleines Vorschau-Video, das ich gemacht habe:

Zubehör:

Schritt 1: Materialien

Die Stückliste für dieses Projekt besteht aus:
  • X8 Taster, normalerweise offen.
  • X1 Kleiner DPDT-Kippschalter.
  • Unabhängig von der Farbe wird die X1-LED nur verwendet, um anzuzeigen, dass der Arduino eingeschaltet ist und funktioniert.
  • X9 10K Widerstände.
  • X4 100K Potentiometer.
  • X1 Female Stereo-Buchse, es kann 3,5 mm oder 6,3 mm sein.
  • X1-Kabel.
  • X1-Gehäuse, ich habe gerade eine einfache Hartplastikbox genommen.
  • X4 Knöpfe für die Töpfe, nur wenn Sie es wünschen.

Liste der auszuarbeitenden Werkzeuge:
  • Lötkolben.
  • Löten.
  • Bohren.
  • Pinzette.
  • Schraubendreher.

Schritt 2: Schaltplan und Verdrahtung

Dem Schema zu folgen ist ziemlich einfach. Was wir beachten müssen, ist, dass die 10K-Widerstände heruntergezogen sind. Dies bedeutet, dass sie an Masse angeschlossen sind und das Logiksignal halten, wenn kein anderes aktives Gerät angeschlossen ist. Sie müssen also den Draht, der zu den Arduino-Stiften führt, für die Schritte vom Druckknopf einhaken. Arduino-Pins von digital 10 bis 2 gehen auf Drucktasten.
Verbinden Sie dann alle Tasten mit dem Pluskabel des Topfes und schließen Sie es an 5V an. Alle Widerstände werden zusammen mit den negativen Zuleitungen der Potis mit Masse verbunden. Beachten Sie auch die traditionelle 100K-Verdrahtung für das Volume, die an Arduino Digital 11 geht. Die Potis werden an Arduino Analog 0, 1 und 3 angeschlossen. Schließlich geht eine rote LED an Arduino Pin Digital 12.
* Es gibt zwei schematische Darstellungen. Eine, die ich bei Fritzing gemacht habe und die zweite, die viel besser organisiert ist, ist bei Beavis Audio zu finden.

Schritt 3: Code

Der Originalcode wird mit einem LCD-Setup zur Anzeige von Frequenzänderungen geliefert. Ich habe diesen Teil gerade gelöscht, aber Sie können den Code mit lcd-Setup hier erhalten.
/* ======================================================================
Arduino Punk Console
Ein einfacher programmierbarer 8-Stufen-Sequenzer
von dano / beavisaudio.com
Revs
-----------------------------------
15 Sept djh erste version
======================================================================*/
// Ordne alle Eingangs- und Ausgangs-Pins zu
# AnalogInFrequency definieren 1
#define AnalogInTempo 2
#define AnalogInDuration 0
#define DigitalOutSignal 11
#define DigitalInSwitch0 2
#define DigitalInSwitch1 3
#define DigitalInSwitch2 4
#define DigitalInSwitch3 5
#define DigitalInSwitch4 6
#define DigitalInSwitch5 7
#define DigitalInSwitch6 8
#define DigitalInSwitch7 9
#define DigitalInStartStop 10
#define DigitalOutLED 12
// Richten Sie das Array für jeden Schritt ein
int steps = {100, 120, 140, 160, 180, 200, 220, 240};
// Sonstiges Housekeeping
int duration = 50;
int pitchval = 1;
int fPlayMode = true;
int lastPushedStep = -1;
// Initialisiere das Tempo
int tempo = 100;
void setup ()
{
// Pin-Modi einrichten (Digitale Pins werden standardmäßig eingegeben, aber
// Ich setze sie gerne explizit, damit der Code klar ist.
PinMode (DigitalInSwitch0, INPUT);
PinMode (DigitalInSwitch1, INPUT);
PinMode (DigitalInSwitch2, INPUT);
PinMode (DigitalInSwitch3, INPUT);
PinMode (DigitalInSwitch4, INPUT);
PinMode (DigitalInSwitch5, INPUT);
PinMode (DigitalInSwitch6, INPUT);
PinMode (DigitalInSwitch7, INPUT);
pinMode (DigitalInStartStop, INPUT);
PinMode (DigitalOutSignal, OUTPUT);
PinMode (DigitalOutLED, OUTPUT);

}
leere Schleife ()
{
// Hauptsequenzschleife
für (int i = 0; i <8; i ++)
{
// Spielen wir oder hören wir auf?
fPlayMode = digitalRead (DigitalInStartStop);
digitalWrite (DigitalOutLED, HIGH);
// Überprüfen Sie die Hardware
readSwitches ();
readPots ();
// aktualisiere die Anzeige
updateDisplay ();
// Mach den Lärm
if (fPlayMode)
{
Häufigkeit (Schritte i, Dauer);
}
digitalWrite (DigitalOutLED, LOW);
// Pause zwischen den Schritten
Verzögerung (Tempo);
}
}
void updateDisplay ()
{
Serial Print (254, BYTE);
Serial.print (192, BYTE);
Serial.print ("T:");
Serial.print (Tempo);
Serial.print ("d:");
Serial.print (Dauer);
if (lastPushedStep! = -1)
{
Serial.print ("*");
Serial.print (lastPushedStep);
}
}
// Liest die aktuellen Werte der Potis, die von der Schleife aufgerufen wurden.
void readPots ()
{
Tempo = (analogRead (AnalogInTempo) * 1,9);
duration = (analogRead (AnalogInDuration));
}
// Lesen Sie die aktuellen Werte der Schalter und
// Wenn gedrückt, ersetzen Sie die Slot-Frequenz des Switch
// durch Lesen des Frequenztopfs.
void readSwitches ()
{
// Letzte gedrückte Tastennummer zurücksetzen
lastPushedStep = -1;
// überprüfe Schalter 0, falls gedrückt, bringe die aktuelle Frequenz in Schritt 0 usw. usw.
if (digitalRead (DigitalInSwitch0) == HIGH)
{
Schritte 0 = analogRead (AnalogInFrequency);
lastPushedStep = 1;
}
sonst wenn (digitalRead (DigitalInSwitch1) == HIGH)
{
Schritte 1 = analogRead (AnalogInFrequency);
lastPushedStep = 2;
}
sonst wenn (digitalRead (DigitalInSwitch2) == HIGH)
{
Schritte 2 = analogRead (AnalogInFrequency);
lastPushedStep = 3;
}
sonst wenn (digitalRead (DigitalInSwitch3) == HIGH)
{
Schritte 3 = analogRead (AnalogInFrequency);
lastPushedStep = 4;
}
sonst wenn (digitalRead (DigitalInSwitch4) == HIGH)
{
Schritte 4 = analogRead (AnalogInFrequency);
lastPushedStep = 5;
}
sonst wenn (digitalRead (DigitalInSwitch5) == HIGH)
{
Schritte 5 = analogRead (AnalogInFrequency);
lastPushedStep = 6;
}
sonst wenn (digitalRead (DigitalInSwitch6) == HIGH)
{
Schritte 6 = analogRead (AnalogInFrequency);
lastPushedStep = 7;
}
sonst wenn (digitalRead (DigitalInSwitch7) == HIGH)
{
Schritte 7 = analogRead (AnalogInFrequency);
lastPushedStep = 8;
}
}
// Freqout Code von Paul Badger
// Frequenz - Frequenzwert
// t - Zeitdauer des Tons
Ungültige Frequenz (int freq, int t)
{
int hperiod; // berechne 1/2 Periode in uns
lange Zyklen, ich;
// subtrahiere 7 us, um den empirisch ermittelten DigitalWrite-Overhead auszugleichen
hPeriode = (500000 / ((Freq - 7) * Pitchval));
// Zyklen berechnen
Zyklen = ((lang) freq * (lang) t) / 1000; // Zyklen berechnen
für (i = 0; i <= Zyklen; i ++)
{// Note für t ms spielen
digitalWrite (DigitalOutSignal, HIGH);
delayMicroseconds (hperiod);
digitalWrite (DigitalOutSignal, LOW);
delayMicroseconds (hperiod - 1); // - 1, um die gebrochene Mikrosekunde im Overhead von digitaWrite auszugleichen
}
}

Schritt 4: Gehäuse

Das Bohren von Löchern ist sehr einfach, kann aber manchmal sehr mühsam sein, insbesondere wenn es viele Löcher gibt. Ich holte ein Lineal heraus und teilte die Schachtel in 8, damit ich 8 Löcher bohren konnte. Danach habe ich oben zwei Löcher für den Pausenschalter und die LED gebohrt. Über 4 Löcher für die Töpfe. An der Seite ein Loch für den Ausgang und unterhalb eines Quadrats für den Arduino-USB-Anschluss, damit Sie Strom durch ihn speisen können. Nachdem ich alles dort hingelegt hatte, schob ich ein paar Knöpfe auf die Töpfe und schraubte jedes Bauteil an die Plastikbox.
Löcher machen; Probieren Sie alle Arten von Bohrern aus, um festzustellen, welche für die einzelnen Komponenten besser geeignet sind.

Schritt 5: Einpacken

Es ist also ein lustiges Stück Maschine, und ich wollte diesen netten Build teilen, damit Sie ihn später modifizieren und irgendwann etwas noch besser machen können. Ein paar Verbesserungsvorschläge wären; Haben Sie für jeden Schritt eine LED, die besagt, dass Sie einen Ton halten können, um dessen Frequenz zu ändern, einen Eingang haben, damit Sie synthbasierte Sounds in diese kleine Maschine senden und schließlich einen MIDI-Ausgang zur Verwendung mit dem Computer hinzufügen können.
Ich werde natürlich einige Soundeffekt-Boxen verwenden, die über Ein- und Ausgänge verfügen, damit ich mir die Art von Sound anhören kann, die mit den Schritten erzeugt wird.
* Alle Kredite gehen an Beavis Audio; Wer machte dieses Projekt und schrieb auch die Arduino-Skizze.
Tobias,