Projekt - Midicontroller

Hey Leute,

Ich bin neu in der Arduino Welt und habe vor mir einen Midicontroller selber zu bauen.
Habe mich schon ein wenig in bestimmte befehle eingearbeitet.
Nun habe ich folgendes Problem.
Ich will eigentlich einen Stepsequenzer mit lauflicht programmieren.
Ich habe nun ersteinmal versucht generell ein lauflicht zu programmieren.
Das lauflicht kriege ich soweit auch programmiert, allerdings soll dieses auch noch per midiclock mit einer DAW synchron laufen.
Nun habe ich ersteinmal versucht die Geschwindigkeit des lauflichtes mit einem poti zu regeln.
Da tritt aber in der Programmierung das Problem auf das ich einen delay setzen muss damit die lichter auch überhaupt sichtbar lang genug an bleiben.
Die Geschwindigkeit Regel ich dann mit dem Poti, den lasse ich auslesen und habe dann delay+analogread programmiert so das sich der delay erhöht und das lauflicht langsamer läuft.
dadurch entsteht aber das problem das der potz auch langsamer abgefragt wird.
Nun wäre meine Frage kann man einen Pott überhaupt mit der Midiclock gleichsetzen oder läuft das dann über eine Midiclock ganz anders.
Und wie kriege ich das Problem mit den Pott überhaupt in den Griff?

Hier einmal der Code.

int potiWert = 0;

int LEDarray[] =      {6,7,8};
int counter = 3;
int time = 0;

void setup() {
{  
Serial.begin(9600);
}
{
for(int x=0; x<counter; x++) pinMode(LEDarray[x],OUTPUT);
}
}

void loop() { 
 {
 potiWert = analogRead(A0);
 Serial.println(potiWert);
 }
 {
 time = (time + analogRead(A0)/4);
 }
{
 for (int x=0 ; x<counter; x++) 
{digitalWrite(LEDarray[x],HIGH);
 delay(time);
 digitalWrite(LEDarray[x],LOW);
 delay(time);
 }
}
}

Sorry, habe den Code irgendwie nicht richtig eingebettet gekriegt…

Wie immer in solchen Fällen (die tatsächlich gefühlt 3 mal pro Woche auftauchen) gilt: schau Dir das Beispiel "Blink without Delay" an.

Und wenn das sitzt baust Du Deinen Code erstmal entsprechend um und hast ein AHA-Erlebnis.

Das habe ich mir bereits angeschaut, aber die millis bewirken genau den selben Effekt wenn ich die mit den potentiometer ändere. Habe ich ebenfalls schon ausprobiert.

Hallo, verwende bitte code-Tags für Deinen Sketch, damit die Befehle richtig dargestellt werden. Das ist der Button über dem lachenden Gesicht :) Danke!

Nun wäre meine Frage kann man einen Pott überhaupt mit der Midiclock gleichsetzen oder läuft das dann über eine Midiclock ganz anders.

Ganz anders. Bin aber auch nicht wirklich Midi-Sattelfest.

Falls deine Midi Quelle mal pausiert, wäre es bestimmt schön, wenn weiterhin noch was leuchtet. Einstellbar. Oder zum Testen.

Und es gibt noch viel zu lernen für dich. Bekomme das mit dem Poti und millis() erstmal in den Griff.

Du könntest auch aus dem Potisignal einen internen Midi-Clock generieren. Sozusagen, einen Emulator.

Das habe ich mir bereits angeschaut, aber die millis bewirken genau den selben Effekt wenn ich die mit den potentiometer ändere. Habe ich ebenfalls schon ausprobiert.

Dann hast du was falsch gemacht. Aber den unformatieren Code durchblicke ich nicht.

Die delay() müssen auf jeden Fall weg.

Ich sag's nochmal: sieh das Blinkwithoutdelay Beispiel doch einfach als einstellbaren Taktgeber an. Und dann nimmst Du Dein Poti, liest das aus und veränderst damit den Takt.

Ich habe den Eindruck, mit Midi solltest Du erst anfangen wenn Du das Prinzip verstanden hast.

Danke euch. Kennt denn jemand ein paar gute Internetseiten wo es gute Tutorials gibt ? also jetzt auch spezifisch für den Timer - millis ? Von mir aus dürfen es auch Bücher etc sein wo etwas mehr erklärt steht, oder auch andere Medien.

Du scheinst nicht nur im Bereich arduino neu zu sein, daher helfe ich Dir mal auf die Sprünge: gibt da so was neuartiges im Internet, nennt sich google. Das google kennt sich aus und hilft Leuten wie Dir (und mir übrigens auch) wenn man es nett fragt. Schon mal probiert?

Im übrigen braucht's für millis & Co nur die Referenz (aus der IDE direkt aufrufbar) und ein bissel guten Willen.

millis() liefert die einfach die Zeit seit dem Einschalten des Controllers in ms zurück. Das heißt man kann die Zeit wenn ein Ereignis eintritt abspeichern und die Differenz zwischen zwei Ereignissen berechnen. Oder die Differenz zwischen etwas in der Vergangenheit und der aktuellen Zeit. So kann man einfach abfragen ob x ms seit etwas vergangen ist.