Arduino


der freie Microcontroller

Arduino

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

ArduBlock

ArduBlock bietet eine grafische Programmieroberfläche für die Programmierung eines Arduino, die stark an Scratch angelehnt ist. Im Gegensatz zu S4A (Scratch4Arduino) erzeugt diese einen einsehbaren Arduino-Code, übergibt diesen an die Arduino-Software und wird dann auf den Arduino hochgeladen.

Installation

Download der ArduBlock-Version der Mechotronik Hochschule Reutlingen unter https://github.com/letsgoing/ardublock

Eine erweiterte Version gibt es unter: https://sourceforge.net/projects/ardublock/files/

  • Windows/Mac: Im Ordner „Arduino“ folgende Ordner erstellen: /tools/ArduBlockTool/tool/
  • Linux: Im Ordner „sketchbook“ folgende Ordner erstellen: /tools/ArduBlockTool/tool/

Das heruntergeladene Archiv entpacken und die Datei ardublock-all.jar aus dem Ordner “JAR” in den erstellen Ordner „tool“ kopieren.

Arduino starten. Unter „Tools“ findet sich nun der Eintrag „ArduBlock“ über den die grafische Entwicklungsumgebung für Arduino gestartet werden kann.

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.

Beispiele

Nachdem ein Programm erstellt ist, muss 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.

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

LED anzeigen LED anzeigen ArduBlock

Der Wert des lichtempfindlichen Widerstands wird im Serial Monitor angezeigt.

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

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

LED mit LDR dimmen

LED mit LDR dimmen LED mit LDR dimmen ArduBlock

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 angepasst werden. Zur Orientierung dienen daher die Werte im Serialmonitor.

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

Ultraschallsensor Ultraschallsensor ArduBlock

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

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( 11 , LOW );

}

void loop()
{
  Serial.print(    UltraschallSensor( 11 ));
  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 );
  }

}

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();
}

Tresor

Ein 4-stelliger Code muss eingegeben werden.

Tresor Tresor ArduBlock

int zaehler = 0 ;
int w1 = 0 ;
int w2 = 0 ;
int w3 = 0 ;
int w4 = 0 ;
int wert = 0 ;

void setup()
{
  pinMode( 2 , INPUT);
  pinMode( 3 , INPUT);
  pinMode( 4 , INPUT);
  pinMode( 5 , INPUT);
  Serial.begin(9600);
  zaehler = 0 ;

}

void loop()
{
  while ( ( ( zaehler ) < ( 4 ) ) )
  {
    if (digitalRead(2))
    {
      delay( 300 );
      zaehler = ( zaehler + 1 ) ;
      w1 = ( zaehler * 1000 ) ;
    }
    if (digitalRead(3))
    {
      delay( 300 );
      zaehler = ( zaehler + 1 ) ;
      w2 = ( zaehler * 100 ) ;
    }
    if (digitalRead(4))
    {
      delay( 300 );
      zaehler = ( zaehler + 1 ) ;
      w3 = ( zaehler * 10 ) ;
    }
    if (digitalRead(5))
    {
      delay( 300 );
      zaehler = ( zaehler + 1 ) ;
      w4 = ( zaehler * 1 ) ;
    }
  }

  wert = ( ( w1 + w2 ) + ( w3 + w4 ) ) ;
  Serial.print("Wert:");
  Serial.print(wert);
  Serial.println();
  if (( ( wert ) == ( 4321 ) ))
  {
    Serial.print("Code erraten");
    Serial.println();
  }
  else
  {
    Serial.print("falscher Code");
    Serial.println();
  }
}

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 );
}

aktualisiert am 3. 4. 2017