Eines der ersten eigenen Projekte das mit dem Arduino umgesetzt worden ist, ist dieser Würfel 2.0 🙂

Sobald der Ultraschall Sensor ein Hindernis in einem Abstand von unter 20 cm erkennt wird der Würfel gerollt, bis das Hindernis einen größeren Abstand hat oder ganz entfernt ist – es wurde hier eine 5 gewürfelt.
das Passende Steckbrett würde so aussehen:

und hier noch der Arduino Quellcode:
#include // Groove_Ultrasonic_Range_Master Bibliothek
Ultrasonic ultrasonic(7);
int wurf = 0;
void setup() {
Serial.begin(19200);
pinMode(13, OUTPUT); // LED
pinMode(14, OUTPUT); // Eins
pinMode(15, OUTPUT); // Zwei
pinMode(16, OUTPUT); // Drei
pinMode(17, OUTPUT); // Vier
pinMode(18, OUTPUT); // Fünf
pinMode(19, OUTPUT); // Sechs
randomSeed(analogRead(6));
digitalWrite(14, LOW);
digitalWrite(15, LOW);
digitalWrite(16, LOW);
digitalWrite(17, LOW);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
}
void loop() {
long cm;
cm = ultrasonic.MeasureInCentimeters();
if (cm > 20){
digitalWrite(13, HIGH); // Bereit zum Würfeln
}
else {
digitalWrite(13, LOW); // nun wird gewürfelt
wurf = random(1, 7);
}
switch (wurf) {
case 1:{
digitalWrite(14, HIGH);
digitalWrite(15, LOW);
digitalWrite(16, LOW);
digitalWrite(17, LOW);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
break;}
case 2:{
digitalWrite(14, HIGH);
digitalWrite(15, HIGH);
digitalWrite(16, LOW);
digitalWrite(17, LOW);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
break;}
case 3:{
digitalWrite(14, HIGH);
digitalWrite(15, HIGH);
digitalWrite(16, HIGH);
digitalWrite(17, LOW);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
break;}
case 4:{
digitalWrite(14, HIGH);
digitalWrite(15, HIGH);
digitalWrite(16, HIGH);
digitalWrite(17, HIGH);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
break;}
case 5:{
digitalWrite(14, HIGH);
digitalWrite(15, HIGH);
digitalWrite(16, HIGH);
digitalWrite(17, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, LOW);
break;}
case 6:{
digitalWrite(14, HIGH);
digitalWrite(15, HIGH);
digitalWrite(16, HIGH);
digitalWrite(17, HIGH);
digitalWrite(18, HIGH);
digitalWrite(19, HIGH);
break;}
default: {
digitalWrite(14, LOW);
digitalWrite(15, LOW);
digitalWrite(16, LOW);
digitalWrite(17, LOW);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
break;}
}
delay(25);
}