да какая разница какое кпд)) не нужно ведь делать 500 выстрелов в минуту, или проработать несколько дней
но когда снаряд пробивает листок, картон, а в упор и алюминиевую банку (можно и не в упор, но я такой мощности не хочу делать) это круче. делаешь из тонкого листового пенопласта танк противника с самым простым шасси, красишь а потом что то вроде боя устроить
и когда из противника будут кусками разлетаться части это покруче чем просто "о я попал в него, 3 попадания значит победа"
но я для себя же делаю, мне это интересно, ты делаешь игрушку для детей, а им такое лучше не давать))
да мне нужна безопасность, чтоб не поколечилии друг друга, для только себя ябы ставил страйкбольную, усиленную или вообще переделку из метал шарикового пистолета пулемета :)
пистолет пулемет это круто, но не ётак круто как гаусс. энергия для выстрела из батареек, никакого звука, да и то что снаряды куски гвоздя, хардкор короче
кстати о батарейках, на днях купил 5 ноубучных, за 300руб из 30 банок 4 оказались совсем негодными, некоторые уже были неплохо заряжанные, а другие позаряжал. вроде работают.
так что чем покупать дорогие модельные акумы дешевле брать ли ион из ненужных ноутбучных...
кому просто а кому темный лес :) как я понял мап преобразует значения положения стика (от0 до 255) в углу сервы от 0 до 180 причем можно задать 0 - 255 и 0-90 или 45-180 если хочу ограничивать углы сервы. а как задавать исходный угол? тобишь угол при положении стика в ноле... хотя ..
можно чтоб вы продемонстрировали ваш пример кода для передатчика и приемника основаном на протоколе V202.Делаю р/у самолет на nrf24l01.Пока остановился на библиотеке RF24. Насколько я понял в протоколе V202 идет дублирование команд на разных частотах?
Собираю самодельный пульт из купленого старого модельного пульта на 40 МГц.Приемника 40 Мгц к нему нету. Код у меня простейший на библиотеке RF24 (очень похожий как в здесь- https://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo ) и передача только на одной частоте.Как я понимаю великая вероятность потерять самолет при передаче на одной частоте. Хочу позаимствовать алгоритм дублирования каналов (частоты) передачи команд. Самолет строю -Цессна 150 , плата - NRF24L01 c усилителем и антенной.
ты ошибаешься. это цифровой передатчик. и общается он по адресу. и даже если на той же частоте кто то есть ему это не помешает, ну разве что дальность связи может снизится. плюс ты можешь выбрать полосу (частоту) на которой работать
возможно я ошибаюсь так как в р/у теме начинающий,но все хочу делать своими руками, даже пульт. Иногда команды с пульта работают с опозданием на приемнике ( смотрю по отклонению сервопривода), может в этом случае надо очищать буфер передачи? Как вы думаете?
выдрал из твоей же темы, он был на 1 серву, я добавил еще одну.
теперь задача такая чтобы к 1й ардуине подсоеденялся блютус модуль от геймпада. через уарт подсоеденялась 2я ардуина. а к ней уже вешались сервы и моторы...
джостик передает сигнал на свой блютус модуль, тот на 1ю ардуину, та на 2ю... а там уже работают сервы и моторы....
недогоняю как это замутить, мне бы пример кода для 1й и 2й дуины... :) хотыбя для 1й сервы и 1го торора, чтоб сетс собрать.... а дальше по аналогии яб доделал еще сервы и моторы :)
у меня пинов нехватает.... искать гдето какието сдвиговые регистры и прочее некогда и негде...
а 2 ардуины у меня уже есть, причем с шилдами для подключения серв. тоесть сразу воткнул мощьные сервы и не парюсь. и насколько я понял через уарт все просто. насколько в теории понял одна пишет команду, другая ее читает.
а чтобы если джойстик в 0 то серва не крутит, если вперед немного то крутит очень медленно и непрерывно пока недойдет до конца или джойстик не отпустят в 0.
если же джойстик нажали до упора, то серва крутит на макс оборотах.
посути руска ждойстика превращаеться в педаль акселератора. нажали немного - серва еле крутит. нажали сильно - серва сильно крутит. отпустили - некрутит.
нужно это для решения проблемы позиционирования пушки. рычаги джойстиков с малым ходом и физически плавно поворачивать их нереально, да и дискретность у них большая серва резко ходит. а нужнен плавный ход. потипу как на танках управление поворотом башни.
а чтобы если джойстик в 0 то серва не крутит, если вперед немного то крутит очень медленно и непрерывно пока недойдет до конца или джойстик не отпустят в 0.
А если использовать библиотеку VarSpeedServo и в качества параметра скорости поворота сервы использовать значение со стика, приведённого к +/- 512 / 2 ? Или эта библиотека тормозящая ?
а как это связать с джойстиком? джойстик выдает значение 0 - 255 при этом 128 это его центральное положение.
нужно чтобы при значении 125-133(запас на погрешность) серва стояла. при значениях от 133 до 255 двигалась в перед, чем больше значение тем быстрее.
при значении 125-0 в опратную сторону, и тоже чем значение меньше тем быстрее. этакий рычаг управления подьемным краном. там ведь стрела крана не ходит всед за движением рычага... а медленно поднимаеться или опускаеться, при этом рычак по сути открывает клапан подачи масла, чем сильнее рычак сдвинули тем больше давление тем быстрей стрела движеться.
вот так же хочеться сделать управление сервой... чтобы получить в итоге возможность медленно и точно наводить прицел, а в случае необходимости выжимая рычаг на полную двигать серву быстро...
SLOM , я делал управление лазерной указкой так ( но только работа в первом и втором квандранте ):
приводим Y джойстика - -127..0..+127 , приводим X джойстика - неИсп..0..+127
нужный угол - через син, кос, таг , скорость - S*S = Y*Y + X*X
работа - Дж влево до упора = 0 гр полная скорость
ДЖ вперёд до упора = 90 гр полная скорость ДЖ вправо вперёд на половину = 135 гр половинная скорость ДЖ вправо на четверть = 180 гр половинная/2 скорость
а можно пример скетча? указка плавно двигалась? можно было в мишень целиться? а то сейчас у меня даже при плавном движении дджоя лазер пролетает мимо листа а4(мишени)
джой у вас какой? у меня от сони плей стейшин 2...
// include additional headers
#include <Servo.h>
#include <PS2X_lib.h> //for v1.6
// create PS2 Controller Class
PS2X ps2x;
int ps2x_error = 0;
byte ps2x_type = 0;
byte ps2x_vibrate = 0;
// create servo class
Servo servoL; // initialize left servo
Servo servoR; // init right servo
#define SERVOR 6
#define SERVOL 7
//set up pins for playstation controller
#define DAT 12
#define CMD 11
#define ATT 10
#define CLK 9
const int neutral = 1512;
const int forward = 2000;
const int backward = 1000;
//--- Function: Setup ()
void setup()
{
Serial.begin(57600);
// setup servos
pinMode (SERVOL, OUTPUT);
pinMode (SERVOR, OUTPUT);
servoL.attach(SERVOL);
servoR.attach(SERVOR);
servoL.writeMicroseconds(neutral); // set servo to mid-point
servoR.writeMicroseconds(neutral); // set servo to mid-point
// check for controller
ps2x_error = ps2x.config_gamepad(CLK, CMD, ATT, DAT, false, false);
if(ps2x_error == 0)
Serial.println("Found Controller, configured successful");
else if(ps2x_error == 1)
Serial.println("No controller found, check wiring.");
else if(ps2x_error == 2)
Serial.println("Controller found but not accepting commands.");
else if(ps2x_error == 3)
Serial.println("Controller refusing to enter Pressures mode, may not support it. ");
// get which type
ps2x_type = ps2x.readType();
switch(ps2x_type)
{
case 0: Serial.println("Unknown Controller type"); break;
case 1: Serial.println("DualShock Controller Found"); break;
}
}
//--- Function: loop ()
void loop()
{
if((ps2x_error == 1) || (ps2x_error == 2) || (ps2x_error == 3))
{
//skip loop if no controller found
return;
}
else if(ps2x_error == 0)
{
if(ps2x_type == 1)
{
ps2x.read_gamepad(false, ps2x_vibrate);
//read controller and set large motor to spin at 'vibrate' speed
if(ps2x.Button(PSB_PAD_UP))
{
Serial.println("Up ");
servoL.writeMicroseconds(backward);
servoR.writeMicroseconds(forward);
}
else if(ps2x.Button(PSB_PAD_RIGHT))
{
Serial.println("Right");
servoL.writeMicroseconds(neutral);
servoR.writeMicroseconds(forward);
}
else if(ps2x.Button(PSB_PAD_LEFT))
{
Serial.println("LEFT");
servoL.writeMicroseconds(backward);
servoR.writeMicroseconds(neutral);
}
else if(ps2x.Button(PSB_PAD_DOWN))
{
Serial.println("DOWN ");
servoL.writeMicroseconds(forward);
servoR.writeMicroseconds(backward);
}
else
{
servoL.writeMicroseconds(neutral);
servoR.writeMicroseconds(neutral);
}
} // end error
}// end DualShock Controller
delay(50);
} // end loop
поменяв пины на свои... но он странно себя ведет, поначалу ничего не работало, потом я попробовал посмотреть сириал монитор, и как только я его открыл стали работать сервы.
тоесть при открытом сириал мониторе на экране видно текст нажатия и сервы работают, выключил сираиал и все перестало работать ))
но влюбом случае сервы там работают от нажатия кнопок и сразу до конца, нет плавного хода.
гаус это круто но кпд низкое...
я тоже дцумал о нем но всеже купил обычную пневматику, от танка.
механизм стрельбы 6мм шариками от модельных танком Henlong, чтобы не покупать целый танк за 3000-5000 я купил запасть за 550руб.
да какая разница какое кпд)) не нужно ведь делать 500 выстрелов в минуту, или проработать несколько дней
но когда снаряд пробивает листок, картон, а в упор и алюминиевую банку (можно и не в упор, но я такой мощности не хочу делать) это круче. делаешь из тонкого листового пенопласта танк противника с самым простым шасси, красишь а потом что то вроде боя устроить
и когда из противника будут кусками разлетаться части это покруче чем просто "о я попал в него, 3 попадания значит победа"
но я для себя же делаю, мне это интересно, ты делаешь игрушку для детей, а им такое лучше не давать))
да мне нужна безопасность, чтоб не поколечилии друг друга, для только себя ябы ставил страйкбольную, усиленную или вообще переделку из метал шарикового пистолета пулемета :)
пистолет пулемет это круто, но не ётак круто как гаусс. энергия для выстрела из батареек, никакого звука, да и то что снаряды куски гвоздя, хардкор короче
кстати о батарейках, на днях купил 5 ноубучных, за 300руб из 30 банок 4 оказались совсем негодными, некоторые уже были неплохо заряжанные, а другие позаряжал. вроде работают.
так что чем покупать дорогие модельные акумы дешевле брать ли ион из ненужных ноутбучных...
так я и взял из ноутбучных)) imax зарядник еще прикупил
а модельные аккумуляторы для самолета и катера взял, но уже давненько
jeka_tm
сегодня забрал посылку, и стал счастливым облададелем джойстика пс2 )
вот только пока немогу наладить работу с ним.
нет случаем простенького скетча где нет ничего лишнего, только управление 1й сервой с джойстика или кнопок...
из найденых в этой теме и переделанных почемуто ниодин не заработал :(
поздравляю
сначала пример к либе запусти чтобы быть точно уверенным что ты все правильно подключил
не забудь про питание 3.3В
это я делал, и про 3.3 незабыл и про резисторы...
в монитор порта идел текст, правда белебирда, какаята ...
в примере посмотри какую скорость порта надо в терминале поставить, должны быть нормальные данные
а все заработало, я просто рассееный с улицы бассееной :)
в коде PS2 = ps2x.config_gamepad(13,11,10,12, true, true); //Настройка выводов: (clock, command, attention, data, true, true)
пины идут непопорядку, а я необратил на это внимание и втыкал думая что они идут 13,12,11,10 поменял местами и заработало :)
потом найду время и буду мутить както эту петрушку с 2мя ардуинами так чтобы и движки и кучу серв задействовать...
там все просто. используй функцию map для преобразования данных от джойстиков 0-255 в 0-180 для сервы
кому просто а кому темный лес :) как я понял мап преобразует значения положения стика (от0 до 255) в углу сервы от 0 до 180 причем можно задать 0 - 255 и 0-90 или 45-180 если хочу ограничивать углы сервы. а как задавать исходный угол? тобишь угол при положении стика в ноле... хотя ..
середина диапазона и будет 0
посмотри пример к map и поймешь
jeka_tm,если вас не затруднит
можно чтоб вы продемонстрировали ваш пример кода для передатчика и приемника основаном на протоколе V202.Делаю р/у самолет на nrf24l01.Пока остановился на библиотеке RF24. Насколько я понял в протоколе V202 идет дублирование команд на разных частотах?
v202 протокол в пульте. соответственно он передатчик и для него кода не может быть. он какой есть)
а для приемника поделился бы, но после сбоя который полгода назад вроде был, многие исходники потеряны
или ты самодельный пульт хочешь собрать? но тогда зачем тебе использовать проткол v202
и никаких разных частот))
Собираю самодельный пульт из купленого старого модельного пульта на 40 МГц.Приемника 40 Мгц к нему нету. Код у меня простейший на библиотеке RF24 (очень похожий как в здесь- https://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo ) и передача только на одной частоте.Как я понимаю великая вероятность потерять самолет при передаче на одной частоте. Хочу позаимствовать алгоритм дублирования каналов (частоты) передачи команд. Самолет строю -Цессна 150 , плата - NRF24L01 c усилителем и антенной.
Что можете посоветовать?
ты ошибаешься. это цифровой передатчик. и общается он по адресу. и даже если на той же частоте кто то есть ему это не помешает, ну разве что дальность связи может снизится. плюс ты можешь выбрать полосу (частоту) на которой работать
jeka_tm ,
возможно я ошибаюсь так как в р/у теме начинающий,но все хочу делать своими руками, даже пульт. Иногда команды с пульта работают с опозданием на приемнике ( смотрю по отклонению сервопривода), может в этом случае надо очищать буфер передачи? Как вы думаете?
надо использовать "правильную" библиотеку)))
поделюсь с тобой
https://yadi.sk/d/CXjuENmaEEwun
файл RF24.rar
смотри примеры
но это при условии код остальной у тебя нормально написан
jeka_tm, чтото никак немогу придумать как соеденить 2 ардуины через уарт, может подскажешь?
вот тестовый код
выдрал из твоей же темы, он был на 1 серву, я добавил еще одну.
теперь задача такая чтобы к 1й ардуине подсоеденялся блютус модуль от геймпада. через уарт подсоеденялась 2я ардуина. а к ней уже вешались сервы и моторы...
джостик передает сигнал на свой блютус модуль, тот на 1ю ардуину, та на 2ю... а там уже работают сервы и моторы....
недогоняю как это замутить, мне бы пример кода для 1й и 2й дуины... :) хотыбя для 1й сервы и 1го торора, чтоб сетс собрать.... а дальше по аналогии яб доделал еще сервы и моторы :)
скажи а тебе реально нужно 2 ардуины? зачем огород городить? врядли у тебя такая задача что одна не справится
у меня пинов нехватает.... искать гдето какието сдвиговые регистры и прочее некогда и негде...
а 2 ардуины у меня уже есть, причем с шилдами для подключения серв. тоесть сразу воткнул мощьные сервы и не парюсь. и насколько я понял через уарт все просто. насколько в теории понял одна пишет команду, другая ее читает.
и используют для этого сириал http://arduino.ru/Reference/Serial
или есть еще сторонние библиотеки.
но это в теории а как на практике, так и несмог найти пример кода для сервы и мотора.
я тебе не подскажу. не делал такого
jeka_tm, могут ли быть задержки сигнала если передавать значение оси в значениях от 0 до 1023 на приемник , надо ли меппить значение оси к 0 до 255?
радиомодуль отправляет посылки из 32 байт максимум. 1 минимум. но это отдельные байты. это насколько я знаю
я отправлял размером в байт: например
1 байт ось х (значения от 0 до 255)
2 байт ось y (значения от 0 до 255)
и так далее
но если хочешь передавать до 1024 тогда можно разбить число unsigned int на два по байту и в приемнике собрать. но какой смысл
jeka_tm
подскажи как можно сделать чтобы при управлении стиком джойстика на геймпаде.
серва не вращалась пропорционально данным стика.
а чтобы если джойстик в 0 то серва не крутит, если вперед немного то крутит очень медленно и непрерывно пока недойдет до конца или джойстик не отпустят в 0.
если же джойстик нажали до упора, то серва крутит на макс оборотах.
посути руска ждойстика превращаеться в педаль акселератора. нажали немного - серва еле крутит. нажали сильно - серва сильно крутит. отпустили - некрутит.
нужно это для решения проблемы позиционирования пушки. рычаги джойстиков с малым ходом и физически плавно поворачивать их нереально, да и дискретность у них большая серва резко ходит. а нужнен плавный ход. потипу как на танках управление поворотом башни.
попробуй так. в самом начале кода можно настроить параметры мин и макс угол, а также скорость, точнее задержку. поиграйся и подбери что тебя устроит
если все получится или не получится приложи видео чтобы понять в чем проблема
спасибо, буду пробовать.
как я понял этот код нужно просто добавить к тому что уже есть? он как бы настроечный, расширяющий функционал?
чтото я мудрил, мудрил и ниче так и не заработало )))
вот обьедененный код
SLOM - как можно сделать чтобы при управлении стиком джойстика на геймпаде серва не вращалась пропорционально данным стика.
1
LXservo.write(map(ps2x.Analog(PSS_LX), 255, 0, 0, 180)); ;
а чтобы если джойстик в 0 то серва не крутит, если вперед немного то крутит очень медленно и непрерывно пока недойдет до конца или джойстик не отпустят в 0.
А если использовать библиотеку VarSpeedServo и в качества параметра скорости поворота сервы использовать значение со стика, приведённого к +/- 512 / 2 ? Или эта библиотека тормозящая ?
пардон, #378 / 35 и #380 / 72 - последствия копипаста :(
angle > max_angle >>>>> angle > MIN_angle
про VarSpeedServo впервые слышу, спасибо буду гуглить :)
http://arduino.ru/forum/apparatnye-voprosy/plavnoe-servo
да надо было сначала отдельно проверить
а как это связать с джойстиком? джойстик выдает значение 0 - 255 при этом 128 это его центральное положение.
нужно чтобы при значении 125-133(запас на погрешность) серва стояла. при значениях от 133 до 255 двигалась в перед, чем больше значение тем быстрее.
при значении 125-0 в опратную сторону, и тоже чем значение меньше тем быстрее. этакий рычаг управления подьемным краном. там ведь стрела крана не ходит всед за движением рычага... а медленно поднимаеться или опускаеться, при этом рычак по сути открывает клапан подачи масла, чем сильнее рычак сдвинули тем больше давление тем быстрей стрела движеться.
вот так же хочеться сделать управление сервой... чтобы получить в итоге возможность медленно и точно наводить прицел, а в случае необходимости выжимая рычаг на полную двигать серву быстро...
да надо было сначала отдельно проверить
просто залить скетч?
понятно. тогда так
залил как есть только пин сервы перебил на 7 ничего не случилось..
а там разве недолжно быть управления с джойстика? в скетче вроде нету?
SLOM , я делал управление лазерной указкой так ( но только работа в первом и втором квандранте ):
приводим Y джойстика - -127..0..+127 , приводим X джойстика - неИсп..0..+127
нужный угол - через син, кос, таг , скорость - S*S = Y*Y + X*X
работа - Дж влево до упора = 0 гр полная скорость
ДЖ вперёд до упора = 90 гр полная скорость
ДЖ вправо вперёд на половину = 135 гр половинная скорость
ДЖ вправо на четверть = 180 гр половинная/2 скорость
короче - мнемонический манипулятор
а можно пример скетча? указка плавно двигалась? можно было в мишень целиться? а то сейчас у меня даже при плавном движении дджоя лазер пролетает мимо листа а4(мишени)
джой у вас какой? у меня от сони плей стейшин 2...
если ты не заметил изначально там было с переменного резистора на аналоговый вход
измени. вместо
вставь свое. либу там для джойстика и так далее
сделал вот так
нет реакции. наверно чтото нето я делаю :)
jeka_tm
ты же так делал, он же стрелял?! как на цель наводил?
val = -(ps2x.Analog(PSS_LX)-128);
почему? должны быть значения от 0 до 255. ты таким образом преобразуешьк такому виду? какой вид изначально? -128 по 128? если да прибавь просто 128
и отправляй в uart значение val чтобы контролировать значения которые получаются
Может это чем-то поможет https://sites.google.com/site/2007arduino/example-code/controller-tutorials/ps2-controller
val = -(ps2x.Analog(PSS_LX)-128);
почему? должны быть значения от 0 до 255. ты таким образом преобразуешьк такому виду? какой вид изначально? -128 по 128? если да прибавь просто 128
и отправляй в uart значение val чтобы контролировать значения которые получаются
Жека а вас незатруднит в коде показать как надо. я не силен в этом, могу не то что надо не туда куда надо впихивть )
Может это чем-то поможет https://sites.google.com/site/2007arduino/example-code/controller-tutorials/ps2-controller
спасибо.
попробовал скетч
поменяв пины на свои... но он странно себя ведет, поначалу ничего не работало, потом я попробовал посмотреть сириал монитор, и как только я его открыл стали работать сервы.
тоесть при открытом сириал мониторе на экране видно текст нажатия и сервы работают, выключил сираиал и все перестало работать ))
но влюбом случае сервы там работают от нажатия кнопок и сразу до конца, нет плавного хода.
ну хз. у меня приемника нет проверить. один пульт остался. пробуй и кинь сюда что в терминал приходит
если все норм будет можно будет черзе микросекудны управлять. плавнее будет