Es gibt noch ein paar weitere sehr nützliche Funktionen.
tone(Pin, Frequenz) tone(Pin, Frequency, Dauer)
noTone(Pin)
gibt einen Ton mit der Frequenz auf dem Pin aus. Ist die Dauer angegeben (in Millisekunden) wird der Ton solange gespielt. Ansonst bleibt der Ton erhalten bis noTone() aufgerufen wird.
Einschränkungen: Es kann nur einen geben. Also nur 1 Ton an einem Pin zu jeder Zeit. Polyphonie kann der Arduino so nicht. Um das auch hörbar zu machen, kann man einfach einen kleinen Lautsprecher an den Pin anschliessen. Aber genau wie bei LED's bitte nicht den Vorwiderstand vergessen. 255Ohm sind schon i.O. Wir wollen ja kein Stadion beschallen. So wird's angeschlossen:
Was sind denn Schiebregister? Das sind Speicher die Ihren Inhalt taktorientiert Bit für Bit an einem Pin herauschieben können. Und der Arduino kann das auch.
shiftOut(DatenPin, TaktPin, Reihenfolge, Wert)
DatenPin ist der Pin an dem die Daten raus kommen sollen. TaktPin gibt an, wie der Takt ist, (Den Takt gibt der Arduino vor), Reihenfolge sagt, ob zuerst das oberste Bit oder das unterste Bit raus kommen sollen. (MSBFIRST, LSBFIRST), Wert ist natürlich das Byte was rausgeschoben werden soll. Die Pins müssen vorhar mit pinMode aus Ausgang konfiguriert werden. Je nachdem ob der Taktpin vor dem aufruf von shiftOut 1 oder 0 ist, können Bausteine mit fallender Flanke oder steigender Flanke benutzt werden. Beispiel dazu: siehe Porterweiterung
Das Gegenteil zur seriellen Ausgabe ist die serielle Eingabe. Auch da bietet Arduino bereits von Hause aus was.
byte incoming = shiftIn(DatenPin, TaktPin, Reihenfolge);
Auch hier ist der Arduino der Master, d.h. er gibt den Takt vor. Zunächst geht die Taktleitung auf 1, dann wird der Eingang gelesen und dann geht die Taktleitung wieder auf 0. Das ganze wird 8x gemacht bis das Byte voll ist.
Nein, wir wollen nicht unseren Puls messen, sondern hier geht's um die Breite eine Impulses. Für uns RC'ler ist das einier der wichtigsten Befehle. Damit können wir ganz einfach ein RC Signal auswerten. Das kommt aber später.
pulseIn(Pin, Puls) pulseIn(Pin, Puls, Timeout)
Pin ist wie immer unser Eingangspin. Puls ist entweder HIGH oder LOW. Mit HIGH messen wir die Länge eines positiven Impulses, LOW eben einen negativen Impuls. Timeout sagt, wie lange der Befehl auf den Impuls maximal warten soll. Die Variante ohne Timeout wartet unendlich…
Zurück kommt die Länge des Impulses in Microsekunden. Beispiele gibt's dazu später noch ganz viele.