Go Down

Topic: SoftPWM LEDs leuchten durcheinander (Read 322 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.

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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy