
Агуулгын хүснэгт:
2025 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2025-01-23 15:00


Энэ бол дуусгахад хоёр цаг орчим хугацаа шаардагдах энгийн жижиг Arduino болон servo төсөл юм. Ган бөмбөгийг дотор тойруулан эргүүлэхийн тулд савны тагны нэг үзүүрийг өргөхдөө servo ашигладаг. Энэ нь өөрөө эхэлдэг, хурдыг өөрчилж, хоёр (эсвэл түүнээс дээш) бөмбөгийг нэгэн зэрэг эргүүлж чаддаг. Барих, ажил хийх нь хөгжилтэй байдаг. Хугацааны параметрүүдийг илүү хурдтай тоглуулах боломжтой. Соронзон бөмбөлөг бүхий хэд хэдэн танхимын эффект мэдрэгчийг ашиглан хамгийн сайн параметрүүдийг олох чадвартай ухаалаг машин болгон ашиглаж болно.
Instructables.com дээр байгаа хэн нэгэн илүү боловсронгуй бөмбөг булны машинтай болохыг би дурдах ёстой:
Шаардлагатай материал:
Arduino Uno (эсвэл ямар ч Arduino)
Servo бамбай (заавал биш)
9 гр servo
савны таг
ган бөмбөг
зарим хаягдал мод
Алхам 1: Суурь ба нугастай малгай хийх

Суурь нь нугастай модон хэсгийг бэхлэх зориулалттай мод юм. Нугастай мод нь ашиглах савны тагнаас том хэмжээтэй байх ёстой бөгөөд нугас болон servo -ийг холбох хангалттай зайтай байх ёстой.
Би жижиг хуванцар rc нисэх онгоцны нугас ашиглаж, нугастай мод, сууринд наасан.
Алхам 2: Servo гараа урт болгоод Servo хавсаргана уу


Урт servo гар хийхийн тулд би 5 сантиметр хэмжээтэй модыг хэд хэдэн жижиг эрэг, самар ашиглан servo гарт хавсаргасан. Серво гар нь суурин дээр хэвтээ байх үед servo дээр 90 градус байх ёстой.
Би зүгээр л servo -ийг нугастай мод эзэмшигчид халуунаар наасан боловч хэрэв та үүнийг хэдэн минутаас илүү удаан ажиллуулах юм бол серво халуун цавууг халааж, модноос гарах болно гэдгийг олж мэдэв. Тиймээс илүү сайн бэхэлгээний аргыг батлах болно.
Алхам 3: Sketch -ийг ачаалж ажиллуулна уу

Би servo -оо бамбай ашиглан 7 -р зүүгээр холбосон, учир нь энэ нь маш тохиромжтой бөгөөд хэдхэн долларын үнэтэй. Хэрэв танд бамбай байхгүй бол Arduino дээрх 7 -р зүү, улаан утсыг 5v -т, улаан утсыг Arduino дээрх GND -д холбоно. Arduino нь servo -ийг ажиллуулах хангалттай гүйдэл өгөх ёстой. Гадаа хүчдэлийг зөвхөн сервод ашиглахад хялбар байдаг тул би бамбайгаа ашигладаг.
Энд ноорог байна. Би servo хурдны хянагчийн горимыг бичсэн бөгөөд энэ нь servo -ийн хурдыг өөрчлөх болно, учир нь энэ нь бүрэн хурдтай ажиллахгүй байж магадгүй юм.
Бөмбөгийг өнхрүүлэх янз бүрийн хурдыг авахын тулд хойшлуулах хугацааг өөрчилж болно. Та мөн myServo () функцын гурав дахь параметрийг өөрчилж, хурдыг нь өөрчилж болно.
///////////////////////////////////////////////////// ///////////////////////////////////////////////////// /////////////// // Жим Демелло бүтээсэн, Shangluo их сургууль, 2017 он
// та энэ кодоор хүссэн зүйлээ ашиглах, удирдах, хийх эрх чөлөөтэй, миний нэрийг оруулах шаардлагагүй
// Энэхүү журам нь ямар ч тооны servo -ийг интерполяцлах боломжийг олгодог бөгөөд хэрэв servo -ийн тоо 4 -ээс хэтэрсэн бол шинэ мөрүүдийг нэмж оруулаарай.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#оруулах
Servo myservo1, myservo2; // servo хянахын тулд servo объект үүсгэх
int servoRead (int servoNumber) {
int servoCurrent;
if (servoNumber == 1) {servoCurrent = myservo1.read (); }
if (servoNumber == 2) {servoCurrent = myservo2.read (); }
буцах servoCurrent;
}
void servoWrite (int servoNumber, int офсет) {
if (servoNumber == 1) {myservo1.write (офсет); }
if (servoNumber == 2) {myservo2.write (офсет); }
}
хүчингүй myServo (int newAngle, int angleInc, int incDelay, int servoNum) {
int curAngle;
if (servoNum == 1) {curAngle = myservo1.read (); }
if (servoNum == 2) {curAngle = myservo2.read (); }
if (curAngle <newAngle) {
for (int өнцөг = curAngle; өнцөг <newAngle; өнцөг += өнцөгInc) {
if (servoNum == 1) myservo1.write (өнцөг);
if (servoNum == 2) myservo2.write (өнцөг);
саатал (хойшлуулах); }
}
өөр бол (curAngle> newAngle) {
for (int angle = curAngle; angle> newAngle; angle -= angleInc) {
if (servoNum == 1) myservo1.write (өнцөг);
if (servoNum == 2) myservo2.write (өнцөг);
саатал (хойшлуулах); }
}
}
void interpolate2Servos (int servo1, int servo1Position, int servo2, int servo2Position, int numberSteps, int timeDelay) {
int servo1Current, servo2Current;
servo1Current = servoRead (servo1);
servo2Current = servoRead (servo2);
// Serial.print ("Servo3Pos ба одоогийн"); Serial.print (servo3Position); Serial.print (""); Serial.println (servo3Current);
// Serial.print ("Servo4Pos ба одоогийн"); Serial.print (servo4Position); Serial.print (""); Serial.println (servo4Current);
// Serial.print ("Servo5Pos ба одоогийн"); Serial.print (servo5Position); Serial.print (""); Serial.println (servo5Current);
// Serial.print ("Servo6Pos ба одоогийн"); Serial.print (servo6Position); Serial.print (""); Serial.println (servo6Current);
// Serial.println ("");
int cOffset = (servo1Position - servo1Current); cOffset = abs (cOffset)/numberSteps;
int dOffset = (servo2Position - servo2Current); dOffset = abs (dOffset)/numberSteps;
int cOffsetTotal = 0, dOffsetTotal = 0;
cOffsetTotal = servo1Current;
dOffsetTotal = servo2Current;
for (int x = 0; x
if (servo1Position> servo1Current) {cOffsetTotal = cOffsetTotal + cOffset; }
өөр {cOffsetTotal = cOffsetTotal - cOffset; }
if (servo2Position> servo2Current) {dOffsetTotal = dOffsetTotal + dOffset; }
өөр {dOffsetTotal = dOffsetTotal - dOffset; }
if (servo1Position! = servo1Current) servoWrite (servo1, cOffsetTotal);
if (servo2Position! = servo2Current) servoWrite (servo2, dOffsetTotal);
// Serial.print ("a ба b офсет"); Serial.print (aOffsetTotal); Serial.print (""); Serial.println (bOffsetTotal); саатал (10);
саатал (цаг хойшлуулах);
} // төгсгөл
//////////////////////////////////////
// модулийн үлдэгдлийг анхаарч үзээрэй //
/////////////////////////////////////
if (servo1Position! = servo1Current) servoWrite (servo1, servo1Position);
if (servo2Position! = servo2Current) servoWrite (servo2, servo2Position);
}
int timingDelay = 100;
int servoDelay = 100;
int degGap = 10;
// Энэ бол эхлэх зэрэг (төгсгөлийн түвшингээс бага байх ёстой)
int degStart = 0;
// Энэ бол төгсөлтийн зэрэг (эхлэх түвшингээс их байх ёстой)
int degEnd = 360;
// Энэ бол тойргийн радиус юм
int радиус = 8;
хүчингүй тохиргоо ()
{
Цуваа эхлэх (9600);
саатал (100);
myservo1.attach (7); // 7 -р зүү дээрх servo -ийг servo объект руу хавсаргана
myservo1.write (90);
myservo2.attach (8); // 8 -р зүү дээрх servo -ийг servo объект руу хавсаргана
myservo2.write (90);
саатал (1000); // servo тийшээ очихыг хүлээж байна
interpolate2Servos (1, 90, 2, 90, 10, 60); // төвийг сахисан
саатал (1000);
}
void loop () {
timingDelay = 15; // 10 цагт ажилладаг
servoDelay = 4;
эргэх4 ();
// interpolate2Servos (1, 90, 2, 90, 1, 60); // төвийг сахисан
// саатал (1000);
// гарах (0); // програмыг түр зогсоох - үргэлжлүүлэхийн тулд дахин тохируулах дээр дарна уу
}
void spin3 () {
interpolate2Servos (1, 90, 2, 110, 1, 60); // төвийг сахисан
саатал (цагийг хойшлуулах);
interpolate2Servos (1, 90, 2, 80, 1, 60); // төвийг сахисан
саатал (timingDelay);
}
void spin2 () {
// interpolate2Servos (1, 80, 2, 90, 1, 50); // төвийг сахисан
саатал (timingDelay);
interpolate2Servos (1, 80, 2, 80, 1, 60); // төвийг сахисан
саатал (timingDelay);
interpolate2Servos (1, 110, 2, 80, 1, 60); // төвийг сахисан
саатал (timingDelay);
// interpolate2Servos (1, 110, 2, 110, 1, 60); // төвийг сахисан
саатал (timingDelay);
}
void spin1 () {
// int deg = (degStart / (180 / 3.14));
float deg = (degStart * 3.141592 / 180); // градусыг радиан болгон хөрвүүлэх
float xPos = 90 + (cos (deg) * radius);
// xPos = дугуй (xPos);
float yPos = 90 + (sin (deg) * radius);
// yPos = дугуй (yPos);
Serial.print ("degGap ="); Serial.print (degGap); Serial.print ("deg ="); Serial.print (deg); Serial.print ("cos ="); Serial.print (cos (Serial.print ("degStart ="); Serial.print (degStart); Serial.print ("x ="); Serial.print (xPos); Serial.print ("y ="); Цуваа. println (yPos);
// interpolate2Servos (1, xPos, 2, yPos, 1, servoDelay); // төвийг сахисан
myservo1.write (xPos);
myservo2.write (yPos);
саатал (timingDelay);
хэрэв (degStart> = degEnd) {
degStart = 0;
хэрэв (degGap> 180)
degGap = 180;
// degGap = 0;
өөр
degGap = degGap + 2;
degGap = degGap - 2;
// degStart = degStart +degGap;
}
degStart = degStart + degGap;
}
void spin4 () {
for (int i = 0; i <= 360; i ++) {
float j = 20 * (cos ((3.14 * i)/180)) + 90;
float k = 20 * (sin ((3.14 * i)/180)) + 90;
myservo1. бичих (j);
myservo2. бичих (k);
Цуваа.хэвлэх (j);
Serial.print (",");
Serial.println (k);
саатал (100);
}
}
Зөвлөмж болгож буй:
R/C ариун цэврийн цаасны өнхрөх: 10 алхам

R/C ариун цэврийн цаасны өнхрөх: Ариун цэврийн цаасны үймээнээс 2019 оны өмнө би Battlebots -ийг сонирхож, өөрийн бот хийх болсон …. Энэ бол үүний үр дүн! Анхаарна уу: энэ бол электроникийн хичээл биш юм. Энэ нь хэрхэн ажилладаг талаар нарийвчлан авч үзэх нь хэцүү байсан, гэхдээ тэнд
Бяцхан бөмбөг тоглох автомат оноо: 10 алхам (зурагтай)

Бяцхан бөмбөг тоглох автомат оноо: Гэртээ хийсэн Skee-Ball тоглоом нь бүхэл бүтэн гэр бүлд маш их хөгжилтэй байдаг ч тэдний дутагдал нь үргэлж автомат оноо аваагүй явдал юм. Би өмнө нь тоглоомын бөмбөгийг тус тусад нь суваг болгон юүлдэг Skee-Ball машин бүтээсэн
Ариун цэврийн цаасны өнхрөх утасны бэхэлгээ: 7 алхам (зурагтай)

Ариун цэврийн цаасны өнхрөх утасны бэхэлгээ: Утсаа босоо байрлалд байлгахын тулд цэнэглэж байх үед хадгалах газар хэрэгтэй байна уу? Утасны холболт бол үүний хариулт юм. Танай байшингийн эргэн тойронд ариун цэврийн цаасны цөөн хэдэн ороомог, жаахан картон байна уу? Хэрэв та тэгвэл тэгэх болно
Нохойнд зориулсан автомат бөмбөг шидэгч: 6 алхам

Нохойнд зориулсан автомат бөмбөг шидэгч: Бид хоёулаа нохойтой бөгөөд хүн бүр мэддэг шиг нохой өдөржингөө бөмбөг тоглож чаддаг байв. Тийм учраас бид автомат бөмбөг шидэгчийг бүтээх арга замыг бодож олсон
Гэрийн тэжээвэр амьтдын хоол шидэх (нохой, муур, тахиа, гэх мэт), бөмбөг шидэх гэх мэт автомат катапульт: 4 алхам (зурагтай)

Гэрийн тэжээмэл амьтдын хоол шидэх автомат нохой (нохой, муур, тахиа, гэх мэт), бөмбөг шидэх гэх мэт !: Сайн байна уу, миний анхны зааварчилгаанд тавтай морилно уу! Манай нохой хоолондоо дуртай, тэр бүгдийг хэдхэн секундын дотор идэх болно. Би үүнийг удаашруулах арга замыг бодож олсон бөгөөд дотор нь хоол орсон бөмбөгнөөс эхлээд арын хашаанд хаях хүртэл байсан. Гайхалтай нь тэр