# Arduino Alvik API Para acceder a las funciones de Arduino Alvik API tenemos que ejecutar las instrucciones: ```python alvik = ArduinoAlvik() alvik.begin() ``` Entonces ya podemos usar las siguientes: (extraido de [https://docs.arduino.cc/tutorials/alvik/api-overview/](https://docs.arduino.cc/tutorials/alvik/api-overview/) )

Luego veremos en el apartado de programación del Arduino Alvik con código Arduino IDE que utilizaremos una biblioteca #include "Arduino\_Alvik.h" que importa prácticamente las mismas funciones, ver [https://libros.catedu.es/books/arduino-alvik/page/programas-arduino-ide-sin-iot](https://libros.catedu.es/books/arduino-alvik/page/programas-arduino-ide-sin-iot)

**FUNCION con sus Inputs****Outputs**
stop()para todas las funciones Alvik
is\_on()true si esta encendido false si esta apagado
is\_target\_reached()true si ha enviado M o R en el mensaje
get\_ack()last\_ack: el valor del último mensaje
stop()para todas las funciones Alvik
get\_orientation()r: valor de balanceo p: valor de cabeceo y: valor de guiñada
get\_accelerations() ver uso en [https://libros.catedu.es/books/arduino-alvik/page/programas-de-ejemplo](https://libros.catedu.es/books/arduino-alvik/page/programas-de-test) ax ay az
get\_gyros() ver uso en [https://libros.catedu.es/books/arduino-alvik/page/programas-de-ejemplo](https://libros.catedu.es/books/arduino-alvik/page/programas-de-test) gx by gz
get\_imu()las 6 anteriores
get\_line\_sensors()left center right
brake()Frena el robot
get\_battery\_charge()battery\_soc: el % de la batería
get\_touch\_any()touch\_any es true si se ha apretado cualquier botón
get\_touch\_ok() get\_touch\_cancel() get\_touch\_center() get\_touch\_up() get\_touch\_left() get\_touch\_down() get\_touch\_right() touch\_ok es true si se ha apretado ok etc... ver ejemplos en [https://libros.catedu.es/books/arduino-alvik/page/robotica-para-infantil](https://libros.catedu.es/books/arduino-alvik/page/robotica-para-infantil) y en [https://libros.catedu.es/books/arduino-alvik/page/mensajes-a-telegram](https://libros.catedu.es/books/arduino-alvik/page/mensajes-a-telegram)
get\_color\_raw() get\_color\_label() color
get\_version() print\_status() versión del firmware para actualizarlo ver [https://docs.arduino.cc/tutorials/alvik/user-manual/#how-to-upload-firmware](https://docs.arduino.cc/tutorials/alvik/user-manual/#how-to-upload-firmware)
set\_behaviour(behaviour: int)
rotate(angle: float, unit: str = 'deg', blocking: bool = True)
move(distance: float, unit: str = 'cm', blocking: bool = True)
get\_wheels\_speed(unit: str = 'rpm')left\_wheel\_speed: the speed value right\_wheel\_speed: the speed value
set\_wheels\_speed(left\_speed: float, right\_speed: float, unit: str = 'rpm')
set\_wheels\_position(left\_angle: float, right\_angle: float, unit: str = 'deg')
get\_wheels\_position(unit: str = 'deg')angular\_velocity
drive(linear\_velocity: float, angular\_velocity: float, linear\_unit: str = 'cm/s',angular\_unit: str = 'deg/s')
get\_drive\_speed(linear\_unit: str = 'cm/s', angular\_unit: str = 'deg/s')linear\_velocity: speed of the robot. angular\_velocity: speed of the wheels.
reset\_pose(x: float, y: float, theta: float, distance\_unit: str = 'cm', angle\_unit: str = 'deg')
get\_pose(distance\_unit: str = 'cm', angle\_unit: str = 'deg')x y theta
set\_servo\_positions(a\_position: int, b\_position: int)
set\_builtin\_led(value: bool)
set\_illuminator(value: bool)
color\_calibration(background: str = 'white')
rgb2hsv(r: float, g: float, b: float) h: hue value s: saturation value v: brightness value
get\_color(color\_format: str = 'rgb') r or h g or s b or v
hsv2label(h, s, v) color label: like "BLACK" or "GREEN", if possible, otherwise return "UNDEFINED"
get\_distance(unit: str = 'cm') lee la distancia del sensor TOF: ver ejemplo en [https://libros.catedu.es/books/arduino-alvik/page/evita-obstaculos](https://libros.catedu.es/books/arduino-alvik/page/evita-obstaculos) left\_tof: 45° to the left object distance center\_left\_tof: 22° to the left object distance center\_tof: center object distance center\_right\_tof: 22° to the right object distance right\_tof: 45° to the right object distance
get\_distance\_top(unit: str = 'cm') top\_tof: 45° to the top object distance
get\_distance\_bottom(unit: str = 'cm') bottom\_tof: 45° to the bottom object distance
on\_touch\_ok\_pressed(callback: callable, args: tuple = ()) on\_touch\_cancel\_pressed(callback: callable, args: tuple = ()) on\_touch\_center\_pressed(callback: callable, args: tuple = ()) on\_touch\_up\_pressed(callback: callable, args: tuple = ()) on\_touch\_left\_pressed(callback: callable, args: tuple = ()) on\_touch\_down\_pressed(callback: callable, args: tuple = ()) on\_touch\_right\_pressed(callback: callable, args: tuple = ()) He intentado hacer programas con estas instrucciones, pero una vez pulsado la tecla, sigue llamando a callback continuamente No veo su utilidad teniendo get\_touch
##### **Unidades** - m: centimeters mm: millimeters m: meters inch: inch, 2.54 cm in: inch, 2.54 cm - deg: degrees, example: 1.0 as reference for the other unit. 1 degree is 1/360 of a circle. rad: radiant, example: 1 radiant is 180/pi deg. rev: revolution, example: 1 rev is 360 deg. revolution: same as rev perc: percentage, example 1 perc is 3.6 deg. %: same as perc - 'cm/s': centimeters per second 'mm/s': millimeters per second 'm/s': meters per second 'inch/s': inch per second 'in/s': inch per second - 'rpm': revolutions per minute, example: 1.0 as reference for the other unit. 'deg/s': degrees per second, example: 1.0 deg/s is 60.0 deg/min that is 1/6 rpm. 'rad/s': radiant per second, example: 1.0 rad/s is 60.0 rad/min that is 9.55 rpm. 'rev/s': revolution per second, example: 1.0 rev/s is 60.0 rev/min that is 60.0 rpm.

¿Qué es eso de **bloking**? Por ejemplo en rotate(angle: float, unit: str = 'deg', blocking: bool = True) Si es true, todos los eventos no influyen, es decir el microprocesador esta centrado en esa instrucción Si es falso, el microprocesador es libre de hacer otra cosa a la vez Utiliza true si quieres precisión o no quieres que nada interaccione con la acción que estas ejecutando