![Автоматизирана топка с Arduino и едно серво: 3 стъпки Автоматизирана топка с Arduino и едно серво: 3 стъпки](https://i.howwhatproduce.com/images/001/image-1633-50-j.webp)
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 12:57
![Image Image](https://i.howwhatproduce.com/images/001/image-1633-52-j.webp)
![](https://i.ytimg.com/vi/dOkQfpNRtf8/hqdefault.jpg)
Това е прост малък Arduino и серво проект, който отнема около два часа. Той използва серво за повдигане на единия край на капачката на буркан, така че да завърти стоманена топка около вътрешната обиколка. Той се стартира самостоятелно, може да променя скоростта и може да завърти две (или повече?) Топки наведнъж. Забавно за изграждане и работа. Параметрите на времето могат да се играят с вероятно дори по -бързи скорости. Няколко сензора за ефект на Хол с магнитна топка могат да бъдат използвани, за да го направят по -умна машина, която може да разбере най -добрите параметри.
Трябва да спомена, че някой тук от instructables.com има по-усъвършенствана машина за ролкови топки:
Необходими материали:
Arduino Uno (или който и да е Arduino)
Серво щит (по избор)
9 г серво
капачка на буркан
стоманена топка
малко скрап
Стъпка 1: Направете основата и държача на шарнирната капачка
![Направете държач за основа и шарнирна капачка Направете държач за основа и шарнирна капачка](https://i.howwhatproduce.com/images/001/image-1633-53-j.webp)
Основата е само парче дърво, върху което да се монтира шарнирно парче дърво. Пантираното дърво трябва да е по -голямо от капачката на буркан, която ще използвате, и да има достатъчно място за пантите и за монтиране на серво.
Използвах малки пластмасови самолетни панти за дистанционно управление и просто ги залепих към шарнирната дървесина и основата.
Стъпка 2: Направете по -дълго серво рамо и прикрепете серво
![Направете по -дълго серво рамо и прикрепете серво Направете по -дълго серво рамо и прикрепете серво](https://i.howwhatproduce.com/images/001/image-1633-54-j.webp)
![Направете по -дълго серво рамо и прикрепете серво Направете по -дълго серво рамо и прикрепете серво](https://i.howwhatproduce.com/images/001/image-1633-55-j.webp)
За да направя по -дълго серво рамо, просто прикрепих 5 сантиметрово парче дърво към серво рамото с няколко малки винта и гайки. Серво рамото трябва да е на 90 градуса върху серво, когато е хоризонтално спрямо основата.
Току -що топло залепих сервопривода към шарнирния дървен държач, но открих, че ако го оставите да работи повече от няколко минути, сервото ще загрее горещото лепило и ще се освободи от дървото. Така че е оправдан по -добър метод на закрепване.
Стъпка 3: Заредете и стартирайте Sketch
![Зареждане и изпълнение на скица Зареждане и изпълнение на скица](https://i.howwhatproduce.com/images/001/image-1633-56-j.webp)
Прикрепих моето серво към щифт 7 с помощта на щит, защото това е просто удобно и те струват само няколко долара. Ако нямате щит, след това свържете серво сигналния проводник към щифт 7 на Arduino, червения проводник към 5v на Arduino и заземителния проводник към GND на Arduino. Arduino трябва да осигурява достатъчно ток за работа на серво. Използвам щита, защото е лесно да се използва външно напрежение само за серво.
Ето скицата. Написах рутина на серво регулатор на скоростта, за да променя скоростта на серво, защото вероятно няма да работи добре на пълна скорост.
Можете да промените timingDelay, за да получите различни скорости на търкаляне на топката. Можете също да промените третия параметър на функцията myServo (), за да промените и скоростта.
//////////////////////////////////////////////////////// //////////////////////////////////////////////////////// //////////////// // създадено от Jim Demello, University Shangluo, 2017
// свободни сте да използвате, манипулирате, правите каквото искате с този код, моето име не е задължително
// Тази рутина позволява интерполиране на произволен брой серво, просто добавете нови редове, ако броят на сервомоторите надвишава 4
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#включва
Серво myservo1, myservo2; // създаване на серво обект за управление на серво
int servoRead (int servoNumber) {
int servoCurrent;
if (servoNumber == 1) {servoCurrent = myservo1.read (); }
if (servoNumber == 2) {servoCurrent = myservo2.read (); }
servoCurrent за връщане;
}
void servoWrite (int servoNumber, int offset) {
if (servoNumber == 1) {myservo1.write (отместване); }
if (servoNumber == 2) {myservo2.write (отместване); }
}
void 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; ъгъл += angleInc) {
if (servoNum == 1) myservo1.write (ъгъл);
if (servoNum == 2) myservo2.write (ъгъл);
забавяне (incDelay); }
}
else if (curAngle> newAngle) {
for (int ъгъл = curAngle; ъгъл> newAngle; ъгъл -= angleInc) {
if (servoNum == 1) myservo1.write (ъгъл);
if (servoNum == 2) myservo2.write (ъгъл);
забавяне (incDelay); }
}
}
void interpolate2Servos (int servo1, int servo1Position, int servo2, int servo2Позиция, int numberSteps, int timeDelay) {
int servo1Current, servo2Current;
servo1Current = servoRead (servo1);
servo2Current = servoRead (servo2);
// Serial.print ("Servo3Pos и Current"); Serial.print (servo3Position); Serial.print (""); Serial.println (servo3Current);
// Serial.print ("Servo4Pos и Current"); Serial.print (servo4Position); Serial.print (""); Serial.println (servo4Current);
// Serial.print ("Servo5Pos и Current"); Serial.print (servo5Position); Serial.print (""); Serial.println (servo5Current);
// Serial.print ("Servo6Pos и Current"); 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;
за (int x = 0; x
if (servo1Position> servo1Current) {cOffsetTotal = cOffsetTotal + cOffset; }
else {cOffsetTotal = cOffsetTotal - cOffset; }
if (servo2Position> servo2Current) {dOffsetTotal = dOffsetTotal + dOffset; }
else {dOffsetTotal = dOffsetTotal - dOffset; }
if (servo1Position! = servo1Current) servoWrite (servo1, cOffsetTotal);
if (servo2Position! = servo2Current) servoWrite (servo2, dOffsetTotal);
// Serial.print ("a и b Offset"); Serial.print (aOffsetTotal); Serial.print (""); Serial.println (bOffsetTotal); забавяне (10);
забавяне (timeDelay);
} // край за
//////////////////////////////////////
// погрижете се за остатъци по модул //
/////////////////////////////////////
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;
void setup ()
{
Serial.begin (9600);
забавяне (100);
myservo1.attach (7); // прикрепя серво на щифт 7 към серво обекта
myservo1.write (90);
myservo2.attach (8); // прикрепя серво на щифт 8 към серво обекта
myservo2.write (90);
забавяне (1000); // изчаква серво да стигне до там
interpolate2Servos (1, 90, 2, 90, 10, 60); // неутрален
забавяне (1000);
}
void loop () {
timingDelay = 15; // работи на 10
servoDelay = 4;
spin4 ();
// interpolate2Servos (1, 90, 2, 90, 1, 60); // неутрален
// забавяне (1000);
// изход (0); // програма за пауза - натиснете нулиране, за да продължите
}
void spin3 () {
interpolate2Servos (1, 90, 2, 110, 1, 60); // неутрален
забавяне (timingDelay);
interpolate2Servos (1, 90, 2, 80, 1, 60); // неутрален
забавяне (timingDelay);
}
void spin2 () {
// интерполиране2Servos (1, 80, 2, 90, 1, 50); // неутрален
забавяне (timingDelay);
interpolate2Servos (1, 80, 2, 80, 1, 60); // неутрален
забавяне (timingDelay);
interpolate2Servos (1, 110, 2, 80, 1, 60); // неутрален
забавяне (timingDelay);
// интерполиране2Servos (1, 110, 2, 110, 1, 60); // неутрален
забавяне (timingDelay);
}
void spin1 () {
// int deg = (degStart / (180 / 3.14));
float deg = (degStart * 3.141592 / 180); // конвертираме градуси в радиани
поплавък xPos = 90 + (cos (deg) * радиус);
// xPos = кръг (xPos);
float yPos = 90 + (sin (deg) * радиус);
// yPos = кръг (yPos);
Serial.print ("degGap ="); Serial.print (degGap); Serial.print ("deg ="); Serial.print (deg); Serial.print ("cos ="); Serial.print (cos (deg)); Serial.print ("degStart ="); Serial.print (degStart); Serial.print ("x ="); Serial.print (xPos); Serial.print ("y ="); Serial. println (yPos);
// interpolate2Servos (1, xPos, 2, yPos, 1, servoDelay); // неутрален
myservo1.write (xPos);
myservo2.write (yPos);
забавяне (timingDelay);
if (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;
поплавък k = 20 * (sin ((3.14 * i)/180)) + 90;
myservo1.write (j);
myservo2.write (k);
Serial.print (j);
Serial.print (",");
Serial.println (k);
забавяне (100);
}
}
Препоръчано:
Автоматизирана игра Dino с помощта на Arduino: 4 стъпки
![Автоматизирана игра Dino с помощта на Arduino: 4 стъпки Автоматизирана игра Dino с помощта на Arduino: 4 стъпки](https://i.howwhatproduce.com/images/006/image-16452-j.webp)
Автоматизирана игра Dino с помощта на Arduino: Е, добре дошъл човек, обратно в новата статия в тази статия, ние ще направим автоматизирана игра с дино с помощта на Arduino, тази автоматизирана игра с дино е много лесна за правене В няколко стъпки можете да направите тази игра с дино у дома, когато гледах Тик-Ток преди няколко дни отивам
Arduino контролер за автоматизирана 360 ° фотография на продукти: 5 стъпки (със снимки)
![Arduino контролер за автоматизирана 360 ° фотография на продукти: 5 стъпки (със снимки) Arduino контролер за автоматизирана 360 ° фотография на продукти: 5 стъпки (със снимки)](https://i.howwhatproduce.com/images/009/image-26842-j.webp)
Arduino контролер за автоматизирана 360 ° фотография на продукти: Нека изградим контролер на базата на arduino, който управлява стъпков двигател и затвор на камера. Заедно с грамофон със стъпково моторно управление, това е мощна и евтина система за автоматизирана 360 ° фотографска фотография или фотограметрия. Автоматичната
Сензори Arduino Всичко в едно: 4 стъпки
![Сензори Arduino Всичко в едно: 4 стъпки Сензори Arduino Всичко в едно: 4 стъпки](https://i.howwhatproduce.com/images/002/image-3623-16-j.webp)
Arduino Всичко в едно Сензори: Здравейте, скъпи мои роботизирани приятели Това е Мохамед Бакар, полагах много усилия, за да направя този невероятен комбиниран проект ….. Трябва да се притеснявате за " комбиниран ", да, направих проект, който съдържа 3 Различни модули, които включват ултразвук
Направи си сам -- Автоматизирана електрическа кола с пляскане -- Без Arduino: 3 стъпки
![Направи си сам -- Автоматизирана електрическа кола с пляскане -- Без Arduino: 3 стъпки Направи си сам -- Автоматизирана електрическа кола с пляскане -- Без Arduino: 3 стъпки](https://i.howwhatproduce.com/images/006/image-16617-27-j.webp)
Направи си сам || Ръкопляскане на автоматизирана електрическа кола || Без Arduino: Тук ще ви покажа как да направите кола с контрол с пляскане, без да използвате Arduino, но с помощта на IC 4017. Това е кола, чието движение напред и назад може да се контролира от Clap. Този проект се основава на Clap ON - Електрическа верига за изключване
Arduino UNO 3 в едно: 6 стъпки
![Arduino UNO 3 в едно: 6 стъпки Arduino UNO 3 в едно: 6 стъпки](https://i.howwhatproduce.com/images/001/image-2934-43-j.webp)
Arduino UNO 3 в едно: Проектът " Arduino UNO 3 в едно " има за цел да създаде платформа с три най -важни и най -полезни функции, които комбинират микроконтролер, прототипно пространство и захранване. Позволява ви да създавате компактни и мобилни проекти без