Beliebige PWM erzeugen_die zweite

Hallo,
habe bereits in einem anderen Thread gepostet. Ich wurde allerdings gebeten, einen neuen aufzumachen.

Ich möchte eine einstellbare PWM erzeugen, um damit unterschiedliche Gleichstrommotoren (u.a. bürstenlose) zu steuern. Dazu habe ich eine Library “Arduino PWM Frequency Library v_05.zip” gefunden. Das komfortable an dieser ist, dass man ganz einfach die gewünschte PWM eingeben kann.

Diese habe ich entpackt, in einen eigenen Ordner PWM in der Arduino Library (C/Programmex86/Arduino/Libraries die Datei PWM.h kopiert. Ein mittels IDE Installieren der Library scheiterte zunächst an der Fehlermeldung, dass in der zip Datei unerlaubte Zeichen (Leerzeichen) enthalten sind. Umbenennen (Leerzeichen entfernen) half auch nicht, hier wurde eine unzulässige Datei moniert. Letztlich der oben beschriebene Weg schien gangbar.
Nun meldet aber der Compiler beim compilieren: Exit Status1 Fehler beim compilieren für das Board Arduino / Genuino Uno. Es scheint definitiv an der Datei PWM.h zu liegen, welche ich durch #include<PWM.h> einbinde. Seltsamerweise funktioniert auch der Beispielsketch PWM_lib_example ebenfalls nicht. Er verwendet die gleiche Headerdatei PWM.h

Daraus schlussfolgere ich, dass die Datei PWM.h schon vorher (in anderer Form) vorhanden gewesen sein muss und ich nun eine “falsche” PWM.h verwende. Was kann ich

    1. tun, um die alte Datei wieder zu aktivieren und
    1. um die oben genannte Library funktionierend zu installieren

Mit programmieren (Assembler für 51er) beschäftige ich mich schon ein halbes Leben, mit Arduino (C++) erst seit einiger Zeit, habe aber schon andere Projekte erfolgreich ausgeführt.
Gruß Holger

Hi

Bitte die (in dem anderen Thread erbetenen) vollständigen Fehlermeldungen.
Dort wird Dir beim Kompilieren auch angezeigt, welche Lib für was benutzt wird - mit Pfad.
Wenn es bereits eine andere Lib mit diesem Namen gibt, bekommt der Kompiler schweißnasse Füße und sucht sich halt Eine davon aus - Welche, steht in den Meldungen.
Denke: Der nimmt die Falsche

MfG

PS: Gekommen sind wir von Hier

Arduino: 1.8.8 (Windows 7), Board: "Arduino/Genuino Uno"

In file included from C:\Program Files (x86)\Arduino\libraries\PWM\PWM_lib_example\PWM_lib_example.ino:13:0:

C:\Program Files (x86)\Arduino\libraries\PWM/PWM.h:36:33: fatal error: utility/BTimerDefs.h: No such file or directory

compilation terminated.

exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

Habe mal die Fehlermeldung kopiert und hier eingefügt. Kann mir im Moment keinen Reim darauf machen. Wie gesagt, "Fast-Neuling"....

Es reicht nicht, nur die PWM.h zu kopieren. Der gesamte Inhalt des zip muss in das library-Verzeichnis kopiert werden.

OK, werde den Rest der entpackten Dateien ebenfalls dahin kopieren. Anschließend mache ich "Meldung" :slight_smile:

Warum installierst du das zip nicht über den Bibliotheken Manager der IDE?

Habe nun den Rest ebenfalls reinkopiert. Nun diese Meldung:

Arduino: 1.8.8 (Windows 7), Board: "Arduino/Genuino Uno"

Build-Optionen wurden verändert, alles wird neu kompiliert
In file included from C:\Users\Holger\Documents\Arduino\PWM_lib_example_01\PWM_lib_example_01.ino:1:0:

C:\Program Files (x86)\Arduino\libraries\PWM/ATimerDefs.h:204:3: error: #error "ATimerDefs.h only supports ATMega640, ATMega1280, ATMega1281, ATMega2560, and ATMega2561"

#error "ATimerDefs.h only supports ATMega640, ATMega1280, ATMega1281, ATMega2560, and ATMega2561"

^

exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

ATmega 328 wird wohl nicht unterstützt...
@EIEspanol: Habe ich oben bereits geschrieben: Hat nicht funktioniert

error: #error "ATimerDefs.h only supports ATMega640, ATMega1280, ATMega1281, ATMega2560, and ATMega2561"

Der Meldung solltest du glauben.
Denn sie spricht sicherlich Wahr.

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

Der Empfehlung solltest du folgen.

Hi

C:\Program Files (x86)\Arduino\libraries\PWM/PWM.h

Was spricht die Welt zu dem / in dem Pfad, wo sonst nur \ anzutreffen sind?

MfG

postmaster-ino:
Hi

C:\Program Files (x86)\Arduino\libraries\PWM/PWM.h

Was spricht die Welt zu dem / in dem Pfad, wo sonst nur \ anzutreffen sind?

MfG

Slash / Backslash, OK und wie löse ich das? Im Explorer geht das wohl nicht.

Ich hatte auf Hilfe gehofft, nicht auf Feststellungen:

combie:
Der Meldung solltest du glauben.
Denn sie spricht sicherlich Wahr.

Und ?? Welchen Tipp hättest du?

combie:
Der Empfehlung solltest du folgen.

Diese Funktion ist eingestellt. Ändert aber nichts an der Sachlage. In einem Tutorial auf Youtube mit einem Nano funktioniert das jedenfalls, also sollte doch wohl auch der ATMega 328 unterstützt werden. Von dort stammte auch der Link zu der Library

OK, vielleicht mache ich mich auch unbeliebt, aber hilfreiche Tipps habe ich bislang vermisst. Ich bin nicht mit dem goldenen "Arduino Löffel" im Mund geboren.

Hi

Es gibt Betriebssysteme, Die benutzen einen
Und es gibt Betriebssysteme, Die benutzen einen /

Und nun rate Mal, was in dem Videp wohl anders war, als bei Dir.
… reine Vermutung, liegt wohl am goldenen Arduino-Löffel zwischen den Zähnen …

MfG

Wenn du die Einstellung "Ausführliche Angaben" in der IDE gemacht hast, muss doch eine ausführliche Fehlermeldung angezeigt werden.
Warum zeigst du diese uns nicht ?
Dann sehen wir eher, welche Fehler du gemacht hast und wie wir dir helfen können.

Sorry, wenn sich macher auf den Schlips getreten fühlt,
vielleicht verstehe ich ja nicht eindeutig, was der eine oder andere schreibt. Das mit den unterschiedlichen / bzw \ ist mir schon klar. Hab letztlich alle Dateien in dem Ordner komplett gelöscht und neu hineinkopiert. Kompilieren funktioniert nun wieder.
Warum es über den Assistenten nicht funktionierte? Kann ich nicht sagen. Hab weiter oben was dazu geschrieben.
Als Newbe kann man leider nicht immer die gut gemeinten, aber etwas zu fachlichen Tipps richtig verstehen. Da hilft auch keine Ironie

postmaster-ino:
C:\Program Files (x86)\Arduino\libraries\PWM/PWM.h
Was spricht die Welt zu dem / in dem Pfad, wo sonst nur \ anzutreffen sind?

Das ist völlig ok.

Denn Windows spricht mittlerweile beides.


Und ?? Welchen Tipp hättest du?

Du sollst keine *.h einbinden, welche für deinen Prozessor nicht geeignet sind.

Aber da du deinen Code geheim hältst, keine konkrete Ansage...
Auch die ausführlichen Meldungen sind geheim.
Also: Dann such selber.


aber hilfreiche Tipps habe ich bislang vermisst.

Wie denn?

Code geheim
Kein Link zur Lib
Keine ausführlichen Ausgaben.

Wie stellst du dir eine konstruktive Hilfe, unter solchen Umständen, vor?


Als Newbe kann man leider nicht immer die gut gemeinten, aber etwas zu fachlichen Tipps richtig verstehen.

Also Klartext:
Du wirst mindestens 2 mal von der IDE aufgefordert die ausführlichen Ausgaben zu aktivieren.
Eigentlich solltest du SELBER die Meldung lesen und genau das tun.
Frage dich bitte selber mal, wie so das so gründlich in die Hose gegangen ist...
(ich will das gar nicht wissen)

Dann wurdest du von mindestes 2 Forenmitgliedern aufgefordert das zu tun.

Der Erfolg?
NULL, die Meldungen werden ignoriert und geheim gehalten.
Aber, DU beschwerst dich über die Hilfe Qualität.
Wie soll das zusammen gehen?

Ja, so kann man sich bei mir unbeliebt machen.

  1. Ich habe es noch nicht auf die Reihe bekommen, meinen Code hier zu posten. Das ist nicht geheim und auch nicht böse gemeint. Ich muss erst mal herausfinden, wie. Es handelt sich aber auch um den Code aus der Beispiele Bibliothek, wie bereits angemerkt.
    2)Die Meldungen, ausführliche Ausgaben, hatte ich hier hin kopiert, konnte damit nur nichts anfangen. Auch nicht geheim.

Jedes Forum ist anders zu bedienen, man muss erst mal herausfinden, wie man mit diesem zurecht kommt. Bitte kreidet mir DAS nicht an! Danke

Holger58:
Jedes Forum ist anders zu bedienen, man muss erst mal herausfinden, wie man mit diesem zurecht kommt. Bitte kreidet mir DAS nicht an! Danke

Das kreidet dir niemand an.....aber,

Wenn man etwas nicht kennt, sollte man dazu erst mal die Bedienungsanleitung lesen.
Zu allem gibt es auch hier im Forum eine ausführliche Beschreibung.

@TO: lies das.

Gruß Tommy

OK, mein Fehler. Werde das lesen....
Irgendwannn werde ich es wieder benötigen, bei der nächsten Frage / Problem
Schönen Sonntag noch allen!

Holger58:
Schönen Sonntag noch allen!

Was ist denn jetzt mit deinem aktuellen Problem?
Aufgegeben, obwohl lösbar?

Nein, ist gelöst. Habe im entsprechenden Ordner der Library alle Dateien gelöscht und neu hineinkopiert. Nun akzeptiert der Kompiler auch die PWM.h. Alles gut (hatte ich aber weiter oben schon geschrieben).
Funktioniert jetzt wie gewünscht, PWM Frequenz kann per Zuweisung eingestellt werden.

#include <PWM.h>
int32_t frequency = 10000;
int led = 9;

void setup() {

  InitTimersSafe();
  bool success = SetPinFrequencySafe(led, frequency);
  if (success) {
    pinMode(13, OUTPUT);
    digitalWrite(13, HIGH);
  }
}

void loop() {
  int sensorValue = analogRead(A0);
  //  Serial.println(sensorValue);
  pwmWrite (led, sensorValue / 4);
  delay (30);
}

Mein erster Versuch, den Code hier einzustellen.