legohead Публикувано Октомври 2, 2025 Share Публикувано Октомври 2, 2025 Здравейте, Споделям с вас нещо с което се забавлявах пред последните месеци. Целта бе "интелигентен" влак, който автоматично да се предарежда безжично, когато нивото на батерията му падне под определено ниво. За целта, използвах следните компоненти: Сензор за различаване на цветове: https://www.lego.com/en-us/product/color-distance-sensor-88007 Презареждаема батерия 9v: https://www.amazon.de/-/en/gp/aw/d/B0DBZPDCZM?psc=1&ref=ppx_pop_mob_b_asin_title Безжично зареждане: https://www.amazon.co.uk/gp/aw/d/B088NRBHBP?psc=1&ref=ppx_pop_mob_b_asin_title https://www.amazon.co.uk/gp/aw/d/B0BRPW7GVP?psc=1&ref=ppx_pop_mob_b_asin_title И програма за управление в PyBricks (ще споделя по-късно) При интерес от ваша страна ще споделя допълнителна информация. Прикачам демонстративно видео: 1. Влакът се движи 2. При разреждане на батерията < 7v, влакът намалява скоростта си, и спира върху станцията за безжично зареждане 3. При зареждане на батерията > 7.05v, влакът продължава да се движи. Зададените стойности за нива на волтажа са примерни. YouCut_20250925_174616103.mp4 1 Цитирай Адрес на коментара Сподели в други сайтове More sharing options...
legohead Отговорено Октомври 2, 2025 Автор Share Отговорено Октомври 2, 2025 from pybricks.hubs import CityHub from pybricks.parameters import Color, Direction, Port from pybricks.pupdevices import ColorDistanceSensor, DCMotor from pybricks.tools import multitask, run_task, wait # Set up custom colors. Color.RED_TILE = Color(357, 97, 76) Color.YELLOW_TILE = Color(49, 93, 95) # Set up all devices. city_hub = CityHub() color_sensor = ColorDistanceSensor(Port.B) color_sensor.detectable_colors((Color.RED_TILE, Color.GREEN_TILE)) train_motor = DCMotor(Port.A, Direction.CLOCKWISE) async def subtask(): while True: await wait(0) # Print battery voltage to terminal print(city_hub.battery.voltage()) await wait(1000) async def subtask2(): while True: await wait(0) # If battery level > 7v, train should run: if city_hub.battery.voltage() >= 7000: city_hub.light.on(Color.GREEN) train_motor.dc(70) # If battery level < 7v, train should stop to charge: else: await Stop_to_charge() print('<<<Charging>>>') while not city_hub.battery.voltage() >= 7050: await wait(0) print('<<<Running>>>') async def Stop_to_charge(): await wait(0) # Look for red marker city_hub.light.on(Color.RED) while not await color_sensor.hsv() == Color.RED_TILE: await wait(0) # Slow down train_motor.dc(27) # Look for yellow marker while not await color_sensor.hsv() == Color.YELLOW_TILE: await wait(0) city_hub.light.on(Color.RED) # Stop train_motor.brake() async def main(): train_motor.dc(50) await multitask( subtask(), subtask2(), ) run_task(main()) https://code.pybricks.com/ 1 Цитирай Адрес на коментара Сподели в други сайтове More sharing options...
legohead Отговорено Октомври 8, 2025 Автор Share Отговорено Октомври 8, 2025 @KAGPID Цитат Може ли да се направи следното: Слагаш батерия от китай и махаш пластмасата от PU хъба. Запазваш платката разбира се. Слагаш пластмасова кутия от китайските баттери: защото тя е с един брик по-ниска Отговарям на въпроса ти тук: Преди време попаднах на следния модел за 3д принтиране, който позволява да се намали обема на контролера, като се изнесе батерията извън него. по този начин височината намалява значително https://www.thingiverse.com/thing:4875839 Цитирай Адрес на коментара Сподели в други сайтове More sharing options...
gibona Отговорено Октомври 15, 2025 Share Отговорено Октомври 15, 2025 Супер - най-накрая да се запали още някой по Pybricks. Давам още една идея - прави се перон, в който влака се отклонява докато се зарежда. Може да се направи и с няколко влака и да си говорят / редуват 1 Цитирай Адрес на коментара Сподели в други сайтове More sharing options...
legohead Отговорено Октомври 15, 2025 Автор Share Отговорено Октомври 15, 2025 Здрасти! Отдавна използвам PyBricks, но за първи път в контекста на влакове. Засега се въздържам от това да взимам допълнителни влакове, релси и стрелки. Имам достатъчно започнати проекти с Техник Цитирай Адрес на коментара Сподели в други сайтове More sharing options...
toddybear Отговорено Ноември 23, 2025 Share Отговорено Ноември 23, 2025 (Редактирано) Винаги съм мислел че за PyBricks трябва да се купи някакъв си техен брик. Щом работи с оригинални това прави нещата интересни! Много яка идея, харесва ми и това което gibona каза, това за дисплей на някой влак може да е много яко! Също така ми е интересно как си скрил зарядното във влака. Редактирано Ноември 23, 2025 от toddybear Цитирай Адрес на коментара Сподели в други сайтове More sharing options...
legohead Отговорено Ноември 24, 2025 Автор Share Отговорено Ноември 24, 2025 Привет! Радвам се, че споделеното е провокирало интереса ти. Зарядното е залепено отдолу на влаковия мотор, тъй като долната му страна е плоска и с достатъчно голяма площ. Цитирай Адрес на коментара Сподели в други сайтове More sharing options...
Recommended Posts
Join the conversation
You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.