![Робот қолында ойнайтын фортепиано плиткалары: 5 қадам Робот қолында ойнайтын фортепиано плиткалары: 5 қадам](https://i.howwhatproduce.com/images/001/image-322-69-j.webp)
Мазмұны:
2025 Автор: John Day | [email protected]. Соңғы өзгертілген: 2025-01-23 14:51
![Робот қолында ойнайтын фортепиано плиткалары Робот қолында ойнайтын фортепиано плиткалары](https://i.howwhatproduce.com/images/001/image-322-70-j.webp)
Топ UCN -ден 2 автоматтандыру инженерлерінен тұрады, олар бізді жасауға және дамытуға ынталандыратын тамаша идеямен келді. Бұл идея робот қолын басқаратын Arduino тақтасына негізделген. Arduino тақтасы - бұл операцияның миы, содан кейін операцияны орындаушы робот қолы қажет нәрсені жасайды. Толығырақ түсіндіру кейінірек болады.
1 -қадам: Жабдық
![Жабдық Жабдық](https://i.howwhatproduce.com/images/001/image-322-71-j.webp)
Робот қолы:
Phantomx Pincher Robot Arm Kit Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Роботқа арналған бағдарламалық жасақтама- https://www.arduino.cc/kz/Main/OldSoftwareRelease… Түсті анықтайтын камера:
CMUcam5 Pixy камерасы - (https://charmedlabs.com/default/pixy-cmucam5/)
Бағдарламалық қамтамасыз ету - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
2 -қадам: Arduino орнату
![Arduino орнату Arduino орнату](https://i.howwhatproduce.com/images/001/image-322-72-j.webp)
Тақтада орнатуды көруге болады, бұл өте оңай.
Сол жақта - қуат көзі.
Ортаңғы серво бірінші сервоға арналған, ол кейінірек басқа сервоға қосылады.
Төменгі жағында біз тақтаны компьютерден немесе ноутбуктен басқарамыз, оның екінші жағында USB кірісі бар.
3 -қадам: Қорытынды бағдарлама
||| БАҒДАРЛАМА |||
#қосу
#қосу #қосу «позалар.h» #қосу // Pixy кітапханасы #қосу
#МҮМКІНДІКТІ анықтау 5
BioloidController биолоид = BioloidController (1000000);
const int SERVOCOUNT = 5; int id; int pos; логикалық IDCheck; логикалық RunCheck;
void setup () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // буын нөмірі 1 регистрін 32 жылдамдыққа 50 орнатыңыз. ax12SetRegister2 (2, 32, 50); // буын нөмірі 2 регистрі 32 регистрін 50 жылдамдығына орнатыңыз. ax12SetRegister2 (3, 32, 50); // буын нөмірі 3 регистрін 32 жылдамдыққа 50 орнатыңыз. ax12SetRegister2 (4, 32, 50); // қосылыстың нөмірі 4 регистрді 32 жылдамдыққа 50. ax12SetRegister2 (5, 32, 100) орнатыңыз; 32 жылдамдыққа 100. // айнымалыларды инициализациялау id = 1; pos = 0; IDCheck = 1; RunCheck = 0; // Serial.begin (9600) сериялық портын ашу; кешіктіру (500); Serial.println («#############################»); Serial.println («Сериялық байланыс орнатылды.»);
// Тексеру Lipo Battery Voltage CheckVoltage ();
// Серверлерді қарап шығу, MoveTest () орнын қайтару; MoveHome (); MenuOptions (); RunCheck = 1; }
void loop () {// сенсорды оқу: int inByte = Serial.read ();
ауыстыру (inByte) {
'1' жағдайы: MovePose1 (); үзіліс;
'2' жағдайы: MovePose2 (); үзіліс; '3' жағдайы: MovePose3 (); үзіліс;
'4' жағдайы: MovePose4 (); үзіліс;
'5' жағдайы: MoveHome (); үзіліс; '6' жағдайы: Grab (); үзіліс;
'7' корпусы: LEDTest (); үзіліс;
'8' жағдайы: RelaxServos (); үзіліс; }}
void CheckVoltage () {// күте тұрыңыз, содан кейін кернеуді тексеріңіз (LiPO қауіпсіздігі) өзгермелі кернеу = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println («############################»); Serial.print («Жүйелік кернеу:»); Сериялық баспа (кернеу); Serial.println («вольт.»); if (кернеу 10.0) {Serial.println («Кернеу деңгейлері номиналды.»); } if (RunCheck == 1) {MenuOptions (); } Serial.println («#############################»); }
void MoveHome () {delay (100); // ұсынылған үзіліс bioloid.loadPose (Үй); // позаны FLASH -тен келесіPose буферіне жүктеңіз bioloid.readPose (); // ағымдағы серво позициясында curPose буферіне оқыңыз Serial.println («###########################»); Serial.println («Серверлерді бастапқы күйге жылжыту»); Serial.println («############################»); кешіктіру (1000); bioloid.interpolateSetup (1000); // ағымдағыдан> секундына 1/2 секундтан астам уақыт бойы интерполяциялауды орнату (bioloid.interpolating> 0) {// мұны біз жаңа позицияға қол жеткізе алмаған кезде жасаңыз bioloid.interpolateStep (); // егер қажет болса, серводы жылжытыңыз. кешіктіру (3); } if (RunCheck == 1) {MenuOptions (); }}
void MovePose1 () {delay (100); // ұсынылған үзіліс bioloid.loadPose (Pose1); // позаны FLASH -тен келесіPose буферіне жүктеңіз bioloid.readPose (); // ағымдағы серво позициясында оқыңыз curPose буферіне Serial.println («###########################»); Serial.println («Серверлерді 1 -ші орынға жылжыту»); Serial.println («############################»); кешіктіру (1000); bioloid.interpolateSetup (1000); // ағымдағыдан> секундына 1/2 секундтан астам уақыт бойы интерполяциялауды орнату (bioloid.interpolating> 0) {// мұны біз жаңа позицияға қол жеткізе алмаған кезде жасаңыз bioloid.interpolateStep (); // қажет болса, сервоприводтарды жылжытыңыз. кешіктіру (3); } SetPosition (3, 291); // 3 буынының орнын '0' кешігуіне (100) орнатыңыз; // буынның жылжуын күтіңіз, егер (RunCheck == 1) {MenuOptions (); }}
void MovePose2 () {delay (100); // ұсынылған үзіліс bioloid.loadPose (Pose2); // позаны FLASH -тен келесіPose буферіне жүктеңіз bioloid.readPose (); // ағымдағы серво позициясында оқыңыз curPose буферіне Serial.println («###########################»); Serial.println («Серверлерді 2 -ші орынға жылжыту»); Serial.println («############################»); кешіктіру (1000); bioloid.interpolateSetup (1000); // ағымдағыдан> секундына 1/2 секундтан астам уақыт бойы интерполяциялауды орнату (bioloid.interpolating> 0) {// мұны біз жаңа позицияға қол жеткізе алмаған кезде жасаңыз bioloid.interpolateStep (); // егер қажет болса, серводы жылжытыңыз. кешіктіру (3); } SetPosition (3, 291); // 3 буынының орнын '0' кешігуіне (100) орнатыңыз; // буынның жылжуын күтіңіз, егер (RunCheck == 1) {MenuOptions (); }} void MovePose3 () {delay (100); // ұсынылған үзіліс bioloid.loadPose (Pose3); // позаны FLASH -ден келесі bioPro буферіне жүктеңіз bioloid.readPose (); // ағымдағы серво позициясында оқыңыз curPose буферіне Serial.println («###########################»); Serial.println («Серверлерді 3 -ші орынға жылжыту»); Serial.println («#############################»); кешіктіру (1000); bioloid.interpolateSetup (1000); // ағымдағыдан> секундына 1/2 секундтан астам уақыт бойы интерполяциялауды орнату (bioloid.interpolating> 0) {// мұны біз жаңа позицияға қол жеткізе алмаған кезде жасаңыз bioloid.interpolateStep (); // қажет болса, сервоприводтарды жылжытыңыз. кешіктіру (3); } SetPosition (3, 291); // 3 буынының орнын '0' кешігуіне (100) орнатыңыз; // буынның жылжуын күтіңіз, егер (RunCheck == 1) {MenuOptions (); }}
void MovePose4 () {delay (100); // ұсынылған үзіліс bioloid.loadPose (Pose4); // позаны FLASH -ден келесі bioPro буферіне жүктеңіз bioloid.readPose (); // ағымдағы серво позициясында оқыңыз curPose буферіне Serial.println («###########################»); Serial.println («Серваларды 4 -ші орынға жылжыту»); Serial.println («############################»); кешіктіру (1000); bioloid.interpolateSetup (1000); // ағымдағыдан> секундына 1/2 секундтан астам уақыт бойы интерполяциялауды орнату (bioloid.interpolating> 0) {// мұны біз жаңа позицияға қол жеткізе алмаған кезде жасаңыз bioloid.interpolateStep (); // егер қажет болса, серводы жылжытыңыз. кешіктіру (3); } SetPosition (3, 291); // 3 буынының орнын '0' кешігуіне (100) орнатыңыз; // буынның жылжуын күтіңіз, егер (RunCheck == 1) {MenuOptions (); }}
жарамсыз MoveTest () {Serial.println («###########################»); Serial.println («Қозғалыс белгісін тексеру»); Serial.println («############################»); кешіктіру (500); id = 1; pos = 512; while (id <= SERVOCOUNT) {Serial.print («Серво идентификаторын жылжыту:»); Serial.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; кешіктіру (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; кешіктіру (10); }
// келесі servo идентификаторына қайталау id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println («##########################»); Serial.println («Жеке сынақтарды қайта іске қосу үшін 1-5 нұсқасын енгізіңіз.»); Serial.println («1) 1 -ші позиция»); Serial.println («2) 2 -ші позиция»); Serial.println («3) 3 -ші позиция»); Serial.println («4) 4 -ші позиция»); Serial.println («5) Негізгі позиция»); Serial.println («6) Жүйелік кернеуді тексеру»); Serial.println («7) LED сынағын орындау»); Serial.println («8) Relax Servos»); Serial.println («#############################»); }
бос RelaxServos () {id = 1; Serial.println («#############################»); Serial.println («Сергітетін сервистер.»); Serial.println («#############################»); while (id <= SERVOCOUNT) {Relax (id); id = (id ++)%SERVOCOUNT; кешіктіру (50); } if (RunCheck == 1) {MenuOptions (); }}
жарамсыз LEDTest () {id = 1; Serial.println («#############################»); Serial.println («Жарықдиодты тестті іске қосу»); Serial.println («#############################»); while (id <= SERVOCOUNT) {ax12SetRegister (идентификатор, 25, 1); Serial.print («LED ON - Servo ID:»); Serial.println (id); кешіктіру (3000); ax12SetRegister (id, 25, 0); Serial.print («LED OFF - Servo ID:»); Serial.println (id); кешіктіру (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // 1 буынының орнын «0» кідірісіне (100) орнатыңыз; // буынның жылжуын күтіңіз
}
Біз өз бағдарламамызды PincherTest өндірушілерінің бағдарламасына негізделгенміз. Біз роботтың жадта орналасуы үшін позаларды.h қолдандық. Алдымен біз Pixycam -мен автоматты түрде ойнайтын қолды құруға тырыстық, бірақ жарық пен шағын экран ақауларына байланысты бұл мүмкін болмады. Роботтың негізгі үй позициясы бар, бағдарламаны жүктегеннен кейін ол роботтан табылған барлық серводы тексереді. Біз позаларды 1-4 түймешіктеріне қойдық, сондықтан есте сақтау оңай болады. Бағдарламаны еркін қолданыңыз.
4 -қадам: бейне нұсқаулық
5 -қадам: Қорытынды
Қорытындылай келе, робот - бұл біз үшін қызықты шағын жоба және ойнауға және тәжірибе жасауға қызықты. Мен оны сынап көруге және оны теңшеуге шақырамын.
Ұсынылған:
Witblox көмегімен гольф ойнайтын робот: 7 қадам
![Witblox көмегімен гольф ойнайтын робот: 7 қадам Witblox көмегімен гольф ойнайтын робот: 7 қадам](https://i.howwhatproduce.com/images/001/image-1355-50-j.webp)
Witblox көмегімен гольф ойнайтын робот: Барлығына сәлем. Бүгін мен гольф ойнайтын робот жасадым. Барлығымыз білетіндей, айналмалы қозғалысты кері қозғалысқа айналдыруға болады. Дәл осы құбылысты қолдана отырып, мен бұл жобаны жасадым, онда доп жолда үздіксіз тербеледі
Алып ойнайтын Макей Макей: 8 қадам
![Алып ойнайтын Макей Макей: 8 қадам Алып ойнайтын Макей Макей: 8 қадам](https://i.howwhatproduce.com/images/003/image-8710-11-j.webp)
Үлкен ойнайтын Макей Макей: Біздің Facebook тобындағы бірнеше тәрбиешілер биылғы оқу жылында өздерінің гигант Макей Макейс жасау арқылы жаңа деңгейге көтерілді. Біздің команда бұл студенттерге микроконтроллерлерді үйрету үшін тамаша идея деп ойлады. Сондықтан біз директордан сұрадық
Прима - фортепианода ойнайтын робот: 13 қадам
![Прима - фортепианода ойнайтын робот: 13 қадам Прима - фортепианода ойнайтын робот: 13 қадам](https://i.howwhatproduce.com/images/001/image-374-89-j.webp)
Прима - фортепианода ойнайтын робот: Аспапта ойнайтын робот идеясы мені әрдайым баурап алатын, мен әрқашан оны өзім жасағым келетін. Алайда, мен ешқашан музыка мен музыкалық аспаптар туралы көп білмедім, сондықтан мен неден бастайтынымды ешқашан түсінбедім. Р дейін
Чайботский (фортепианода ойнайтын робот): 12 қадам (суреттермен)
![Чайботский (фортепианода ойнайтын робот): 12 қадам (суреттермен) Чайботский (фортепианода ойнайтын робот): 12 қадам (суреттермен)](https://i.howwhatproduce.com/images/001/image-1003-40-j.webp)
Чайботский (фортепианода ойнайтын робот): Бұл нұсқаулық Оңтүстік Флорида университетінің (www.makecourse.com) Makecourse жобасының талаптарын орындау үшін жасалды (www.makecourse.com). Мотивация болуы мүмкін нәрсені салу болды
Ардуино - фортепиано плиткалары: 16 қадам (суреттермен)
![Ардуино - фортепиано плиткалары: 16 қадам (суреттермен) Ардуино - фортепиано плиткалары: 16 қадам (суреттермен)](https://i.howwhatproduce.com/images/001/image-1682-89-j.webp)
Arduino - фортепиано плиткалары: Сәлеметсіздер ме, интернет адамдар, бұл arduino uno r3.so ұялы ойынындағы МӘДІЛЕТТІ емес нәрсені қалай жасау керектігі туралы болады, сізге келесі бөліктер қажет болады. ! 1x Arduino Uno r3 ($ 42) 2x LCD пернетақта қалқаны (әрқайсысы 19 доллар) 5