Ambiente arduino El ambiente para programar el arduino mejor conocido como I DE, es el espacio que es utilizado para escribir el código en lenguaje de alto nivel tipo “C”, compilar, descargar al micro controlador y g uardar archivos en formado pde. El ambiente es de versión libre o pen source por lo que no es ne cesaria una licencia y se pude conseguir en la página oficial de arduino.
Descripción de componentes: c omponentes: Barra de tareas: Al igual que todas las ventanas de software normales esta tiene su barra de multitareas de donde se despliegan acciones importantes como por ejemplo: En el menú de archivo podemos encontrar los comandos básicos conocidos por todos, lo que cabe rescatar es: Sketchbook: Sirve para abrir de manera r ápida los proyectos que hemos creado como usuarios de este e ntorno de programación. Ejemplos: Hay varios ejemplos precargados con los cuales podremos comenzar a probar el arduino y utilizarlos como base para c rear nuevos proyectos. Cargar: Cargamos lo que trae un AVR (micro controlador) en su interior.
Hacer y deshacer.
En editar encontramos comandos para copiar de diferentes maneras y pegar los textos.
Para comentar el programa creado, incrementar y reducir márgenes en los textos .
Buscar una palabra, en este comando podremos no sólo buscar, sino que el resultado nos dará como opción remplazar la palabra hallada.
Verificamos y compilamos la sintaxis del código para hallar errores o para darlo por bueno. Con estos tres trabajamos sobre la estructura del código y su ubicación en la computadora.
En la siguiente imagen se muestra la barr a de herramientas de donde es rescatable: -
Monitor serial: Sirve para ver la comunicación entre el micro controlador y la computadora donde se esta trabajando. Selección de tarjeta de sistema mínimo: En este caso es el duamilanove, con un AVR ATmega 328 de 8 bits.
Con la ayuda de arduino podemos sacar e l máximo provecho a tutoriales, conocimiento del entorno, solución de problemas, algunas referencias y visitar la página oficial.
Página oficial de donde podemos descargar el software. Información completa de lo que es el proyecto arduino.
Teclas de acceso rápido. 1. 1. 2. 3. 4. 5.
2.
3. 4.
5.
Compilar: Se escanea la sintaxis del programa para hallar errores. Cargar: Se carga el programa al micro controlador. Nuevo: Creamos un nuevo proyecto. Abrir: Abrimos un proyecto existente. Guardar: Guardamos el proyecto
Abrimos el monitor serial. Scroll para movernos entre proyectos existentes y abiertos
Espacio en blanco para escribir el programa.
Barra de estatus, aquí nos muestra el IDE el estado, ya se compilando o cargando el programa al AVR.
Estatus del Sketch y de la memoria física en el micro.
1.
2. 1. Número de ID. 2. Placa de trabajo y AVR (micro controlador de atmel). 3. Puerto sobre el que esta monatdo.
3.
Hiperterminal de puerto serial comunicación entre el micro controlador y la computadora 0. 1. 2.
3. 0. 1. 2. 3. 4. 5.
4.
5.
Puerto al que esta colagdo nuestro arduino. Renglon para enciar información al micro controlador. RX Espacio que recibe información de la computadora. TX Desplazamiento entre renglones. Fin del texto. Velocidad de transferencia.
NOTA: LA comunicación serial entre el arduino y la computadora se da a través de un protocolo RS232, mejor conocido como serial. Por medio de un cable usb se conecta a la computadora, se transfieren y reciben datos, siendo un conversor FTDI el que transforma de serial a USB.
Algoritomo del programa de conteo de piezas. 1.
Se despliegan las instrucciones.
2. 3. 4. 5. 6. 7. 8. 9. 10.
Pregunta la computadora al usuario: “Piezas a embalar” Es capturado el número de piezas con e l teclado matricial con un rango de 0 a 999,999. Si estamos seguros del número presionamos “*” De lo contrario si queremos cancelar y comenzar de nuevo presionamos “#”
Comienza el trabajo se enciende el led conectado al PIN 12. Cada vez que el sensor IR conectado al PIN 13 da un pulso en alto descuenta una pieza. Cuando el contador de piezas llega a 0, el trabajo ha terminado. Se apaga el led conectado al PIN 12. Se despliega un texto “Trabajo terminado”
Programa final //LIBRERIA PROPORCIONADA POR ARDUINO PARA UTILIZAR EL TECLADO MATRICIAL 4 X 4 #include
// DECLARACION DE VARIABLES EN ESTA AREA TENEMOS VARIABLES INT = ENTERO, DOUBLE = ENTEROS CON P UNTO FLOTANTE, BYTE = VARIABLES DE 8 BITS. const int buttonPin = 12; const int ledPin = 13; int bstate = 1; int ff3 = 0; int ff = 1; int ff2 = 1; double num,cont,sum,tot,tim; double inc = 100000; const byte ROWS = 4; const byte COLS = 3; char keys[ROWS][COLS] = { {'A','2','3',}, {'4','5','6',}, {'7','#','9',}, {'*','0','7',} };
// DECLARACIÓN DE ARREGLOS PARA HACER LA DETECCIÓN DE TECLAS byte rowPins[ROWS] = { 7, 6, 5, 4 }; byte colPins[COLS] = { 3, 2, 1 }; Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); #define ledpin 13
//FUNCION DE SET UP O PREPARACION: EN ESTA FUNCION PREPARAREMOS TODO LO NECESARIO PARA EL DESARROLLO DEL PROGRAMA.
void setup() { pinMode(ledpin,OUTPUT); //DECLARAMOS EL PIN 13 COMO SALIDA pinMode(buttonPin, INPUT); //DECLARAMOS EL PIN 12 COMO ENTRADA Serial.begin(9600); //PREPARAMOS LA VELOCIDAD DE TRANSFERENCIA PARA EL PUERTO SERIAL Y ESTE ES ABIERTO,
PARA ESTABLECER LA COMUNICACION. //TEXTO QUE SE DESPLEGARA UNA VEZ ABIERTO EL PUERTO SERIAL AL INCIO DEL PROGRAMA //Serial.println SIRVE PARA DESPLEGAR UN MENSAJE EN LA CONSOLA SERIAL Serial.println("Programa de conteo de piezas en una banda transportadora"); Serial.println("Instrucciones:"); Serial.println("Captura el numero de piezas a embalar una vez capturado e l numero presiona * "); Serial.println("Si deseas borrar el numero capturado o cancelar el t rabajo presiona # "); Serial.print("Piezas a embalar: "); }
//FUNCION CICLICA void loop() { char key = kpd.getKey(); //ESPERAMOS UNA TECLA DEL MATRICIAL 4 X 4 if(key) //SI UNA TECLA ES DETECTADA { switch (key) //SEGUN EL CASO SERA {
///////////////////////////////////////////// * ////////////////////////////////////////////// case '*': if (sum > 0) //SI SUM > 0 { tot = sum; cont = 6 - cont; while(cont > 0) { tot = tot / 10; cont--; } Serial.println(" "); printvar (tot); key == '*'; } break;
///////////////////////////////////////////// # ////////////////////////////////////////////// case '#': if (ff2 == 1)
{ canvar (tot); } break;
//////////////////////////////////////////// DFLT //////////////////////////////////////////// default: if (inc >= 1 && cont <= 6 && ff == 1) { Serial.print(key); num = (key - 48) * inc; sum = sum + num; inc = inc / 10; cont = cont + 1; } else if (cont == 6) { Serial.println(" "); tot = (sum / 1); printvar (tot); } } } if(bstate = HIGH && tot > 0 && ff3 == 1)
//CONDICIONAL QUE SERVIRA PARA HACER EL DESCUENTO DE LAS PIEZAS A EMBALAR, AQUI IRA CONECTADO EL SENSOR DE PRESENCIA. { tot--; Serial.println(tot); ff3 == 0; Serial.println(ff3); } else if (tot == 0 && ff3 == 1) { fintra (tot); } }
//FUNCIONES EXTERNAS: //IMPRESION DE LAS PIEZAS A EMBALAR E INICIO DEL TRABAJO double printvar (double pvar) { Serial.println(" "); Serial.println("El total de piezas a contar son: "); Serial.println(tot);
Serial.println(" "); digitalWrite(ledpin, HIGH); num = 0; cont = 0; sum = 0; inc= 100000; ff = 0; ff2 = 1; ff3 = 1; return tot; }
//CANCELAMOS TRABAJO double canvar (double pvar) { Serial.println(" "); num = 0; cont = 0; sum = 0; inc= 100000; ff = 1; ff2 = 0; ff3 = 1; Serial.print("Piezas a embalar: "); digitalWrite(ledpin, LOW); return tot; }
//FIN TRABAJO double fintra (double pvar) { Serial.println(" "); Serial.println("Fin de trabajo"); num = 0; cont = 0; tot = 0; sum = 0; inc= 100000; ff = 1; ff2 = 0; ff3 = 0; Serial.println("Piezas a embalar: "); digitalWrite(ledpin, LOW); return tot; }
Funciones usadas Condicionales “if, else if”; Selección de caso “case” y Ciclos “While”.
Área de oportunidad: 1. Nosotros como alumnos creemos que es necesario un botón de paro de emergencia para todo el sistema, esto se puede realizar con interrupciones, las c uales nos falta por estudiar para darle una aplicación a nuestro sistema. 2. Contador de tiempos productivos y tiempos muertos, en la industria es necesario conocer los tiempos para la toma de decisiones, es por eso, tenemos la necesidad de incluir contadores de tiempo a nuestro sistema. 3. Visualización, se ésta trabajando en esta parte, ya que no encontramos la mejor manera de realizar una visualización del proceso. 4. Lectura y escritura de memoria, uno de los requisitos de nuestro proyecto es la RX y WX de una memoria, por lo cual estamos recabando información para poder aplicar todo esto al proyecto.
Comentarios del profesor: