Ist es möglich, den PWM-Ausgang anderen Pins zuzuordnen?

Der Arduino Uno hat PWM-Ausgänge an den Pins 11, 10, 9, 6, 5und 3. Ist es möglich, die PWM-Ausgänge von diesen Pins auf andere Pins umzuordnen?

Antworten (2)

Dies ist in gewisser Weise möglich. Die PWM-Pins werden von der Mikrocontroller-Hardware definiert, was nicht einfach zu ändern ist (zumindest nicht über Software).


Sie können natürlich einige der Spuren auf dem Brett herauskratzen und Ihre eigenen hinzufügen, aber das ist eine ziemlich eklige Lösung, und Sie könnten am Ende Ihr Brett irreversibel beschädigen 1 .


Eine bessere Lösung besteht darin, eine Abschirmung zu erstellen, die die Pins neu zuordnet. Das ist nicht allzu schwer: Sie erhalten zuerst ein Perfboard und einige männliche/weibliche Kopfleisten in der entsprechenden Größe. Jetzt löten Sie die Stiftleisten an, ausgerichtet mit dem Arduino. Löten Sie dann die weiblichen Berge auf die gegenüberliegende Seite des Perfboards - versetzen Sie sie, aber stellen Sie sicher, dass sie den gleichen Abstand haben wie auf einem Arduino. Machen Sie schließlich die gewünschten Querverbindungen. Beachten Sie, dass Sie die Kopfleisten versetzen müssen


Wenn der Grund, warum Sie die Pins neu zuordnen möchten, darin besteht, dass ein von Ihnen verwendeter Code PWM an den falschen Pins annimmt, erstellen Sie einfach eine Methode, transform()die eine Pin-Nummer aufnimmt und sie einer anderen zuordnet (verwenden Sie eine switch case-Anweisung ). Ersetzen Sie dann (die meisten IDEs haben eine Funktion zum Suchen/Ersetzen) alle digitalen/analogen Lese-/Schreibmethoden durch einen neuen Satz von Funktionen, zum Beispiel:

void digitalWrite2(int pin, int val){
 digitalWrite(transform(pin),val);
}

Und schließlich können Sie die SoftPWM-Bibliothek für Software-PWM auf allen Pins verwenden. Dies ist möglicherweise nicht genau dasselbe wie Hardware-PWM (andere Impulseigenschaften können Ihre Anwendung verlangsamen), aber es ist eine praktikable Option.

1. Nun, Sie beschädigen es so oder so irreversibel, aber es besteht die Möglichkeit, dass Sie zu viele Dinge auskratzen und nicht in der Lage sein werden, das Board wieder in einen halbwegs funktionierenden Zustand zu versetzen. Es ist nicht ratsam, direkt mit dem Board herumzuspielen, es sei denn, Sie wissen, was Sie tun.

Eigentlich können Sie mit Standard-Perfboard keinen Schild herstellen : Der Abstand zwischen den beiden Blöcken von Stiftleisten auf der "digitalen" Seite des klassischen Arduino (Uno, Mega usw.) beträgt 0,16 Zoll, kein Vielfaches von 0,1 Zoll , eine Entscheidung, die könnte gemacht worden sein, um mehr Schilde zu verkaufen und selbstgemachte Schilde unpraktisch in der Herstellung zu machen. Die offizielle Geschichte besagt, dass dies ein Fehler war, aber ich sehe es als unwahrscheinlich an, dass es sich jahrelang verbreitet hat, es sei denn, es war beabsichtigt. Der Nano, Pro Mini usw. haben dieses Problem nicht.
@AnindoGhosh Ein Vorteil des nicht übereinstimmenden Abstands besteht darin, dass verhindert wird, dass jemand einen Schild rückwärts einsteckt. Dies mag wie eine Kleinigkeit erscheinen, aber da die Arduino-Community gewachsen ist, ist dies wichtig geworden. (z. B. habe ich in den offiziellen Foren ein Bild von jemandem gesehen, der USB an einen Ethernet-Anschluss anschließt, und gefragt, warum es nicht funktioniert.)
@ JamesC4S Seltsamerweise war dies nie ein Grund, der von den offiziellen Sprechern angegeben wurde . Wenn sie daran gedacht hätten, hätten sie daraus einen Gewinn ziehen können, anstatt zuzugeben, dass sie es vermasselt haben: " Ich habe diesen Fehler gemacht, als ich das erste Arduino-Board gemacht habe. ... Wir hatten 5 Minuten vor Ablauf der Frist Zeit in Produktion gehen, der PCB-Typ war am Telefon ... ". Die beiden Stiftreihen haben sowieso unterschiedliche Stiftzahlen, was jedoch eine unternehmungslustige Person nicht daran hindern würde, einen Schild hineinzuschieben.
@AnindoGhosh Eigentlich habe ich es dort aufgegriffen. Die offizielle FAQ verwendet die Ausrede „Fehler in der elften Stunde“. Als die aktuelle Website gestartet wurde, hatte sie die „Rückwärts“-Ausrede. Jetzt ist davon keine Rede mehr. Ich persönlich bleibe gerne beim Rückwärtsgang, weil es tatsächlich ein bisschen Sinn macht.

Nein, dies geschieht auf der Hardware des Chips, ich habe Software-PWM-Bibliotheken gesehen, aber sie funktionieren nicht so gut wie die Hardwareversion und binden dabei das Mikro.

http://arduino.cc/forum/index.php/topic,19451.0.html