Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

джойстик на основе датчика холла и контроль сервомоторов

Чт июл 09, 2020 00:50:16

Собираю одну вещь, мне нужно чтобы от обычного джойстика (джойстик здесь в прямом смысле, а не в в смысле игровых контроллеров) можно было двигать сервоприводы. ( Обычные сервы от rc- моделек)

Есть много готовых проектов на Ардуино, но там джойстик на основе потенциометров. А те джойстики которые есть в подходящем мне форм-факторе почти все на основе датчика холла. Конечно можно найти у другого производителя потенциометровый джойстик, но датчик холла лучше, т.к. надёжнее и долговечнее, а это для меня главный приоритет.

Так вот, есть ли готовые проекты по подключению таких джойстиков к известным и доступным МК?

Re: джойстик на основе датчика холла и контроль сервомоторов

Чт июл 09, 2020 09:42:29

Готовых нет, но промышленные варианты попадались.
Основа - аналоговый датчик (возможно AH3503)...
Плюс кинематика.
:roll:

Re: джойстик на основе датчика холла и контроль сервомоторов

Чт июл 09, 2020 11:21:00

Заказал вот такой джойстик. Теперь идет он ко мне. https://www.ebay.com/itm/New-CH-Product ... 2749.l2649

Мой план таков - выход джойстика это 0-5в по каждой оси. Я буду считывать напряжение через ардуину (она вроде неплохо справляется с 0-5в) и через нее же управлять сервоприводами. Вот примерно такой скетч будет



Код:
/*
 Controlling a servo position using a potentiometer (variable resistor)
 by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>

 modified on 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Knob
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int voltpin = 0;  // analog pin for voltage
  int sensorValue = analogRead(A0);

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  val = analogRead(voltpin);            // reads the value of the voltage (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val);                  // sets the servo position according to the scaled value
  delay(15);                           // waits for the servo to get there
}

Ответить