Електроника и Електротехника | Electronics and Electrical Engineering > Аналогово управление | Analog Control
Arduino за стрелки
emilchaushev:
Сега ще сложа един малко по- сложен код за управление на сервото между 90 и 110 градуса, като в кода се вижда, че с декларирането и атачването се заема положение"Право" на стрелката.
Опитната постановка е за упраление с един бутон, свързан към пин 8 и серво на пин 9, като на пин 8 имаме оново резистор, който да държи масата. Всяко натискане на бутона води до превключване в противоположното положние на стрелката.
================
КОД:
#include <Servo.h>
// константни променливи използвани за ъглите на сервото в градуси
const int straight = 90;
const int divergent = 110;
// Константни променлилви за пиновете, които се използват
const int buttonpin = 8;
const int servopin = 9;
// константа със стойност за забавяне на движението на сервото в милисекунди
const int step_delay = 70;
// декларираме сервото
Servo myservo;
// глобални променливи за запомняне позицията на сервото
int pos = straight; // current
int old_pos = pos; // previous
void setup()
{
// деклариране на пина за бутона
pinMode(buttonpin, INPUT);
// ето тук казваме директно след атачването да се обърне в права позиция сервото
myservo.attach(servopin); // attach to the servo on pin 9
myservo.write(pos); // set the initial servo position
}
void loop()
{
// всяка итерация започва с промяна на състоянието на бутона
// при натиснат бутон (reads HIGH), се премества сервото
int button_state = digitalRead(buttonpin);
if(button_state == HIGH){
old_pos = pos; // запазва текущата позиция
// променя позицията в обратното състояние
pos = pos == straight ? divergent: straight;
// премества сервото до новата позиция
if(old_pos < pos){ // ако новия ъгъл е по- голям
// завърта (увеличава) серво позицията от старото до новото състояние
for(int i = old_pos + 1; i <= pos; i++){
myservo.write(i); // записва следващата позиция на сервото
delay(step_delay); // пауза
}
} else { // обратно новия ъгъл е по- малък и ли равен
// завърта (намалява) серво позицията
for(int i = old_pos - 1; i >= pos; i--){
myservo.write(i); // записва следващата позиция на сервото
delay(step_delay); // пауза
}
}
}
}// край на цикъла
jopeto:
Темата я следя от самото началао. Според мен, трябва да махнете сервото от цялата схема. Направете го със стъпково моторче. На него може да му регулирате градусите, стъпките, броят обороти и скоростта. В записвачките за CD и флопитата има достатъчно малки такива.
emilchaushev:
Jope, отвори тема за стъпкови моторчета и управлението им, за да не мешаме знанието.
Тук темата е за серво и Ардуино. Виждал съм готови гари и искам да я разчоплим до край. Аз в нета примери за стъпкови не съм виждал, и като нямам знанията няма и какво да напиша, но нека не разводняваме.
Необходима ни е конкретика, знание и факти.
Ако имаш такива ги сподели с нас, но не очаквай че ще подхвърляш идея и някой друг ще трябва да я чопли и развива
jopeto:
Без да разводнявам темата, ето един пример, който намерих в нета веднага. Достатъчное е изчерпателно описани са кодовте, има и туториали. Нужно ви е единствено да се просветите как действат стъпковите мотори, разликите в тяхната конструкция размери и видове драйвъри. Подкарване на стъпков с драйвър http://www.makerbothy.com/arduino-stepper-motor-control/ и подкарване на стъпков направо с ардуиното http://forum.arduino.cc/index.php?topic=91442.0 Ардуиното е много добър вариант за нас понеже има евтини китайски реплики, които са на достъпна цена. Това ни позволява да се качим на по-горното ниво в хобито. Така, някой от нас имат шанса да развихрим творческото си въображение, като накараме един макет или модул да "оживее" в буквалният смисъл на думата. Ардуиното е приложимо не само за стрелки, ами и за сигнали,бариери, обръщатели отваряне и затваряне на врати(на депото например), задвижване на индустрии и всичко каквото ви дойде на ум. http://www.electroingenio.com/arduino-en/stepper-motor-with-mobile-app/ :hi:
pach:
Eмчо, ако може да задам въпрос? Може би няколко.
С кой от китовете разполагаш/работиш?
На една от скиците виждам кит с неясно означение (не се чете ясно) Digital + PWM.
Това ли ти е експерименталния кит? Може би е версия R3?
По старите версии нямат възможност да ползват генератор за импулси, а те си трябват независимо кои сервомашинки ще ползваш.
И последен въпрос - смяташ ли да ползваш тъчскрийн дисплей
за визуализация на осъществяваното управление? В мрежата има вече доста такива схеми решения, включително и за малки гарички или контролни постове за стрелкови гърловини. Дори и цветни!
Все пак това зависи и от площа на употребявания тъч дисплей де, а реализацията им явно е много улеснена съгласно ардуиното.
;D
Навигация
[0] Списък на темите
Премини на пълна версия