Jump to content

Potiwert auslesen ( Bereich Mittelstellung ) Crossfader


ranger930

Recommended Posts

Moin,

ich möchte für meinen noch nicht fertig gestellten Traktrorcontroller einen Crossfader einbauen,

10 k linear, soweit ist dies klar,

jetzt meine Frage, habe Sie leider schon mal gestellt, aber die Antwort war nicht zufriedenstellend:

Problemstellung:

wenn der Crossfader in Mittelstellung ist, soll dies durch eine LED angezeigt werden,

nach meiner Erfahrung wird der analoge Spanunngswert in digitale Form umgewandelt,

Analog- Digital Wandlung,

ist es softwaretechnisch möglich das Poti zu überwachen und diese kleine Widerstandsänderung zu benutzen, um ein " LED an " signal zu setzen ?

MfG

ranger930

Link to comment
Share on other sites

Also ich würd das ganze ja über das C Interface machen.

Also wenn der Pot Wert zwischen 63 und 65 liegt den ensprechenden Dout pin auf high setzen.

Ist ein einzeiliger IF befehl soweit ich das beurteilen kann.

Allerdings wie genau kann ich dir noch nicht sagen da ich mich bis jetzt nur mit Buttons und Encodern im C Interface beschäftigt habe.

Ich kanns nur wiederholen. Mit C kann man jeden möglichen Sch... machen. Es ist echt unglaublich.

Hab erst auch nicht gedacht das ich mich da je auskennen werde aber nach ca. 1 Woche herumbasteln kam dann die Firmware für meine Traktorbox raus. Und die kann GENAU das was ich will.

Grüsse

m.

Link to comment
Share on other sites

  • 3 months later...

Hi

ich hatte heut morgen auch die Idee für meinen Crossfader etc und hab mal ne Lösung geschrieben

void AIN_NotifyChange(unsigned char pin, unsigned int pin_value) __wparam
{
MIOS_MIDI_BeginStream();
MIOS_MIDI_TxBufferPut(0xb0);
MIOS_MIDI_TxBufferPut(pin);
MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin));  // 7bit pot value
MIOS_MIDI_EndStream();
MIOS_LCD_Clear();
MIOS_LCD_CursorSet(0x00); 
MIOS_LCD_PrintCString("Fader / Pot");
MIOS_LCD_CursorSet(0x40);
MIOS_LCD_PrintBCD4(pin);
MIOS_LCD_PrintBCD4(MIOS_AIN_Pin7bitGet(pin));
if(pin == 20)            // Pin des Potis/Faders
if(pin_value > 500)   // ????????????????????
{
MIOS_DOUT_PinSet(8, 1);   // 8 ist Dout-Pin 8, 1 für An ;)
}else{
MIOS_DOUT_PinSet(8, 0);
return;
}
}

So geht ab Potiwert  "63" die LED an und bleibt an....

komischerweise ging if(pin_value > 63) nicht...ich spielte 10 minuten rum und gab einfach mal zum Spaß 500 ein....Zufall...das ist seltsamerweise genau der Potiwert 63...kann mir das mal einer erklären ???

So jetz muß ich nur noch das Ausschalten der LED rauskniffeln und dann passts ;)

Grüße

MTE

EDIT : Ich sah grad die pin_value ist als unsigned int definiert....d.h. die value ist auf 8 bit geteilt ?? dann wäre 512 potiwert 64 ??

Link to comment
Share on other sites

Moin,

ich habe das schon realisiert:

hier mein Code- Auszug :

// ---if crossfader is in middle position positionswitch led on-----------
   value_ain_pin=MIOS_AIN_Pin7bitGet (24); // read value from crossfader 
   if (value_ain_pin == 0x40)
    {
     MIOS_DOUT_PinSet(7,1);
    }
     else
    {
     MIOS_DOUT_PinSet(7,0);
    }

MfG ranger930

Link to comment
Share on other sites

EDIT : Ich sah grad die pin_value ist als unsigned int definiert....d.h. die value ist auf 8 bit geteilt ?? dann wäre 512 potiwert 64 ??

Potiwerte haben eine Aufloesung von 10bit, und somit einen Wertebereich von 0..1023

7bit erhaelt man, indem man den Wert dreimal nach rechts shifted: (pin_value >> 3)

Damit liegt der Wertebereich dann zwischen 0..127

Alternativ kann man so wie ranger930 die MIOS_AIN_Pin7bitGet() Funktion verwenden, die macht das gleiche

Gruss,

        Thorsten.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...