# Bloques El programa se construye apilando y encastrando bloques. Los bloques tienen diferentes formas y colores. El color de cada bloque define la categoría a la que pertenece. La forma de cada bloque define la manera en que ese bloque se conecta con el resto de los bloques. Según su forma, los bloques se pueden separar en 3 categorías. ## Bloques de comandos Los bloques de comandos son aquellos que realizan acciones como asignar un valor de corriente en un pin, encender un led o activar un motor. BLOCK:io_digitalwrite: BLOCK:io_switch@led: BLOCK:servo: Estos bloques tienen conectores arriba y abajo para poder apilar uno a continuación de otro y así crear una secuencia de instrucciones que conformen el programa a ejecutar. ## Bloques de expresiones Los bloques de expresiones son aquellos que describen datos como un número, un texto o un valor medido por un sensor. BLOCK:math_number@123: BLOCK:text: BLOCK:ultrasonic@config: Estos bloques tienen un conector hacia la izquierda para poder encastrarse dentro de algún otro bloque que requiera un dato para funcionar. Por ejemplo, el bloque para posicionar el servo-motor requiere un dato que le indique en qué ángulo posicionarlo. BLOCK:servo@hole: Las expresiones no sólo completan comandos. Algunas expresiones también requieren otras expresiones para funcionar. Por ejemplo, el bloque para sumar requiere dos datos que indiquen los dos números a sumar. BLOCK:math_arithmetic: ## Bloques de definición Los bloques de definición no tienen conectores arriba y abajo como los bloques de comandos ni tienen conectores hacia la izquierda como los bloques de expresiones. Estos son los únicos bloques que pueden estar "sueltos" en el _workspace_. Al iniciar un proyecto vacío se crea el bloque de definición de proyecto que define el programa que se va a ejecutar en el Arduino. BLOCK:main: Otros ejemplos de bloques de definición son los que definen procedimientos y funciones y los que configuran componentes de Arduino. BLOCK:procedures_defnoreturn: BLOCK:procedures_defreturn@pure: BLOCK:ultrasonic_setup: BLOCK:lcd_setup: