Robot doboz

Egy játékos kis projekt kezdőknek, és persze haladóknak is akik szeretik az ötletes dolgokat. Az alkatrész igénye minimális, a külső dobozolás mindenkinél egyénileg megoldható.

Alkatrész igény:

 1db Arduino NANO
2db Szervo motor
2db 100uF-os kondenzátor
1db karos kapcsoló
Vezetékek
Modell műanyag a dobozhoz (Hagebaumarkt, Praktiker)




Kapcsolási rajz:



A kapcsolás elkészítése nem egy ördöngösség, az alkatrészek összekötése adja magát.

A mechanikus kivitelezés egy kicsit más, a doboz egyedi kialakítású két oldalra
nyíló fedéllel gumis visszahúzással. Az egyik szervó a fedelet emeli, a másik a kapcsolót kapcsolja off állásba. A képekről lehet ötleteket gyűjteni ez ügyben.



Külön könyvtárat nem igényel, a beépített Servo.h-t  használja.


A program a következő:


#include <Servo.h> //Szervó könyvtár beillesztése
int b=0; //változók létrehozása
int i;
Servo nyit; //Szervo objektum létrehozása(1.szervo motor létrehozása a programban) saját névadás "nyit"
Servo kapcsol; //Szervo objektum létrehozása(2.szervo motor létrehozása a programban) saját névadás "kapcsol"


void setup()
{
pinMode(2, INPUT_PULLUP); //a kapcsoló beállítása az arduio-n digital pin 2
randomSeed(analogRead(0)); //egy analóg pin kimenet értékének véletlenszerű kiolvasása, hogy később
//a véletlenszám generálsakor a kapott szám tényleg véletlen legyen
nyit.attach(9); //a "nyit" szervo beállítása az arduio-n digital pin 9
kapcsol.attach(10); //a "kapcsol" szervo beállítása az arduio-n digital pin 10

nyit.write(10); //a szervo kar kezdeti pozíciójának beállítása
kapcsol.write(0); //a szervo kar kezdeti pozíciójának beállítása
}

void loop()
{

int sperc = digitalRead(2); //a kapcsoló állapotának vizsgálata, ha be van kapcsolva akkor
if (sperc == LOW) { //generál egy véletlenszámot és a switch..casa blokkban szereplő
delay(200); //utasítások valamelyike, a kapott véletlenszámnak megfelelően.
if (sperc == LOW) {
i = random(1, 6);
switch(i) {
case 1: v1();
break;
case 2: v2();
break;
case 3: v3();
break;
case 4: v4();
break;
case 5: v5();
break;
case 6: v6();
break;
}
}

}
}
/* A következő függvények az ajtónyitásért és a kikapcsolásért felelősek.
* ezek szabadon választottak, a beállításokat mindenki úgy állítja be ahogy akarja
* ki kell kisérletezni. Különböző variációk hozhatók létre.
* Csak a fantázia szab határt!!!
*/
void v1()
{
nyit.write(50);
delay(50);
kapcsol.write(110);
delay(260);
kapcsol.write(0);
delay(50);
nyit.write(10);
delay(1000);
}
void v2()
{
for(int a= 10; a < 51; a++) {nyit.write(a);delay(15);}
delay(50);
for(int a= 0; a < 116; a++) {kapcsol.write(a);delay(5);}
delay(260);
kapcsol.write(0);
delay(50);
nyit.write(10);
delay(1000);
}
void v3()
{
for(b = 0; b<=3;b++) {
for(int a= 10; a < 46; a++) {nyit.write(a);}
delay(50);
for(int a= 45; a > 9; a--) {nyit.write(a);}
delay(100);
if (b == 3) v1();
}

}
void v4()
{
for(b = 0; b<=2;b++) {
for(int a= 10; a < 46; a++) {nyit.write(a);}
delay(50);
for(int a= 45; a > 9; a--) {nyit.write(a);}
delay(100);
if (b == 2) v2();
}

}
void v5() //MŰKÖDIK
{
for (b=0; b <= 1; b++){
for (int a=10; a<50; a++) { nyit.write(a); delay(10);}
delay(700);
nyit.write(10);
delay(100);
if (b==0) v2();
}
}
void v6()
{
for (b=0; b <= 1; b++){
for (int a=10; a<50; a++) { nyit.write(a); delay(10);}
delay(700);
nyit.write(10);
delay(100);
if (b==0) {v2(); v3();}
}
}


Végül itt egy videó a működésről:

https://youtu.be/sM-dOHmTs8o


Egédi László