Електроника и Електротехника | Electronics and Electrical Engineering > Аналогово управление | Analog Control
Arduino за стрелки
pavel75:
Значи този метод не е много сигурен. Ако се спрем на него трябва да има задължително обратна връзка, което усложнява проекта.
pach:
Би трябвало да има и други възможности.
Например да "смята", че бутона е натиснат за определено време.
Опция за таймер или нещо от сорта.
Или пък да брои колко градуса трябва да стигнат до едно или друго крайно положение. Тоест отново да смята бутона за натиснат до отброяване на определени градуси.
( Май спомена че цикъла ти се състои от стъпки по 1 градус)
Всъщност обратната връзщо в сервото е подобна.
Там разбира, че е завъртял сервото в едно от крайните си положения,
когато изравни показанията на зададените, с тези получени от вградения променлив резистор. Тоест изравнява честотите и спира. Нали всъщност чрез входните честоти, сервото тръгва в определена посока до достигане на нужния ъгъл.
Или нещо такова...
;D
Mixy:
Защо го правиш в цикъл? Не става ли нещо като това:
if (digitalRead(2) == HIGH)
{
servo.write(25);
}
elseif (digitalRead(3) == HIGH)
{
servo.write(50);
}
С цилъл и забавяне, стрелката вероятно ще превключва по-бавно (по-мазно, по-реалистично ;D), но трябва допълнителен флаг в кода, за да не се налага бутона да се държи постоянно натиснат. Нещо като напр:
bool button1on = false; // флаг за натиснат бутон
button1on == (digitalRead(2) == HIGH); // проверка преди основния цикъл
// основен цикъл
while (button1on && (pos < 110)) // нататък мисля е ясно
mitko0888:
--- Цитат на: pavel75 link=topic=4987.msg108505#msg108505 date=1501153783 ---Значи този метод не е много сигурен. Ако се спрем на него трябва да има задължително обратна връзка, което усложнява проекта.
--- Край на цитат ---
Примерчетата по-горе са доста елементарни и не ви съветвам да ги ползвате в този вид. Разбира се те са чудесни за начало, а могат спокойно и да си останат в този вид.
Бутоните могат да се четат по различен начин, с еднократно натискане, със задържане докато сервото стигне до края, с натискане за алтернативна смяна на посоката и т.н. Не е много сложен код.
ПС: Микси написа нещо докато аз се туткам на клавиатурата: тези цикли ги правят хората за да се похвалят колко е хубаво сервото да врътне стрелката за 3 секунди от единия край до другия. Или за 2, ако трябва. Иначе став щрак-щрак.
ПС2: Това атачване по едно време беше където трябва, нещо в последните примери пак избяга където не трябва.
Сериозният проблем е че при изключване на управлението (захранването) стрелките остават в положението, в което са в този момент. При ново включване с тези програмки се приема че сервото е в положение 0, или 90 или колкото сте му написали, но не и колкото е в действителност (а то може и да е 180). На теория това не може да се реши, освен ако няма "крайни изключватели", които да се четат преди въобще да се атачне порта на сервото. Трябва да са направени и да се четат така, че да се разпознават не само двете крайни положения, но и това че стрелката не е преместена докрай (случва се доста често). С първия пример може да си натискате бутона на порт 3 за да "нулирате" стрелката, ама тя хич няма да мръдне, защото ардуиното си знае че е в положение 0. Така че "реалната" програмка за стрелки ще изглежда доста различно.
Mixy:
--- Цитат на: mitko0888 link=topic=4987.msg108508#msg108508 date=1501158605 ---Сериозният проблем е че при изключване на управлението (захранването) стрелките остават в положението, в което са в този момент... Така че "реалната" програмка за стрелки ще изглежда доста различно.
--- Край на цитат ---
Напълно вярно. По принцип, при всяко включване на захранването, следва да има инциализиране със завъртане на сервото "еди-колко-си-градуса", които градуси да са повече от реалния възможен ход. Това гарантира поставяне в едното крайно положение на стрелката, което се приема за изходно (начално). Дали сервото ще има вграден ограничител/изключвател (да не напъва да върти повече от допустимия механичен ход), зависи от модела и най-вече от цената. Има и такива, които "напъването" не им пречи. Но опрделено трябва да се помисли и за това - как коректно ще се инициализира системата при включване на захранването.
Навигация
[0] Списък на темите
Премини на пълна версия