Analogwertänderung senden

OP #3539891
Lesenswert?

Hallo,
und zwar experimentiere ich momentan ein wenig mit einem Arduino und ich 
bin momentan auf den Trichter gekommen mir daten Per MIDI an meinen 
Rechner zu schicken...
Nun möchte ich einen Analogwert Per Midi senden, das aber nur sobald 
dieser Sich ändert. Hat jemand eine idee wie das funktionieren könnte?!
Habe es bis jetzt versucht mit EEprom zu beschreiben nur gelingt mir das 
Irgendwie nicht....

Danke schonmal für die Hilfe
OP #3539932
Lesenswert?

Nunja, ich möchte mittels eines Potis eine Lichtsteuerung (software) 
beeinflussen. Dort kann ich zum beispiel den Master des Lichtes zwischen 
0 und 127 bewegen.
Mit dem Arduino nehme ich meinen Analogwert also von 0 bis 1023 oder was 
der Ausspuckt, den Teile ich durch 8, somit komme ich auf meine 
Auflösung von 127. Diesen Wert sende ich dann über Midi an meinen PC 
welcher das signal über einen USB/MIDI adapter erkennt und auch umsetzt, 
heißt das ich mit dem Poti schon meinen Softwarefader bewegen kann.
Problem daran ist eben das ich die ganze zeit Traffic habe, den ich 
eigentlich nicht möchte.
Sondern soll der Arduino nur ein MIDI signal (0-127) senden, wenn sich 
der zuletzt gesendete wert verändert hat....
Gast #3539954
Lesenswert?

Einfach den neu eingelesenen Wert mit dem alten vergleichen und wenn 
diese unterschiedlich sind den neuen Wert senden und als alten Wert 
speichern.
Oder verstehe ich da was nicht, dass das so kompliziert ist?
Gast #3539958
Lesenswert?

Hallo, ich hoffe ich habe dein Problem jetzt richtig verstanden... 
speicher deinen "alten Wert" doch einfach in einer Zwischenvariablen ab 
und Vergleiche dann per IF ob sich dein neuer Wert vom vorherhigen Wert 
unterscheidet. Die Übertragung startest du dann einfach nur in dem Fall, 
dass sich die Werte unterscheiden.
Gast #3539966
Lesenswert?

So wie DU es auch machen würdest :
1. Du ließt einen Wert z.B. auf dem Bildschirm
2. Du merkst dir den Wert
3. Du ließt einen Wert auf dem Bildschirm
4. Wenn der Wert der gleiche ist wie der gemerkte Wert weiter bei 3
5. Du schreist : "der Wert hat sich geändert !"
6. weiter bei 1
#3539980
Lesenswert?

Pierre Neumerkel schrieb:
> Nur wie speicher ich den Alten wert?
Das ist jetzt eine ernstgemeinte Frage?
Wahrscheinlich ja:

Pierre Neumerkel schrieb:
> Habe es bis jetzt versucht mit EEprom zu beschreiben nur gelingt mir das
> Irgendwie nicht....

> Ich glaube langsam das ich einfach nur in alle erdenklichen richtungen
> denke nur nicht in die richtige.
Das einzig richtige ist, dir ein C-Buch zu besorgen.
>
> AnalogValue= analogRead(poti);
>     Wert = AnalogValue /8,0;
>
>
>     if (Vergleichswert != Wert) {
>
>
>     noteOn(0x90, Wert, 0x90);
>
>     Wert = Vergleichswert;

Wert und Vergleichswert sind Variablen. Sofern sie global sind, bleibt 
der Inhalt erhalten, bis er überschrieben wird. Oder du dem Controller 
den Saft abdrehst. Aber dann interessiert das keinen mehr.

mfg.
Gast #3539982
Lesenswert?

Pierre Neumerkel schrieb:
> Nur wie speicher ich den Alten wert?
>
> Ich glaube langsam das ich einfach nur in alle erdenklichen richtungen
> denke nur nicht in die richtige.
>
> AnalogValue= analogRead(poti);
>     Wert = AnalogValue /8,0;
>
>     if (Vergleichswert != Wert) {
>
>     noteOn(0x90, Wert, 0x90);
>
>     Wert = Vergleichswert;

      ^--- Vergleichswert = Wert;
} //und die Schließende Klammer nicht vergessen!

Bis auf die letzte Zeile stimmt das in etwa...
Lies mal den Beitrag von Moritz.
Gast #3539983
Lesenswert?

Pierre Neumerkel schrieb:
> AnalogValue= analogRead(poti);
>     Wert = AnalogValue /8,0;
>
>     if (Vergleichswert != Wert) {
>
>     noteOn(0x90, Wert, 0x90);
>
>     Wert = Vergleichswert;
1
neuer_wert =  analogRead(poti) / 8;
2
if(neuer_wert != alter_wert)
3
{
4
  noteOn(0x90, Wert, 0x90);
5
  alter_wert = neuer_wert;
6
}

Einfach mal drüber nachdenken und den Variablen vernünftige Namen geben. 
Du wirfst Wert und Vergleichswert durcheinander.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren