Potis auslesen - Wo ist der Fehler?

Hallo,

ich verzweifle noch an dem Mega2560 bzw. der IDE... :confused: :confused:

Nach stundenlangem Probieren und Suchen finde ich einfach den Fehler im Programm nicht. Es sind 5 Potis angeschlossen an den analogen Eing√§ngen A1-A5. Je nach Potieinstellung soll an den Ausg√§ngen 2,3 und 5-7 der analoge Wert (f√ľr PWMs) ausgegeben werden.

Doch egal, an welchem Poti ich drehe, werden ALLE Outputs mit demselben Wert ausgegeben, und nicht wie gew√ľnscht f√ľr jedes Poti der entsprechende Output-Pin!!! Konkret dimmen bei ALLEN Potis immer ALLE LEDs mit demselben Wert.

Kann mir jemand helfen, wo der Fehler liegt? Habe es schon mit drei Megas ausprobiert, davon ein nagelneues...

int poti1 = 0;  // input variable potis
int poti2 = 0;
int poti3 = 0;
int poti4 = 0;
int poti5 = 0;

void setup() {
 
 Serial.begin(9600);
 
 pinMode(2, OUTPUT);  // declare outPins as an OUTPUT
 pinMode(3, OUTPUT);
 pinMode(5, OUTPUT);
 pinMode(6, OUTPUT);
 pinMode(7, OUTPUT);

}

void loop() {
    poti1 = analogRead(A1);   // read the value from potis  
    analogWrite(2, poti1/4);  // send the square wave signals to outPins
    poti2 = analogRead(A2); 
    analogWrite(3, poti2/4);
    poti3 = analogRead(A3); 
    analogWrite(5, poti3/4);
    poti4 = analogRead(A4); 
    analogWrite(6, poti4/4);
    poti5 = analogRead(A5); 
    analogWrite(7, poti5/4);

}

VG Chris

Hallo Chris,
habe Deinen Sketch mit zwei Potis und zwei LEDs ausprobiert, funktioniert prima. Am Sketch kann es also nicht liegen. Bleibt also Deine Schaltung als Fehlerquelle.

Danke dir, das hilft mir schon bissel weiter.

Allerdings waren beim zweiten Test nicht mal LEDs angeschlossen, nur zwei Potis, die ich durchgemessen habe und die in Ordnung sind. Den gleichen Effekt hatte ich auch, als ich die Werte nur im Serial Monitor ausgegeben habe. Egal welches Poti an egal welchem Analoganschluss, es sind alle Analogwerte an den Outputs dieselben Werte.
Es können doch nicht alle drei Megas denselben Defekt haben?! :o Ich verstehe das absolut nicht...
Gibt's einen Selbsttest f√ľr die Megas?

VG Chris

So habe ich getestet:

  poti1 = analogRead(A1);   // read the value from potis
  analogWrite(2, poti1 / 4); // send the square wave signals to outPins
  Serial.print("A1 = "); Serial.println(poti1 / 4); // Debug-Ausgabe
  poti2 = analogRead(A2);
  analogWrite(3, poti2 / 4);
  Serial.print("A2 = "); Serial.println(poti2 / 4); // Debug-Ausgabe

A1 = 8
A2 = 31

Es sind 5 Potis angeschlossen an den analogen Eingängen A1-A5.

Wie hast du sie angeschlossen?

Moin,
die Potis sollten mindestens 1 kOhm haben = 5 mA Strom pro Poti
Besser ist ein höherer Wert.

Anschluss:
ein äußeres Bein an 5 Volt, das andere äußere Bein an GND.
Das mittlere Bein, der Schleifer, greift jetzt die Spannung ab und wird an einem analogen Eingang angeschlossen.
Wenn man das Poti von Anschlag zu Anschlag dreht, ändert sich die Spannung am Analogeingang von 0 nach 5 Volt oder umgekehrt.
Der eingelesene Wert ist dann 0 bis 1023.
Diesen Wert teilts Du durch 4 und schreibst ihn als PWM.

Gruss
Kurti

Tippe auch an falsch angeschlossenes Poti.
Gr√ľ√üe Uwe

kurti:
Anschluss:
ein äußeres Bein an 5 Volt, das andere äußere Bein an GND.
Das mittlere Bein, der Schleifer, greift jetzt die Spannung ab und wird an einem analogen Eingang angeschlossen.
Wenn man das Poti von Anschlag zu Anschlag dreht, ändert sich die Spannung am Analogeingang von 0 nach 5 Volt oder umgekehrt.
Der eingelesene Wert ist dann 0 bis 1023.
Diesen Wert teilts Du durch 4 und schreibst ihn als PWM.

Gruss
Kurti

Vorsicht, es gibt auch Potis bei denen der Schleiferanschluss an Pin 1 oder 3 liegt, oft ist dann aber ein Schaltbild aufgedruckt

Gruß

Wie stellst Du denn fest, was an den Ausg√§ngen rauskommt? Ein DVM ist daf√ľr nicht unbedingt geeignet.

kurti:
Moin,
die Potis sollten mindestens 1 kOhm haben = 5 mA Strom pro Poti
Besser ist ein höherer Wert.

Anschluss:
ein äußeres Bein an 5 Volt, das andere äußere Bein an GND.
Das mittlere Bein, der Schleifer, greift jetzt die Spannung ab und wird an einem analogen Eingang angeschlossen.
Wenn man das Poti von Anschlag zu Anschlag dreht, ändert sich die Spannung am Analogeingang von 0 nach 5 Volt oder umgekehrt.
Der eingelesene Wert ist dann 0 bis 1023.
Diesen Wert teilts Du durch 4 und schreibst ihn als PWM.

Gruss
Kurti

Guten Morgen an alle, danke f√ľr Eure Posts.

Die Linear-Potentiometer sind alle nagelneu von Alphastat und haben 10kOhm. Bedrahtung ist gemäß Datenblatt, in Frontansicht der linke Pin ist GND, das mittlere am Analogeingang A1 bis A5, der rechte Pin an einem 5V-Ausgang. Es werden ja die Werte von 0 bis 1023 korrekt im Serial Monitor angezeigt, und durch 4 geteilt wird der Wert ja auch. Ausgabe ebenfalls an den PWM-Pins 2,3,5,6 und 7.

Die Funktionalität ist ja da, nur steuert jeder Potieingang ALLE PWMs auf einmal, egal an welchem Poti ich drehe. Und das ist es, was ich nicht nachvollziehen kann. Wie kann ich denn die Megas testen, ob die evtl. einen Schlag haben? Bis jetzt liefen die alle tadellos, und eines ist ja sogar noch aus der Verpackung...

VG Chris

Hmm ...
Lustiges Problem...
Der Fehler steckt im Schatten.
Außerhalb des Blickwinkels.
Vermutlich muss sich die Richtung des Denkens ändern um da ran zu kommen....

Dass 3 Megas kaputt sind, kann ich mir nicht vorstellen.

Es werden ja die Werte von 0 bis 1023 korrekt im Serial Monitor angezeigt,

Das kann dein gezeigtes Beispielprogramm nicht leisten. Da ist keine serielle Ausgabe.
Wäre vielleicht ganz nett, auch das Programm zu zeigen, mit dem du testest.

nur steuert jeder Potieingang ALLE PWMs auf einmal, egal an welchem Poti ich drehe.

Wie stellst du das fest?
Was ist an den PWM Pins angeschlossen, so dass du diese Annahme/Behauptung aufstellen kannst...

Mach mal ein Foto vom Aufbau.
gr√ľ√üe Uwe

Hast du die PWM Pins schon mal ohne Poti getestet? z. B. mit Fadeing Beispiel?

Ich kann mir eben auch nicht vorstellen, dass alle drei Megas gleichzeitig defekt sind, aber es ist derzeit f√ľr mich die letzte vorstellbare M√∂glichkeit, denn am Code, der Verdrahtung bzw. den Potis liegt's wohl nicht.

Doch, es ist eine serielle Ausgabe enthalten, leider habe ich nicht den kompletten Code beim Copy & Paste erwischt. Angehängt das komplette Programm. Sorry.

An den f√ľnf PWM-Pins hingen nur beim ersten Versuch gelbe LEDs √ľbers Breadboard dran (je 2.0V, mit je 150 Ohm Vorwiderstand), und dort trat ja zum ersten Mal der Effekt auf. Da dachte ich zuerst auch an falsche Beschaltung der LEDs oder Potis und habe die Bedrahtung sowie alle Werte der Outputs im Serial Monitor gepr√ľft. Code ebenfalls gecheckt, keine Fehler gefunden.

Beim zweiten Versuch kamen ein zweites Mega, zwei neue Potis zum Einsatz, aber ohne LEDs. Wert nur im Serial Monitor √ľberpr√ľft --> gleiches Ergebnis. Code wieder gecheckt, nix gefunden.

Dritter Versuch mit nagelneuem Mega aus der Verpackung, ohne LEDs, gleiches Resultat.

Die Annahme, dass alle Megas irgendeinen Schuss haben, muss ich nachher mal testen, ob selbst mit einem kleinen Testprogramm, bei dem gar keine Potis ausgelesen werden, sondern feste Werte an die Outputs geschickt werden, ALLE PWMs angesprochen werden. Wie soeben der Vorschlag mit dem Fading. Foto kann ich auch machen.

Alles extrem mysteriös.

VG Chris

int poti1 = 0; // input variable potis
int poti2 = 0;
int poti3 = 0;
int poti4 = 0;
int poti5 = 0;

void setup() {

Serial.begin(9600);

pinMode(2, OUTPUT); // declare outPins as an OUTPUT
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);

}

void loop() {
poti1 = analogRead(A1); // read the value from potis
analogWrite(2, poti1/4); // send the square wave signals to outPins
poti2 = analogRead(A2);
analogWrite(3, poti2/4);
poti3 = analogRead(A3);
analogWrite(5, poti3/4);
poti4 = analogRead(A4);
analogWrite(6, poti4/4);
poti5 = analogRead(A5);
analogWrite(7, poti5/4);

Serial.print("potiA1= "); Serial.println(poti1/4); // Printout in Serial Mon
Serial.print("potiA2= "); Serial.println(poti2/4);
Serial.print("potiA3= "); Serial.println(poti3/4);
Serial.print("potiA4= "); Serial.println(poti4/4);
Serial.print("potiA5= "); Serial.println(poti5/4);

}

wie sieht den nun bei diesem Code die serielle Ausgabe aus?

ElEspanol:
wie sieht den nun bei diesem Code die serielle Ausgabe aus?

Beispielzeile aus dem Serial Monitor:

potiA1=0
potiA2=0
potiA3=0
potiA4=0
potiA5=0
...

aufsteigend bis nach dem vollen Rechtsdreh an einem beliebigen Poti

potiA1=249
potiA2=252
potiA3=251
potiA4=252
potiA5=252
...

Übrigens funktioniert der Upload aufs Mega, weil der Blink-Sketch läuft. Sogar mit Ausgabe an LED auf einem der PWM-Pins.

sind die Megas aus der gleichen Charge bzw. zusammen gekauft worden?

An den f√ľnf PWM-Pins hingen nur beim ersten Versuch gelbe LEDs √ľbers Breadboard dran (je 2.0V, mit je 150 Ohm Vorwiderstand), und dort trat ja zum ersten Mal der Effekt auf. Da dachte ich zuerst auch an falsche Beschaltung der LEDs oder Potis und habe die Bedrahtung sowie alle Werte der Outputs im Serial Monitor gepr√ľft. Code ebenfalls gecheckt, keine Fehler gefunden.

Da habe ich noch eine Frage zu:
Wie kannst du die PWM Outputs im seriellen Monitor sehen/pr√ľfen?

ElEspanol:
sind die Megas aus der gleichen Charge bzw. zusammen gekauft worden?

Ja, ich will die auf der Modellbahn einsetzen, daher hab ich gleich drei beim selben Lieferanten bestellt, aber nicht aus China. Auf allen steht Arduino Mega, also kein SainSmart etc.

combie:
Da habe ich noch eine Frage zu:
Wie kannst du die PWM Outputs im seriellen Monitor sehen/pr√ľfen?

Gar nicht, nur die Potiwerte an den Analogeing√§ngen. Ob an den PWMs was ankommt, sehe ich nur am Multimeter bzw. den LEDs. Ich vermute, es liegt auch an eben diesen Analogeing√§ngen, weil da ja schon mit einem Poti f√ľr alle Eing√§nge derselbe Wert generiert wird.

Nachtrag: auch an anderen Analogeingängen derselbe Effekt, von A1 bis A8.