Pybricks vragen!

Plaats reactie
Gebruikersavatar
NDL-GBC
Premium
Berichten: 123
Lid geworden op: zo nov 15, 2020 12:44 am
Contacteer:

Ik merk dat veel bouwers terughoudend zijn om Pybricks te gebruiken. Dit komt vooral omdat je toch wel enige programmeerkennis nodig hebt, vooral als je een op maat gemaakte oplossing nodig hebt. Daarom lijkt het mij een goed idee om een topic aan te maken waarin ik je kan helpen met al je vragen over Pybricks. Omdat ik het leuk vind om mee te denken over het integreren van Pybricks in je MOC's. Dus als je op zoek bent naar een oplossing, aarzel dan niet om een vraag te stellen!

Een voorbeeld vraag kan zijn:
"ik heb een kasteel gebouwd met een waterwiel tijdens events wil ik dat als er op de knop gedrukt wordt mijn waterwiel 5 seconde"


 
 
 
 
Gebruikersavatar
HoodedOne
Premium
Berichten: 277
Lid geworden op: wo jan 13, 2021 2:54 pm

Zag net je reactie op discord. Dus ik trap wel af, met een vraag.

Voor de moc waarmee ik bezig ben (onderwater basis), wil ik de gevel open en dicht laten gaan. Het open en dicht gaan op een interval timer is niet zo moeilijk. Maar om wat interactiviteit toe te voegen wilde ik het via de kleuren sensor laten werken. Als ik het goed begrijp zou het via pybricks mogelijk moeten zijn om het openen en sluiten te laten werken door de herkenning van bijv. rood.
Ik ben er mee bezig geweest, maar de variatie aan kleuren waarop het mechaniek reageert, is zo groot dat het eigenlijk de moeite niet waard is.
Is dit een onnauwkeurig in de sensor of pybricks?

Ps. Ik gebruik de nieuwe blocks versie van pybricks
Gebruikersavatar
Berthil
Premium
Berichten: 886
Lid geworden op: zo nov 08, 2020 2:33 pm
Locatie: Sittard
Contacteer:

Je kan de waarde van de sensor uitlezen als de tegel die je wilt gebruiken er voor is en juist op die waarde controleren. Alleen de kleur naam kan idd niet precies genoeg zijn. Met het meten van de hsv (hue, saturation , value) krijgt je de exacte gereflecteerde 'kleur'. Het is wel zo dat omgevingslicht invloed kan hebben op de gereflecteerde kleur. Om dat te ondervangen kun je met de LED in de sensor de tegel verlichten.

Ik heb dit gebruikt om GBC ballen op kleur te controleren;

Code: Selecteer alles

sensor = ColorDistanceSensor(Port.A)
# Initialize the sensor and detectable colors
sensor.light.on(Color.WHITE)
Color.WHITE = Color(h=281, s=48, v=64)
Color.ORANGE = Color(h=353, s=96, v=57)
Color.RED = Color(h=347, s=93, v=32)
Color.BLUE = Color(h=224, s=98, v=36)
my_colors = (Color.WHITE, Color.ORANGE, Color.RED, Color.BLUE)
sensor.detectable_colors(my_colors)
Die hsv waardes heb ik eerst door de sensor uit laten lezen en 'printen' in het Pybricks print scherm.

Dit is voorbeeld code van de Pybricks website voor meten van de hsv.

Code: Selecteer alles

from pybricks.pupdevices import ColorSensor
from pybricks.parameters import Port
from pybricks.tools import wait

# Initialize the sensor.
sensor = ColorSensor(Port.A)

while True:
# The standard color() method always "rounds" the
# measurement to the nearest "whole" color.
# That's useful for most applications.

# But you can get the original hue, saturation,
# and value without "rounding", as follows:
color = sensor.hsv()

# Print the results.
print(color)

# Wait so we can read the value.
wait(500)
Op Pybricks .com staat alle voorbeeld code omtrent de color sensor.
Gebruikersavatar
HoodedOne
Premium
Berichten: 277
Lid geworden op: wo jan 13, 2021 2:54 pm

Ik had de info uit de video over treinen laten reageren op gekleurde tegels in track. Dus inderdaad eerst de kleuren die je wil gebruiken laten meten door de sensor (hsv). Maar dan nog was er heel veel variatie mogelijk in kleuren.
Heb er ook aan zitten denken om de color sensor tegenover de spike color light matrix te zetten. Om op die manier de goede kleur te forceren. Maar heb nu alleen nog de spike essential hub (spike prime hub is onderweg). dus het aantal apparaten is nu beperkt tot 2.,

Maar ik ga het weer proberen, kijken of het dan wel lukt.
 
Gebruikersavatar
NDL-GBC
Premium
Berichten: 123
Lid geworden op: zo nov 15, 2020 12:44 am
Contacteer:

Allereerst welke sensor gebruik je? er zijn er namelijk twee (45605 & 88007)
Op de website van pybricks staat het volgende over kleur sensoren:

Changing the detectable colors
By default, the sensor is configured to detect red, yellow, green, blue, white, or no color, which suits many applications.

For better results in your application, you can measure your desired colors in advance, and tell the sensor to look only for those colors. Be sure to measure them at the same distance and light conditions as in your final application. Then you’ll get very accurate results even for colors that are otherwise hard to detect.

Natuurlijk snap ik dat als je op een beurs staat je niet de kleur opnieuw wil meten en in je code wilt zetten daarom is het misschien handig om de metingen op hele korte afstand te doen zodat de led de voornaamste bron van licht is bijvoorbeeld 1 cm er vanaf. Dan zouden de licht omstandigheden weinig invloed hebben op de waardes.
Ik zou later vandaag wel even wat metingen doen om te kijken of ik een stukje code voor je kan schrijven die goed werkt  :duim:
 
 
 
 
Gebruikersavatar
NDL-GBC
Premium
Berichten: 123
Lid geworden op: zo nov 15, 2020 12:44 am
Contacteer:

Ik heb het volgende gedaan een opstelling gemaakt en de kleuren op 2 studs afstand ervoor geplaatst
WhatsApp Image 2024-03-03 at 15.58.07.jpeg
WhatsApp Image 2024-03-03 at 15.58.07.jpeg (89.23 KiB) 620 keer bekeken
Met deze code kan ik de waardes meten als ik op de knob druk van de hub:

Code: Selecteer alles

from pybricks.hubs import CityHub
from pybricks.pupdevices import ColorSensor
from pybricks.parameters import Port, Button
from pybricks.tools import wait

# Initialize the hub.
hub = CityHub()

# Disable the stop button.
hub.system.set_stop_button(None)

# Initialize the sensor.
sensor = ColorSensor(Port.A)

while True:
# The standard color() method always "rounds" the
# measurement to the nearest "whole" color.
# That's useful for most applications.

# But you can get the original hue, saturation,
# and value without "rounding", as follows:
color = sensor.hsv()

if hub.button.pressed():
# Print the results.
print(color)

# Wait so we can read the value.
wait(500)
Daar komen de volgende resultaten uit:
Rood = h=351, s=87, v=45
Geel = h=50, s=73, v=73
Blauw = h=216, s=87, v=36
Wit = h=60, s=1, v=77
Niks = h=0, s=0, v=0

Heb daarna met de template van pybricks zelf deze code geschreven:

Code: Selecteer alles

from pybricks.pupdevices import ColorSensor
from pybricks.parameters import Port, Color
from pybricks.tools import wait

# Initialize the sensor.
sensor = ColorSensor(Port.A)

# First, decide which objects you want to detect, and measure their HSV values.
# You can do that with the hsv() method as shown in the previous example.
#
# Use your measurements to override the default colors, or add new colors:
Color.RED = Color(h=351, s=87, v=45)
Color.YELLOW = Color(h=50, s=73, v=73)
Color.BLUE = Color(h=216, s=87, v=36)
Color.WHITE = Color(h=60, s=1, v=77)
Color.NONE = Color(h=0, s=0, v=0)

# Put your colors in a list or tuple.
my_colors = (Color.RED, Color.YELLOW, Color.BLUE, Color.WHITE, Color.NONE)

# Save your colors.
sensor.detectable_colors(my_colors)

# color() works as usual, but now it returns one of your specified colors.
while True:
color = sensor.color()

# Check which one it is.
if color == Color.RED:
print("Scenario 1, Red")

if color == Color.YELLOW:
print("Scenario 2, Yellow")

if color == Color.BLUE:
print("Scenario 3, Blue")

if color == Color.WHITE:
print("Scenario 4, White")

# Wait so we can read it.
wait(100)
Hiermee leest hij dus de waardes uit als ik de juiste kleur voor de kleur sensor zet en print dan een scenario en welke kleur het is. In het scenario kan je dus je code implementeren met lampjes of motor beweging.


 
 
 
Gebruikersavatar
HoodedOne
Premium
Berichten: 277
Lid geworden op: wo jan 13, 2021 2:54 pm

Ok, alvast dank voor de hulp. Zal het binnenkort eens uitproberen.
Gebruikersavatar
SamtheChemist
Premium
Berichten: 560
Lid geworden op: ma nov 09, 2020 6:19 am
Locatie: Woudenberg
Contacteer:

Nice! Mocht ik een vraag hebben kom ik hier zeker even terug. Moet eerst hetgeen nog maken wat ik wil gaan aansturen namelijk
Gebruikersavatar
Pybricks
Berichten: 2
Lid geworden op: di mar 05, 2024 4:29 pm

Mochten er vragen voorbij komen, zal ik mijn best doen om ook mee te kijken!

Als jullie het leuk vinden (en als het mag), lijkt het me wel leuk eens een demo te geven tijdens een Lowlug meeting.
Gebruikersavatar
Raven
Premium
Berichten: 4157
Lid geworden op: zo nov 08, 2020 9:25 am
Locatie: Zaandam
Contacteer:

Dat moet denk ik wel te regelen zijn.
Gebruikersavatar
geert_h
Premium
Berichten: 1486
Lid geworden op: zo nov 08, 2020 9:00 am
Contacteer:

Demo tijdens een lowlug meeting vind ik zeker interessant  :duim:
 
 
Gebruikersavatar
SamtheChemist
Premium
Berichten: 560
Lid geworden op: ma nov 09, 2020 6:19 am
Locatie: Woudenberg
Contacteer:

Oewh ja demo is zeker interessant!
Gebruikersavatar
Mociain
Premium
Berichten: 189
Lid geworden op: zo nov 08, 2020 12:28 pm
Contacteer:

Ik sta zeker open voor een demo, op YouTube heb ik al allerlei manieren gezien waarop pybricks word gebruikt, maar een fysieke demo lijkt me super, dan kunnen er meteen vragen gesteld worden
ludo
Premium
Berichten: 113
Lid geworden op: ma jan 04, 2021 9:52 pm

Ik heb van de week voor het eerst PyBricks gebruikt voor mijn RC truck. Ik ben zwaar onder de indruk van de mogelijkheden.  :klappen:
 

Je kan mijn code hier inzien, als je interesse hebt. Ik zal het de komende tijd proberen van wat commentaar te voorzien. Als er vragen zijn, kom maar op! 
 
 
Gebruikersavatar
Pybricks
Berichten: 2
Lid geworden op: di mar 05, 2024 4:29 pm

Bedankt voor jullie berichten! Ik denk dat de meetings in mei en/of augustus wel zou moeten lukken. Leuk!

Zijn er specifieke dingen die je graag zou willen zien? Bijvoorbeeld wat je met treinen kunt doen, GBC, auto's, of wellicht iets heel anders?

Als inspiratie voor de Truck Trial zal ik een kleine demo met de Xbox controller meenemen.

Afbeelding
Gebruikersavatar
SamtheChemist
Premium
Berichten: 560
Lid geworden op: ma nov 09, 2020 6:19 am
Locatie: Woudenberg
Contacteer:

Ik ben geïnteresseerd in de treinen op zich en zeker ook in je controller uitleg!
Plaats reactie