Електроника и Електротехника | Electronics and Electrical Engineering > Аналогово управление | Analog Control

Arduino за стрелки

<< < (6/38) > >>

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] Списък на темите

[#] Следваща страница

[*] Предходна страница

Премини на пълна версия