Автор Тема: Pybricks - програмиране на Техник хъб  (Прочетена 1507 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

Неактивен vladoniki

  • Администратор
  • Супер маниак
  • *****
  • Публикации: 4911
  • Пол: Мъж
    • Владо Никифоров
    • Светът на Владо
  • Набор: '82
  • Телефон: 0888897207
Pybricks - програмиране на Техник хъб
« -: 30, Август, 2021, 07:51:29 am »
Наскоро открих https://pybricks.com/ и се опитвам да редактирам намерени в Интернет програми - гола вода съм в програмирането... Темата е продължение на Powered UP и Control+ управление с Gamepad.

За начало гледам 2 програми за 42124:

- Програма 1;
- Програма 2.

В програма 1 е заложено drive_speed += 1000, а в програма 2: drive_speed += 100.

И в 2-та случая бъгите се движи на максимална скорост (до колкото мога да преценя визуално). Въпросът ми е защо в единия случай макс е 100, а в другия e 1000, а крайният резултат е еднакъв?

Поиграх си и със "steer.run_target(500, steer_angle, wait=False)" - когато сменя 500 с 1000 завиващият мотор се движи по-бързо и на практика по-бързо достига максималния ъгъл на колелетата.

Като цяло ми се струва, че има някакво забавяне при обръщане на посоката на движение напред-назад. Сякаш след натискане на противоположния бутон, има забавяне и колата изчаква някакво време (части от секундата), преди да тръгне в обратна посока. При контролиране на хъба с оригиналната програма на Лего не съм забелязал подобно забавяне. За това има ли причина в програмата (кода) или е ограничение от самия хъб или Pybricks firmware-а?

Темата е обширна и мисля, че и други казуси ще изникват с времето.


Неактивен ender

  • Супер маниак
  • *****
  • Публикации: 338
  • Пол: Мъж
    • Владимир Йосифов
    • brickset
  • Набор: 86
Re: Pybricks - програмиране на Техник хъб
« Отговор #1 -: 01, Септември, 2021, 04:19:42 pm »
Така както аз го чета:
    # Choose the drive speed based on the right controls.
    drive_speed = 0
    if Button.RIGHT_PLUS in pressed:
        drive_speed += 1000
    if Button.RIGHT_MINUS in pressed:
        drive_speed -= 1000

    # Apply the selected speed.
    front.run(drive_speed)
...
     # Wait.
    wait(10)
На всеки цикъл от по 10 милисекунди, т.е. една стотна, скоростта се презаписва с 0, 1000 или -1000
Не се ДОБАВЯ към текущата, а се подменя с една от тези 3. Така реално или е макс напред, или макс назад, или неподвижен
Щом казваш, че няма разлика между 100 и 1000, може би 100 е максимума.
Ако искаш да се държи като влаковете, т.е. едно цъкане на плюса го задвижва, второ го ускорява, и т.н., мога да се пробвам с нов код. Ако искаш продължително натискане да ускорява все повече, и това може да се случи... Всичко това е на база само на този код, и логични заключения :D

Неактивен vladoniki

  • Администратор
  • Супер маниак
  • *****
  • Публикации: 4911
  • Пол: Мъж
    • Владо Никифоров
    • Светът на Владо
  • Набор: '82
  • Телефон: 0888897207
Re: Pybricks - програмиране на Техник хъб
« Отговор #2 -: 30, Януари, 2023, 02:01:41 pm »
Още една питанка по темата - отново преработвам готова програма и сменям параметри, докато ми хареса резултатът, но запецнах.

Тук моторът на завиването измерва максималният ъгъл от крайно ляво до крайно дясно положение на гумите:

#steering calibration sequence
steering.run_until_stalled(500)
steering.reset_angle(0)
steering.run_until_stalled(-500)
maxAngle = steering.angle()
steering.run_target(500, (maxAngle/2))
steering.reset_angle(0)

А тук - при натискане на бутон + или - на дистанционното, завива в определената посока с 1/2 от максималния ъгъл на завиване:

 #commands to steer
    if Button.RIGHT_PLUS in pressed:
        steering.run_target(2000, (maxAngle/2), Stop.HOLD,False)
    elif Button.RIGHT_MINUS in pressed:
        steering.run_target(2000, -(maxAngle/2), Stop.HOLD,False)
    else:
        steering.run_target(2000, 0, Stop.HOLD, False)


Питането ми е има ли начин да му "кажа" да завива с по 10 градуса по-малко от половината от максималния ъгъл в посока? Тоест - условно ъгълът от най-ляво до най-дясно, ако е 180 градуса (да речем, че толкова го е измерил), да завива не с по 90 градуса в посока, а с 80 градуса.

Пробвах с различни комбинации на скоби, знак "-" и числото 10, но програмата никак не ме "разбра". Не знам какъв е словоредът на нейния език...  8)

Пробвах и да разделя максималния ъгъл (maxAngle/2) на 2 и нещо, но дори и това не помогна - Нито "." приема за десетична запетая, нито ","-та сработва.

Неактивен vladoniki

  • Администратор
  • Супер маниак
  • *****
  • Публикации: 4911
  • Пол: Мъж
    • Владо Никифоров
    • Светът на Владо
  • Набор: '82
  • Телефон: 0888897207
Re: Pybricks - програмиране на Техник хъб
« Отговор #3 -: 16, Февруари, 2024, 05:03:35 pm »
Това е жестоко!!!



Някой може ли да предложи какъв джойстик би бил оптимален, ако има геймари наоколо...? :)

Ако правилно се ориентирам, нещо подобно май трябва да върши работа - Връзка.

Моля за мнение и препоръки за избора на безжичен джойстик за XBox.

Неактивен mamun

  • Супер маниак
  • *****
  • Публикации: 963
  • Пол: Мъж
    • Васил Шулев
  • Набор: 1976
Re: Pybricks - програмиране на Техник хъб
« Отговор #4 -: 16, Февруари, 2024, 07:31:16 pm »
Pybrciks-a e яко.
Слагал съм го на влаков хъб със сензор за цветове в долната част на влака ;)

Неактивен vladoniki

  • Администратор
  • Супер маниак
  • *****
  • Публикации: 4911
  • Пол: Мъж
    • Владо Никифоров
    • Светът на Владо
  • Набор: '82
  • Телефон: 0888897207
Re: Pybricks - програмиране на Техник хъб
« Отговор #5 -: 16, Февруари, 2024, 07:52:30 pm »
Pybrciks-a e яко.
Слагал съм го на влаков хъб със сензор за цветове в долната част на влака ;)

Да, удобна опция за някоя влакова диорама. Duplo Train имат вграден сензор за цвят в базата и изпълняват 5 основни функции, като минат над съответния цвят. Имаме си вкъщи 10874 и сме посъбрали цветни тайлове. :)

Неактивен mamun

  • Супер маниак
  • *****
  • Публикации: 963
  • Пол: Мъж
    • Васил Шулев
  • Набор: 1976
Re: Pybricks - програмиране на Техник хъб
« Отговор #6 -: 16, Февруари, 2024, 09:07:51 pm »
Да, удобна опция за някоя влакова диорама. Duplo Train имат вграден сензор за цвят в базата и изпълняват 5 основни функции, като минат над съответния цвят. Имаме си вкъщи 10874 и сме посъбрали цветни тайлове. :)

Tочно от там взех идеята. като стигне бял тайл на релсата да обърне посоката ;)

Неактивен vladoniki

  • Администратор
  • Супер маниак
  • *****
  • Публикации: 4911
  • Пол: Мъж
    • Владо Никифоров
    • Светът на Владо
  • Набор: '82
  • Телефон: 0888897207
Re: Pybricks - програмиране на Техник хъб
« Отговор #7 -: 22, Февруари, 2024, 09:55:13 am »
Освен, че работи с хъба, контролът е пропорционален и за завиването и за движението... Уникален ъпдейт за всякакви модели!  :)


Неактивен vladoniki

  • Администратор
  • Супер маниак
  • *****
  • Публикации: 4911
  • Пол: Мъж
    • Владо Никифоров
    • Светът на Владо
  • Набор: '82
  • Телефон: 0888897207
Re: Pybricks - програмиране на Техник хъб
« Отговор #8 -: 23, Февруари, 2024, 08:59:24 am »
« Последна редакция: 23, Февруари, 2024, 11:52:51 am от vladoniki »

БрикМания БГ - Лего обществото на България

Re: Pybricks - програмиране на Техник хъб
« Отговор #8 -: 23, Февруари, 2024, 08:59:24 am »