Einstieg Mikrocontroller mit dem Arduino     

1 Portausgaben    


Elektronik-Labor   Projekte   AVR 




Stecke deinen Arduino Nano auf die Steckplatine. Damit können nun auch weitere Bauteile angeschlossen werden. Und auch wenn der Arduino allein benutzt wird, ist die Steckplatine sinnvoll, weil sie die Anschlüsse schützt und Kurzschlüsse vermeiden hilft.

Ein Port in ein Anschluss des Mikrocontrollers. Das Wort „Port“ bedeutet Hafen. Da können Schiffe ankommen oder abreisen. Und an einem Prozessor-Port können Informationen ankommen oder abgeschickt werden. Eine Information ist ein Zustand wie An oder Aus, was beim Arduino 5 V oder 0 V bedeutet. Beim ersten Programm, dem Blink-Beispiel, gehen Informationen von innen nach außen. Der Port muss als digitaler Ausgang (Output) verwendet werden.  Die Funktion pinMode stellt den verwendeten Port also als Output ein.

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);

void loop() {
  digitalWrite(LED_BUILTIN, HIGH); 
  delay(1000);                      
  digitalWrite(LED_BUILTIN, LOW);  
 
delay(1000);                    
}

Der Arduino hat viele Portanschlüsse, die mit D2 bis D13 beschriftet sind. Die LED L ist am Port D13 angeschlossen. Man kann jedem Port einen besonderen Namen geben. In diesem Fall wurde der Port 13 mit LED_BUILDIN (Eingebaute LED) benannt. Dass dies tatsächlich der Pin D13 ist, kann man herausfinden, indem man den Schaltplan des Arduino Nano von der Arduino-Seite holt. Oder man schließt einfach eine weitere LED an den Anschluss D13 an. Aber Achtung! Man muss auch noch einen Vorwiderstand in Reihe anschließen, damit nicht zu viel Strom fließt.

Der gemeinsame Minuspol heißt GND (Ground, Erde, Masse). Und der Widerstand kann 10 kOhm (10 kΩ, Braun, Schwarz, Orange) haben, dann ist die zusätzliche LED nicht zu hell. Wer es heller braucht, nimmt nur 1 kΩ (Braun, Schwarz, Rot). In diesem Fall wurde die Leitung Y als Verbindung zwischen Widerstand und Kathode (Minusanschluss) der LED verwendet. Starte nun das Blink-Programm. Diesmal blinken beide LEDs, die eingebaute und die außen angeschlossene. Falls nicht, hast du vielleicht die LED falsch herum angeschlossen. Der kurze Anschluss ist die Kathode und soll nach unten weisen.

Tausche nun im ganzen Programm das Wort LED_BUILDIN gegen die Zahl 13 aus. Und statt HIGH kannst du 1 schreiben und statt LOW eine 0.  So wird das Programm viel kürzer, tut aber genau das gleiche. Nur die Namen der Funktionen pinMode und digitalWrite müssen unverändert bleiben.

void setup() {
  pinMode(13, OUTPUT);

void loop() {
 
digitalWrite(13, 1); 
  delay(1000);                
  digitalWrite(13, 0);  
  delay(1000);                    
}

 
Wer die Funktion der digitalen Ausgänge bis hier verstanden hat, kann auch mehrere Ausgänge in einem Programm verwenden.

Programmiere also einmal einen Wechselblinker an den Anschlüssen D2 und D3. Diesmal wird für zwei LEDs nur ein gemeinsamer Vorwiderstand gebraucht. Auch auf der oberen Seite gibt es einen GND-Anschluss. Und alle Kathoden der LEDs liegen nun an der X-Leitung.

//Wechselblinker 

void setup(){
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);

void loop() {
  digitalWrite(2, 1); 
  digitalWrite(3, 0);  
  delay(500);                    
  digitalWrite(2, 0); 
  digitalWrite(3, 1);  
  delay(500);                    
}

 
So ein schönes Programm, das muss aufgehoben werden! Schreibe noch einen Namen in Form eines Kommentars in die erste Zeile:   //Wechselblinker  Und dann speichere das Programm auf deine Festplatte. Wenn du einfach Datei/Speichern wählst, kommt ein Hinweis, dass das zuerst geladene Programm Blink schreibgeschützt ist. Die musst einen neuen Namen wählen: Wechselblinker. Die IDE speichert das Programm dann in ein einem Verzeichnis namens Sketchbook. Die Dateiendung ist ino. Das Programm Wechselblinker.ino steht in einem Unterprogramm namens Wechselblinker. Das ist immer so, jedes Programm steht in einem Verzeichnis mit gleichem Namen.

Aufgaben:

·        Programmiere ein Lauflicht.

·        Stelle einen fallenden Wassertropfen dar.

·        Erzeuge schnelle LED-Muster, die nur bei Bewegung erkennbar werden.

 

Download: Arduino1.zip 

Zurück: ArduinoKurs0.htm


Ergänzungen und Programme von Kursteilnehmern:

//Wechselblinker,  Verwendung von Portregistern
void setup(){
  DDRD=255;
  //pinMode(2, OUTPUT);
  //pinMode(3, OUTPUT);
}
void loop() {
  //PORTD=0x04;
  PORTD=4;
  //PORTD= 0b00000100;
  //digitalWrite(2, 1);
  //digitalWrite(3, 0); 
  delay(500);  
  //PORTD=0x08; 
  PORTD= 0b00001000;              
  //digitalWrite(2, 0);
  //digitalWrite(3, 1); 
  delay(500);                   
}


//Ein Bewegungsbild mit 6 LEDs
void setup(){
  DDRD=255;
}
void loop() {
  PORTD= 0b00110000; delay(1);
  PORTD= 0b01001000; delay(1);
  PORTD= 0b10000100; delay(1);
  PORTD= 0b10000100; delay(1);
  PORTD= 0b10000100; delay(1);
  PORTD= 0b01001000; delay(1);
  PORTD= 0b00110000; delay(1);
  PORTD= 0b00000000; delay(5);                  
}



//Regentropfen, von Fynn
void setup() {
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
}
void loop() {
  digitalWrite(2, 1);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(1600);                     
  digitalWrite(2, 0);
  digitalWrite(3, 1);
  delay(800);
  digitalWrite(3, 0);
  digitalWrite(4, 1);
  delay(400);
  digitalWrite(4, 0);
  digitalWrite(5, 1);
  delay(200);
  digitalWrite(5, 0);
  digitalWrite(6, 1);
  delay(100);
  digitalWrite(6, 0);
  digitalWrite(7, 1);
  delay(50);
  digitalWrite(7, 0);
  digitalWrite(8, 1);
  delay(25);
  digitalWrite(8, 0);
  digitalWrite(9, 1);
  delay(12);                   
}

//Lauflicht, von  Carla
void setup() {
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
}
void loop(){
  digitalWrite(2,1);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(1000);
  digitalWrite(2, 0);
  digitalWrite(3, 1);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(1000);
  digitalWrite(2, 0);
  digitalWrite(3, 0);
  digitalWrite(4, 1);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(1000);
  digitalWrite(2, 0);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 1);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(1000);
  digitalWrite(2, 0);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 1);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(1000);
  digitalWrite(2, 0);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 1);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(1000);
  digitalWrite(2, 0);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 1);
  digitalWrite(9, 0);
  delay(1000);
  digitalWrite(2, 0);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 1);
  delay(1000);
}


//Wassertropfen , von Carla
void setup() {
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
}
void loop(){
  digitalWrite(2,1);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(2000);
  digitalWrite(2, 0);
  digitalWrite(3, 1);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(1750);
  digitalWrite(2, 0);
  digitalWrite(3, 0);
  digitalWrite(4, 1);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(1500);
  digitalWrite(2, 0);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 1);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(1000);
  digitalWrite(2, 0);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 1);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(750);
  digitalWrite(2, 0);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 1);
  digitalWrite(8, 0);
  digitalWrite(9, 0);
  delay(500);
  digitalWrite(2, 0);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 1);
  digitalWrite(9, 0);
  delay(250);
  digitalWrite(2, 0);
  digitalWrite(3, 0);
  digitalWrite(4, 0);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  digitalWrite(9, 1);
  delay(100);
}



// Morsezeichen "Carla", jeder Buchstabe an einer LED
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
void loop() {
  digitalWrite(2, 1);
  delay(600);                  // - von C(arla)
  digitalWrite(2, 0);
  delay(200);
  digitalWrite(2, 1);         // . von C
  delay(200);
  digitalWrite(2, 0);
  delay(200);
  digitalWrite(2, 1);          // - von C
  delay(600);                 
  digitalWrite(2, 0);
  delay(200);
  digitalWrite(2, 1);          //. von C
  delay(200);
  digitalWrite(2, 0);
  delay(1000);                  // Warten
  digitalWrite(3, 1);          // . von (c)A(rla)
  delay(200);
  digitalWrite(3, 0);
  delay(200);
  digitalWrite(3, 1);           // - von A
  delay(600);
  digitalWrite(3, 0);
  delay(1000);
  digitalWrite(4, 1);           // . von (ca)R(la)
  delay(200);
  digitalWrite(4, 0);
  delay(200);
  digitalWrite(4, 1);           // - von R
  delay(600);
  digitalWrite(4, 0);
  delay(200);
  digitalWrite(4, 1);            // . von R
  delay(200);
  digitalWrite(4, 0);
  delay(1000);
  digitalWrite(5, 1);            // . von (car)L(a)
  delay(200);
  digitalWrite(5, 0);
  delay(200);
  digitalWrite(5, 1);            // - von L
  delay(600);
  digitalWrite(5, 0);
  delay(200);
  digitalWrite(5, 1);            // . von L
  delay(200);
  digitalWrite(5, 0);
  delay(200);
  digitalWrite(5, 1);            // . von L
  delay(200);
  digitalWrite(5, 0);
  delay(1000);
  digitalWrite(6, 1);            // . von (carl)A
  delay(200);
  digitalWrite(6, 0);
  delay(200);
  digitalWrite(6, 1);            // - von A
  delay(600);
  digitalWrite(6, 0);
  delay(2000);
}


//Sehr schnelles Lauflicht, von Maria
//Ist bei schneller Bewegung erkennbar
void setup(){
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);

void loop(){
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);
delay(1);
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0),
digitalWrite(7, 0),
digitalWrite(8, 0);
digitalWrite(9, 0),
delay(1);
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);
delay(1);
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);
delay(1); 
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);
delay(1);
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 0);
digitalWrite(9, 0);
delay(1);
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 1);
digitalWrite(9, 0);
delay(1);
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 1);
delay(1);
}


Elektronik-Labor   Projekte   AVR