Arduino Step Sequencer (3 / 5 stap)

Stap 3: Code


De oorspronkelijke code wordt geleverd met een LCD-instellen voor het weergeven van wijzigingen van de frequentie. Ik heb net dat deel verwijderd, maar kunt u de code met lcd setup hier.

/* ======================================================================
Arduino Punk Console
Een eenvoudig programmeerbare 8 stepsequencer Toon
door dano/beavisaudio.com
Toerental
-----------------------------------
15 Sept djh eerste versie
======================================================================*/
Kaart van alle de input en output pinnen
#define AnalogInFrequency 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
Instellen van de matrix voor elke stap
int stappen [] = {100,120,140,160,180,200,220,240};
misc huishouding
int duur = 50;
int pitchval = 1;
int fPlayMode = true;
int lastPushedStep = -1;
Initialiseren van het tempo
int tempo = 100;
VOID Setup
{
Setup pin modi (digitale pennen worden ingevoerd door standaard, maar
Ik 'em expliciet instellen, zodat de code duidelijk is.
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, uitvoer);
pinMode (DigitalOutLED, uitvoer);

}

void loop
{
Hoofdreeks lus
for (int i = 0; ik < 8; i ++)
{
We spelen of stoppen?
fPlayMode = digitalRead (DigitalInStartStop);
digitalWrite (DigitalOutLED, hoge);
Controleer of de Hardware
readSwitches();
readPots();

de weergave bijwerken
updateDisplay();

Het lawaai maken
Als (fPlayMode)
{
freqout (stappen [i], duur);
}
digitalWrite (DigitalOutLED, laag);

Pauze tussen stappen
vertraging (tempo);
}
}

VOID updateDisplay()
{
Serial.Print (254, BYTE);
Serial.Print (192, BYTE);
Serial.Print ("T:");
Serial.Print (tempo);
Serial.Print ("d:");
Serial.Print (duur);
Als (lastPushedStep! = -1)
{
Serial.Print ("*");
Serial.Print (lastPushedStep);
}
}
Lees de huidige waarden van de potten, genaamd uit de lus.
VOID readPots)
{
tempo = (analogRead (AnalogInTempo) * 1.9);
duur = (analogRead (AnalogInDuration));
}
Lees de huidige waarden van de schakelaars en
Als ingedrukt, vervangt u de schakelaar de sleuf frequentie
door het lezen van de frequentie-pot.
VOID readSwitches()
{
nummer van de laatste ingedrukte knop Reset
lastPushedStep = -1;

Controleer wissel 0, wanneer ingedrukt, krijgen de huidige freq in stap 0, etc. etc.
Als (digitalRead (DigitalInSwitch0) == HIGH)
{
stappen [0] = analogRead(AnalogInFrequency);
lastPushedStep = 1;
}

anders als (digitalRead (DigitalInSwitch1) == HIGH)
{
stappen [1] = analogRead(AnalogInFrequency);
lastPushedStep = 2;
}

anders als (digitalRead (DigitalInSwitch2) == HIGH)
{
stap [2] = analogRead(AnalogInFrequency);
lastPushedStep = 3;
}
anders als (digitalRead (DigitalInSwitch3) == HIGH)
{
stappen [3] = analogRead(AnalogInFrequency);
lastPushedStep = 4;
}
anders als (digitalRead (DigitalInSwitch4) == HIGH)
{
stappen [4] = analogRead(AnalogInFrequency);
lastPushedStep = 5;
}
anders als (digitalRead (DigitalInSwitch5) == HIGH)
{
stappen [5] = analogRead(AnalogInFrequency);
lastPushedStep = 6;
}
anders als (digitalRead (DigitalInSwitch6) == HIGH)
{
stappen [6] = analogRead(AnalogInFrequency);
lastPushedStep = 7;
}
anders als (digitalRead (DigitalInSwitch7) == HIGH)
{
stappen [7] = analogRead(AnalogInFrequency);
lastPushedStep = 8;
}
}

de code van de freqout door Paul Badger
freq - frequentie waarde
t - tijdsduur van Toon
VOID freqout (int freq, int t)
{
int hperiod;     1/2 periode in ons berekenen
lange cycli, i;

aftrekken 7 Amerikaanse te maken voor digitalWrite overhead - empirisch bepaald
hperiod = (500000 / ((freq-7) * pitchval));

berekenen van cycli
cycli = ((lange) freq * (lange) t) / 1000;    berekenen van cycli
voor (ik = 0; ik < = cycli; i ++)
{/ / Opmerking voor t ms spelen
digitalWrite (DigitalOutSignal, hoge);
delayMicroseconds(hperiod);
digitalWrite (DigitalOutSignal, laag);
delayMicroseconds (hperiod - 1);     -1 te maken voor fractionele microseconde in digitaWrite overhead
}
}

Gerelateerde Artikelen

Old-School Arduino MIDI Sequencer

Old-School Arduino MIDI Sequencer

met behulp van een standaard Arduino single-board-computer en een bord "schild", dit project creëert een MIDI-sequencer die kan opnemen en afspelen van opeenvolgingen van MIDI-noten.  Het is vergelijkbaar met de oude-school sequencers in die zin
Sugarcube MIDI Controller

Sugarcube MIDI Controller

Dit project is een draagbare, Arduino aangedreven, grid-gebaseerde MIDI controller die zelfstart opwaarts in allerlei apps te doen veel dingen met geluid. Het heeft 16 verlichte knoppen, gebruikt als zowel in- en uitgangen te geven van de controller
Tekenen-het-zelf - MIDI controller met de geleidende inkt

Tekenen-het-zelf - MIDI controller met de geleidende inkt

'Draw It Yourself' is een MIDI-controller met de geleidende inkt als drukknoppen. Het is gebaseerd op de Arduino, en maakt gebruik van een capacitieve sensor (twee, eigenlijk) om te bepalen of de getekende knoppen zijn geraakt of niet.http://sanidanz
EL Wire teken geanimeerd

EL Wire teken geanimeerd

MakeICT was de ontvanger van een EL (elektroluminescente wire) shirt van Instructables en coolneon.com in januari 2014. We besloten dat onze meest dringende noodzaak een teken was voor directe mensen om onze deur. We ontmoeten bi-wekelijkse, en het d
Getto Pixels - bouwen van een open source BlinkM

Getto Pixels - bouwen van een open source BlinkM

tenzij je hebt geleefd onder een digitale rots voor de laatste paar jaar, of gewoon zijn niet geïnteresseerd in het knipperende lichten, u zult al genoeg weten over de awesomeness dat is de BlinkM van ThingM. Het is een zeer kleine PCB met een hoogve
MusicTank Mk. III

MusicTank Mk. III

de MusicTank is een eerdere uitvinding van mij; het is een zonne-aangedreven Stereo-systeem in de vorm van een Sherman Tank.  Sinds de oprichting van het merk. Ik op 15 maart 2010, de MusicTank heeft drie belangrijke verbeteringen ondergaan.  Dit Ins
EL Wire Muts: Sequenced en Sound Activated met afstandsbediening - aangedreven door Arduino en Sparkfun

EL Wire Muts: Sequenced en Sound Activated met afstandsbediening - aangedreven door Arduino en Sparkfun

Welkom op de Instructable gids van mijn EL Wire hoed met enkele leuke functies.Het concept is een EL Wired hoed met 8 gesequenceerd EL draden door een bedrade afstandsbediening bestuurd. Meerdere snelheid controleerbaar reeks modi zijn vooraf geprogr
Arduino Uno beheersen mijn 8-note Sequencer

Arduino Uno beheersen mijn 8-note Sequencer

dit is een video van mij met behulp van mijn Arduino Uno mijn aangepaste 8-note-sequencer.Hier is het programma:Broncode.Dit is de originele video waar ik de demo van de 8-note sequencer op eigen:Originele VideoAls u vragen hebt, voel je vrij om te v
Super eenvoudig 10-stap arduino sequencer

Super eenvoudig 10-stap arduino sequencer

Deze sequencer is zo eenvoudig, dat ik hoef maar één stap om u te tonen hoe! Op dit ogenblik is het is een 10 stepsequencer maar kan gemakkelijk worden rechtvaardiger door het veranderen van de "stap" variabele in de code.https://instagram.com/p
3 Arduino Pins to 24+ Output Pins

3 Arduino Pins to 24+ Output Pins

Hebben je uitgeput van output pinnen voor je Arduino? Nou is dit de oplossing voor u! In deze tutorial ik laten u zien zal de hardware en de code die nodig is om te controleren veelvouden van 8 aantal uitgangen, met behulp van slechts 3 van uw pins A
Quiz Game Controller met behulp van de "Lichten en geluiden zoemers" en Arduino

Quiz Game Controller met behulp van de "Lichten en geluiden zoemers" en Arduino

gevaar stijl quiz spelen zijn favorieten voor het maken van opwinding en educatieve instructie op hetzelfde moment.  Leraren, zomer camp counselors, en zelfs industrie opvoeders vinden dit soort spel om te helpen bij het genereren van belangstelling
Arduino tutorial Arduino Tutorial bundel.: Arduino experimenten Kit:. (ARDX)

Arduino tutorial Arduino Tutorial bundel.: Arduino experimenten Kit:. (ARDX)

Geïnteresseerd in maken nette projecten met een Arduino maar niet weet waar te beginnen?Hier is een gemakkelijk te volgen gids op hoe te connect & gebruiken een schare van elektronische componenten.(schaamteloze plug)Geïnteresseerd in het doen het al
Ontwerpen en bouwen van een synthesizer met Meeblip en Arduino, video's toegevoegd!

Ontwerpen en bouwen van een synthesizer met Meeblip en Arduino, video's toegevoegd!

Voor mijn stage bij Digitale muziek maken/Meeblip heb ik een heel leuke kleine synthesizer. Dit ding is bedoeld om te worden flexibeler dan andere synthesizer doordat het volledig onafhankelijk is; het is op batterijen, heeft een eigen versterker/lui
Arduino Simon zegt

Arduino Simon zegt

Als kind heb ik altijd geliefd hoeveel mijn ouders haatte het spel van Simon Says, met behulp van een eenvoudige arduino, sommige LEDs, weerstanden, druktoetsen en een piezo die kunnen we het onszelf! Ik getest en dit circuit met behulp van 123D scha