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 |
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ó