Anhang

vor 5 years 3 days
Digitaler Ausgang Dies ist ein einfaches 'Hallo Welt'-Programm und schaltet etwas ein und aus. In diesem Beispiel ist eine LED an PIN 13 angeschlossen und blinkt jede Sekunde. Der Widerstand mag an diesem Pin überflüssig sein, weil der Arduino einen eingebauten Widerstand besitzt.
  int ledPin = 13; // LED aus Digitalpin 13   void setup() // wird einmal druchlaufen { pinMode(ledPin, OUTPUT); // setzt Pin 13 als Ausgang }   void loop() // Laufen als Endlosschleife { digitalWrite(ledPin, HIGH); // schaltet die LED ein delay(1000); // Pause fuer 1 Sekunde digitalWrite(ledPin, LOW); // schaltet die LED aus delay(1000); // Pause fuer 1 Sekunde }
Digitaler Eingang Dies ist die einfachste Form eines Einganges mit nur zwei möglichen Zuständen: ein oder aus. Dieses Beispiel liest einen einfachen Schalter oder Taster an Pin 2 aus. Wenn der Schalter geschlossen ist und der Einganspin HIGH ist wird die LED eingeschaltet.
  int ledPin = 13; // Ausgangspin fuer die LED int inPin = 2; // Eingangspin fuer einen Schalter   void setup() { pinMode(ledPin, OUTPUT); // deklariert LED als Ausgang pinMode(inPin, INPUT); // deklariert Schalter als Eingang }   void loop() { if (digitalRead(inPin) == HIGH) // prüfen ob die der Eingang HIGH ist { digitalWrite(ledPin, HIGH); // schaltet die LED ein delay(1000); // Pause fuer 1 Sekunde digitalWrite(ledPin, LOW); // schaltet die LED aus delay(1000); // Pause fuer 1 Sekunde } }
Ausgänge mit hoher Stromstärke Machmal ist es notwendig mehr als die 40 Milliampere der Ausgänge des Arduino zu kontrollieren. In diesem Fall kann ein MOSFET oder Transistor benutzt werden um höhere Stromstärken zu schalten. Das folgende Beispiel schaltet einen MOSFET etwa 5 mal pro Sekunde ein und aus. Bemerkung: Die Schaltung zeigt einen Motor und eine Schutzdiode, es können aber andere nicht-induktive Ladungen ohne die Verwendung der Diode genutzt werden.
  int outPin = 5; // Ausgangspin fuer den MOSFET   void setup() { pinMode(outPin, OUTPUT); // setzt Pin5 als Ausgang }   void loop() { for (int i=0; i<=5; i++) // Schleife wird 5 mal durchlaufen { digitalWrite(outPin, HIGH); // schaltet MOSFET an delay(250); // Pause 1/4 Sekunde digitalWrite(outPin, LOW); // schaltet MOSFET aus delay(250); // Pause 1/4 Sekunde } delay(1000); // Pause 1 Sekunde }
analoger PWM Ausgang Pulsweiten Modulation (PWM) ist eine Methode um analoge Ausgänge zu simulieren, indem man die Ausgangsspannung pulsiert. Damit kann man zum Beispiel eine LED heller oder dunkler werden lassen oder später einen Servomotor kontrollieren. Das folgende Beispiel lässt eine LED mit Hilfe einer Schleife langsam heller und dunkler werden.
  int ledPin = 9; // PWM Pin fuer die LED   void setup(){} // Kein Setup notwendig   void loop() { for (int i=0; i<=255; i++) // aufsteigender Wert für i { analogWrite(ledPin, i); // setzt den Helligkeitswert auf i delay(100); // Pause fuer 100ms }   for (int i=255; i>=0; i--) // absteigender Wert fuer i { analogWrite(ledPin, i); // setzt den Helligkeitswert auf i delay(100); // Pause fuer 100ms } }
Potentiometer Eingang Mit einem Potentiometer und einem der analog-digital Converter (ADC) Eingänge des Arduinos ist es möglich analoge Werte von 0-1024 zu lesen. Das folgende Beispiel verwendet ein Potentiometer um die Blinkrate einer LED zu kontrollieren.
  int potPin = 0; // Eingangspin fuer das Potentiometer int ledPin = 13; // Ausgangspin fuer die LED   void setup() { pinMode(ledPin, OUTPUT); // deklariere ledPin als OUTPUT }   void loop() { digitalWrite(ledPin, HIGH); // schaltet ledPin ein delay(analogRead(potPin)); // pausiert Program um Wert des Potentiometers digitalWrite(ledPin, LOW); // schaltet ledPin aus delay(analogRead(potPin)); // pausiert Program um Wert des Potentiometers }
Eingang für variable Widerstände Variable Widerstände umfassen CdS Lichtsensoren, Thermistoren, Flex Sensoren und ähnliches. Dieses Beispiel nutzt eine Fuktion um den Analogwert auszulesen und seiner Größe entsprechend eine Pause im Programmablauf zu definieren. Dies kontrolliert die Geschwindigkeit nach der eine LED heller und dunkler wird.
int ledPin = 9; // PWM Pin für die LED int analogPin = 0; // variabler Widerstand auf Analog Pin 0 void setup(){} // kein Setup benoetigt void loop() { for (int i=0; i<=255; i++) // ansteigender Wert fuer 'i' { analogWrite(ledPin, i); // setzt die Helligkeit der LED auf Level 'i' delay(delayVal()); // laenge der Pause aus der Funktion delayVal() } for (int i=255; i>=0; i--) // absteigender Wert fuer 'i' { analogWrite(ledPin, i); // setzt die Helligkeit der LED auf Level 'i' delay(delayVal()); // laenge der Pause aus der Funktion delayVal() } } int delayVal() { int v; // definert temporaere Variable v = analogRead(analogPin); // liest den Analogwert aus v /= 8; // rechnet 0-1024 auf 0-128 um return v; // gibt das Resultat der Funktion zurueck }
Servo Output Hobby-Servos sind eine geschlossene Motoreinheit, die sich in der Regel in einem 180-Grad-Winkel bewegen lassen. Es braucht nur einen Puls der alle 20ms gesendet wird. In diesem Beispiel wird eine servoPulse-Funktion genutzt um das Servo von 10-170 Grad und wieder zurück zu bewegen.
int servoPin = 2; // Servo mit Digital-Pin 2 verbunden int myAngle; // Drehwinkel des Servos ca 0-180 Grad int pulseWidth; // Variable der servoPulse-Funktion void setup() { pinMode(servoPin, OUTPUT); // Pin 2 als Ausgang setzen } void servoPulse(int servoPin, int myAngle) { pulseWidth = (myAngle * 10) + 600; // bestimmt die Verzögerung digitalWrite(servoPin, HIGH); // setzt den Ausgang auf HIGH delayMicroseconds(pulseWidth); // Mikrosekunden Pause digitalWrite(servoPin, LOW); // setzt den Ausgang auf LOW } void loop() { // Servo startet bei 10 Grad und dreht auf 170 Grad for (myAngle=10; myAngle<=170; myAngle++) { servoPulse(servoPin, myAngle); // sendet Pin und Winkel delay(20); // Zyklus erneuern } // Servo startet bei 170 Grad und dreht auf 10 Grad for (myAngle=170; myAngle>=10; myAngle--) { servoPulse(servoPin, myAngle); // sendet Pin und Winkel delay(20); // Zyklus erneuern } }

0 Antworten auf “Anhang”