Umsetzung Potistellung zu PWM Werten, erbitte Hilfe

stringwalker:
Nein, ich will k e i n lineares Potiwinkel-PWM Wert-Verhältnis erhalten.
Ich will eine individuelle PWM Ausgabe erreichen, die jedem Potiwinkel (bzw. mehreren Winkelbereichen) einen von mir vorgegebenen PWM Wert zuordnet. Als Analogelektroniker würde ich sagen: Ein Poti mit einer verbogenen und alles anderen als linearen Kennlinie.

Zum Beispiel:
Eingangswerte 550-700 bekommen PWM Wert 50, 701-720 bekommen Wert 250, 850 bekommt 600 etc.(das sind jetzt nur fiktive Werte zur Veranschaulichung).

Sind denn die Winkelbereiche alle gleich gross und ist das Poti ein lineares?
Falls ja, kannst DU vermutlich die map() Funktion verwenden.
Sagen wir mal Du willst 8 "Schaltzustände" abbilden, dann mappe einfach die Werte 0 bis 1023 auf 0 bis 7 ( int state = map(analogRead(A0),0,1023,0,7); )
Die dabei rauskommenden Werte von 0 bis 7 kannst Du dann z.B. als Index für ein Array verwenden, indem die PWM-Werte stehen.
Oder falls Du mehrere Dinge anhand des Schaltzustandes machen willst:

#define POTI A0
int state = map(analogRead(POTI),0,1023,0,7);

switch(state) {
  case 0:
               //hier alle Befehle für Zustand 0
               break;
  case 1:
               //hier alle Befehle für Zustand 1
               break;
  case 2:
               //hier alle Befehle für Zustand 2
               break;
...
  case 7:
               //hier alle Befehle für Zustand 0
               break;
}

Aufpassen musst Du allerdings an den Übergangsstellen von einem Wert zum anderen. Bei ungünstiger Position des Potis springt der Wert zwischen zwei Zuständen hin und her. Das Problem hatte ich bei meiner Lavalampe auch.