In dieser erweiterten Useless Box wohnt kein gewöhnlicher Mechanismus, sondern ein kleiner Octopus, der mit seinen vielen Armen für Chaos sorgt. Statt nur einen Schalter wieder umzulegen, wie man es von der klassischen Version kennt, warten hier gleich fünf Schalter darauf, von Octopus mit den unterschiedlichsten Bewegungen und Animationen wieder deaktiviert zu werden. 🐙✨
Die Idee stammt von einem inspirierenden Video – und hat sofort nach einem eigenen Nachbau gerufen.
Die Stückliste (tbd):
- Arduino Nano V3.0
- Nano Development Shield
- 5 Schalter
- 6 mini servos
- 5V Akku/Powerbank oder Netzteil (2A)
CAD Design
Ich verwende die Software Fusion für das Design. Je ein Schalter und ein Servo bilden eine Baugruppe, die später um den Deckelmechanismus angeordnet werden. Das Ganze wird durch den Plüschoktopus verdeckt.







Der Schaltplan
Durch das Development Board ist keine Platine nötig. Alle Komponenten können hier problemlos angeschlossen werden.
Beispiel-Zuordnung:
| Gerät | Pin am Nano | Hinweis |
|---|---|---|
| Servo 1 | D2 | PWM nicht nötig, Servo-Lib geht auf allen Pins |
| Servo 2 | D3 | |
| Servo 3 | D4 | |
| Servo 4 | D5 | |
| Servo 5 | D6 | |
| Servo 6 | D7 | |
| Schalter 1 | D8 | mit Pullup (INPUT_PULLUP) |
| Schalter 2 | D9 | mit Pullup |
| Schalter 3 | D10 | mit Pullup |
| Schalter 4 | D11 | mit Pullup |
| Schalter 5 | D12 | mit Pullup |
👉 Damit bleiben noch D13, A0–A7 frei für Erweiterungen (z. B. LEDs).
👉Durch die internen Pullups, braucht man keine externen Widerstände bei den Schaltern (einfach Schalter nach GND schalten).



(tbd)
Die Software Arduino
Ich verwende die Arduino IDE und dementsprechend auch die Sprache. Hier ein erstes Beispiel für eine Baugruppe bestehend aus einem Schalter und einem Servo. Nicht getestet, die Servo Positionen müssen auf jeden Fall angepasst werden. (Tbd)
// ======================================
// UselessOctiTest - Version 0.1
// Features:
// - 1 Schalter & 1 Servo
// - 1 Box-Servo
// ======================================
#include <Servo.h>
// Pins
#define SERVO_PIN 2
#define BUTTON_PIN A0
#define BOX_SERVO_PIN 9
Servo servo1;
Servo boxServo;
// Servo-Positionen
const int CLOSE_POS = 0;
const int MIDDLE_POS = 90;
const int OPEN_POS = 180;
// Zustände
int currentServoPos = CLOSE_POS;
bool buttonState = false;
bool lastButtonState = false;
bool boxOpen = false;
// Servo Position setzen
void setServoPosition(int pos) {
currentServoPos = pos;
servo1.write(pos);
}
// Bewegungsmuster
void runMotionPattern() {
int pattern = random(3);
switch (pattern) {
case 0:
setServoPosition(OPEN_POS); delay(300);
setServoPosition(CLOSE_POS);
break;
case 1:
setServoPosition(MIDDLE_POS); delay(200);
setServoPosition(OPEN_POS); delay(200);
setServoPosition(CLOSE_POS);
break;
case 2:
setServoPosition(OPEN_POS); delay(100);
setServoPosition(MIDDLE_POS); delay(100);
setServoPosition(CLOSE_POS);
break;
}
}
// Box steuern
void setBoxOpen(bool open) {
boxOpen = open;
boxServo.write(open ? 90 : 0); // 90=open, 0=closed
}
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
servo1.attach(SERVO_PIN);
setServoPosition(CLOSE_POS);
boxServo.attach(BOX_SERVO_PIN);
setBoxOpen(false);
}
void loop() {
bool anyPressed = false;
bool currentState = (digitalRead(BUTTON_PIN) == LOW); // LOW = ON
// Flankenwechsel
if (currentState != lastButtonState) {
lastButtonState = currentState;
}
if (currentState) anyPressed = true;
// Button gedrückt → Aktion
if (currentState && !buttonState) {
buttonState = true;
if (!boxOpen) {
setBoxOpen(true);
delay(500);
}
runMotionPattern();
}
if (!currentState && buttonState) {
buttonState = false;
}
// Box schließen wenn Servo wieder zu
if (!anyPressed && boxOpen) {
if (currentServoPos == CLOSE_POS) {
setBoxOpen(false);
}
}
delay(50);
}Bilder
Hier ein paar Bilder meiner Testkomponente. Die Servohalterung ist noch recht instabil und muss verstärkt werden. Der gedruckte Zahnkranz am Finger funktioniert nicht zuverlässig – selbst mit einer 0,2er Düse und der Arachne-Wandberechnung wird er nicht sauber gedruckt. Daher habe ich eine zweite Version erstellt, die stattdessen ein originales Servohorn verwendet.
Ja, der Plüschoktopus hat schon seine Finger verloren. 😵💫😫





Ein paar Wochen später ist der erste Druckversuch gescheitert. Ich habe keine Toleranzen eingebaut, sodass die Servos und Schalter nicht gepasst haben. Nach einigen Drücken der Kanten in Fusion läuft der nächste Versuch.


