legohead Публикувано Октомври 2 Share Публикувано Октомври 2 Здравейте, Споделям с вас нещо с което се забавлявах пред последните месеци. Целта бе "интелигентен" влак, който автоматично да се предарежда безжично, когато нивото на батерията му падне под определено ниво. За целта, използвах следните компоненти: Сензор за различаване на цветове: 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 Автор Share Отговорено Октомври 2 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 Автор Share Отговорено Октомври 8 @KAGPID Цитат Може ли да се направи следното: Слагаш батерия от китай и махаш пластмасата от PU хъба. Запазваш платката разбира се. Слагаш пластмасова кутия от китайските баттери: защото тя е с един брик по-ниска Отговарям на въпроса ти тук: Преди време попаднах на следния модел за 3д принтиране, който позволява да се намали обема на контролера, като се изнесе батерията извън него. по този начин височината намалява значително https://www.thingiverse.com/thing:4875839 Цитирай Адрес на коментара Сподели в други сайтове More sharing options...
gibona Отговорено Октомври 15 Share Отговорено Октомври 15 Супер - най-накрая да се запали още някой по Pybricks. Давам още една идея - прави се перон, в който влака се отклонява докато се зарежда. Може да се направи и с няколко влака и да си говорят / редуват 1 Цитирай Адрес на коментара Сподели в други сайтове More sharing options...
legohead Отговорено Октомври 15 Автор Share Отговорено Октомври 15 Здрасти! Отдавна използвам PyBricks, но за първи път в контекста на влакове. Засега се въздържам от това да взимам допълнителни влакове, релси и стрелки. Имам достатъчно започнати проекти с Техник Цитирай Адрес на коментара Сподели в други сайтове More sharing options...
toddybear Отговорено Ноември 23 Share Отговорено Ноември 23 (Редактирано) Винаги съм мислел че за PyBricks трябва да се купи някакъв си техен брик. Щом работи с оригинални това прави нещата интересни! Много яка идея, харесва ми и това което gibona каза, това за дисплей на някой влак може да е много яко! Също така ми е интересно как си скрил зарядното във влака. Редактирано Ноември 23 от toddybear Цитирай Адрес на коментара Сподели в други сайтове More sharing options...
legohead Отговорено Ноември 24 Автор Share Отговорено Ноември 24 Привет! Радвам се, че споделеното е провокирало интереса ти. Зарядното е залепено отдолу на влаковия мотор, тъй като долната му страна е плоска и с достатъчно голяма площ. Цитирай Адрес на коментара Сподели в други сайтове 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.