Poti Werte zuweisen

Hallo,

ich versuche Werte von einem Poti auszulesen, diese werte zu mappen und anschießend diesen gemappten Werten Zeiten zu zuweisen.

int eingang = A0;
int LED = 13;
int sensorwert = 0;
int ausgabewert = 0;


void setup()
{
  Serial.begin(9600);
  Serial.println("Hallo zu MAP-Test");
  pinMode (LED, OUTPUT);

}

void loop()
{
  sensorwert = analogRead(eingang);
  ausgabewert = map(sensorwert, 0, 1023, 1, 50);
  
  
  Serial.print("sensor =");
  Serial.print("sensorwert ");
  Serial.print(" ausgabe = ");
  Serial.println(ausgabewert);

  if (ausgabewert == 1) {
    digitalWrite (LED, HIGH);
    delay (500);
    digitalWrite (LED, LOW);
    delay (500);
  }
  if (ausgabewert == 2) {
    digitalWrite (LED, HIGH);
    delay (510);
    digitalWrite (LED, LOW);
    delay (500);
  }
}

ich will, dass jedes mal, wenn der "ausgabewert" um 1 steigt soll die LED 10ms länger auf HIGH bleiben, die LOW zeit soll dabei immer gleich bleiben. Hat jemand einen eleganteren Vorschlag als 50 if Bedingungen aufzustellen?

Ungetestet:

int eingang = A0;
int LED = 13;
int sensorwert = 0;
int ausgabewert = 0;


void setup()
{
  Serial.begin(9600);
  Serial.println("Hallo zu MAP-Test");
  pinMode (LED, OUTPUT);

}

void yield()
{
  sensorwert = analogRead(eingang);
  ausgabewert = map(sensorwert, 0, 1023, 0, 50);
}

void loop()
{
  Serial.print("sensor =");
  Serial.print(sensorwert );
  Serial.print(" ausgabe = ");
  Serial.println(ausgabewert);

  digitalWrite (LED, HIGH);
  delay (500+10*ausgabewert);
  digitalWrite (LED, LOW);
  delay (500);
}

Rechne mal 490 + ausgabewert * 10 und du hast die millisekunden.

Gruß Tommy

Du meinst
Serial.print(sensorwert); (ohne " )

Combies yield Trick kannst du vergessen. Dadurch wird nur häufiger gerechnet als du es brauchst.

Perfekt Danke :slight_smile:

michael_x:
Du meinst
Serial.print(sensorwert); (ohne " )

Combies yield Trick kannst du vergessen. Dadurch wird nur häufiger gerechnet als du es brauchst.

Yep hast recht

Naja...

Hat schon häufiger mal seinen Reiz, die Eingabe von der Ausgabe zu entkoppeln.
Spätestens, wenn noch eine dritte Aufgabe dazu kommt, ist wohl Ende mit der Blockiererei mit delay()

Ob die Situation dann über yield() gerettet wird, oder man eine der anderen knapp 1000 Möglichkeiten wählt, ist dabei recht egal.