Fehler bei einlesen/auswerten mehrerer analogen Signale

Hallo Zusammen,

mein Plan ist folgender (eigendlich ganz simpel):

Über drei Potis mit jeweils 1k will ich drei PWM-Signale ausgeben mit dem ich LED's ansteuere. Wenn ich statt dem Eingangssignal ein manuelles PWM-Signal eingebe funktioniert es.

Folgendes Problem habe ich aktuell bei meiner Schaltung.

  • Das Ausgangssignal zeigt keine Reaktion auf das Eingangssignal des Potis
  • die LED's "springen" in drei Helligkeitsstufen nach einem festen Muster (Hell, dunkler, noch dunkler, dann wieder hell usw.

Irgend welche Idee? :confused:

const int potPinW = A0;
const int potPinU = A1;
const int potPinB = A2;
const int LEDPinW = 3;
const int LEDPinU = 5;
const int LEDPinB = 6;


void setup() {
  // put your setup code here, to run once:
Serial.begin(1200);
pinMode(LEDPinW, OUTPUT);
pinMode(LEDPinU, OUTPUT);
pinMode(LEDPinB, OUTPUT);
}


void loop() {

int potValB; //Blau
int potValW; //Weiß
int potValU; //UV
int PWMValB; 
int PWMValW;
int PWMValU;
  
//Weiß
potValW = analogRead(potPinW);
PWMValW = map(potValW, 0, 1023, 0, 255);
analogWrite(LEDPinW, PWMValW);

//UV
potValU = analogRead(potPinU);
PWMValU = map(potValU, 0, 1023, 0, 255);
analogWrite(LEDPinU, PWMValU);

//Blau Vorne
potValB = analogRead(potPinB);
PWMValB = map(potValB, 0, 1023, 0, 255);
analogWrite(LEDPinB, PWMValB);


//Anzeige Blau
Serial.print("PWM Stufe von 255: ");
Serial.println(PWMValB);
}

Lass dir doch erst mal im seriellen Monitor anzeigen, was die einzelnen Eingänge der Potiwerte tatsächlich ausgeben.
Dann kannst du evtl. daraus schon auf einen Fehler schließen.

Über drei Potis mit jeweils 1k will ich drei PWM-Signale ausgeben mit dem ich LED's ansteuere.

Poti falsch angeschlossen. :grin: :grin: :grin:

Irgend welche Idee?

Falscher oder kaputter Arduino. :smiling_imp: :smiling_imp: :smiling_imp:

struct Dimmer
{
  byte aPin;
  byte pwmPin;
  
  void tuwas()
  {
    int  aValue   = analogRead(aPin);
    byte pwmValue = map(aValue, 0, 1023, 0, 255);
    analogWrite(pwmPin,pwmValue);
  }
};


Dimmer dimmer[] {{A0,3},{A1,5},{A2,6}};

void setup() {}

void loop() 
{
  for(Dimmer &d:dimmer) d.tuwas();
}

Getestet, und für Funktionsfähig befunden

Bild vom Aufbau? Schaltplan?

Wackler im Steckbrett? Spinnende Stromversorgung? Strahlungsprobleme?

Tueas geht noch kürzer, kommt dann auch viel klarer für Anfänger rüber, weil sie müssen dann keine Variablen verstehen, Wertebereiche berücksichtigen und die Tastatur verschleisst weniger:

void tuwas()
  {
    analogWrite(pwmPin,analogRead(aPin)>>2);
  }

Ich weiß nicht, ob Variablen oder Bitschieben einfacher zu verstehen sind. Ich schätze erstes.

Gruß Tommy

und die Tastatur verschleisst weniger:

Ein kleines Stückchen wiedererkennbaren Code wollte ich da schon drin lassen. (allen Nachteilen zum Trotz) :o :o :o :o :o :o

@Tommy56: combie hat es verstanden, ich hab die Ironie-Tags weggelassen.

Ich habe auch nur die Frage gestellt, was einfacher ist ;)

Gruß Tommy

Anstatt >>2 hatte ich erst /4 Hab dann aber gedacht, >>2 ist für Anfänger weniger verständlich, lernen sie mehr (soweit combies Theorie)

;) ;) ;)

Gruß Tommy

(soweit combies Theorie)

Naja...

Mein Theorem lautet eigentlich:

Das Leben ist eine Herausforderung!

Und diesen Herausforderungen kann man sich stellen, oder weg laufen. Alternativ: Sich tot stellen. Aber das ist auch nicht immer eine gute Idee.

Meiner Vermutung nach, lauern auf dem Weg zur gemeisterten Herausforderung die größeren Erkenntnisse. Dummerweise lauern dort auch Versagen, und das eingestehen von Fehlern/Irrtümern.

Oder anders:

Um den nächsthöheren Gipfel zu erreichen, muss man erst ein Jammertal durchqueren. Quelle: Irgend ein Schachspieler, nach dem er gerade ein Pferd gegen einen Bauern getauscht hat.

Ok Fehler gefunden... tatsächlich ein Wackler :confused:

Danke für die Infos auch wie der Code evtl. zu vereinfachen wäre.

Grüße Sebi