Go Down

Topic: SoftPWM LEDs leuchten durcheinander (Read 248 times) previous topic - next topic

Dannytat2

Hallo hab mit einem Beispielprogramm gestartet.
wenn ich es so laufen lasse ohne SoftPWM geht alles einwandfrei. sobald ich aber die Ausgänge per SoftPWMSet ansprechen möchte dann leuchten irgendwie andere LEDs die nicht leuchten sollten aber die angesprochenen überhaupt nicht.

Vielleicht hab ich ja einen Fehler den ich übersehen habe.

Ohne SoftPWM:
Code: [Select]
// Kanäle auf Ausgang, und dann deaktivieren
  pinMode(L_BLK_RE, OUTPUT);
  digitalWrite(L_BLK_RE, LOW);
  pinMode(L_FAHRLICHT_RE, OUTPUT);
  digitalWrite(L_FAHRLICHT_RE, LOW);
  pinMode(L_STANDLICHT1_RE, OUTPUT);
  digitalWrite(L_STANDLICHT1_RE, LOW);
  pinMode(L_STANDLICHT2_RE, OUTPUT);
  digitalWrite(L_STANDLICHT2_RE, LOW);
  pinMode(L_FERNLICHT_RE, OUTPUT);
  digitalWrite(L_FERNLICHT_RE, LOW);

  pinMode(L_FERNLICHT_LK, OUTPUT);
  digitalWrite(L_FERNLICHT_LK, LOW);
  pinMode(L_STANDLICHT1_LK, OUTPUT);
  digitalWrite(L_STANDLICHT1_LK, LOW);
  pinMode(L_STANDLICHT2_LK, OUTPUT);
  digitalWrite(L_STANDLICHT2_LK, LOW);
  pinMode(L_FAHRLICHT_LK, OUTPUT);
  digitalWrite(L_FAHRLICHT_LK, LOW);
  pinMode(L_BLK_LK, OUTPUT);
  digitalWrite(L_BLK_LK, LOW);

  pinMode(L_BLK_H_RE, OUTPUT);
  digitalWrite(L_BLK_H_RE, LOW);
  pinMode(L_BLK_H1_RE, OUTPUT);
  digitalWrite(L_BLK_H1_RE, LOW);
  pinMode(L_RUECKFAHRLICHT_RE, OUTPUT);
  digitalWrite(L_RUECKFAHRLICHT_RE, LOW);
  pinMode(L_BREMSE_RE, OUTPUT);
  digitalWrite(L_BREMSE_RE, LOW);
  pinMode(L_BREMSE_I_RE, OUTPUT);
  digitalWrite(L_BREMSE_I_RE, LOW);
  pinMode(L_BREMSE_II_RE, OUTPUT);
  digitalWrite(L_BREMSE_II_RE, LOW);

  pinMode(L_BLK_H_LK, OUTPUT);
  digitalWrite(L_BLK_H_LK, LOW);
  pinMode(L_BLK_H1_LK, OUTPUT);
  digitalWrite(L_BLK_H1_LK, LOW);
  pinMode(L_RUECKFAHRLICHT_LK, OUTPUT);
  digitalWrite(L_RUECKFAHRLICHT_LK, LOW);
  pinMode(L_BREMSE_LK, OUTPUT);
  digitalWrite(L_BREMSE_LK, LOW);
  pinMode(L_BREMSE_I_LK, OUTPUT);
  digitalWrite(L_BREMSE_I_LK, LOW);
  pinMode(L_BREMSE_II_LK, OUTPUT);
  digitalWrite(L_BREMSE_II_LK, LOW);


  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);


Code: [Select]

void showHeadLights() {
  dbgOut("H:");
  dbgOutLn(headLightState);
  switch (headLightState) {

  case STAND:
    digitalWrite(L_BLK_RE, 0);
    digitalWrite(L_FAHRLICHT_RE, 0);
    digitalWrite(L_STANDLICHT1_RE, 0);
    digitalWrite(L_STANDLICHT2_RE, 0);
    digitalWrite(L_FERNLICHT_RE, 0);

    digitalWrite(L_FERNLICHT_LK, 0);
    digitalWrite(L_STANDLICHT1_LK, 0);
    digitalWrite(L_STANDLICHT2_LK, 0);
    digitalWrite(L_FAHRLICHT_LK, 0);
    digitalWrite(L_BLK_LK, 0);

    digitalWrite(L_BLK_H_RE, 0);
    digitalWrite(L_BLK_H1_RE, 0);
    digitalWrite(L_RUECKFAHRLICHT_RE, 0);
    digitalWrite(L_BREMSE_RE, 1);
    digitalWrite(L_BREMSE_I_RE, 1);
    digitalWrite(L_BREMSE_II_RE, 1);

    digitalWrite(L_BLK_H_LK, 0);
    digitalWrite(L_BLK_H1_LK, 0);
    digitalWrite(L_RUECKFAHRLICHT_LK, 0);
    digitalWrite(L_BREMSE_LK, 1);
    digitalWrite(L_BREMSE_I_LK, 1);
    digitalWrite(L_BREMSE_II_LK, 1);
   
    break;



SoftPWM Version:
Code: [Select]
void showHeadLights() {
  dbgOut("H:");
  dbgOutLn(headLightState);
  switch (headLightState) {

  case STAND:
    digitalWrite(L_BLK_RE, 0);
    digitalWrite(L_FAHRLICHT_RE, 0);
    digitalWrite(L_STANDLICHT1_RE, 0);
    digitalWrite(L_STANDLICHT2_RE, 0);
    digitalWrite(L_FERNLICHT_RE, 0);

    digitalWrite(L_FERNLICHT_LK, 0);
    digitalWrite(L_STANDLICHT1_LK, 0);
    digitalWrite(L_STANDLICHT2_LK, 0);
    digitalWrite(L_FAHRLICHT_LK, 0);
    digitalWrite(L_BLK_LK, 0);

    digitalWrite(L_BLK_H_RE, 0);
    digitalWrite(L_BLK_H1_RE, 0);
    digitalWrite(L_RUECKFAHRLICHT_RE, 0);
    SoftPWMSet(L_BREMSE_RE, 255);
    SoftPWMSet(L_BREMSE_I_RE, 255);
    SoftPWMSet(L_BREMSE_II_RE, 255);

    digitalWrite(L_BLK_H_LK, 0);
    digitalWrite(L_BLK_H1_LK, 0);
    digitalWrite(L_RUECKFAHRLICHT_LK, 0);
    SoftPWMSet(L_BREMSE_LK, 255);
    SoftPWMSet(L_BREMSE_I_LK, 255);
    SoftPWMSet(L_BREMSE_II_LK, 255);
   
    break;

pylon

Du hast den Link zur verwendeten Bibliothek vergessen.

Ausserdem solltest Du den ganzen Code posten und nicht nur Ausschnitte davon, denn der Fehler könnte ja an einem ganz anderen Ort liegen als Du denkst.

Dannytat2

@pylon
Danke ja hatte nur auszugweise gepostet aber hole den ganzen code jetzt mal nach.
Hab nur noch nicht alle Ausgänge auf SoftPWM umgestellt denn schon in diesem stadium lief es nicht und das hätte es ja.

Konnte ihn nicht als code posten also hänge ich die Datei mal an.
Hardware ist ein atmega644pa

Ich wäre für Hilfe echt dankbar.

Mike60

der Verfasser des Original- Sketches ist auch hier im Forum unterwegs
"willie1968"
schreib' ihn doch einmal per PN an
ich habe noch keinen Alkohol getrunken, keine Drogen oder bunte Pillen genommen und bin auch nicht schwanger -> nehmt es einfach so hin

Dannytat2

@Mike60 Danke für die Antwort.
Hab ihn direkt mal angeschrieben vielleicht hilft das.

Bin aber für jeden Input offen.

Gruß
Daniel

willie1968

SoftPWM ist aber nicht von mir.  ;)

Ich vermute, die Softpwm kann mit dem 644'er nicht. UNd kommt dann mit der Pin zu PWM Zuordnung durcheinander.
Kannste das mal mit einem UNO oder Duemilanove ausprobieren. (Also mit einem 328?)
und Tschoe
Willie
http://www.rcarduino.tk

Dannytat2

@willie1968:
Hab schon SoftPWM drauf laufen lassen nur nicht in dem umfang.
werde es aber dann auch mal versuchen auf einem arduino uno laufen zu lassen.

Danke

willie1968

Ist ja auch nur zur Fehlersuche.
Es kann sein, daß da einige Anschlüsse einfach anders gehandelt werden...
und Tschoe
Willie
http://www.rcarduino.tk

Go Up