FrSky Taranis - Максимум возможностей за минимальные деньги.
Да, как выкрутится - это я понимаю, но это все равно кастыль.
Хочу купить приёмник XSR такой : www.aliexpress.com/item/…/32605970187.html
Есть выбор вариантов : «US FCC Version» и «EU 2016 LBT Version».
Есть предупреждение : The LBT version of XSR receiver only works with FrSky D16-LBT Mode.
У меня Taranis самой первой версии, куплен в мае 2014года.
Стоит внешний модуль XJT такой : alofthobbies.com/frsky-xjt-jr-graupner-type-16ch-d… т.к. встроенный ВЧ сгорел.
Какой из вариантов приёмника мне выбрать- US или EU?
Как узнать какая из версий лежит на Бангуде? banggood.com/FrSky-XSR-2_4GHz-16CH-ACCST-Receiver-…
И ещё. Для этого приёмника заявлено «CPPM output». Правильно ли я понимаю, что его одним проводом можно подключить к контроллеру полёта в котором есть «PPM Sum» (это «Ikon» FBL вертолёта)?
Да, как выкрутится - это я понимаю, но это все равно кастыль.
да почему же костыль? если такое использование Duration и Delay правильное - значит нужно его принять и пользоваться им 😃
да почему же костыль? если такое использование Duration и Delay правильное - значит нужно его принять и пользоваться им
Да, потому что все время было так как было, а теперь поменяли на противоположное значение. И вместо одного числа вводить две строки и это для каждого использования задержки!!!
Хотел обновить прошивку приемника X6R через S.Port по инструкции.
Не уделил достаточное внимание схеме распиновки - подключил SmartPort приемника к контактам отсека для внешних ВЧ-модулей обычным S.Port-кабелем. При попытке прошивки произошла видимо переполюсовка и приемник начал пахнуть горелым лаком. Приемник не подает признаков жизни при подачи питания. Есть ли вариант вернуть приемник к жизни или забыть/забить? Плата приемника визуально без повреждений.
А должно работать так: свич должен выключаться через “Duration > 0” ПОСЛЕ того, как условие перестало выполняться. А не как сейчас - выключается через “Duration > 0” после того как условие НАЧАЛО выполняться. И не важно после этого выполняется условие или нет - все равно свитч выключен. Это пипец.
Саш, ты что то путаешь… Сижу на прошивке 2.0.19
Саш, ты что то путаешь… Сижу на прошивке 2.0.19
2.0.19 новая прошивка. Там легко могли это поправить вместет с 2.1.
Я на выходных подниму архив своих настроек моделей за 2014й год и проверю.
Если я путаю (что я не исключаю), то мне реально пора в нереальный отпуск. 😁
Не уделил достаточное внимание схеме распиновки - подключил SmartPort приемника к контактам отсека для внешних ВЧ-модулей обычным S.Port-кабелем. При попытке прошивки произошла видимо переполюсовка и приемник начал пахнуть горелым лаком.
Сочувствую. Спасибо, что выложил, другие будут внимательны при перепрошивке.
Плата приемника визуально без повреждений.
если воняет горелым, плата не может быть без повреждений… смотри внимательнее…
2.0.19 новая прошивка. Там легко могли это поправить вместет с 2.1.
поставил компашку 2.0.3
результат тот же…
иди в отпуск 😃
😃
Посыпаю голову пеплом…
До встречи на Гаваях!!! 😁
Хотя погодите…
Выдержка из русской инструкции.
параметр длительности ‘Duration’ (минимальное время, в течение которого пользовательский
переключатель будет активным, даже если его условия на короткое время станут ложными)
Еще инструкция наглоязычная.
Так как она должна работать-то???
Вроде как весьма недвусмысленно описана работа функции.
Есть ли вариант вернуть приемник к жизни или забыть/забить? Плата приемника визуально без повреждений.
Если поврежден МК, то шансов нет. Никто фирменного загрузчика на приемник не имеет. А прошивка на приемник скремблирована. Без загрузчика ее не залить. А загрузчик производитель не даст, ибо сразу же появятся самодельные клоны приемников и передающие модули со всеми вытекающими…А зачем это производителю.
параметр длительности ‘Duration’ (минимальное время, в течение которого пользовательский переключатель будет активным, даже если его условия на короткое время станут ложными)
именно так и работает, вне зависимости от активности…
в моём примере: сработало условие - свич активировался, условие дёргаю туда сюда а свич всё так же активен… по прошествии заданного времени (3 секунды) свич деактивируется…
я только что настроил задержку выключения записи лога используя Delay
оказываться эта настройка хоть и работает нормально, но включает запись лога при каждом включении аппы на 10 сегунд
L1 a>x RSSI 0dB --- --- ---
L2 AND !L1 --- --- --- 10.0
SF1 !L2 SD Logs 0.3s
что-бы от этого избавиться - нужно добавить еще два свича 😦
L1 a>x RSSI 0dB --- --- ---
L2 AND !L1 --- --- --- 10.0
L3 AND --- --- --- 4.0 ---
L4 AND !L2 !L3 --- --- ---
SF1 L4 SD Logs 0.3s
при включении аппы запись лога теперь не включается автоматически, но она и не сможет включится если наступит условие в L1 в течении 10 секунд 😮
в общем решил остаться на первом варианте настройки и забить 10 секундное на включение лога при включении аппы
но думаю что настал момент посмотреть как работают Lua скрипты, возможно всю эту логику можно будет задавать в виде кода, тогда это будет на много гибче и легче
Добрый день.
Правильно понимаю,что ценника вкуснее,чем “первая покупка” на банггуд нет?
Всем привет! После продолжительных исследований программирования наконец-то готов и мой вариант переключателя. Программа написана на баскоме, т.е. с нуля. В устройстве используется графический дисплей OLED 128*64.
Немного внутренностей:
Отверстие в корпусе пульта и панелька из оргстекла делались на самопальном чпу-станке.
Трепанация Тараниса
А тут как это работает:
Менюшку с выбором типа летательного аппарата сделал просто так, может пригодится, когда начну осваивать самолёты и полётные режимы будут другими. Пока у меня только коптер, поэтому после выбора того или другого программа попадает в коптерный список режимов. Это опционально и всегда можно удалить.
Также есть вариант программы под символьный дисплей 16*2, но встроенного решения с ним уж точно не получится))
сразу же взгляд со стороны:
гораздо удобнее было бы, если бы при переключении нужный режим подсвечивался бы инверсией, а не как сейчас, надпись по центру… её хрен прочитаешь…
а по моему было бы гораздо информативнее…
После продолжительных исследований программирования наконец-то готов и мой вариант переключателя.
то есть весь этот труд и красота - всего лишь дискретный переключатель? т.е. на каком-то канале меняется значение с заданным шагом?
сразу же взгляд со стороны:
гораздо удобнее было бы, если бы при переключении нужный режим подсвечивался бы инверсией, а не как сейчас, надпись по центру… её хрен прочитаешь…
а по моему было бы гораздо информативнее…
да, возможно в этом что то есть, как то не думал над таким вариантом отображения инфы, а если ещё и шрифт увеличить, то совсем должно быть хорошо
то есть весь этот труд и красота - всего лишь дискретный переключатель? т.е. на каком-то канале меняется значение с заданным шагом?
именно всего лишь переключатель;), и да, на одном канале меняется шим, значения каждого из шести режимов выставлены по центрам диапазонов Mission Planner
понемногу разбираюсь с lua скриптами, возник вопрос:
в микс скриптах dsbeach.gitbooks.io/…/mix.html выходные переменные (output) отображаются с одним знаком после запятой, а в экранах телеметрии - вообще без знака
т.е. если получить значение (например 15.73) и его же возвратить назад - результат будет 15.7 а на экране телеметрии вообще 15
а вот если писать скрипты телеметрии dsbeach.gitbooks.io/…/telemetry.html и выводить данные на свой экран телеметрии - данные выводятся в том же формате в котором был оригинал, т.е. 15.73 выводится как 15.73
кстати, немного допилил стандартную Змейку, теперь она управляется правым стиком, а стиком газа регулируется ее скорость (mode2)
--------------------------------------------------------------
-- Classic snake game
--
-- 2009 Led Lab @PUC-Rio
-- Dado Sutter
-- Ives Negreiros
-- To Benjamin
-- modified by korvin8
-- chenge direction control: ail, ele
-- add speed control: thr
---------------------------------------------------------------
local speed = 0;
local xMax = math.floor( 212 / 6 ) - 1
local yMax = math.floor( 64 / 8 ) - 1
local game_map = {}
local Head = {}
local Tail = {}
local highscore = 0
local size = 3
Tail.x = 1
Tail.y = 1
Head.x = Tail.x + ( size - 1 )
Head.y = Tail.y
local Food = {}
Food.x = false
Food.y = false
Head.dx = 1
Head.dy = 0
Tail.dx = Head.dx
Tail.dy = Head.dy
local direction = "right"
local score = 0
local function create_food()
Food.x, Food.y = math.random( xMax - 1), math.random( yMax - 1)
while game_map[ Food.x ][ Food.y ] do
Food.x, Food.y = math.random( xMax - 1 ), math.random( yMax - 1 )
end
game_map[ Food.x ][ Food.y ] = "food"
lcd.drawText( Food.x * 6, Food.y * 8+2, "@", 0 )
end
local function eat_food()
playFile("/SCRIPTS/snake.wav")
lcd.drawText( Head.x * 6, Head.y * 8, " ", 0 )
game_map[ Head.x ][ Head.y ] = nil
create_food()
score = score + 1
end
local function check_collision()
if Head.x < 0 or Head.x > xMax then
return true
elseif Head.y < 0 or Head.y > yMax then
return true
elseif ( ( game_map[ Head.x ][ Head.y ] ) and ( game_map[ Head.x ][ Head.y ] ~= "food" ) ) then
return true
end
return false
end
local function move()
if game_map[ Tail.x ][ Tail.y ] == "right" then
Tail.dx = 1
Tail.dy = 0
elseif game_map[ Tail.x ][ Tail.y ] == "left" then
Tail.dx = -1
Tail.dy = 0
elseif game_map[ Tail.x ][ Tail.y ] == "up" then
Tail.dx = 0
Tail.dy = -1
elseif game_map[ Tail.x ][ Tail.y ] == "down" then
Tail.dx = 0
Tail.dy = 1
end
game_map[ Head.x ][ Head.y ] = direction
Head.x = Head.x + Head.dx
Head.y = Head.y + Head.dy
if Head.x < 0 or Head.x > xMax or Head.y < 0 or Head.y > yMax then
return
elseif game_map[ Head.x ][ Head.y ] == "food" then
eat_food()
else
lcd.drawText(Tail.x * 6, Tail.y * 8, " ", 16)
game_map[ Tail.x ][ Tail.y ] = nil
Tail.x = Tail.x + Tail.dx
Tail.y = Tail.y + Tail.dy
end
lcd.drawText(Head.x * 6, Head.y * 8, "*", 0)
end
local function init()
food = false
lcd.lock()
lcd.clear()
size = 3
score = 0
Tail.x = 1
Tail.y = 1
Head.x = Tail.x + ( size - 1 )
Head.y = Tail.y
Head.dx = 1
Head.dy = 0
Tail.dx = Head.dx
Tail.dy = Head.dy
direction = "right"
for i = 0, xMax, 1 do
game_map[ i ] = {}
end
for i = 0, size - 1, 1 do
game_map[ Tail.x + ( i * Tail.dx ) ][ Tail.y + ( i * Tail.dy ) ] = direction
lcd.drawText( ( Tail.x + ( i * Tail.dx ) ) * 6, ( Tail.y + ( i * Tail.dy ) ) * 8, "*", 0 )
end
create_food()
end
local snakeCounter = 0
local function run(event)
if event == nil then
raise("Cannot be run as a model script!")
end
if event == EVT_EXIT_BREAK then
return 2
end
lcd.lock()
snakeCounter = snakeCounter + 1
if snakeCounter < speed then
local dir = direction
if getValue('ail') > 20 and direction ~= "left" then
dir = "right"
Head.dx = 1
Head.dy = 0
end
if getValue('ail') < -20 and direction ~= "right" then
dir = "left"
Head.dx = -1
Head.dy = 0
end
if getValue('ele') > 20 and direction ~= "down" then
dir = "up"
Head.dx = 0
Head.dy = -1
end
if getValue('ele') < -20 and direction ~= "up" then
dir = "down"
Head.dx = 0
Head.dy = 1
end
direction = dir
return 0
end
snakeCounter = 0
speed = 30 - (getValue('thr') + 1024)/79
move()
if check_collision() then
return 1
end
return 0
end
return { init=init, run=run }
еще вопрос
при использовании playNumber() в спецификации сказано:
dsbeach.gitbooks.io/…/playNumber.html
0 or not present plays integral part of the number (for a number 123 it plays 123)
PREC1 plays a number with one decimal place (for a number 123 it plays 12.3)
PREC2 plays a number with two decimal places (for a number 123 it plays 1.23)
сделал пример для теста:
...
local batteryVoltage = 14.95
...
local batt100 = batteryVoltage * 100
playNumber(batt100, 1)
playNumber(batt100, 1, PREC1)
playNumber(batt100, 1, PREC2)
ожидаю:
тысяча четыреста девяносто пять
сто сорок девять точка пять
четырнадцать точка девяносто пять
получаю:
тысяча четыреста девяносто пять
сто сорок девять точка пять
четырнадцать точка девять
в чем может быть подвох? PREC2 должен последние 2 разряда целой части числа произнести как сотые части, а он хоть и берет два разряда но округляет их до десятой
У меня точка взлета практически всегда одна и та же с заданными координатами. На дроне стоит GPS-сенсор FrSky. Можно ли в аппе считать расстояние от точки взлета до дрона? Может кто-то уже решал такую задачу?
с документацией по LUA как то все странно
единственный полный и актуальный документ, который я смог найти это dsbeach.gitbooks.io/…/content/
но и он не соответствует действительности
например, функция lcd.drawText(x, y, text [, flags]), в описании параметров сказано: x,y (positive numbers) starting coordinate dsbeach.gitbooks.io/…/drawText.html т.е. это координаты на экране с которых начинается вывод текста
а вот функция которая выводи числа lcd.drawNumber(x, y, value [, flags]) у которой тоже в описании сказано: x,y (positive numbers) starting coordinate dsbeach.gitbooks.io/…/drawNumber.html, но это уже не координаты начала текста, а координаты конца текста (что, согласитесь, странно)
т.е. фактически все приходится проверять методом тыка 😦 (еще пример не соответствия несколькими постами выше с функцией проговаривания текста)
и что самое главное - не понятно, это баги прошивки и не верная работа движка скриптов или не точная документация