Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Image Removed

Was ist ein Mikrocontroller?

English Version

Ein Mikrocontroller (auch MCU oder µC) ist ein elektronisches Halbleiterelement, welches auf einem einzigen Chip mehrere Elemente, wie eine CPU, eine Uhr, Timer, I/O Ports und Speicher zur Verfügung stellt. Mikrocontroller werden heute in vielfältiger Art und Weise eingesetzt. Elektronische Produkte besitzen fast immer einen Mikrocontroller, welcher für die “Logik” der Produkte verantwortlich ist. Dabei verarbeitet er Eingaben von Sensorenund  und reagiert in dem er die Stellung oder Anzeige von Aktuatoren verändert.

...

Widget Connector
width650
urlhttps://vimeo.com/18539129
height365

Übersicht Arduino UNO

Der Standard unter den sehr verschiedenen Arduino Boards ist das Arduino UNO. Dieses Board ist sehr robust und für die meisten Anwendungen völlig ausreichend.

Pins des Arduino Boards

USB
Die USB-Schnittstelle ist eine serielle Schnittstelle, welche zur Programmierung des Arduino verwendet wird. Ausserdem wird über diese Schnittstelle das Arduino mit Strom versorgt. Weitere Informationen unter [USB Schnittstelle]

...

Digitaler Input / Output
Diese Pins können verwendet werden um digitale Events zu erkennen, bzw. schalten (siehe Digitaler Input / Digitaler Output). Eine spezielle Form ist die Pulse Width Modulation (PWM).

Analoger Input
Diese Pins können benutzt werden um Sensoren auszulesen (siehe Analoger Analog Input). Zwei dieser Pins (A4 und A5) übernehmen zusätzlich eine wichtige Rolle in der Kommunikation über I2Cüber die I2C (de) Schnittstelle.

Power
Hier sind alle Pins versammelt, welche für die grundlegende Spannungsversorgung benötigt werden. Es gibt GND, 5V, 3.3V und Vin

PWM
Diese Pins werden für die Pulse Width Modulation verwendet

SDA / SCL
Diese Pins finden für die sogenannte I2C (de) Schnittstelle Verwendung über welche sich Sensoren und sonstige Peripherie ansteuern lässst.  

RX / TX
Diese beiden Pins werden für die Serielle Kommunikation unter anderem auch für die USB Verbindung zum Computer verwendet.  

INT0 / INT1
Diese beiden Pins sind sogenannte Interrupts. Damit lassen sich über eine Interrupt Service Routine sehr schnell stattfindende Events erkennen. 

SCK / MISO / MOSI / SS
Diese vier Pins werden für die Kommunikation über die SPI Schnittstelle benötigt. Ein häufiges Anwendungsbeispiel ist das Steuern eines Shift Registers beim Shift Registers

Spezielle Funktionen

setup()
Wird nur einmal zum Beginn des Programms aufgerufen. Hier werden weitere Funktionen aufgerufen (z.B. pinMode()).

...

millis()
Hier wird die Aktuelle Systemzeit (in Millisekunden) zurückgegeben.

Aufgaben

1. Nutz das Blink Beispiel (Exampels/Basic/Blink) und erweitere es um eine zweite LED.
2. Öffne das BlinkWithout Delay Beispiel (Exampels/Digital/BlinkWithoutDelay) und verstehe das Konzept.
3. Programmiere ein Lauflicht mit 3 LEDs, welches sich von einer zur anderen Seite bewegt.
4. Definiert eine eigene Funktion void blinkLED(int _Pin, int _duration) welche es ermöglicht unterschiedliche LEDs mit unterschiedlichen Geschwindigkeiten blinken zu lassen.

Code Block
languagejava
titleLösung Aufgabe 1
collapsetrue
void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT); 
  pinMode(12, OUTPUT);  
}
 
void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  digitalWrite(12, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  digitalWrite(12, LOW);    // set the LED off
  delay(1000);              // wait for a second
}

...

languagejava
titleLösung Aufgabe 2
collapsetrue

...

.

...

Code Block
languagejava
titleLösung Aufgabe 3
collapsetrue
#define LED_ONE 13
#define LED_TWO 12
#define LED_THR 11
 
void setup() 
{                
  pinMode(LED_ONE, OUTPUT); 
  pinMode(LED_TWO, OUTPUT); 
  pinMode(LED_THR, OUTPUT);  
}
 
void loop() 
{
  for(int i=13; i<11; i--)
  {
    digitalWrite(i, HIGH);
    delay(500);
    digitalWrite(i, LOW);
    delay(500);
  }
   
  for(int i=11; i<=13; i++)
  {
    digitalWrite(i, HIGH);
    delay(500);
    digitalWrite(i, LOW);
    delay(500);
  } 
}

...

...

int ledPins[3] = {8,9,10}; // Alle LED Pins in einem Array initialisieren
boolean ledStates[3] = {false, false, false}; // Alle LED Status speichern
long previousMillis[3] = {0,0,0}; // Die Zeiten speichern
 
void setup()
{
  for(int i=0; i<3; i++)
  {
    pinMode(ledPins[i], OUTPUT); // Alle LED Pins sind Output
  }
}
 
void loop()
{
  blinkLED(1, 100);  // Aufrufen unserer Funktion
  blinkLED(2, 1000);
  blinkLED(3, 500);
}
 
void blinkLED(int _Pin, int _duration) // Eigene Funktion
{
  if(millis() - previousMillis[_Pin-1] > _duration) // Ist genug Zeit vergangen?
  {
    previousMillis[_Pin-1] = millis(); // Zeit speichern
    ledStates[_Pin-1] != ledStates[_Pin-1];  // Den LED State umdrehen (wenn AUS dann AN)
    digitalWrite(ledPins[_Pin-1], ledStates[_Pin-1]); // State setzen
  }
}

Weitere Informationen

...