Trichter-Taktgeber in Minecraft

In Minecraft existieren eine größere Zahl an sogenannten Taktgebern (bzw. Clocks). Ziel dieser Schaltungen ist es in regelmäßigen Abständen ein Redstone-Signal zu erzeugen. Das Problem an den meisten Taktgeber-Schaltungen ist, das diese notorisch instabil und unzuverlässig sind. Bei dem Trichter-Taktgeber ist dies anders. Dieser funktioniert nach einem Neustart des Servers und gerät mit der Zeit nicht aus dem Tritt.

Ein Trichter-Taktgeber

Für einen solchen Taktgeber müssen mehrere Trichter aneinander gehangen werden, bis sie schlussendlich einen Kreis bilden. Nun gibt man ein Item in einen der Trichter hinein. Dadurch wird das Item von Trichter zu Trichter weitergereicht. An einen der Tricher wird nun ein Komparator angebracht. Dieser löst immer dann ein Signal aus, wenn sich das Item in dem Trichter befindet. Setzt man an einen der Trichter ein Signal, so kann der Taktgeber gestoppt werden und zum Beispiel nur auf Wunsch aktiviert werden.

Smart in Parkposition bringen

Einen Smart in Parkposition zu bringen ist ein interessantes Unterfangen. Normalerweise stellt man das Auto ab und zieht die Handbremse an. Das ist im Winter allerdings mit Vorsicht zu genießen, da es unter Umstände passieren kann das die Bremse in diesem Fall festfriert und sich das Auto dann gar nicht mehr bewegt.

Die Schaltungsgestaltung in einem Smart

Die Schaltungsgestaltung in einem Smart

Wie parkt man also in diesem Fall? Da der Smart ein automatisiertes Schaltgetriebe hat, kann man nicht einfach einen Gang einlegen. Der Schlüssel lässt sich in der Stellung „A“ nicht entfernen. Auch eine Parkposition („P“) ist nicht vorhanden. Aber auch für diesen Fall gibt es eine Lösung. So reicht es einfach in den Rückwärtsgang („R“) zu schalten und anschließend den Schlüssel zu ziehen. Schon ist der Smart aus und ein Gang eingelegt, welcher das wegrollen verhindert.

Einen Servo mit dem Arduino ansteuern

Bei einem Servo handelt es sich um einen Motor welcher sich genau steuern lässt z.B. auf eine exakte Position. Die Ansteuerungselektronik ist bei einem Servo gleich eingebaut. Servos sind im übrigen im Normalfall nicht zum Durchlauf gedacht, da eine mechanische Sperre dies verhindert. Neben dem Servo soll es auch noch zwei LEDs (eine rote und eine grüne) zur Anzeige des Zustandes sowie einen Taster zum an- und ausschalten geben.

Zuerst wird der Servo mit dem Board verbunden. Der Servo hat dabei drei Anschlüsse, GND (schwarz bzw. braun), VDD (rot) sowie SIGNAL (Orange). GND wird dabei mit Ground verbunden, VDD mit der 5 Volt Buchse des Arduino und Signal mit PIN 9 des Boards. Der Taster wird mit PIN 4 verbunden, die beiden LEDs mit PIN 2 und 3. Damit wäre die Verkabelung erledigt.

Nun geht es an den Quellcode. Dieser soll den Servo ansteuern, die Lichter leuchten lassen, sowie den Taster abfragen. Interessant ist die Zeile:

digitalWrite(pushButton, HIGH); //Pull up Widerstand aktivieren

In dieser Zeile wird der interne Pull Up Widerstand des Arduino für PIN 4 aktiviert. Andernfalls müsste ein hochohmiger (1000 – 100000 Ohm) Widerstand auf dem Board im Tasterschaltkreis verbaut werden, da es sonst vorkommen kann das der Taster nicht reagiert.

#include <Servo.h> 

Servo servo;

int pushButton=4;

int ledRed=3;
int ledGreen=2;

void setup()
{
 pinMode(pushButton, INPUT);

 pinMode(ledRed, OUTPUT);
 pinMode(ledGreen, OUTPUT);

 servo.attach(9);

 digitalWrite(pushButton, HIGH); //Pull up Widerstand aktivieren
} 

void loop()
{
 int pressed=digitalRead(pushButton);

 digitalWrite(ledGreen, LOW);
 digitalWrite(ledRed, HIGH);

 if(pressed==LOW)
 {
 digitalWrite(ledGreen, HIGH);
 digitalWrite(ledRed, LOW);

 servo.write(360);
 delay(2000);
 servo.write(0);
 }

 delay(15);
}

In Action sieht das ganze dann so aus:

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=vQJEtWblgJU

Der Sourcecode sowie der Schaltplan können sich natürlich auch heruntergeladen werden.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Servo
http://www.freeduino.de/books/servos-f%C3%BCr-durchlauf-umbauen
http://de.wikipedia.org/wiki/Pull_up

Die erste Schaltung mit dem Arduino

Die erste Schaltung welche man im Normalfall mit dem Arduino baut, ist ja meist recht einfach. Eine LED wird einfach an einen PIN sowie Ground angeschlossen und zum leuchten gebracht. Ich habe mir da allerdings gleich ein wenig mehr zusammen gebaut. Bei mir wurden es ein paar LEDs sowie zwei Lautsprecher. Zuerst wurden die LEDS auf das Breadboard gesteckt und anschließend mit Ground sowie je einem PIN auf dem Arduino Board verbunden. Das gleiche wurde mit den zwei Lautsprechern getan.

Die Schaltung im Aufbau.

Nun fehlte nur noch der Sourcecode. In diesem werden die LEDs sowie die Lautsprecher angesteuert:

int ledPinRed1=13;
int ledPinYellow1=12;
int ledPinRed2=11;
int ledPinGreen=10;
int ledPinRed3=9;
int ledPinYellow2=8;
int ledPinRed4=7;

int soundKlack=6;
int soundSin=5;

void setup()
{
 pinMode(ledPinRed1, OUTPUT);
 pinMode(ledPinYellow1, OUTPUT);
 pinMode(ledPinRed2, OUTPUT);
 pinMode(ledPinGreen, OUTPUT);
 pinMode(ledPinRed3, OUTPUT);
 pinMode(ledPinYellow2, OUTPUT);
 pinMode(ledPinRed4, OUTPUT);

 pinMode(soundKlack, OUTPUT);
 pinMode(soundSin, OUTPUT);
}

void loop()
{
 blinkRed();

 sound();

 blinkGreen();

 sound();

 blinkYellow();

 sound();

 analogWrite(soundSin, 200);
 delay(100);
 analogWrite(soundSin, 0);

 analogWrite(soundSin, 500);
 delay(200);
 analogWrite(soundSin, 0);

 analogWrite(soundSin, 1000);
 delay(400);
 analogWrite(soundSin, 0);
}

void sound()
{
 digitalWrite(soundKlack, LOW);
 delay(100);
 digitalWrite(soundKlack, HIGH);
}

void blinkRed()
{
 digitalWrite(ledPinRed1, HIGH);
 digitalWrite(ledPinRed2, HIGH);
 digitalWrite(ledPinRed3, HIGH);
 digitalWrite(ledPinRed4, HIGH);
 delay(500);
 digitalWrite(ledPinRed1, LOW);
 digitalWrite(ledPinRed2, LOW);
 digitalWrite(ledPinRed3, LOW);
 digitalWrite(ledPinRed4, LOW);
}

void blinkYellow()
{
 digitalWrite(ledPinYellow1, HIGH);
 digitalWrite(ledPinYellow2, HIGH);
 delay(500);
 digitalWrite(ledPinYellow1, LOW);
 digitalWrite(ledPinYellow2, LOW);
}

void blinkGreen()
{
 digitalWrite(ledPinGreen, HIGH);
 delay(500);
 digitalWrite(ledPinGreen, LOW);
}

Wer das ganze nachbauen möchte (warum auch immer ;) ) findet hier den Sourcecode sowie die Fritzing Datei (der Schaltplan).

Und so sieht das ganze dann in Action aus:

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=RMHBCbqMmSM