18
APUNTES DE ARDUINO El módulo Arduino es una placa muy simplificada basada en un microcontrolador, aunque hay un número creciente de formatos alternativos, el diseño original incluye todas las partes necesarias para alimentar y comunicarte con el microcontrolador: Un regulador, un cristal de reloj, una interface USB a serie, y una interface de programación SPI para reemplazar el cargador de programas. Una placa Arduino es mucho más que una simple pieza de hardware. Es también el software que te permite programar y comunicarte con él, toda la documentación y los tutoriales que explican cómo utilizarla placa, y una grande y creciente comunidad que puede ayudar cuando tenga algún problema. Todo esto en conjunto, más que cualquier parte individual, hacen al proyecto Arduino muy útil. Se puede fabricar las placas para uso personal, o para que las use una empresa únicamente. REFERENCIA DEL CÓDIGO DE PROGRAMACIÓN Los programas hechos con Arduino se dividen en tres partes principales: estructura, valores (variables y constantes), y funciones. El Lenguaje de programación Arduino se basa en C/C++. ESTRUCTURA setup() (inicialización) La función setup() se establece cuando se inicia un programa - sketch. Se emplea para iniciar variables, establecer el estado de los pins, inicializar librerías, etc. Esta función se ejecutará una única vez después de que se conecte la placa Arduino a la fuente de alimentación, o cuando se pulse el botón de reinicio de la placa. Ejemplo

Apuntes de Arduino

Embed Size (px)

DESCRIPTION

Arduino

Citation preview

APUNTES DE ARDUINOEl mdulo Arduino es una placa muy simplificada basada en un microcontrolador, aunque hay un nmero creciente de formatos alternativos, el diseo original incluye todas las partes necesarias para alimentar y comunicarte con el microcontrolador: Un regulador, un cristal de reloj, una interface USB a serie, y una interface de programacin SPI para reemplazar el cargador de programas. Una placa Arduino es mucho ms que una simple pieza de hardware. Es tambin el software que te permite programar y comunicarte con l, toda la documentacin y los tutoriales que explican cmo utilizarla placa, y una grande y creciente comunidad que puede ayudar cuando tenga algn problema. Todo esto en conjunto, ms que cualquier parte individual, hacen al proyecto Arduino muy til. Se puede fabricar las placas para uso personal, o para que las use una empresa nicamente.

REFERENCIA DEL CDIGO DE PROGRAMACINLos programas hechos con Arduino se dividen en tres partes principales: estructura, valores (variables y constantes), y funciones. El Lenguaje de programacin Arduino se basa en C/C++.ESTRUCTURA setup() (inicializacin)La funcin setup() se establece cuando se inicia un programa -sketch. Se emplea para iniciar variables, establecer el estado de los pins, inicializar libreras, etc. Esta funcin se ejecutar una nica vez despus de que se conecte la placa Arduino a la fuente de alimentacin, o cuando se pulse el botn de reinicio de la placa.Ejemplo int buttonPin = 3;

void setup(){ Serial.begin(9600); pinMode(buttonPin, INPUT);}

void loop(){ // ...}

loop() (bucle)Luego de crear la funcin setup(), la cual inicializa y prepara los valores inciales, la funcin loop() hace justamente lo que su nombre sugiere, por lo tanto se ejecuta consecutivamente, permitindole al programa variar y responder. sala para controlar de forma activa la placa Arduino.Ejemplo int buttonPin = 3;

// setup inicializa la comunicacin serial y el buttonPinvoid setup(){ beginSerial(9600); pinMode(buttonPin, INPUT);}

// loop obtiene el estado del pin del botn cada vez,// y de estar presionado, lo comunica por serial.void loop(){ if (digitalRead(buttonPin) == HIGH) serialWrite('H'); else serialWrite('L');

delay(1000);}

Estructuras de control if (comparador si-entonces) if...else (comparador si...sino) for (bucle con contador) switch case (comparador mltiple) while (bucle por comparacin booleana) do... while (bucle por comparacin booleana) break (salida de bloque de cdigo) continue (continuacin en bloque de cdigo) return (devuelve valor a programa)Sintaxis ; (punto y coma) {} (llaves) // (comentarios en una lnea) /* */ (comentarios en mltiples lneas)Operadores Aritmticos = (asignacin) + (suma) (resta) (multiplicacin) / (divisin) % (resto)Operadores Comparativos == (igual a) != (distinto de) < (menor que) >(mayor que) = (mayor o igual que) Operadores Booleanos && (y) || (o) ! (negacin)Operadores de Composicin ++ (incrementa) -- (decrementa) += (composicin suma) -= (composicin resta) *= (composicin multiplicacin) /= (composicin divisin)VARIABLESConstantes HIGH | LOW INPUT | OUTPUT true | falseConstantes NumricasTipos de Datos boolean (booleano) char (carcter) byte int (entero) unsigned int (entero sin signo) long (entero 32b) unsigned long (entero 32b sin signo) float (en coma flotante) double (en coma flotante de 32b) string (cadena de caracteres) array (cadena) void (vaco)Conversin char() byte() int() long() float()FUNCIONES

E/S Digitales pinMode() digitalWrite() digitalRead() E/S Analgicas analogRead() analogWrite() - PWM (modulacin por ancho de pulso)E/S Avanzadas tone() noTone() shiftOut() pulseIn() Tiempo millis() micros() delay() delayMicroseconds() Matemticas min() (mnimo) max() (mximo) abs() (valor absoluto) constrain() (limita) map() (cambia valor de rango) pow() (eleva a un nmero) sq() (eleva al cuadrado) sqrt() (raz cuadrada)Trigonometra sin() (seno) cos() (coseno) tan() (tangente) Nmeros Aleatorios randomSeed() random()Communicacin Serial

DESARROLLO DE LAS ESTRUCTURAS DE CONTROL if (comparador si-entonces)if (condicional) y ==, !=, (operadores de comparacin)if, el cual puede ser usado en conjunto con uno o ms operadores de comparacin, comprueba si cierta condicin se cumple, por ejemplo, si uninputposee un valor mayor a cierto nmero. El formato para una comprobacinifes el siguiente:if (algunaVariable > 50){ // hacer algo aqu.}Este programa comprueba si la variablealgunaVariablees mayor a50. Si lo es, el programa toma una accin particular. Dicho de otra forma, si la declaracin escrita dentro de los parntesis es verdadera (true), el cdigo dentro de las llaves se ejecutar. Sino, el programa ignora dicho cdigo.Las llaves pueden ser omitidas luego de una declaracinif. De hacer esto, la siguiente lnea (definida por el punto y coma) ser la nica afectada por la condicin.

if (x > 120) digitalWrite(LEDpin, HIGH);

if (x > 120)digitalWrite(LEDpin, HIGH);

if (x > 120){ digitalWrite(LEDpin, HIGH); }

if (x > 120){ digitalWrite(LEDpin1, HIGH); digitalWrite(LEDpin2, HIGH); }

// todos los ejemplos son correctos.

Las declaraciones a evaluar dentro de los parntesis, requieren el uso de uno o ms operadores:Operadores de Comparacin: x == y (x es igual a y) x != y (x no es igual a y) x < y (x es menor a y) x > y (x es mayor a y) x = y (x es mayor o igual a y) if...else (comparador si...sino)if/elsepermite mayor control sobre el flujo del cdigo que la declaracinifbsica, por permitir agrupar mltiples comprobaciones. Por ejemplo, uninputanlogo podra ser comprobado, y tomarse una accin si el valor delinputes menor a 500, y, otra accin se ser igual o mayor a 500. El cdigo se vera as:if (pinCincoInput < 500){ // accin A}else{ // accin B}elsepuede proceder a una comprobacinif, de esta forma, se pueden realizar mltiples comprobaciones en una misma estructura de condiciones. Cada comprobacin proceder a la siguiente, slo cuando su propio resultado seaFALSE. Cuando el resultado seaTRUE, su bloque de cdigo contenido, ser ejecutado, y el programa esquivar las siguientes comprobaciones hasta el final de la estructura de comprobaciones. Si ninguna comprobacin devuelve valorTRUE, elelseser ejecutado, y de no haber ninguno declarado, simplemente no sucede nada.Entonces un bloqueelse ifpuede ser usado con o sinelseal final. La cantidad de declaracioneselse if, y sus ramificaciones son ilimitadas.if (pinCincoInput < 500){ // ejecutar A}else if (pinCincoInput >= 1000){ // ejecutar B}else{ // ejecutar C}

Otra forma de expresar ramificaciones (branchingen ingls), y realizar comprobaciones mutuamente exclusivas, es con la declaracinswitch case, la cual resulta ms idnea en algunos casos.

for (bucle con contador)DescripcinLa declaracin for es usada para repetir un bloque encerrado entre llaves. Un incremento de un contador es usado, normalmente, para aumentar y terminar con el bucle. La estructura for es muy til para la mayora de las operaciones repetitivas, y habitualmente se usa para operaciones con vectores, para operar sobre conjuntos de datos/pinesEl bucle for tiene tres partes o argumentos en su inicializacin:for (initialization; condition; increment) {//funcin(es);}

La initialization, o inicializacin, se produce slo la primera vez. Cada vez que se va a repetir el bucle, se revisa la condition, o condicin: si es cierta, el bloque de funciones (y el incremento del contador) se ejecutan, y la condicin vuelve a ser comprobada de nuevo. Si la condicin es falsa, el bucle termina.Ejemplo// Variar la intensidad de un LED usando un salida PWMint PWMpin = 10; // En el pin 10 hay un LED en serie con una resistencia de 470 ohmios

void setup(){ // no es necesario nada aqu}

void loop(){ for (int i=0; i -1; i = i + x){ analogWrite(PWMpin, i); if (i = 255) x = -1; // cambia de signo para apagarlo delay(10); } }

switch case (comparador mltiple)Como las sentencias if, switch...case controla el flujo de programas permitiendo a los programadores especificar diferentes cdigos que deberan ser ejecutados en funcin de varias condiciones. En particular, una sentencia switch compara el valor de una variable con el valor especificado en las sentencias case. Cuando se encuentra una sentencia case cuyo valor coincide con dicha variable, el cdigo de esa sentencia se ejecuta.La palabra clave break sale de la sentencia switch, y es usada tpicamente al final de cada case. Si una sentencia break, la sentencia switch continuara ejecuntndo las siguientes expresiones ("falling-through") hasta encontrar un break, o hasta llegar al final de la sentencia switch.Ejemplo switch (var) { case 1: //hacer algo cuando sea igual a 1 break; case 2: //hacer algo cuando sea igual a 2 break; default: // si nada coincide, ejecuta el "default" // el "default" es opcional }

Sintaxisswitch (var) { case etiqueta: // sentencias break; case etiqueta: // sentencias break; default: // sentencias}

Parmetrosvar: la variable cuyo valor comparas con los varios "case"etiqueta: un valor para comparar con la variable

while (bucle por comparacin booleana)DescripcinLos bucles while se ejecutan continuamente, hasta que la expresin de dentro del parntesis, (), pasa a ser falsa. Algo debe modificar la variable comprobada, el bucle while nunca terminar. Lo que modifique la variable puede estar en el cdigo, como una variable que se incrementa, o ser una condicin externa, como el valor que da un sensor.Sintaxiswhile(expresion){ // sentencia(s)}Parmetrosexpresion - una sentencia C (booleana) que da como valor verdadero (true) o falso (false)Ejemplovar = 0;while(var < 200){ // haz algo repetitivo 200 veces var++;} do... while (bucle por comparacin booleana)El bucle "'do'" trabaja de la misma manera que el bucle "'while'", con la excepcion de que la condicin se comprueba al final del bucle, por lo que este bucle se ejecuta "siempre" al menos una vez.do{ // bloque de instrucciones} while (condicin);

Ejemplo:do{ delay(50); // espera a que los sensores se estabilicen x = readSensors(); // comprueba los sensores

} while (x < 100); //si se cumple la condicin se repite el bucle

break (salida de bloque de cdigo)falta continue (continuacin en bloque de cdigo)

La sentencia continue omite el resto de iteracciones de un bucle (do, for, o while). Contina saltando a la condicin de bucle y procediendo con la siguiente iteraccin.Ejemplo

for (x = 0; x < 255; x ++){ if (x > 40 && x < 120){ // crea un salto en estos valores continue; }

digitalWrite(PWMpin, x); delay(50);}

return (devuelve valor a programa)

returnTermina una funcin y devuelve un valor a la funcin que la llama. Puede no devolver nada.Sintaxisreturn;return valor; // ambas formas son correctasParmetrosvalor: cualquier variable o tipo constanteEjemplosUna funcin que compara la entrada de un sensor a un umbral int comprobarSensor(){ if (analogRead(0) > 400) { return 1; else{ return 0; }}La palabra clave return es til para depurar una seccin de cdigo sin tener que comentar una gran cantidad de lneas de cdigo posiblemente incorrecto.void loop(){

// cdigo magnfico a comprobar aqu

return;

// el resto del programa del que se desconfa// que nunca ser ejecutado por estar detrs de return}

do - whileEl bucle "'do'" trabaja de la misma manera que el bucle "'while'", con la excepcion de que la condicin se comprueba al final del bucle, por lo que este bucle se ejecuta "siempre" al menos una vez.do{ // bloque de instrucciones} while (condicin);

Ejemplo:do{ delay(50); // espera a que los sensores se estabilicen x = readSensors(); // comprueba los sensores

} while (x < 100); //si se cumple la condicin se repite el bucle

SOFTWAREWIRINGTHE Wiring SOFTWARE IS PROVIDED TO YOU "AS IS," AND WE MAKE NO EXPRESS OR IMPLIED WARRANTIES WHATSOEVER WITH RESPECT TO ITS FUNCTIONALITY, OPERABILITY, OR USE, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR INFRINGEMENT. WE EXPRESSLY DISCLAIM ANY LIABILITY WHATSOEVER FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR SPECIAL DAMAGES, INCLUDING, WITHOUT LIMITATION, LOST REVENUES, LOST PROFITS, LOSSES RESULTING FROM BUSINESS INTERRUPTION OR LOSS OF DATA, REGARDLESS OF THE FORM OF ACTION OR LEGAL THEORY UNDER WHICH THE LIABILITY MAY BE ASSERTED, EVEN IF ADVISED OF THE POSSIBILITY OR LIKELIHOOD OF SUCH DAMAGES.By downloading the software from this page, you agree to the specified terms. For instructions check the software install tutorial in theLearning / Tutorialssection.http://wiring.org.co/download/index.htmlPROCESSINGProcessing is an open source programming language and environment for people who want to create images, animations, and interactions. Initially developed to serve as a software sketchbook and to teach fundamentals of computer programming within a visual context, Processing also has evolved into a tool for generating finished professional work. Today, there are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning, prototyping, and production. Free to download and open source Interactive programs using 2D, 3D or PDF output OpenGL integration for accelerated 3D For GNU/Linux, Mac OS X, and Windows Projects run online or as double-clickable applications Over 100 libraries extend the software into sound, video, computer vision, and more... Welldocumented, with manybooksavailable

http://www.processing.org/

Diagrama del Microcontrolador