Arduino


der freie Microcontroller

Arduino

Der Arduino ist ein quelloffener Microprozessor. Download der Steuerungssoftware unter: arduino.cc

Arduino

  • Die analogen Eingänge A0-A5 messen Spannungen von 0-5 V. Die ermittelten Werte sind zwischen 0 und 1023.
  • Die digitalen Pins 0-13 interpretieren eine angelegte Spannung unter 2,5 V als LOW und höher als 2,5 V als HIGH.
  • Die digitalen Pins 0-13 können eine Spannung von 5 V ausgeben.
  • Am Pin 13 kann eine LED ohne Vorwiderstand betrieben werden, da der Strom auf 20 mA begrenzt ist. Zusätzlich ist hier auf dem Board eine kleine LED verbaut, die über den Pin 13 angesteuert werden kann.
  • Pins mit Tilde-Zeichen (~) können durch PWM (Pulsweiten-Modulation) Werte zwischen 0 und 255 ausgeben und so Werte zwischen 0 V und 5 V annehmen.
  • Die Pins 0 (RX) und 1 (TX) können nur dann verwendet werden, wenn kein Serial-Monitor verwendet wird.

Installation

  1. Arduino-Software herunterladen.
  2. Arduino-Software installieren, starten und wieder beenden.

ArduBlock

ArduBlock bietet eine grafische Programmieroberfläche für die Programmierung eines Arduino, die stark an Scratch angelehnt ist. Im Gegensatz zu Snap4Arduino erzeugt diese einen einsehbaren Arduino-Code, übergibt diesen an die Arduino-Software und lädt ihn dann auf den Arduino hoch.

Installation

  1. Download einer ArduBlock-Version:
  • letsgoING / Download ) - gut sortiert, übersichtlich
    (Auf Clone or Download, dann Download zip klicken.
  • Ardublock - das Original (momentan veraltet und daher nur auf Arduino-Software 1.6x lauffähig)
  • arduino-basics / Download - aktuelles Ardublock mit Basic- und Expertenmodus
  • taweili - sehr stark erweitertes Ardublock
  • DuinoEDU / Download - erweitertes Ardublock
  1. Im Ordner Arduino (der automatisch beim ersten Start von Arduino erstellt wird) folgende Ordnerstruktur erstellen: /tools/ArduBlockTool/tool/. So entsteht folgender Pfad: /Arduino/tools/ArduBlockTool/tool/
  2. In den Ordner tool die heruntergeladene Ardublock*.jar-Datei kopieren.
  3. Arduino starten. Unter „Werkzeuge“ findet sich nun der Eintrag „ArduBlock“ über den die grafische Entwicklungsumgebung für Arduino gestartet werden kann.

Arbeiten mit ArduBlock

Alle Elemente werden einfach aus den Vorgaben auf der linken Seite herausgezogen und zusammengesetzt. Nicht benötigte Bauteile werden in das linke Fenster gezogen. Mit einem Rechtsklick auf bestehende Elemente können diese kopiert werden.

Nachdem ein Programm erstellt ist, sollte dieses zuerst gespeichert werden. Dann wird es mit einem Klick auf „Hochladen auf Arduino“ auf dem Arduino kopiert.
Mit einem Klick auf “Seriellmonitor” öffnet sich ein Fenster, in dem die Werte des Befehls “serial println” angezeigt werden.

Snap4Arduino

Snap4Arduino bietet wie Scratch4Arduino die Möglichkeit in der gewohnten Oberfläche von Scratch bzw. Snap den Arduino anzusteuern. Die Programmiermöglichkeiten bezüglich des Arduinos sind dabei sehr stark eingeschränkt. Dafür lassen sich über den Arduino Snap-Programme steuern. Um Snap4Arduino anzuwenden muss auf dem Arduino eine geeignete Firmware installiert werden.

Installation

  1. Download von Snap4Arduino.
  2. Snap4Arduino installieren.
  3. Arduino-Software starten.
  4. Datei/Beispiele/Firmata/StandardFirmata öffnen und auf den Arduino hochladen.
  5. Snap4Arduino starten und unter Arduino den Arduino am passenden Port (steht in der Arduino-Software ganz unten) verbinden.

Beispiele

Alle Beispiele wurden mit der Ardublock-Datei von letsgoING erstellt. Die Zeichnungen der Schaltungen wurden mit fritzing (kostenloser Download nur mit Login möglich) realisiert.

LED

Die LED an „Digital 1“ blinkt im Sekundentakt

LED blinkt LED blinkt ArduBlock

void setup()
{
  pinMode( 1 , OUTPUT);
}

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

LDR

Der Wert des lichtempfindlichen Widerstands wird im Serial Monitor angezeigt.

LED anzeigen LED anzeigen ArduBlock

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.print("LDR-Wert:");
  Serial.print(analogRead(0));
  Serial.println();
}

LED mit LDR dimmen

Der Wert des LDR wird in der Variable “Helligkeit” gespeichert, umgerechnet und dann an die LED gesendet. Der Wert “970” hängt vom Widerstand ab und muss mittels der Werte im Serialmonitor angepasst werden.

LED mit LDR dimmen LED mit LDR dimmen ArduBlock

int Helligkeit = 0 ;

void setup()
{
  pinMode( 3 , OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  Helligkeit = analogRead(0) ;
  Serial.print("LDR-Wert:");
  Serial.print(Helligkeit);
  Serial.println();
  Helligkeit = ( Helligkeit - 970 ) ;
  Serial.print("neuer Wert:");
  Serial.print(Helligkeit);
  Serial.println();
  analogWrite(3 , Helligkeit);
}

Taster

Der Wert eines Tasters wird ausgelesen und damit eine LED geschaltet. Ist der Taster gedrückt, leuchtet die LED.

Taster Taster ArduBlock

int taster = 0 ;

void setup()
{
  Serial.begin(9600);
  pinMode( 7 , OUTPUT);
}

void loop()
{
  taster = analogRead(1) ;
  delay( 10 );
  Serial.print("message");
  Serial.print(taster);
  Serial.println();
  if (( ( taster ) > ( 1 ) ))
  {
    digitalWrite( 7 , HIGH );
  }
  else
  {
    digitalWrite( 7 , LOW );
  }
}

Taster als Impulsgeber

Ein Druck auf den Taster lässt die LED leuchten, ein weiterer Druck schaltet die LED wieder aus.

Taster Taster ArduBlock

bool taster= false ;

void setup()
{
  pinMode( 7 , INPUT);
  pinMode( 8 , INPUT);
  pinMode( 7 , OUTPUT);
}

void loop()
{
  taster = digitalRead(8) ;
  delay( 200 );
  if (( ( taster ) == ( HIGH ) ))
  {
    if (digitalRead(7))
    {
      digitalWrite( 7 , LOW );
    }
    else
    {
      digitalWrite( 7 , HIGH );
    }
  }
}

Ultraschallsensor

Die Werte des Ultraschallsensors (Abstand in cm) werden im Serial Monitor angezeigt.

Ultraschallsensor Ultraschallsensor ArduBlock

int UltraschallSensor(int SensorPin){
  long duration, cm; 
  pinMode(SensorPin, OUTPUT); 
  digitalWrite(SensorPin, LOW);  
  delayMicroseconds(2); 
  digitalWrite(SensorPin, HIGH); 
  delayMicroseconds(5); 
  digitalWrite(SensorPin, LOW); 
  pinMode(SensorPin, INPUT); 
  duration = pulseIn(SensorPin, HIGH); 
  cm =  duration / 29 / 2; 
  return cm;
}

void setup() {
  Serial.begin(9600);
  digitalWrite( 2 , LOW );

} 

void loop() {
  Serial.print("Wert: ");
  Serial.print(	UltraschallSensor( 2 ) );
  Serial.println();
}

Variablen

Eine LED wird gedimmt. Dazu zählt die Variable “Helligkeit” von 1 bis 30 und zurück.

LED dimmen LED dimmen ArduBlock

int Helligkeit = 0 ;

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

void loop()
{
  while ( ( ( Helligkeit ) < ( 30 ) ) )
  {
    Helligkeit = ( Helligkeit + 1 ) ;
    analogWrite(3 , Helligkeit);
    delay( 100 );
  }

  while ( ( ( Helligkeit ) > ( 1 ) ) )
  {
    Helligkeit = ( Helligkeit - 1 ) ;
    analogWrite(3 , Helligkeit);
    delay( 100 );
  }

}

Relais

Das Relais schaltet den, von einem eigenen Stromkreis betriebenen, Motor im Sekundentakt aus und an.

Servo Servo ArduBlock

void setup() {
  pinMode(8, OUTPUT);
}

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

Servo-Motor

Ein Servo-Motor kann feste Werte (in Grad) einnehmen.

Servo Servo ArduBlock

#include <Servo.h>

Servo servo_pin_5;

void setup()
{
  servo_pin_5.attach(5);
}

void loop()
{
  servo_pin_5.attach(5);
  servo_pin_5.write( 0 );
  delay( 1000 );
  servo_pin_5.write( 90 );
  delay( 1000 );
  servo_pin_5.detach();
}

Schrittmotor

Stepper Stepper ArduBlock

#include <Stepper.h>

Stepper stepper1(200, 8, 9, 10, 11);

void setup() {
}

void loop() {
  stepper1.setSpeed(100);
  stepper1.step(1000);
  delay( 1000 );
}

Motor

Ein Gleichstrommotor benötigt eine externe Stromversorgung. Die Ansteuerung erfolgt über eine H-Brücke (L293D). Diese hält einen kurzzeitigen Strom von 1,2 A und einen dauerhaften Storm von 600 mA pro Kanal aus. Die integrierten Dioden fangen die Induktionsströme ab, die beim Nachdrehen des Motors entstehen.

Das Programm lässt den Motor 5 Sekunden in der einen Richtung, dann 5 Sekunden in der anderen Richtung drehen. Über die Werte High/LOW wird die Richtung definiert.

H-Brücke

Stepper Stepper ArduBlock

void setup() {
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
}

void loop() {
  digitalWrite( 11 , HIGH );
  digitalWrite( 10 , LOW );
analogWrite(9 , 250);
  delay( 5000 );
  digitalWrite( 11 , LOW );
  digitalWrite( 10 , HIGH );
  analogWrite(9 , 250);
  delay( 5000 );
} 

Zufallszahl

Das Programm erzeugt Zufallszahlen zwischen 1 und 6. Diese werden über den Serial Monitor ausgegeben.

Zufallszahl ArduBlock

int zahl = 0 ;

void setup()
{
  randomSeed(analogRead(A0) + analogRead(A1) + analogRead(A2));
  Serial.begin(9600);
}

void loop()
{
  zahl = ( 	random( 6 ) + 1 ) ;
  Serial.print("Zahl:");
  Serial.print(zahl);
  Serial.println();
  delay( 1000 );
}

Töne

Das Programm spielt einen A-Dur Akkord.

Frequenzen der einzelnen Töne

Buzzer Buzzer ArduBlock

void setup() {
}

void loop() {
  tone(8, 220, 500);
  delay( 1000 );
  tone(8, 277.183, 500);
  delay( 1000 );
  tone(8, 329.628, 500);
  delay( 1000 );
  tone(8, 440, 500);
  delay( 1000 );
}

Links

Downloads

aktualisiert am 19. 2. 2021