Schaltungsdiagramm
für den Anschluss eines Tasters und einer LED am NANO-Board
Die Anschlußpins
für den Taster (Schalter) und die LED wurden willkürlich
gewählt. Als LED wurde eine Low Power LED angenommen, die
bei einem Strom von 2mA bereits hell leuchtet. Eine normale LED
würde dies bei 20mA tun. In diesem Fall sollte der
Vorwiderstand einen Wert von ca.220 Ohm besitzen.
Tore die
pulsweitenmodulierte-Signale ausgeben können sind .. D3,
D5, D6 und D9, D10, D11
Das vorliegende
Programm bewirkt nach einem Druck auf den Taster zunächst
ein heller werden der LED, dann folgt nach einer kurzen Pause
wiederum deren Verdunkelung. Wann der Maximal- bzw der
Minimalwert der Erleuchtung bzw. der Verdunkelung der LED
erreicht wurde, kann im seriellen Ausgabefenster der
Entwicklungsumgebung gesehen werden. Zwischen beiden Aktionen
ist im Programm eine Wartezeit von (1s) eingefügt.
Bei der angegebenen
Wirkdauer der 1-Signale von (16ms) dauern Erleuchtung und
Verdunkelung etwa 4s.
|
Programm
Pulsweitenmodulation PWM
/*
Test
einer Pulsweiten-Modulation PWM am Eingangspin 11
------------------------------------------------------
Die
Frequenz der Pulsweitenmodulation beim Arduino soll etwa 500Hz
betragen. Innerhalb dieses Zeitraums
können
1-Siglale zwischen 0 und 100% der Pulslänge generiert
werden. Dies geschieht durch Werte der Programmierung zwischen 0
und 255. Dem entsprechen wird bei dem Wert 128 die Hälfte
der Gesamtzeit ein 0-Signal und die zweite Hälfe ein
1-Signal aus dem PWM-Pin heraustreten. Bei dem Wert 255 dauert
das 1-Signal 100% der Pulszeit.
Das
Programm lässt mit diesen 1-Signalen eine LED heller oder
dunkler leuchten, wobei ein Taster die
Veränderung
der Pulslänge bewirkt. Die Dauer die ein bestimmter
Pulswert andauern kann, wird durch eine delay()-Funktion
bestimmt.
*/
//
Definition der benutzten Tore
int
LED = 11;
// Tor an dem die LED angeschlossen ist
int
TASTER = 14;
// Tor an dem der Taster angeschlossen
ist.
//
Startbedingungen des Programms einstellen
//
-----------------------------------------
void
setup(){
Serial.begin
(9600);
Serial.println
("Programm wurde gestartet");
pinMode
(TASTER, INPUT);
// Eingangstor des Tasters
}
//
dauerhafte Schleife in welcher der Taster abgefragt wird
//
--------------------------------------------------------
void
loop (){
if
(digitalRead (TASTER) == HIGH)
loopLED(); //
Aufruf des Unterprogramms LED schalten
}
//
Schleife in der die Helligkeit der LED gesetzt wird
//
---------------------------------------------------
void
loopLED(){
static
byte up = 1;
static
byte i = 0;
if(up
== 1){
analogWrite
(LED, i++);
// PWM Pulsdauer vergrößern
if(i
== 255){
up
= 0;
// von nun an den Wert i verkleinern
Serial.print
(i);
Serial.println
(" = MAX Wert, warte 1s");
delay
(1000);
// Wartezeit nach Erreichen des
MAX-Wertes
}
}
if(up
== 0){
analogWrite
(LED, i--);
// PWM Pulsdauer vermindern
if(i
== 0){
up
= 1;
// von nun an den Wert i vergrößern
Serial.print
(i);
Serial.println
(" = MIN Wert, warte 1s");
delay
(1000);
// Wartezeit nach Erreichen des MIN-Wertes
}
}
delay(16);
// bestimmt die Zeitdauer, die ein PWM
1-Signal andauern kann
}
|