Автор Тема: Arduino за стрелки  (Прочетена 56352 пъти)

pavel75

  • КЖМ - България
  • Trade Count: (18)
  • Hero Member
  • *****
  • Публикации: 1812
  • Рейтинг: 264
  • HO; IV и V; BDZ, BG; София
Re: Arduino за стрелки
« Отговор #60 -: 22 Ноември 2017, 08:47:47 »
Гледам във всяка програмка за въртене на моторче започва със:

#include <Servo.h>

Това доколкото разбрах от ровенето из интернет е някаква готова библиотека.
Въпросите са ми:

1. Явно трябва задължително да се запише този ред в програтамата. Така ли е?
2. Какво точно прави тази библиотека? В смисъл в кода после трябва ли нещо да е съобразено с тази библиотека?

mitko0888

  • Trade Count: (35)
  • Hero Member
  • *****
  • Публикации: 2385
  • Рейтинг: 970
  • H0, еп. I, II, III, IV, София
    • Снимките ми ...
Re: Arduino за стрелки
« Отговор #61 -: 22 Ноември 2017, 09:02:08 »
Естествено че трябва кодът ти да е съобразен с тази библиотека.

В servo.h хората вече са ти написали много неща, с помощта на които ти можеш да използваш сервото. Когато ти си пишеш твоя код, ти не казваш на сервото какво да прави, а казваш на тази библиотека какво да прави със сервото. За целта в библиотеката са написани и съответните функции, с помощта на които ти да си комуникираш с нея. За това е задължително (според мен) да знаеш какво прави библиотеката.

Можеш да погледнеш в официалния сайт: https://www.arduino.cc/en/Reference/Servo. Написано си е точно какви функции има библиотеката и какво можеш да ползваш от нея. Мисля че това е достатъчно, дори и не само за начало, но и за сериозна употреба на сервото. Ако пък толкова ти е интересно, можеш да потърсиш и детайлите - как работи самата библиотека, и съответно във форумите да прочетеш какви са проблемите с нея, въпреки че и в общото описание (от линка) са дадени всички детайли, които ти трябват.

ПС: на примера, който ти дадох, се ползва три библиотеки. Можеш по същия начин да видиш за какво са и какви функции имат. Според мен ще ти трябват и те. Поне тази за бутоните.
« Последна редакция: 22 Ноември 2017, 09:06:39 от mitko0888 »

Mixy

  • КЖМ - България
  • Trade Count: (3)
  • Hero Member
  • *****
  • Публикации: 1538
  • Рейтинг: 384
    • SCARM - българският софтуер за дизайн на релсови планове и жп макети
Re: Arduino за стрелки
« Отговор #62 -: 22 Ноември 2017, 09:05:05 »
1. Тази библиотека включва декларациите за класове и функции, с които се управлява сервото, защото те не са стандартни за езика C.
2. Библиотеката позволява извикване на всички функции и обекти в кода, които указват на сервото какво да прави (как да се завърти). Ако тази библиотека не е включена, всяко извикване като напр. servoServos.attach(servoPins); ще гърми с грешка при компилиране. И тогава ще трябва да се пише и доста код от по-ниско ниво.

P.S. Митко ме е изпреварил, при това с повече подробности :)

mitko0888

  • Trade Count: (35)
  • Hero Member
  • *****
  • Публикации: 2385
  • Рейтинг: 970
  • H0, еп. I, II, III, IV, София
    • Снимките ми ...
Re: Arduino за стрелки
« Отговор #63 -: 22 Ноември 2017, 09:14:07 »
Цитат на: Mixy link=topic=4987.msg109551#msg109551 date=1511334305
... servoServos.attach(servoPins); ще гърми с грешка при компилиране.


Не съм сигурен в този компилатор, ама още на Servo myservo; трябва да изгърми.
« Последна редакция: 22 Ноември 2017, 09:15:59 от mitko0888 »

pavel75

  • КЖМ - България
  • Trade Count: (18)
  • Hero Member
  • *****
  • Публикации: 1812
  • Рейтинг: 264
  • HO; IV и V; BDZ, BG; София
Re: Arduino за стрелки
« Отговор #64 -: 22 Ноември 2017, 09:40:02 »
Ето какво съм "открил" до сега:

#include <EEPROM.h> - тази библиотека пази стойностите когато платката е изключена.

#include <Servo.h> - това вече го споменахме - за управлението на машинката

#include <Bounce2.h> - за това обаче още нищо не мога да открия.


pach

  • Trade Count: (42)
  • Hero Member
  • *****
  • Публикации: 12257
  • Рейтинг: 1308
  • ТТ & Н0; DR & BDZ;ep.I-III(~VI)&selfmade
    • За моделизма
Re: Arduino за стрелки
« Отговор #65 -: 22 Ноември 2017, 10:42:37 »
Библиотеката "<Servo.h>" може също да е с доста различно съдържание, както казва и Митко. Можеш да си я пишеш и сам,
но ще трябва допълнително да четеш на официалният сайт.
За твойте проби и съответно през "прекия път" намери от някъде да си я свалиш готова. Почти всеки който се е заел сериозно с управлението на сервомашинки с ардуиното, предоставя и линк към готова такава библиотека. От теб се иска да я дръпнеш и провериш върши ли ти работа или не точно.
Ето една примерна:
https://github.com/esp8266/Arduino/blob/master/libraries/Servo/src/Servo.h

svetljjjo

  • Гост
  • Trade Count: (0)
Re: Arduino за стрелки
« Отговор #66 -: 22 Ноември 2017, 10:55:53 »
Ето това ти е Bounce2
https://github.com/thomasfredericks/Bounce2
Дефакто служи за премахване на смущения от контакти на релета ключета и други такива които правят по няколко паразитни
импулса понеже са механични контакти

svetljjjo

  • Гост
  • Trade Count: (0)
Re: Arduino за стрелки
« Отговор #67 -: 22 Ноември 2017, 12:11:10 »
Всъщтност идеята на тея библиотеки е да улесняват обикновените потребители които нямат професионални познания и умения
по програмиране каквато е и самата идея на ардуино. Особено такива в обектното програмиране .
За съжаление обаче пак трябва да имаш  познанията по програмиране и да схванеш концепцията на обектите
и как се извикват инстанций на обекти как се достигат членове ако искаш да пишеш собствен код ползвайки готовите библиотеки.
Иначе трябва а ползваш готови програми което не е невъзможно защото дефакто в 99% от случайте това което може да ти дотрябва
някой вече го е написал . И от теб се иска само да си го свалиш и да си го заредиш в ардуиното.

Цитат
Библиотеката "<Servo.h>" може също да е с доста различно съдържание, както казва и Митко. Можеш да си я пишеш и сам,

Това не е съвсем вярно ако е с различно съдържание той няма да е <Servo.h> ще е <Servo2.h> или <pachServo.h>
библиотеките се свалят от официални сайтове за ардуино библиотеки каквито са https://github.com примерно
в много редки случай за някакви много екзотични неща може да се намерят библиотеки на сайтовете на потребители
такъв случай е примерно библиотека за работа на ардуино с външна памет от типа С93 която аз намерих на сайта на един китаец  ;D
Цитат
Не съм сигурен в този компилатор, ама още на Servo myservo; трябва да изгърми.
Компилатора на ардуино си е съвсем валиден С++ компилатор и е нормално да даде грешка още първия път когато се опиташ да извикаш инстанция на обект който нямаш  ;D

pach

  • Trade Count: (42)
  • Hero Member
  • *****
  • Публикации: 12257
  • Рейтинг: 1308
  • ТТ & Н0; DR & BDZ;ep.I-III(~VI)&selfmade
    • За моделизма
Re: Arduino за стрелки
« Отговор #68 -: 22 Ноември 2017, 16:16:50 »
Така е - обикновенно нормалните софтуеристи именуват всичко,
с подсказващи в имената им определители.
Но има ли още такива софтуеристи (нормални)!!!!?
 :lol: :lol: :lol:
Това е брадата шегичка на техен гръб (отново го направих),
но за съжаление тя все още си е актуална.
В горния пример съм дал линк към ESP8266 Servo.h
Но така или иначе, трябва да се намери подходящата библиотека, или да се напише за конкретните нужди.
Примера е даден за да може да се почне от някъде с писането, ако не върши работа за конкретния ни въпрос.
При максималистите става винаги с написване на собствен код, останалите поради липса на време или друго ( по избор) се доверяваме на готовото. Някой дори не го тестват - направо го ползват....да ви звучи познато за България!?
 :scratch_ones_head:
шегички разни...
 :yes: ;D

svetljjjo

  • Гост
  • Trade Count: (0)
Re: Arduino за стрелки
« Отговор #69 -: 22 Ноември 2017, 20:34:58 »
Може да се каже че всички които програмирането им е професия и тея на които не им е професия но са го приели при сърце като хоби и са достатъчно добри че да споделят кодовете си и да имат последователи са нормални познават различните стилове и нотаций и са си избрали към кой да се придържат и го правят.
Не са нормални такива като мен дето програмирането нито им е професия нито им е чак толкова присърце но са принудени да го научат щото им трябва по една или друга причина. Преди се занимавах с онлайн игри и се наложи да се уча на РНР MySQL няколко години след това се разви много бързо флаш и вече простите уеб базирани игри не можеха да стъпят и на малкия пръст на графиката на флаша и ми омръзна. Сега с ардуино ми се наложи да почета още малко добре че РНР и С++ за много близки и не се наложи кой знае колко усилие една точка като оператор е различна и тея указатели и указатели към указателите . Обектите не ги схванах като концепция още при РНР не мисля да се напъвам и на С++ с тях в крайна сметка аз си пиша за собствена лична употреба не мисля да споделям или да правя уроци .Та в тая връзка ако кода е писан от някой като мен може да има много нетипични неща иначе хората които си се занимават си правят нещата както трябва или както мислят че трябва .
Щото и аз знам как трябва да се пише но пиша така както ми е удобно  :lol:

pavel75

  • КЖМ - България
  • Trade Count: (18)
  • Hero Member
  • *****
  • Публикации: 1812
  • Рейтинг: 264
  • HO; IV и V; BDZ, BG; София
Re: Arduino за стрелки
« Отговор #70 -: 21 Февруари 2018, 16:03:26 »
Някъде четох, че на Ардуино Нано и Уно може да се вържат до 5 сервомоторчета. На Ардуино Мега имате ли идея колко позволява?

pach

  • Trade Count: (42)
  • Hero Member
  • *****
  • Публикации: 12257
  • Рейтинг: 1308
  • ТТ & Н0; DR & BDZ;ep.I-III(~VI)&selfmade
    • За моделизма
Re: Arduino за стрелки
« Отговор #71 -: 21 Февруари 2018, 16:06:30 »
Зависи от шилда...но принципно до 16 съм виждал в клип.
Опс...обърках Мега-та с Уно-то :blush2:
http://www.railwaypassion.com/forums/index.php/topic,4987.msg109548.html#msg109548

Без шилд все пак стига до 12 ( за Мега-та):
https://youtu.be/576uNIfUnD8

Ама нали.се сещаш, че ще ти трябва и ново захранване за толкова!?

Ако ползваш сигналите съм този шилд отиваш вече на 24:
https://m.banggood.com/24-Channel-Servo-Motor-Driver-Controller-Module-For-Arduino-Robot-p-934353.html?utm_campaign=7858775_934353&utm_content=1087&p=CS120478587752016125
« Последна редакция: 21 Февруари 2018, 16:25:15 от pach »

mitko0888

  • Trade Count: (35)
  • Hero Member
  • *****
  • Публикации: 2385
  • Рейтинг: 970
  • H0, еп. I, II, III, IV, София
    • Снимките ми ...
Re: Arduino за стрелки
« Отговор #72 -: 21 Февруари 2018, 17:11:33 »
Servo библиотеката поддържа до 48 сервА с Мега, и 12 на останалите. Заради таймерите в процесора. Отделно си сметни крачетата и захранването до къде ще ти стигнат.

pavel75

  • КЖМ - България
  • Trade Count: (18)
  • Hero Member
  • *****
  • Публикации: 1812
  • Рейтинг: 264
  • HO; IV и V; BDZ, BG; София
Re: Arduino за стрелки
« Отговор #73 -: 21 Февруари 2018, 17:14:48 »
Цитат на: mitko0888 link=topic=4987.msg110767#msg110767 date=1519225893
Servo библиотеката поддържа до 48 сервА с Мега, и 12 на останалите. Заради таймерите в процесора. Отделно си сметни крачетата и захранването до къде ще ти стигнат.

Това ми друг въпрос - как се смята консумацията на сервомашинките? На всички или само не тези дето са в действие?
Няма да се движат всички заедно. Най-много три. Това не би трябваво да е проблем от гледна точка на консумацията, нали?

mitko0888

  • Trade Count: (35)
  • Hero Member
  • *****
  • Публикации: 2385
  • Рейтинг: 970
  • H0, еп. I, II, III, IV, София
    • Снимките ми ...
Re: Arduino за стрелки
« Отговор #74 -: 21 Февруари 2018, 17:27:38 »
При всяко включване, и при всеки ресет, ще мърдат всичките. Освен ако не им сложиш по някое реле / MOS ключ в захранването и да ги пускаш едно по едно или по няколко, но не всички наведнъж.