¿Que es un RCX?

El bloque RCX es la parte central del Lego Mindstorms, ya que aquí se encuentra toda la parte lógica y electrónica que permite la mayoría de las acciones del robot, almacenándose hasta 5 programas que se pueden cargar en su memoria interna, y guardándose allí el firmware básico para el control de los distintos dispositivos que se pueden conectar al bloque.


El bloque RCX tiene tres versiones oficiales: 1.0, 1.5 y 2.0, las cuales presentan mejoras en el software sin verse afectado mayormente el hardware que se vende con el bloque, sin embargo, la parte electrónica de los bloques no es compatible, ya que las tres versiones poseen distintas regulaciones de voltaje, pero aún así no afecta el hardware que posee el bloque.[13]

Microcontrolador

Su microcontrolador interno es Hitachi H8/3292, que funciona a 5 volts y una velocidad aproximada de 16 Mhz, siendo esa su velocidad máxima para la serie de Hitachi H8/3000. Posee una memoria ROM de 16 Kb, una memoria RAM externa de 32 Kb y posee un decodificador Analógico Digital que permite transformar las distintas entradas de energía en bits. Su empaque original es de un circuito impreso, que carece de zócalos de conexión, y se encuentra soldada a la base del circuito impreso del bloque. Este microcontrolador puede procesar varias instrucciones por segundos, pero su mayor desventaja comparado con el Lego Mindstorms NXT es la baja capacidad de mantener hilos de procesos, es decir, no puede ejecutar dos instrucciones al mismo tiempo, y a pesar que el programador o usuario compruebe que si puede, no es así, sino que la velocidad de proceso impide distinguir el retardo producido.

Entradas y salidas

Como medio de entradas posee tres conectores que permite capturar la información que proviene del los distintos sensores. Las entradas se conforma por un bloque de 2x2, que sus cabezas se encuentran rodeadas de un material conductor que permite la lectura del sensor. Las entradas se ubican en la parte superior de la pantalla de LCD, son de color gris y se distinguen por los números 1, 2 y 3.

Las salidas del bloque RCX son para energizar los motores que se pueden conectar al robot y así darle movimiento. El voltaje que provee es de 9 volts, haciendo que cada motor que se conecte al bloque pueda moverse acorde a las instrucciones del programa. Las salidas de energía se encuentran en la parte inferior de la pantalla de LCD, son de color negro y se distinguen por las letras A, B y C.

Pantalla LCD

La pantalla de LCD que trae el Lego Mindstorms permite visualizar tres series de datos:

  • Superior, detección en las entradas de los sensores y el nivel de carga de las baterías.
  • Central, zona alfanumérica que permite ver el contador, temporizador o valores registrados por un sensor.
  • Inferior, indica el sentido de movimiento de los motores.
  • Lateral izquierdo, muestra si hay conexión inalámbrica mediante el puerto infrarrojo

En su modo de operación, la pantalla de LCD posee un contador de ejecución de despliegue las veces y el tiempo que se ha ejecutado el programa, indica el número del programa que se está ejecutando y muestra la imagen de una persona que se encuentra de dos posibles formas, en estado de detención, la representación de la persona está detenida, y cuando se ejecuta un programa, ésta se encuentra en movimiento.

Además, si se selecciona un sensor, permite ver el valor registrado por el sensor, en una medida de RAW que se despliega sin importar el tipo de sensor que se encuentre conectado a la entrada.

Si el bloque no posee el firmware básico, no se muestra el contador de programa ni se ejecutan los programas 2, 3, 4 y 5, sólo permitiendo que el primer programa muestre que funciona la salida de corriente y entrada de datos. Además, la persona se mantiene fija aunque se encuentre en ejecución el programa 1 del bloque.

Esta salida de LCD ayuda al programador en caso que quiera hacer reemplazo del framework, ya que permite la salida de datos en pantalla, para generar una salida de estado de cualquier elemento interno del bloque.

Puerto infrarrojo y comunicación

En la parte delantera del bloque RCX, el Lego Mindstorms trae un puerto infrarrojo que le permite la comunicación con el computador para transferir el firmware y los programas. Funciona a una frecuencia de 37 Khz, que se asemeja a un control remoto de un televisor, transmitiendo datos a una velocidad aproximada de 2.400 bps, lo que implica que cada bit se transmite a 417 us.[14]

Una de las cualidades del puerto infrarrojo es la capacidad de conectarse a otro dispositivo que posea el puerto, como Palms, computadores portátiles y algunos modelos de teléfonos móviles, lo que permite realizar pequeñas plataformas de comunicaciones para lugares recónditos o muy pequeños.

La distancia de separación entre el RCX y el receptor es como máximo a 30 cm, funcionando a su máxima capacidad desde la base de la torre y sin objetos que interfieran la visual entre ambos instrumentos. Sin embargo, la distancia es menor debido a la contaminación lumínica que puede existir en el cuarto.

Alimentación eléctrica

La alimentación eléctrica del bloque es mediante 6 baterías AA de 1,5 volts, las cuales se conectan en la parte posterior del bloque. Las baterías se conectan en paralelo y proporcionan energía tanto al bloque como a los motores que se conectan al mismo bloque.

Una advertencia que se realiza en el manual de Lego Mindstorms es el reemplazo de las baterías, que ella alimenta a la pila que se encuentra dentro del bloque, permitiendo almacenar los distintos programas y el firmware básico. Si el reemplazo demora más de 1 minuto, la información almacenada se pierde. Otra advertencia que se realiza a los usuarios es que se evite utilizar baterías recargables debido a que entregan menor o mayor potencia el bloque, produciendo que el sistema eléctrico sea susceptible a fallos.

Se puede programar la desconexión de la alimentación eléctrica mediante el software incluido en el juego de Lego Mindstorms, donde se puede especificar el tiempo de apagado, desde 1 minuto hasta 99 minutos, e inclusive deshabilitar el apagado automático. Además, el mismo programa indica el nivel de carga que poseen las baterías del robot, mostrado por una barra de color verde cuando está cargado y ésta varía hasta rojo cuando se descarga completamente.

Cuando se descarga la batería del robot, este emite un sonido constante hasta que se presiona la tecla de apagado, indicando que las baterías se han agotado.

Robot seguidor de líneas de LEGO

Índice

  1. Propuesta de trabajo.
  2. Memoria técnica.
  3. Lista de piezas.
  4. Problemas encontrados y solución adoptada.
  5. Valoración del proyecto.

Propuesta de trabajo

Diseño y construcción de un robot móvil con dos motores cuya finalidad será seguir una línea negra dibujada en un circuito.

Descripción técnica de la solución adoptada

  • Descripción general del objeto
El móvil diseñado tiene como función seguir una trayectoria definida por una línea negra. 

Partiendo de piezas lego, se crea la estructura del móvil. Este poseerá dos motores que serán nuestros actuadores y dos sensores de luz.

Su funcionamiento es simple: los sensores medirán constantemente si siguen la línea y mandarán la información a la unidad de control. Cuando uno de ellos capte un color diferente, la unidad de control enviará una orden a los motores que modificarán su giro para reajustar la trayectoria. 

  • Descripción técnica de la solución adoptada
    • Estructura resistente.
El móvil consta de una estructura principal sobre la que se sitúan los mecanismos de transmisión del movimiento y la unidad de control. Además encontramos dos estructuras acopladas. La primera situada al frente del móvil sostiene los dos sensores. La segunda en la zona posterior tiene incorporada una rueda loca.

    • Mecanismos de transmisión de movimiento. 

Encontramos dos motores. Por motivos de espacio, se encuentra uno más adelantado que el otro. Cada motor posee su sistema de poleas, teniendo uno de ellos una correa más largas. Todas las poleas tienen el mismo radio por lo que  ambos motores girarán a la misma velocidad. Cada motor transmite su movimiento a una de las ruedas. Por último posee una rueda loca en la parte posterior del móvil.

nslkfnlw

    • Circuito eléctrico.
La unidad de control que usamos es un bloque RCX que es la parte central del Lego Mindstorms, ya que aquí se encuentra toda la parte lógica y electrónica que permite la mayoría de las acciones del robot, almacenándose hasta 5 programas que se pueden cargar en su memoria interna, y guardándose allí el firmware básico para el control de los distintos dispositivos que se pueden conectar al bloque, leer más. A la unidad de control encontramos enlazados dos sensores de luz. Los sensores de luz permite a nuestro robot distinguir entre luz y obscuridad, midiendo la intensidad de la luz le permite a nuestro robot "ver" en blanco y negro. En nuestro caso, el sensor emite una luz y luego mide que tanto rebota o refleja esta luz en las superficies. Este modo lo podemos usar para diferenciar el brillo de los colores en una superficie.


Lista de piezas

  • Diversas piezas de lego.
  • Dos motores.
  • Dos sensores de luz.
  • Cuatro poleas de igual tamaño.
  • Dos gomas elásticas (una mayor y otra menor).
  • Tres ruedas.
  • Bloque RCX.

Problemas encontrados y soluciones adoptadas

Durante la programación hemos debido ajustar la velocidad de los motores para que la potencia fuese suficiente para moverse con fluidez pero sin que fuese excesiva. Si el móvil se mueve demasiado rápido, los sensores no tienen suficiente tiempo para medir el color y modificar la trayectoria, saliéndose de la línea.


Valoración

Este proyecto es muy entretenido de realizar. Es fácil de construir ya que partimos de piezas lego prefabricadas. La única complicación es la creación del programa donde debemos añadir los valores que nos interesan para seguir la línea.

Torillo de Lego

Torillo de lego


AUTOR: Lola A. B.
CURSO: 2º Bachillerato
Índice
1.-PROPUESTA DE TRABAJO
2.-MEMORIA DESCRIPTIVA
3.-PLAN DE FABRICACIÓN
4.-LISTA DE PIEZAS
5.-PROBLEMAS ENCONTRADOS Y SOLUCIÓN ADOPTADA.
6.-VALORACIÓN DEL PROYECTO.

Propuesta de trabajo.
Diseño y construcción de un torillo con piezas y mecanismos de Lego, cuya finalidad será elevar y bajar una carga.

2.-Memoria descriptiva.
 
Descripción general del objeto.

 Una carretilla elevadora, grúa horquilla, montacargas es un vehículo contrapesado en su parte trasera, que ―mediante dos horquillas― se utiliza para subir y bajar palés.

Tiene dos barras paralelas planas en su parte frontal, llamadas «horquillas» (a veces, coloquialmente también «uñas»), montadas sobre un soporte unido a un mástil de elevación para la manipulación de las tarimas. Las ruedas traseras son orientables para facilitar la maniobra de conducción y recoger las tarimas o palés.
Es de uso rudo e industrial, y se utiliza en almecenes y tiendas de autoservicio para transportar tarimas o palés con mercancías y acomodarlas en estanterías o racks. Aguanta cargas pesadas que ningún grupo de personas podría soportar por sí misma, y ahorra horas de trabajo pues se traslada un peso considerable de una sola vez en lugar de ir dividiendo el contenido de las tarimas por partes o secciones. Su uso requiere una cierta capacitación y los gobiernos de distintos países exigen a los negocios que sus empleados tramiten licencias especiales para su manejo.
Descripción técnica de la solución adoptada:
  • Estructura resistente: El móvil consta de una estructura principal sobre la que se sitúan los mecanismos de transmisión del movimiento, la unidad de control y dos sensores(1 de luz y 1 de contacto). Además, la principal lleva enganchada otra plataforma que será la encargada de elevar y bajar la carga. En la plataforma secundaria encontramos un sensor de luz.


Sistema de transmisión del movimiento
Sensor de luz
Sensor de contaco
  • Mecanismos de transmisión del movimiento: Encontramos dos motores, cada uno lleva enganchado un mecanismo de sinfín-piñón. Este mecanismo transmite un movimiento giratorio entre dos ejes que se cruzan perpendicularmente.Se emplea en mecanismos que necesiten una gran reducción de velocidad y un aumento importante de la ganancia mecánica: clavijas de guitarra, reductores de velocidad para motores eléctricos, limpiaparabrisas de los coches, cuentakilómetros...Están compuestos sinfín y un piñón(rueda dentada).



  • Circuito eléctrico: La unidad de control que usamos es el bloque RCX es la parte central del Lego Mindstorms, ya que aquí se encuentra toda la parte lógica y electrónica que permite la mayoría de las acciones del robot, almacenándose hasta 5 programas que se pueden cargar en su memoria interna, y guardándose allí el firmware básico para el control de los distintos dispositivos que se pueden conectar al bloque. A la unidad de control le encontramos enlazados dos sensores de luz y uno de contacto, además de los dos motores.
Unidad de control RCX


3.-Plan de fabricación.

A continuación, encontrareis la imagen del programa utilizado para que funcione el torillo.
Lista de piezas.
Listado de piezas utilizado en el proyecto.


Problemas encontrados y solución adoptada.

Cuando ya había terminado de construir el torillo al programarlo, cuando subía la estructura secundaria la carga , donde estaba enganchada se desmontaba. El problema era que enganche la pieza amarilla a la pieza negra superior eso provocaba que estuviera fija y no tuviera movilidad. Se solucionó el problema al quitarle esa pieza.

Solución del problema. 
Valoración del proyecto.
  • La construcción me ha resultado sencilla aunque en algunos pasos no estuviera claro donde iba exactamente la pieza.
  • La programación ha sido un poco más compleja al ser algo nuevo para mi, pero cuando le coges el tranquillo es muy sencilla.

Instalar el editor de video Avidemux 2.6.8 en Ubuntu


Está disponible para su descarga la última versión de Avidemux, uno de los editores de video más veteranos en GNU/Linux, y que siempre ha sido de mis preferidos por su caracter multiplataforma y por proveer dos interfaces diferenciadas para GTK y QT, que nos permiten realizar las habituales tareas de conversión, corte y filtrado de video, manejando una buena cantidad de codecs y filtros.

La nueva versión mejora el soporte para x264, soluciona problemas en la detección de audio MP2, incluye soporte nativo para cortar y pegar, y también en la exportación de imágenes, entre otras muchas novedades y correcciones.

Vamos a ver como instalar la última versión 2.6.8:

Instalación en Ubuntu 12.04 ó 13.10

Avidemux 2.6.x está disponible mediante el repositorio GetDeb. tan solo tenemos que descargar e instalar este paquete deb (con GDebi por ejemplo) y después ejecutar en la terminal estos comandos:

  sudo apt-get update

   sudo apt-get install avidemux2.6-qt

Redimensionar imágenes en Ubuntu fácilmente

Los que trabajamos con imágenes que deben tener un determinado tamaño, como los bloggers, necesitan herramientas prácticas y rápidas para redimensionar imágenes con un tamaño determinado. Siempre puedes acudir a soluciones en linea como ciertas páginas que redimensionan imágenes de forma online, pero es mucho más rápido y sencillo desde una herramienta nativa en tu Ubuntu, como te vamos a explicar aquí. 

Existe un plugin muy práctico para Nautilus de GNOME, por tanto, no solo te valdrá para Ubuntu, sino para cualquier distro con este gestor de ficheros. Te permite redimensionar imágenes de una en una o hacer una selección y realizar el redimensionado de forma masiva, algo que se agradece cuando tienes muchas imágenes que redimensionar con un mismo tamaño. Para poder comenzar, solo hace falta instalarlo, y ya verás como es muy sencillo de usar.

Puedes instalarlo en tu distro desde una herramienta como el gestor de paquetes Synaptic, rápido y de forma gráfica o desde el terminal, tecleando los siguientes comandos:

    sudo apt-get install nautilus-image-converter

Para que el plugin surta efecto, debemos reiniciar el sistema o reiniciar Nautilus, si no quieres reiniciar el sistema completo, es más sencillo reiniciar Nautilus. Para ello puedes teclear lo siguiente:

    killall nautilus

Ahora ya tenemos el plugin funcionando y perfectamente integrado. Para redimensionar una imágen o grúpo de ellas, solo tienes que hacer clic con el botón derecho del ratón y seleccionar la opción “Redimensionar imágenes…” del menú que se despliega. Ahora te saldrá la ventana con las opciones de redimensión que puedes ver en la imagen de este artículo.




SERVOMOTOR MG995

Servomotor TowerPro MG995 con alto Torque, hasta 15Kg-cm. Robusto, alto rendimiento, compacto, con engranes de Metal, tamaño estándar, incluye accesorios y tornillos para montarlo en cualquier proyecto. Ideal para proyectos de Electronica, Robotica... etc.


Se puede utilizar con Arduino o cualquier Microcontrolador, compatible con tarjetas controladoras de Servos.

CARACTERÍSTICAS 
 
  • Dimensiones: 40.7 * 19.7 * 42.9mm
  • Peso: 55g
  • Torque: 8.5kg/cm (4.8V), 10kg/cm (6V)
  • Deadband settings: 4 microseconds
  • Tipo de conector: JR, FUTABA General, Conector universal para la mayoría de los receptores de radio control
  • Ángulo de rotación: Un máximo de 180º
  • Operating current: 100mA
  • Tensión de funcionamiento: 3-7.2V
  • Rango de Temperatura: -30 a +60 °C
  • Velocidad de Operación (4.8V sin carga): 0.2 seg / 60 grados
  • Velocidad de Operación (6V sin carga): 0.16 seg / 60 grados

CONEXIONES


Qué es y como instalar Geany en Ubuntu para programar en C

Geany es un editor de texto pequeño y ligero con características básicas de entorno de desarrollo integrado (IDE). Está disponible para distintos sistemas operativos, como GNU/Linux, Mac OS X y Microsoft Windows. Es distribuido como software libre bajo la Licencia Pública General de GNU.



Algunas de sus principales características:
  • Sirve para programar en varios lenguajes como C, Java, Pascal, HTML, CSS, PHP y muchos más. 
  • Se pueden gestionar proyectos grandes de forma sencilla. 
  • Tiene la función de autocompletado, con la cual hay que tener cuidado ya que nos puede llevar a cometer errores de sintaxis, pero siendo cuidadoso esta muy bien. 
  • Se le pueden instalar plugins para añadirle funcionalidades. 
  • El código se puede “plegar” por secciones, para tener una vista general de todo el texto. 
  • Es un entorno bastante ligero y fácil de usar. 
  • Colorea nuestro código en función del lenguaje que estemos usando para una más fácil búsqueda de textos. 
  • Permite búsqueda de textos concretos en el código. 
  • Está disponible para los principales sistemas operativos. Geany
  • Numeración de las líneas del documento.
Opciones para instalar Geany
  
1.- Instalar este programa en Ubuntu añadiendo el PPA correspondiente, para ello tenéis que abrir la Terminal y escribir el siguiente comando:

 sudo add-apt-repository ppa:geany-dev/ppa

Ahora toca recargar los repositorios de Ubuntu con este otro comando:

 sudo apt-get update 

Y por ultimo, ya hemos agregado el PPA, ahora solo nos falta instalar el programa con este otro comando:

sudo apt-get install geany geany-plugins

Ahora, después de que termine el proceso ya tendremos a nuestra disposición este excelente programa con el cual podremos escribir código.

2.- Instalar Geany directamente desde "Centro de software de Ubuntu"
Está disponible para ser instalado sin necesidad de acceder al terminal.


Una vez instalado el programa necesitamos configurar varios parámetros para compilar el código escrito en C y después ejecutar el programa generado.

Es necesario acceder al menú Construir y acceder a la opción Establecer comandos de construcción. Nos aparecerá una ventana donde tenemos que introducir los valores que faltan.


Pasos a seguir para compilar y ejecutar un programa con geany

  • Los ficheros se han de guardar en la carpeta personal.
  • Los ficheros tienen la extensión .c, Ejemplo: areaCirculo.c
  • Pulsar la tecla “F9” para compilar y construir el ejecutable.
  • A continuación pulsar  “F5” para ejecutar el programa.


La polea reductora

La polea reductora es un operador compuesto de un motor y una polea doble que están unidos mediante una correa.


Se emplea para transformar el movimiento rápido y con poca fuerza, del motor en el movimiento, más lento pero con mayor fuerza de la polea.

Entre otras aplicaciones, la polea reductora sirve para construir mecanismos que son capaces de elevar pesos, vehículos que se desplazan, etc... empleando para ello motores de poca potencia

Cómo construir una polea reductora

Si no se tiene una polea, se puede fabricar una utilizando cartón o contrachapado de 10 mm de grosor. El tamaño de esta polea dependerá de la carga y velocidad, cuanto mayor sea la carga, tanto mayor deberá ser el radio de la polea.



Se coloca la polea en un eje, fijando la polea a dicho eje, tiene que quedar solidaria a dicho eje. Si el eje se ha fabricado utilizando varilla roscada, la polea se fija mediante tuercas y arandelas.

A la hora de colocar el motor eléctrico , se tendrá en cuenta que:

Si el motor está muy lejos de la polea, cuando se unan, la goma elástica que los une quedará muy tensa y al motor le costará más trabajo hacer girar la polea.

  • Si el motor está muy próximo a la polea, la goma que los une estará poco tensa, el motor patinará y la polea no se moverá.

  • Si el eje del motor y el de la polea son convergentes, cuando giré el motor la gomilla se escapará .

  • Si el eje del motor y el de la polea son divergentes, la gomilla rozará con el motor y le hará perder fuerza.

Una vez que sabemos cuales son la posición y distancia adecuadas, se fija el motor a la base. Fijar el motor a la base

Se conecta la correa de la polea con el eje del motor.

¿Cómo es la estructura general de un programa en Arduino?

Un programa de Arduino se denomina sketch o proyecto y tiene la extensión .ino 

La estructura básica del lenguaje de programación de Arduino es bastante simple y se compone de al menos dos partes. Estas dos partes necesarias, o funciones, encierran bloques que contienen declaraciones, estamentos o instrucciones.

setup()

La función setup() se invoca una sola vez cuando el programa empieza. Se utiliza para inicializar los modos de trabajo de los pins, o el puerto serie. Debe ser incluido en un programa aunque no haya declaración que ejecutar. Así mismo se puede utilizar para establecer el estado inicial de las salidas de la placa. 

loop()

Después de llamar a setup(), la función loop() hace precisamente lo que sugiere su nombre, se ejecuta de forma cíclica, lo que posibilita que el programa esté respondiendo continuamente ante los eventos que se produzcan en la placa.
//Declaración de las funciones y variables

void setup()
{
 // Funciones de inicialización que define el modo de los pines y del puerto USB
}

void loop()
{
//Funciones, estructuras de control y operadores que definen el funcionamiento de la placa

}


//Programa de ejemplo

int tiempoEncendido=1000; // Variable que establece el tiempo durante el cual el diodo se va a mantener encendido
int tiempoApagado=1000; // Variable que establece el tiempo durante el cual el diodo se va a mantener encendido

int pinDiodo=0; // Variable para establecer el pin donde va a esta conectado el diodo
void setup()
{
pinMode(pinDiodo, OUTPUT);
}

// El programa se ejecuta cíclicamente por tiempo indefinido
void loop()
{
digitalWrite(pinDiodo, HIGH); // Enciende el led
delay(tiempoEncendido); // Se mantiene encendido el tiempo establecido en la variable tiempoEncendido
digitalWrite(pinDiodo, LOW);  // Se apaga el diodo led
delay(tiempoApagado); //Se mantiene apagado el diodo led el tiempo establecido en la variable tiempoApagado
}

¿Qué es una instrucción?

Una instrucción puede ser considerada como un hecho o suceso de duración determinada que genera unos cambios previstos en la ejecución de un programa, por lo que debe ser una acción previamente estudiada y definida.

Ejemplos:

int n=0;
delay(1000);
adelante();

Tipos de instrucciones

Los tipos de instrucciones permitidos están definidos y determinados dentro de cada plataforma y  podemos encontrar las siguientes:
  • Instrucciones de definición de datos.
  • Instrucciones primitivas.
    • Instrucciones de entrada.
    • Instrucciones de salida.
    • Instrucciones de asignación.
  • Instrucciones compuestas
  • Instrucciones de salto.

Instrucciones primitivas

Se consideran como tales las instrucciones de entrada/salida y las instrucciones de asignación.


Instrucciones de entrada

Son aquellas instrucciones encargadas de recoger el dato de un periférico o dispositivo de entrada (sensor) y seguidamente almacenarlo en memoria en una variable previamente definida.

 
Ejemplos

digitalRead(num_del_pin); // Devuelve un valor digital (HIGH o LOW) leído desde el pin num_del_pin.

analogRead(num_del_pin);  //Devuelve un número que es la tensión  leída en el pin num_del_pin.


millis(); //Devuelve el tiempo em milisegundos, desde que se activó el programa.

Serial.read(); //Lee el puerto USB y devuelve el valor 0_255 del dato allí presente.


Instrucciones de salida

Son aquellas instrucciones encargadas de recoger los datos procedentes de variable o los resultados obtenidos de expresiones evaluadas y depositarlos en periféricos o dispositivos de salida.

Ejemplos

pinMode(numero_del_pin, modo); // Pone elpin numero_del_pin en  modo INPUT o OUTPUT.
digitalWrite(numero_del_pin, valor); // Escribe un valor digital ( HIGH o LOW)  en el pin numero_del_pin.
analogWrite(num_del_pin, valor _0_255); // Pone en el pin numero_del_pin una señal digital  PWM, proporcional al valor valor _0_255.


Instrucciones de asignación de datos

Son aquellas instrucciones utilizadas para informar al procesador del espacio que debe reservar en memoria para almacenar un dato mediante el uso de variables.

La definición consiste en indicar un nombre a través del cual haremos referencia al dato, un tipo para informar al procesador de las características y espacio que debe reservar en memoria y opcionalmente un valor inicial.

int n=0;  // Variable "n" de tipo entero y con el valor inicial 0.

nivel_ldr=leerEstadoLdr();  //Llamada a la función leerEstadoLdr y asignar el valor devuelto por dicha función a la variable nivel_ldr.

Instrucciones compuestas

Son aquellas instrucciones que no pueden ser ejecutadas directamente por el procesador, y están constituidas por un bloque de acciones agrupadas en subprogramas.

//Función para controlar el movimiento de subida de un puente levadizo

 void subir()
{
 analogWrite(EA, velocidad);
 digitalWrite(I1, HIGH);
 digitalWrite(I2, LOW);
}


Instrucciones de salto

Son aquellas instrucciones que alteran o rompen la secuencia de ejecución de un programa, perdiendo toda posibilidad de retornar el control de ejecución del programa al punto de llamada. El uso de este tipo de instrucciones debe quedar restringido y usarlo solo en excepciones.





Puente levadizo controlado por Arduino

Se trata de idear, diseñar, planificar y construir una maqueta de un PUENTE LEVADIZO con diversos materiales disponibles, que cumpla las siguientes condiciones: 

CONDICIONES 

  • La elevación y descenso del tablero será suave.
  • Su accionamiento será eléctrico a 4,5V y su control:
    • El control será automático mediante Arduino y sensores de final de carrera.
    • El ajuste de piezas y acabado deberá ser preciso.
    • Las medidas máximas del conjunto no excederán de 300x200x150 mm
Solución adoptada

La solución final consiste en la construcción de una maqueta construida con listones de madera de samba y contrachapado.

Puente levadizo

Sistema de transmisión formado por un motor con reductora y un sistema de transmisión por correa.


El sistema de subida y bajada está formado por un torno fabricado con varilla roscada.


En la parte superior hemos colocado dos poleas de madera, para reducir rozamiento del cable.


Como elementos final de carrera se ha utilizado dos LDR, una para detectar la subida del tablero,


y otra para detectar la bajada del tablero


Por último el circuito de control está formado por una placa de Arduino Uno, un pulsador, dos LDRs  y  un driver L293D.


Circuito eléctrico


Programa

#define EA 9
#define I1 8
#define I2 10
#define pinPulsador 0  // Pin digital de entrada para el pulsador
int pinLDR_S = 0;      //A0, Pin analógico para LDR superior
int pinLDR_I = 1;     //A1,  Pin analógico para LDR inferior
int valorLDR_S = 0;
int valorLDR_I = 0;
int velocidad=200;
int estadoPulsador=HIGH;

leer mas...

Estructuras de control

Son utilizadas para controlar la secuencia de ejecución de un programa así como, determinados bloques de instrucciones.

Una clasificación podría ser la siguiente:
  • Estructura secuencial. Es aquella que permite la ejecución de un bloque de instrucciones de forma secuencial, es decir, una a continuación de la otra, respetando rigurosamente el orden establecido entre ellas de arriba a bajo y de izquierda a derecha. Leer más..

  • Estructuras alternativas. También llamadas estructuras condicionales, son aquellas que controlan la ejecución o la no ejecución de una o más instrucciones en función de que se cumpla o no una condición establecida. Leer más..

  • Estructuras repetitiva. Son aquellas instrucciones que nos permiten variar o alterar la secuencia normal de ejecución de un programa haciendo posible que un grupo de acciones se ejecuten más de una vez de forma consecutiva. Este tipo de instrucciones también reciben el nombre de bucles o lazos. Leer más..




Estructuras repetitivas


Estructuras repetitivas

Son aquellas instrucciones que nos permiten variar o alterar la secuencia normal de ejecución de un programa haciendo posible que un grupo de acciones se ejecuten más de una vez de forma consecutiva. Este tipo de instrucciones también reciben el nombre de bucles o lazos.

Estructura mientras (while)

La estructura mientras se caracteriza porque su diseño permite repetir un bloque de instrucciones mientras que se cumpla la condición establecida, en el caso que la condición sea falta, dicho bloque de instrucciones no se ejecutará ninguna vez.




Ejemplo: Realizar un programa que encienda un diodo led al presionar un pulsador y permanezca  encendido mientras esté presionado dicho pulsador.

 

 
int estadoPulsador;
int pinPulsador=8; // Declaramos la variable pinPulsador con el número del pin en qué está conectado

int pinLed=13; //Pin donde esta conectado el diodo led
int estadoPulsador=0;

void setup() // Función que se ejecuta una sola vez.
{
   pinMode(pinPulsador, INPUT); // Inicializa el pin  8 como entrada
   pinMode(pinLed, OUTPUT); // Inicializar el pin digital (pinLed) como salida.
}

void loop() // Función que se ejecuta una y otra vez, de forma ininterrumpida.
{
estadoPulsador= digitalRead(pinPulsador); // Lee el valor del pin del pulsador y lo almacena en la variable estadoPulsador
while(estadoPulsador==LOW)
  {
    digitalWrite(pinDiodo, HIGH); // Si es así activa el diodo
    estadoPulsador= digitalRead(pinPulsador);
  }
 }


Estructura Para (for)

Este tipo de instrucciones repetitivas se caracterizan porque el número de veces que se repetirá el bloque de instrucciones general está fijado de antemano.


  • Vcont: Variable contador del bucle.
  • Vi: Valor inicial que toma Vcont ( es el valor inicial a partir del cual comienza la ejecución del bucle.
  • Vf: Valor final para Vcont (es el valor final que se toma como referencia para la finalización del bucle).
  • n: Cantidad en que se incrementa o decrementa (según sea el valor especificado positivo o negativo) la variable Vcont al final de cada vuelta del bucle. Por defecto, este valor es siempre 1.
El control del bucle se utiliza en aquellas ocasiones en las que se conoce previamente el número de veces que se van a efectuar las operaciones del bucle.


Ejemplo: Inicializar los pines digitales como entradas

int n;

void setup()
{
   for(n=0;n<13 n="" p="">    {
      pinMode(n,OUTPUT);
    }
}


Estructuras alternativas

Estructuras alternativas

También llamadas estructuras condicionales, son aquellas que controlan la ejecución o la no ejecución de una o más instrucciones en función de que se cumpla o no una condición establecida.

a) Alternativa simple

Ejemplo

Realizar un programa para encender un diodo Led en función del estado de un pulsador.




int pinPulsador=8; // Declaramos la variable pinPulsador con el número del pin en qué está conectado
int pinLed=13; //Pin donde esta conectado el diodo led
int estadoPulsador=0;

void setup() // Función que se ejecuta una sola vez.
{
pinMode(pinPulsador, INPUT); // Inicializa el pin  8 como entrada
pinMode(pinLed, OUTPUT); // Inicializar el pin digital (pinLed) como salida.
}

void loop() // Función que se ejecuta una y otra vez, de forma ininterrumpida.
{
estadoPulsador= digitalRead(pinPulsador); // Lee el valor del pin del pulsador y lo almacena en la variable estadoPulsador
if(estadoPulsador==LOW)
  {
    digitalWrite(pinDiodo, HIGH); // Si es así activa el diodo
    delay(1000); // Esperar un segundo
  } }


b) Alternativa doble

Ejemplo

Realizar un programa para encender o apagar un diodo Led en función del estado de un pulsador. ON el diodo led luce, OFF  el diodo led no luce.




int pinPulsador=8; // Declaramos la variable pinPulsador con el número del pin en qué está conectado
int pinLed=13; //Pin donde esta conectado el diodo led
int estadoPulsador=0;

void setup() // Función que se ejecuta una sola vez.
{
pinMode(pinPulsador, INPUT); // Inicializa el pin  8 como entrada
pinMode(pinLed, OUTPUT); // Inicializar el pin digital (pinLed) como salida.
}

void loop() // Función que se ejecuta una y otra vez, de forma ininterrumpida.
{
estadoPulsador= digitalRead(pinPulsador); // Lee el valor del pin del pulsador y lo almacena en la variable estadoPulsador
if(estadoPulsador==LOW)
{
digitalWrite(pinDiodo, HIGH); // Si es así activa el diodo
delay(1000); // Esperar un segundo
}
else
{
digitalWrite(pinLed, LOW); // Apagar el led, haciendo que el voltaje sea bajo.
delay(500); // Esperar un segundo
}
}