EV3 Senzory¶
Brian umožňuje pracovat se čtyřmi různými typy senzorů:
EV3 dotykový senzor
EV3 barevný senzor
EV3 ultrazvukový senzor
EV3 gyroskopický senzor
Inicializace a připojení¶
Nejprve musíte inicializovat senzor. Musíte specifikovat typ senzoru a port (S1
, S2
, S3
, S4
). Zde je příklad inicializace:
import brian.sensors as sensors
TS = sensors.EV3.ColorSensorEV3(sensors.SensorPort.S1)
CS = sensors.EV3.TouchSensorEV3(sensors.SensorPort.S2)
US = sensors.EV3.UltrasonicSensorEV3(sensors.SensorPort.S3)
GS = sensors.EV3.GyroSensorEV3(sensors.SensorPort.S4)
Nyní můžete použít vlastní názvy pro ovládání senzorů, stačí oddělit metodu tečkou. Například TS.is_connected()
.
Po inicializaci musíte zkontrolovat, zda je senzor připraven. Tyto funkce vám pomohou:
is_connected¶
- is_connected(self) bool
- Vrací:
Pravda, pokud je senzor připojen a není v procesu restartování, jinak Nepravda
is_ready¶
- is_ready(self) bool
Připravený stav znamená, že pokus o čtení hodnot poskytne platné výsledky. Příklady důvodů pro neplatné výsledky:
Senzor není připojen (
is_connected
vrací Nepravda)Senzor se restartuje nebo ještě není inicializován
Senzor mění režimy a změna ještě není dokončena
Připojený senzor je nekompatibilní s tímto ovladačem (např. je připojen špatný typ senzoru)
Ve všech výše uvedených případech tato funkce vrátí Nepravda. :return: Pravda, pokud jsou hodnoty připraveny pro další čtení, jinak Nepravda
wait_until_ready¶
- wait_until_ready(self, timeout_ms: int = -1) bool
Čeká, dokud není senzor připraven. Tato funkce je blokující. Při změně režimů vstoupí senzor na krátkou dobu do stavu „nepřipraven“ (dokud se změna režimu neprojeví). Proto se doporučuje nejprve nastavit správný režim pomocí set_mode() před voláním této funkce. To platí pouze pro senzory s režimy.
- Parametry:
timeout_ms – Maximální počet milisekund čekání. Pokud je časový limit záporný, funkce bude čekat neomezeně.
- vrátit úspěch:
Pravda
: Senzor je připraven.Nepravda
: Senzor není připraven a čas vypršel.
restartovat¶
- reboot(self) None
Vypnuntí napájení portu a opětovné zapnutí. Tím se senzor násilně restartuje.
Stav bez napájení trvá přibližně 100 ms. U některých (převážně digitálních) senzorů může být navíc potřeba až 1 s nebo déle pro nabootování a navázání spojení s Brian.
EV3 dotykový senzor¶

class brian.sensors.EV3.TouchSensorEV3.TouchSensorEV3(
port: SensorPort
)
is_pressed¶
- is_pressed(self) bool
Měří stav senzoru. Vrací hodnotu typu boolean odpovídající poslednímu stisknutí tlačítka. Pokud senzor není připraven, vrací Nepravda.
- Vrací:
Pravda, pokud je tlačítko senzoru stisknuto, jinak Nepravda. Nebo Nepravda, pokud senzor není připraven.
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
wait_for_press¶
- wait_for_press(self, timeout_ms: int = -1) bool
Čeká na další událost stisknutí tlačítka. Tato funkce je blokující.
- Parametry:
timeout_ms – Maximální počet milisekund čekání. Pokud je časový limit záporný, funkce bude čekat neomezeně.
- vrátit úspěch:
Pravda
: Pokud byla zachycena požadovaná událost tlačítka.Nepravda
: Pokud časový limit vypršel.
wait_for_release¶
- wait_for_release(self, timeout_ms: int = -1) bool
Čeká na další událost uvolnění tlačítka. Tato funkce je blokující.
- Parametry:
timeout_ms – Maximální počet milisekund čekání. Pokud je časový limit záporný, funkce bude čekat neomezeně.
- vrátit úspěch:
Pravda
: Pokud byla zachycena požadovaná událost tlačítka.Nepravda
: Pokud časový limit vypršel.
wait_for_press_and_release¶
- wait_for_press_and_release(self, timeout_ms: int = -1) bool
Čeká na další událost stisknutí a uvolnění tlačítka. Tato funkce je blokující.
- Parametry:
timeout_ms – Maximální počet milisekund čekání. Pokud je časový limit záporný, funkce bude čekat neomezeně.
- vrátit úspěch:
Pravda
: Pokud byla zachycena požadovaná událost tlačítka.Nepravda
: Pokud časový limit vypršel.
EV3 barevný senzor¶

class brian.sensors.EV3.ColorSensorEV3.ColorSensorEV3(
port: SensorPort
)
EV3 barevný senzor umí pracovat v 5 různých režimech:
REFLECT = 0
AMBIENT = 1
COLOR_DETECT = 2
REFLECT_RAW = 3
RGB_RAW = 4
Můžete nastavit režim pomocí funkce set_mode()
. Například:
import brian.sensors as sensors
CS = sensors.EV3.ColorSensorEV3(sensors.SensorPort.S1)
CS.set_mode(CS.Mode.REFLECT) # set REFLECT mode
CS.set_mode(CS.Mode(1)) # set AMBIENT mode
Kromě NO_COLOR
detekuje Color Sensor 7 barev: BLACK
, BLUE
, GREEN
, YELLOW
, RED
, WHITE
, BROWN
.
Příklad přístupu k názvu barvy:
import brian.sensors as sensors
CS = sensors.EV3.ColorSensorEV3(sensors.SensorPort.S1)
print(CS.Color(1)) # print the name of color Black
Dalším použitím Color Sensoru je metoda RawRGB (red, green, blue). Barvy jsou reprezentovány čísly v rozsahu [0-1023]. Příklad použití:
import brian.sensors as sensors
CS = sensors.EV3.ColorSensorEV3(sensors.SensorPort.S1)
CS.set_mode(CS.Mode(4)) # set RGB_RAW mode
CS.wait_until_ready() # wait until sensor is ready
rgb = CS.rgb_values_raw() # store rgb values
print(rgb[0]) # print red values
set_mode¶
- set_mode(self, mode: Mode) None
Tato funkce nastaví senzor do požadovaného režimu. I když to není povinné, doporučuje se volat tuto funkci před přístupem k hodnotám ze senzoru v konkrétním režimu, aby se předešlo výjimkám
SensorIsNotReady
.- Parametry:
mode – požadovaný režim k nastavení
reflected_value¶
- reflected_value(self) int
Nastaví senzor do režimu
REFLECT
a vrátí poslední hodnotu.- Vrací:
Odrazivost v % (0-100).
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
REFLECT režim: Měří odrazivost povrchu pro červené světlo. Hodnoty jsou kalibrovány v samotném senzoru. Vrací hodnoty v procentech, v rozmezí 0-100. Měření je korigováno pro změnu okolního světla.
reflected_value_raw¶
- reflected_value_raw(self) int
Nastaví senzor do režimu
REFLECT_RAW
a vrátí poslední hodnotu.- Vrací:
Hrubé hodnoty odrazivosti (0-1023).
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
REFLECT_RAW režim: Měří odrazivost povrchu pro červené světlo. Hodnoty jsou nekalibrované. Kód používající tuto funkci musí tedy provádět škálování/posun rozsahu ručně. Měření v tomto režimu by mělo poskytnout větší rozlišení než režim
REFLECT
. Vrací hodnoty v rozmezí 0-1023. Měření je korigováno pro změnu okolního světla.
ambient_value¶
- ambient_value(self) int
Nastaví senzor do režimu
AMBIENT
a vrátí poslední hodnotu.- Vrací:
Okolní světlo v % (0-100).
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
AMBIENT režim: Měří intenzitu okolního světla. Hodnoty jsou kalibrovány v samotném senzoru. Vrací hodnoty v procentech, v rozmezí 0-100.
detected_color¶
- detected_color(self) Color
Nastaví senzor do režimu
COLOR_DETECT
a vrátí poslední hodnotu.- Vrací:
Barevné konstanty odpovídající Color.[COLOR].
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
COLOR_DETECT režim: Měří a rozlišuje barvu. Rozlišení poskytuje samotný senzor. Pokud to pro váš případ použití funguje špatně, můžete místo toho použít
RGB_RAW
.
get_color_name¶
- get_color_name(color: Color) str
- Parametry:
color – Barva, jejíž název chcete získat.
- Vrací:
Anglický název zadané barvy. Jedná se o pomocnou funkci pro uživatelské rozhraní nebo logování.
rgb_values_raw¶
- rgb_values_raw(self) RawRGB
Nastaví senzor do režimu
RGB_RAW
a vrátí poslední hodnotu.- Vrací:
Hrubé RGB hodnoty (každý kanál v rozsahu 0-1023). K nim můžete přistupovat pomocí RGB.red, RGB.green a RGB.blue, nebo přes index (RGB[0], RGB[1], …).
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
RGB_RAW režim: Měří odrazivost povrchu pro červené, zelené a modré světlo. Hodnoty nejsou kalibrovány. Kód používající tuto funkci proto musí ručně provádět škálování a posun rozsahu. Měření je korigováno pro změnu okolního světla.
EV3 ultrazvukový senzor¶

class brian.sensors.EV3.UltrasonicSensorEV3.UltrasonicSensorEV3(
port: SensorPort
)
EV3 Ultrasonic Sensor umí pracovat v 5 různých režimech:
DISTANCE_MM = 0
DISTANCE_TENTHS_OF_INCH = 1
DETECT_OTHER_US = 2
SINGLESHOT_MM = 3
SINGLESHOT_TENTHS_OF_INCH = 4
Můžete nastavit režim pomocí funkce set_mode()
. Například:
import brian.sensors as sensors
US = sensors.EV3.UltrasonicSensorEV3(sensors.SensorPort.S1)
US.set_mode(US.Mode.DISTANCE_MM) # set DISTANCE_MM mode
US.set_mode(US.Mode(1)) # set DISTANCE_TENTHS_OF_INCH mode
set_mode¶
- set_mode(self, mode: Mode) None
Tato funkce nastaví senzor do požadovaného režimu. I když to není povinné, doporučuje se volat tuto funkci před přístupem k hodnotám ze senzoru v konkrétním režimu, aby se předešlo výjimkám
SensorIsNotReady
.- Parametry:
mode – požadovaný režim k nastavení
distance_mm¶
- distance_mm(self) int
Nastaví senzor do režimu
DISTANCE_MM
a vrátí poslední hodnotu.- Vrací:
Vzdálenost v mm (0-2550). Nebo 2550 při chybě měření.
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
DISTANCE_MM režim: Nepřetržitě měří vzdálenost a vrací poslední naměřenou hodnotu v mm (0-2550). Pokud měření selže, senzor hlásí speciální hodnotu 2550.
distance_tenths_of_inch¶
- distance_tenths_of_inch(self) int
Nastaví senzor do režimu
DISTANCE_TENTHS_OF_INCH
a vrátí poslední hodnotu.- Vrací:
vzdálenost v desetinách palce (0-1003).
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
DISTANCE_TENTHS_OF_INCH mode: Nepřetržitě měří vzdálenost a vrací hodnotu v desetinách palce. Vrací poslední naměřenou vzdálenost v desetinách palce, v rozsahu 0-1003. Pokud měření selže, senzor nahlásí speciální hodnotu 1003.
last_single_shot_mm¶
- last_single_shot_mm(self) int
V režimu
SINGLESHOT_MM
vrátí senzor poslední hodnotu, jinak 2550. Tato metoda neprovádí měření; pro jeho spuštění použijte trigger_single_shot_measurement_mm().- Vrací:
Vzdálenost v mm (0-2550). Nebo 2550 při chybě měření.
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
SINGLESHOT_MM mode: Aktivuje se jednou, změří vzdálenost a poté senzor přejde do režimu spánku, kdy nevysílá ultrazvukové vlny. Tento režim lze využít při obsluze více ultrazvukových senzorů zároveň, aby se zabránilo vzájemnému rušení. Režim se nesmí volat častěji než jednou za 250ms. Vrací poslední naměřenou vzdálenost v mm (0-2550). Pokud měření selže, senzor hlásí hodnotu 2550.
trigger_single_shot_measurement_mm¶
- trigger_single_shot_measurement_mm(self) None
Nastaví senzor do režimu
SINGLESHOT_MM
a spustí měření. Nečeká na výsledek a nic nevrací.- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
SINGLESHOT_MM mode: Aktivuje se jednou, změří vzdálenost a poté senzor přejde do spánkového režimu, kdy nevysílá ultrazvukové vlny. Tento režim lze využít při obsluze více senzorů současně, aby se zabránilo vzájemnému rušení. Nemělo by být voláno častěji než jednou za 250ms.
last_single_shot_tenths_of_inch¶
- last_single_shot_tenths_of_inch(self) int
V režimu
SINGLESHOT_TENTHS_OF_INCH
vrátí poslední hodnotu, jinak 1003. Tato metoda neprovádí měření; pro jeho spuštění použijte trigger_single_shot_measurement_tenths_of_inch().- Vrací:
Vzdálenost v desetinách palce (0-1003). Nebo 1003 při chybě měření.
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
SINGLESHOT_TENTHS_OF_INCH mode: Aktivuje se jednou, změří vzdálenost a poté senzor přejde do režimu spánku, při kterém nevysílá ultrazvuk. Tento režim lze využít při obsluze více senzorů najednou, aby se zabránilo vzájemnému rušení. Režim se nevykonává častěji než jednou za 250ms. Vrací poslední naměřenou vzdálenost v desetinách palce (0-1003). Pokud měření selže, senzor hlásí hodnotu 1003.
trigger_single_shot_measurement_tenths_of_inch¶
- trigger_single_shot_measurement_tenths_of_inch(self) None
Nastaví senzor do režimu
SINGLESHOT_TENTHS_OF_INCH
a spustí měření. Nečeká na výsledek a nic nevrací.- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
SINGLESHOT_TENTHS_OF_INCH mode: Activates once and measures the distance. After the measurement, the sensor goes to sleep and does not produce ultrasonic waves. This mode can be used when handling multiple ultrasonic sensors at the same time, to avoid interference between them. The single shot mode should not be called more often than about once in 250ms.
is_other_us_detected¶
- is_other_us_detected(self) bool
Nastaví senzor do režimu
REFLECT_RAW
a vrátí poslední hodnotu.- Vrací:
Pravda, pokud je senzor připojen a není v procesu restartování, jinak Nepravda
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
DETECT_OTHER_US režim: Ověří, zda je aktivní jiný ultrazvukový senzor, který se nachází v dosahu tohoto senzoru. Vrací hodnotu typu boolean – Pravda značí, že byl detekován jiný ultrazvukový senzor. Pravdu může vyvolat také hlasitý zvuk, například tleskání.
EV3 gyroskopický senzor¶

class brian.sensors.EV3.GyroSensorEV3.GyroSensorEV3(
port: SensorPort
)
EV3 Gyroskopický Sensor umí pracovat v 6 různých režimech:
ANGLE = 0
SPEED = 1
SPEED_COARSE = 2
ANGLE_AND_SPEED = 3
TILT_SPEED = 5
TILT_ANGLE = 6
Můžete nastavit režim pomocí funkce set_mode()
. Například:
import brian.sensors as sensors
GS = sensors.EV3.GyroSensorEV3(sensors.SensorPort.S1)
GS.set_mode(GS.Mode.ANGLE) # set ANGLE mode
GS.set_mode(GS.Mode(1)) # set SPEED mode
set_mode¶
- set_mode(self, mode: Mode) None
Tato funkce nastaví senzor do požadovaného režimu. I když to není povinné, doporučuje se volat tuto funkci před přístupem k hodnotám ze senzoru v konkrétním režimu, aby se předešlo výjimkám
SensorIsNotReady
.- Parametry:
mode – požadovaný režim k nastavení
angle¶
- angle(self) int
Nastaví senzor do režimu
ANGLE
a vrátí poslední hodnotu.- Vrací:
angle (int) in degrees (-32768 to 32768).
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
ANGLE mode: Měří sklon a vrací hodnotu v stupních (rozsah -32768 až 32767).
Kladný směr je směr hodinových ručiček při pohledu na stranu senzoru se šipkami.
Pokud se robot příliš otáčí v režimech
ANGLE
,ANGLE_AND_SPEED
neboTILT_ANGLE
, hodnota zůstane na 32767 nebo přeteče do -32768 v závislosti na datu výroby senzoru.
speed¶
- speed(self) int
Nastaví senzor do režimu
SPEED
a vrátí poslední hodnotu.- Vrací:
angular speed in degrees/s (-500 to 500).
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
SPEED mode: Měří úhlovou rychlost a vrací hodnotu v °/s (rozsah -500 až 500).
Kladný směr je směr hodinových ručiček při pohledu na stranu senzoru se šipkami.
tilt_speed¶
- tilt_speed(self) int
Nastaví senzor do režimu
TILT_SPEED
a vrátí poslední hodnotu.- Vrací:
angular speed in degrees/s (-500 to 500).
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
TILT_SPEED mode: Měří úhlovou rychlost kolem druhé osy a vrací hodnotu v °/s (rozsah -500 až 500). Směr hodinových ručiček je pozitivní při pohledu na stranu senzoru opačnou ke konektoru kabelu.
tilt_angle¶
- tilt_angle(self) int
Nastaví senzor do režimu
TILT_ANGLE
a vrátí poslední hodnotu.- Vrací:
angle (int) in degrees (-32768 to 32768).
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
TILT_ANGLE mode: Měří úhel náklonu kolem druhé osy a vrací hodnotu v ° (rozsah -32768 až 32767).
Tento režim není dostupný u starších senzorů (kód data výroby končící na 2 nebo 3). Směr hodinových ručiček je pozitivní při pohledu na stranu senzoru opačnou ke kabelovému konektoru.
Pokud se příliš otáčíte v režimech „ANGLE“, „ANGLE_AND_SPEED“ nebo „TILT_ANGLE“, hodnota zůstane na 32767 nebo přeteče do -32768 v závislosti na datu výroby senzoru.
speed_coarse¶
- speed_coarse(self) int
Nastaví senzor do režimu
SPEED_COARSE
a vrátí poslední hodnotu.- Vrací:
angular speed in degrees/s (-1464 to 1535).
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
SPEED_COARSE mode: Měří úhlovou rychlost a vrací hodnotu v °/s (rozsah -1464 až 1535). Nižší rozlišení, ale širší rozsah než u režimu „SPEED“.
Kladný směr je směr hodinových ručiček při pohledu na stranu senzoru se šipkami.
angle_and_speed¶
- angle_and_speed(self) Tuple[int, int]
Nastaví senzor do režimu
ANGLE_AND_SPEED
a vrátí poslední hodnotu.- Vrací:
Tuple složený ze dvou čísel: první číslo je měření úhlu (deg), druhé je měření rychlosti (deg/s).
- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
ANGLE_AND_SPEED mode: Měří úhel náklonu a úhlovou rychlost a vrací hodnotu v ° (rozsah -32768 až 32767 pro úhel, -500 až 500 pro rychlost).
Směr hodinových ručiček je pozitivní při pohledu na stranu senzoru se šipkami. Pokud se příliš otáčíte v režimech „ANGLE“, „ANGLE_AND_SPEED“ nebo „TILT_ANGLE“, hodnota zůstane na 32767 nebo přeteče do -32768 v závislosti na datu výroby senzoru.
set_zero_point¶
- set_zero_point(self) None
Upraví měření úhlu a nastaví nový nulový bod. Pouze v režimech „ANGLE“, „ANGLE_AND_SPEED“ a „TILT_ANGLE“. Nevyrovnává drift (zvyšování se hodnoty) – pro jeho opravu restartujte senzor pomocí
reboot()
.- Vyvolá:
brian.sensors.SensorIsNotReadyError – Pokud senzor není připraven.
restartovat¶
- reboot(self) None
Restartuje senzor pro nucenou kalibraci.
Během kalibrace držte senzor pevně, aby se minimalizoval drift.
Reboot: Vypněte napájení portu a znovu jej zapněte. Tím se senzor nuceně restartuje.
Stav bez napájení trvá přibližně 100 ms. U některých (převážně digitálních) senzorů může být navíc potřeba až 1 s nebo déle pro nabootování a navázání spojení s Brian.
Další informace¶
Pro další informace o EV3 senzorech se podívejte do API Reference.