servo1.write(145);
офлайн
Protez1999
Senior Member
Автор темы
|
|
9978 |
17 лет на сайте Город:
|
Andrew-1978:Тогда еще вопрос, а две УНО можно между собой соединить
Сдуру можно и xy# сломать. Для всего нужно брать подходящие компоненты. Иначе потом будут рождаться такие "монстры" из десятка Ардуин.
DENA77:#include <Servo.h>
#include <IRremote.h>unsigned long Value1 = 0xFF6897;
unsigned long Value2 = 0xFF9867;
unsigned long Value3 = 0xFFB04F;
unsigned long Value4 = 0xFF30CF;
unsigned long Value5 = 0xFF18E7;
unsigned long Value6 = 0xFF7A85;
unsigned long Value7 = 0xFF10EF;
unsigned long Value8 = 0xFF38C7;
unsigned long Value9 = 0xFF5AA5;
unsigned long Value10 = 0xFF42BD; //*
unsigned long Value11 = 0xFF52AD; //#
unsigned long Value12 = 0xFF629D; //^
unsigned long Value13 = 0xFFA857; //^
unsigned long Value14 = 0xFF4AB5; //0int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;Servo servo1;
Servo servo2;
Servo servo3;void setup() {
irrecv.enableIRIn();
servo1.attach(8);
servo2.attach(9);
servo3.attach(10);
}void loop() {
if (irrecv.decode(&results)) {
irrecv.resume();
}if(results.value == Value1)
servo1.write(15);if(results.value == Value2)
servo1.write(80);if(results.value == Value3)
servo1.write(145);if(results.value == Value4)
servo2.write(25);if(results.value == Value5)
servo2.write(90);if(results.value == Value6)
servo2.write(155);if(results.value == Value7)
servo3.write(1);if(results.value == Value
servo3.write(65);if(results.value == Value9)
servo3.write(130);if(results.value == Value10)
servo1.write(15);if(results.value == Value11)
servo1.write(145);if(results.value == Value10)
servo2.write(25);if(results.value == Value11)
servo2.write(155);if(results.value == Value10)
servo3.write(1);if(results.value == Value11)
servo3.write(130);if(results.value == Value14)
servo1.write(80);if(results.value == Value14)
servo2.write(90);if(results.value == Value14)
servo3.write(65);if(results.value == Value12)
servo1.write(145);if(results.value == Value12)
servo2.write(155);if(results.value == Value12)
servo3.write(130);if(results.value == Value13)
servo1.write(15);if(results.value == Value13)
servo2.write(25);if(results.value == Value13)
servo3.write(1);
}
Боже, какой бы*локод... Что такое структуры, массивы, циклы мы не знаем...
Что же касается "скорости сервоприводов" то она не регулируется. Серве дается указание в какое положение встать и все. Читайте тут в разделе "Принцип действия сервомашинки".
Главное работает.Вот нашёл пример по скорости.
void setup()
{
//К пину №7 подключен управляющий вывод сервопривода
//Данный метод библиотеки указывает пин через который происходит управление
servo.attach(7);
//servo.detach(7); - этот метод отключит управление от указанного пина.
}
void loop()
{
//Установка вала в 0 градусов
servo.write(0);
delay(2000); //ждем 2 секунды. Необходимо как минимум 30 микросекунд для установки.
servo.write(90); //ставим вал под 90 градусов
delay(2000); //ждем 2 секунды.
// В библиотеке есть функция для чтения текущего положения (угла) сервопривода.
// Будет считано последнее установленное значение в сервоприводе.
// int AngleServo=servo.read();
// От 0 до 180 градусов.
servo.write(180); //ставим вал под 190 градусов
delay(2000); //ждем 2 секунды.
//Медленно возвращаемся обратно с интервалом в 1 градус
for(int p=179; p>=1; p--)
{
servo.write(p);
delay(20);
}
//Угол (Установить) можно задать во времени от нуля.
//Так как у сервопривода есть характеристика скорости поворота 0.12 сек/60 град
//servo.writeMicroseconds(1000);
//То можно установить угол расчитав время.
}
офлайн
Protez1999
Senior Member
Автор темы
|
|
9978 |
17 лет на сайте Город:
|
если в серве нет переменного резистора то она работает как мотор и можно регулировать скорость . если есть то можно поставить только угол на который она повернется. Ну или чтоб замедлить можно делать через паузу как в коде.
офлайн
Andrew-1978
Senior Member
|
|
26303 |
18 лет на сайте Город:
|
Tester:Andrew-1978:Тогда еще вопрос, а две УНО можно между собой соединить
Сдуру можно и xy# сломать. Для всего нужно брать подходящие компоненты. Иначе потом будут рождаться такие "монстры" из десятка Ардуин.
Так посоветуйте что взять, что бы подключить цветной сенсорный ЖК монитор и с его управлять 6-ю сервоприводами sg90 с отображением на экране положения серв.
Сервы такие же как в примере с перемен.рез.Как мне применить(прописать) этот пример в моём скетче.
Andrew-1978:Так посоветуйте что взять, что бы подключить цветной сенсорный ЖК монитор и с его управлять 6-ю сервоприводами sg90 с отображением на экране положения серв.
Я бы взял STM32 + Экран с контроллером ILI9341 + тачскрин с контроллером XPT2046. Только потому, что это у меня уже есть и есть наработки по коду
Кстати, для такого экрана есть библиотека и под Ардуину - гуглить по названию чипа. На счет тача не знаю.
DENA77:Главное работает.
Это звучит примерно так же, как реплика "Главное что живой!" из уст пластического хирурга после неудачной операции
офлайн
Andrew-1978
Senior Member
|
|
26303 |
18 лет на сайте Город:
|
Tester:Andrew-1978:Так посоветуйте что взять, что бы подключить цветной сенсорный ЖК монитор и с его управлять 6-ю сервоприводами sg90 с отображением на экране положения серв.
Я бы взял STM32 + Экран с контроллером ILI9341 + тачскрин с контроллером XPT2046. Только потому, что это у меня уже есть и есть наработки по коду
Кстати, для такого экрана есть библиотека и под Ардуину - гуглить по названию чипа. На счет тача не знаю.
Мдаа.
Вариант №1. Ардуино УНО.
Минусы - Экран на отдельную УНО, для каждых 6-ти серв - новая УНО.
Плюсы - В интернете много информации и по схемам и по скетчам.
Вариант №2. STM32 .
Минусы - Очень мало (практически нет) информации по подключению серв к STM32.
Плюсы - по скудной информации, можно подключить 20 серв на одну плату.
Ну и вопрос по тачу.
Исходя из этого, пока склоняюсь к УНО (тем более на данном этапе нужно 4-6 серв и идет "проверка сил".
а какая информация нужна для подключения серво-мотора к stm32? как на пин подать плюс или минус?
офлайн
Andrew-1978
Senior Member
|
|
26303 |
18 лет на сайте Город:
|
zverjuga:а какая информация нужна для подключения серво-мотора к stm32? как на пин подать плюс или минус?
Ну мне, для начала, хотя бы узнать куда подключать управляющий провод, ну и +/- сервы заодно.
ЗЫ. А вообще, как то мало информации по stm32 я нахожу, в отличии от УНО. Может в поиск надо не просто "stm32" вбивать, а еще и модификацию, или еще что
один провод на +5 вольт, второй на землю, третий - на любой управляющий пин. это может быть пин 10, как на картинке, так и любой другой подобный. на stm32 - все аналогично. я так понимаю.
то есть разница только в том. где на stm32 найти + и землю, и как подать на любой пин управляющий сигнал.
Andrew-1978:ЗЫ. А вообще, как то мало информации по stm32 я нахожу, в отличии от УНО. Может в поиск надо не просто "stm32" вбивать, а еще и модификацию, или еще что
Все даташиты лежат на st.com в свободном доступе! Что еще надо?
Бери Мегу 256 и не дури себе мозги. И экран поищи другой, что бы "pwn пины" не занимал.
Вообще все "немного" сложнее чем какой-нибудь analogWrite() или что там у вас.
Рекомендую в ознакомительных целях почитать какие-нибудь курсы типа http://www.123avr.com, а потом http://avr-start.ru/?cat=9
подскажите пожалуйста документации, нужно сделать на подобии радара(что то вроде эффекта доплера), у меня есть два модуля(антенна+ардуинка), дальность работы 2 км, и мне нужно с помощью частоты, определить дальность и как на радаре где находиться объект
Подскажите пожалуйста, можно по блютус (HC-05) передавать одновременно 2 команды (на моторшильд, на 2 разных мотора)?
офлайн
Protez1999
Senior Member
Автор темы
|
|
9978 |
17 лет на сайте Город:
|
хоть на сто. со сколькими сопрягся, стольким и передал. только команды будут не одновременно передаваться, а последовательно. то есть временной лаг, хоть и не большой, но будет.
zverjuga:хоть на сто. со сколькими сопрягся, стольким и передал. только команды будут не одновременно передаваться, а последовательно. то есть временной лаг, хоть и не большой, но будет.
В том то и вопрос, т.е. не получится на телефоне нажимать одновременно 2 кнопки (на каждой кнопке свой мотор)...?
Для понимания того, что хочу сделать - управлять гусенечной техникой, т.е. для поворота правую гусеницу налево, левую гусеницу направо. Вы скажите - "так напиши скетч с такой логикой..." , но такой вариант не подходит, т.к. эти же моторы приводят в движение стрелу и всё навесное, путём переключения коробки...
replikan, все дело в количестве блютуз передатчиков. одно блютуз устройство может послать одну команду на один приемник в один момент времени. если нужна абсолютная одновременная работа, то нужно два блютуз передатчика и два приемника.
в вашем случае этим заморачиваться ну нужно. по суди, два основных способа решения задачи
1. на каждый мотор повесить по одному блютуз приемнику. лаг между командами составляет миллисекунды и для гусеничной техники это настолько мизерная величина, что ею можно пренебречь и считать, что команды приходят одновременно
2. поставить один приемник, который будет принимать пакет команд, потом парсить его и только после этого рассылать команды на все устройства, которые этих команд ждут
по мне, первый способ расточительный и излишний. много железа, выигрыш практически нулевой. поэтому, как мне видится, лучшее решение такое
1. делаем один передатчик и один приемник приемник
2. придумываем протокол команд
3. на приемнике висит обработчик, который принимает и парсит пакет команд от передатчика
4. после обработки этих команд принимается решение, какому мотору какой сигнал послать
это именно и есть ваше
replikan:скажите - "так напиши скетч с такой логикой..."
и вам такой вариант вполне подойдет, потому что он правильный. скетч написать дешевле и гибче, чем каждый раз железо переделывать.
непонял( (я просто немного туп в этом - начинающий), так это реально, по экрану телефона юзать двумя джойстиками одновременно и команды будут восприниматься корректно?
вы не поняли. смысл в том, чтобы через блютуз передавать не одну команду, а пачку команд. скетч в ардуине эти команды анализирует и только после этого передает команды на движки. каким образом эти команды будут формироваться и передаваться - это другой вопрос.
управлять движком через блютуз напрямую мне смотрится не совсем правильно.