Hallo Leute, ich kriege das einfach nicht hin….
Der Ausgangswert am PWM-pin11 soll sich für eine LED-Helligkeitsteuerung nach folgender Formel berechnen:
Ausgang = Eingang x (190/1023) +10
Das der Versuch mit dem Befehl “ analogWrite(11, A0 * (190/1023) +10 );“ konstant zum Ergebnis 10 am Ausgang - unabhängig vom Eingangswert - führt hat mich nicht weiter erstaunt, da das Zwischenergebnis 190/1023 für den Arduino vermutlich = 0 und nicht = 0.18572825 ist.
Ich habe das Programm also immer weiter „aufgebohrt“, immer mehr Variablen definiert, immer mehr als float deklariert, aber es funzt immer noch nicht. Der Wert am Ausgang ist immer 10 unabhängig von der Potentiometer Einstellung.
Was mache ich falsch? Wo ist der Fehler?
// LED Helligkeit mit Poti steuern und Wert des Ausgangs am Laptop Serial Monitor anzeigen,
// Berechnung Ausgangswert unter Berücksichtigung einer min. und max.-Intesität
// Potentiometer -> pin A0
// LED bzw. MOSFET -> pin 11 (PWM)
float val = 0; // variable für Eingangswert an pin A0
float m = 190 / 1023; // Variable "m" (lineare Steigung) als float setzten, da sonst Ergebnis der Division = 0
float Ausgabe = 0; // variable für Ausgangswert an pin 11
void setup()
{
pinMode(11, OUTPUT); // pin 11 als Ausgang deklarieren
Serial.begin(9600); // initialize serial communications at 9600 bps:
}
void loop()
{
val = analogRead(A0); // Wert Analogeingang A0 an die Variable "val" übergeben
Ausgabe = ((val*m)+10); // Ausgabeswert berechnen
analogWrite(11, Ausgabe); // Ausgabeswert an pin11 ausgeben
Serial.print("Ausgang = " ); Serial.print(Ausgabe); // Gib den Wert von "val" am Serial Monitor aus
delay(200); // Warte 0,2 Sekunden
}
Danke vorab für Eure Mithilfe!
Gruß Wühlmaus