Software PWM

  • Hallo RasperryPi Forum,

    Ich habe mich mal an der WiringPi Bibliothek in C probiert um Software PWM zu ermöglichen doch diese will einfach nicht laufen.
    Meine C erfahrungen sind sehr mangelhaft also entschuldigt wenn es ein sehr Simpler Anfängerfehler ist.

    Hier mein Versuchscode


    // WiringPi-Api einbinden
    #include <wiringPi.h>
    #include <softPwm.h>
    // C-Standardbibliothek einbinden
    #include <stdio.h>

    int main() {
    int pin=9;
    int initialValue=30;
    int pwmRange=100;
    int value=70;
    // Starte die WiringPi-Api (wichtig)
    if (wiringPiSetup() == -1)
    return 1;

    pinMode(9, OUTPUT);
    int softPwmCreate (int pin, int initialValue, int pwmRange) ;
    // Dauerschleife
    while(1) {
    void softPwmWrite (int pin, int value);
    }
    }


    Für eure Antworten danke ich schonmal im vorraus :danke_ATDE:
    MFG IceZwo

  • Ok mehreres:
    1. Benutze bitte Code-Blöcke um Code hier zu shcreiben, ist wesentlich lesbarer
    2. FEHLERMELDUNGEN. Lesen und uns geben, wir sagen dir dann (vermutlich) was sie bedeuten. Aber wir müssen wissen was falsch gelaufen ist.
    3. Ja zumindest sind Anfängerfehler drinne :)

    Ich korrigiere mal was mir AUF DEN ERSTEN BLICK auffällt. Keine Vollständigkeitsgarantie und ich teste es auch nicht selbst. Überall wo ich etwas korrigiere kommt ein Erklärungsommentar drann. (Ein paar Schönheits-Leerzeilen kommen auch dazu, und Einrückung!!!)

    Du hast Variablen noch nicht verstanden.
    Quick-Kurs C(++)-Variablen:
    Als erstes musst du Variablen deklarieren:
    int testvar; // int heißt, das ist ein Integer (also Ganzzahl) mit dem namen testvar. Alles weitere tust du mit dem namen

    Dann initialisierst du die Variable:
    testvar = 42; // ich denke hier muss ich nichts erklären

    Dann kannst du die Variable verwenden:
    weiteretestvar = testvar;
    oder
    funktion(testvar); //Hier gehört wie du siehst kein int oder ähnliches hin,

    Du kannst die deklaration und initialisierung zusammenziehen:
    int testvar = 42; // Das geht aber pro Variable nur EIN mal, danach ändert man den Wert "ganz normal" mit
    testvar = 21;

    Einmal editiert, zuletzt von Horroreyes (6. Mai 2014 um 14:00)

  • Vielen Dank für deine Antwort Horroreyes es funktioniert jetzt alles so wie ich es wollte :thumbs1::D.
    Ich werde deine Tipps für weitere Post berucksichtigen du hast mir echt weitergeholfen.

    MFG IceZwo

  • Tach IceZwo,

    kleiner Tipp am Rande: wenn Du mehrere PWM-Kanäle benötigst, dann ist wiringPi nicht dazu geeignet (siehe auch -> hier <- der Kommentar des Autors).
    In diesem Fall kann ich Dir pigpio empfehlen. Alternativ wäre auch die bcm2835 dazu in der Lage.

    cheers,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!