# Arduino Alvik API
Estas instrucciones son específicas del ARDUINO ALVIK
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/arduino-ide-sin-iot-un-pequena-danza)
**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 |
¿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