Es esquema de esta placa se muestra de manera aproximada en la figura de abajo

  MANUAL DE PROGRAMACIÓN Y USO DE ARDUINO

La presente guía está enfocada al manejo básico de la tarjeta Arduino. Para ello debemos

conocer por un lado cómo es dicha tarjeta, por otro como programarla y por otro cómo conectarle diversos elementos.

1. LA TARJETA

  Debajo se muestra la Arduino Duemilanove (A2009) Es esquema de esta placa se muestra de manera aproximada en la figura de abajo

  

En ella podemos distinguir comenzando en el sentido de las agujas del reloj empezando en

las 12 en punto:

  • AREF (naranja): pin de referencia analógica
  • GND (verde claro): señal de tierra digital
  • Pines digitales 13 al 2 (verde); sirven tanto para salida como entradas digitales. Los
  • TX/RX (verde oscuro), pines digitales 0 y 1 / entrada y salida del puerto serie
  • S1 (azul oscuro): botón de reset
  • >ICSP (azul turquesa): entrada del circuito del programador serie, sirve para comunicar con otros disposit
  • Analog in (azul claro): pines de entrada analógica 5-0
  • POWER (tensión: naranja, tierra: naranja claro): pines de alimentación y tierra , estos
  • >X1 (rosa): entrada de la fuente de alimentación externa (9-12V
  • SV1 (violeta): conmuta entre fuente de alimentación externa o alimentación a través
  • Puerto USB (amarillo)
  • PWM: Modulación por acho de pulso

    Si se alimenta con una fuente externa hay que conectar el negativo de la batería con el GND

    de la tarjeta.

  pines 3,5,6,9,10, y 11van marcados con PWM, o modulación por ancho de pulso, una forma para simular salidas analógicas.

  (procurar no usarlos)

  pines suministran tensión de 5 y 9 V a los elementos conectados a la tarjeta, si así se requiere.

  del puerto USB ( este elemento no está presente en la A2009, ya que ésta lo hace automáticamente)

  2. PROGRAMACIÓN DE LA TARJETA:

  Para programar la tarjeta utilizaremos el programa Arduino Alfa, que básicamente es un procesador de textos que nos ayuda con la sintaxis del lenguaje de programación y posteriormente lo compila para poder ejecutarlo.

  3. ESTRUCTURA DEL LENGUAJE ARDUINO

  La estructura básica de Arduino es bastante simple y consta de al menos dos funciones. Ambas funciones encierran bloques de declaraciones (statements). A continuación se muestra la estructura básica. Declaración de variables; void setup () { declaraciones; } void loop () { declaraciones; } La función setup() es de preparación, loop() es la ejecución propiamente dicha. Ambas partes son necesarias para que el programa funcione correctamente. Puede haber otras funciones además de estas dos.

  MANUAL DE PROGRAMACIÓN Y USO DE ARDUINO

  La función setup() se pone después de la declaración las variables generales del programa, que se debe hacer justo al principio. Es la primera función en correr en el programa y sólo se ejecuta una vez. Suele utilizarse para configurar los pines que nos interese como salidas o entradas.

  DECLARACIÓN DE VARIABLES Y CONSTANTES: 3.1.

  Una variable es una forma de nombrar y almacenar un valor numérico para su uso posterior. Como su nombre indica una variable es un elemento que puede tomar distintos valores, al contrario de una constante, que siempre va a valer lo mismo. Una variable o una constante necesita en primer lugar ser declarada y posteriormente asignarle un valor inicial. Las variables se pueden llamar como nosotros queramos, excepto algunos nombres que están reservados para las funciones primitivas de Arduino. Así podemos definir una variable con los distintos nombres siguientes: A, a, luz555, armario, a11, motor1, Motor1,mOtor1, …… Hay que observar que las mayúsculas y las minúsculas son distintas, es decir “a” es una variable y “A” otra distinta, “motor1” es una, “Motor1” es otra “mOtor1” es otra…… La declaración de una variable consiste en decidir que tipo de número vamos a almacenar en dicha variable, lo normal será que almacenemos números enteros, pero básicamente tenemos los siguientes :

  Boolean: puede almacenar dos valores 1 y 0 ó HIGH y LOW ó TRUE y FALSE byte: puede almacenar valores desde el 0 al 255 int: número entero, puede almacenar valores del -32768 al 32767 long: numero entero largo, puede almacenar números del -2147483648 al 2147483647 float: numero real con representación de coma flotante, puede almacenar números del

  38 +38

  3.4028235·10 al -3.4028235·10 char: almacena un carácter o su número correspondiente en ACII.

  Cuando inicialmente no se le da valor a una variable, automáticamente se le asigna un valor de 0. Cuando definimos una constante se hace de la misma manera que una variable pero añadiendo la palabra const antes de indicar el tipo de dato.

  Ejemplos de declaración de variables y constantes:

  

const int luz35 = 1; // Hemos definido una constante llamada luz35, que va a almacenar un número entero, en

  este caso el 1

  long tiempo; // Hemos definido una variable llamada tiempo, que va a almacenar números enteros largos y valor 0. int pin = 13; // Hemos definido una variable llamada pin, que va a almacenar números enteros y que

  inicialmente vale 13

  char miLetra = ‘A’; o char miLetra=65; definimos una variable de tipo char cuyo valor es A o 65. Ambas

  definiciones son equivalente ya que el 65 en código ASCII es la A . Si optamos por usar la letra, hay que encerrarla entre comillas simples ‘ ‘

TODAS LAS VARIABLES DEBEN SER DECLARADAS ANTES DE SER USADAS

  setup() 3.2.

  La función setup() la vamos a utilizar para configurar los pines que nos interese como salidas. Las salidas son donde vamos a conectar los LEDs, los zumbadores o los motores. Sólo es llamada o ejecutada una vez. Ejemplo 1: Declaración de variables void setup () { pinMode (pin13, OUTPUT); } Hemos declarado que el pin llamado pin13 va a ser utilizado como salida Ejemplo 2: const byte pin13=13; const int zumbador=12; const int pin10=10; void setup () { pinMode (pin13, OUTPUT);// inicializa el pin pinMode (zumbador, OUTPUT); pinMode (pin10, OUTPUT); } En este ejemplo hemos declarado que el pin llamado pin13, el pin llamado zumbador y el pin llamado pin10 van a ser salidas.

  3.3. loop()

  Una vez ejecutada la función setup, u otras que hayamos definido, entra en escena la función loop(). Esta función hace lo que su nombre indica, un bucle, es decir se repite constantemente produciendo las acciones que hayamos programado. Ejemplo 1 void setup () { pinMode (pin13, OUTPUT); } void loop() { digitalWrite(pin13; HIGH);// hacemos que pin13 tenga salida alta, es decir se ilumine delay(1000); // se produce una pausa de 1000 ms, es decir 1 segundo digitalWrite(pin13; LOW);// hacemos que pin13 tenga salida baja, es decir se apague delay(1000); // se produce una pausa de 1000 ms, es decir 1 segundo } En este ejemplo, primero inicializamos el pin13 como salida y hacemos que lo que haya conectado, generalmente será un LED, se encienda y apague a intervalos regulares de 1 segundo. El proceso se repetirá de manera indefinida hasta que hagamos un reset en la tarjeta.

3.4. FUNCIONES

  Una función es un bloque de código con un nombre y unas declaraciones que son ejecutadas cuando dicha función es llamada.

  MANUAL DE PROGRAMACIÓN Y USO DE ARDUINO

  Las funciones pueden ser definidas por cada programador a su voluntad, pero también hay una serie de funciones definidas en el programa (funciones primitivas), como delay(milisegundos), en las que el usuario sólo tiene que decidir el valor del parámetro de dicha función. Par definir una función se sigue el siguiente esquema: tipo nombreFuncion ( parámetros) { declaraciones; } Ejemplo1 void por_dos() { int f; f=v*2; digitalWrite (f, HIGH) } Aquí definimos una función muy simple y sin mucha miga, más adelante se harán cosas con más interés. La función se llama por_dos. Una vez definido el nombre y el tipo, declaramos la variable f como de tipo entero y a continuación definimos el funcionamiento de la función. En este caso toma el valor de la variable v, se supone que estaba declarada y asignada en una parte anterior del programa, se multiplica por 2 y el valor se asigna a la variable f, la siguiente línea hace que la salida de número f, se ponga en nivel alto. Es bastante habitual encontrarse con que las funciones empiecen con la partícula “void”, esto quiere decir que la función no va a retornar un valor, es decir que la función no va a ser de tipo int, long, ….

  SINTAXIS Y SIGNOS DE PUNTUACIÓN 3.5.

  La sintaxis está definida de manera rígida y si los distintos elementos no se colocan o se colocan en un orden que no es el correcto, se nos va a producir un error al compilar.

  3.5.1. Llaves { } (Curly braces)

  Las llaves definen el principio y el final de los bloques de funciones, ver los ejemplos anteriores

  3.5.2. Punto y coma ; (semicolon) Cada línea dentro de los bloques de función debe terminar en punto y coma, ver los ejemplos anteriores.

  3.5.3. Bloque de comentarios /* …..*/

  Un bloque de comentarios es lo que su nombre indica, una serie de explicaciones que se hacen sobre el código que se está programando. Estos comentarios no son compilados, por lo que no van a ocupar espacio en el programa final, sólo son para ayudar al que revise el código fuente original. Ejemplo: void por_dos() { int f; f=v*2; digitalWrite (f, HIGH) } /* Esta es la definición de una función llamada por_dos que hace…… y al final produce que la salida f se ponga a nivel alto*/

  3.5.4. Línea de comentarios //

  Lo mismo que lo anterior pero en una única línea y no en varias como el bloque Ejemplo: void loop() { digitalWrite(pin13; HIGH);// hacemos que pin13 tenga salida alta, es decir se ilumine delay(1000); // se produce una pausa de 1000 ms, es decir 1 segundo digitalWrite(pin13; LOW);// hacemos que pin13 tenga salida baja, es decir se apague delay(1000); // se produce una pausa de 1000 ms, es decir 1 segundo }

3.6. MATRIZ (ARRAY)

  Una matriz es una colección de valores ordenados según un orden determinado. Cualquier valor en la matriz puede ser llamado nombrando la matriz y el orden en el que se encuentre. El orden en las matrices empieza en el elemento cero y va subiendo de uno en uno. La estructura general de una matriz es la siguiente: int mi_matriz []={valor0, valor1, valor2,………}, antes de definir la matriz hay que definir el tipo de datos que vamos a meter en ella, en este caso serán enteros. Ejemplo1: int matris1[]={33, 55, 29, 44} /*Hemos creado una matriz llamada matris1 cuyo elemento 0 vale 33, el elemento 1 vale 55, ….*/ También se puede declarar una matriz dando su longitud y asignando sus valores mas adelante. int matriz2[5]; /* declara un matriz llamada matriz 2, formada por enteros y que tendrá hasta el elemento nº 5, es decir una longitud de 6 elementos*/ Para asignar valores a esta matriz se puede hacer de la siguiente manera: Matriz2[3]=15 ; // indica que el elemento nº 3 de la matriz2 es 15 También podemos asignar el valor de un elemento de una matriz a una variable: X=matriz1[2] ; //hemos asignado a la variable x el valor del elemento nº2 de la matriz1

  ARITMÉTICA 3.7.

  Podemos realizar operaciones aritméticas como son la suma, la resta, la multiplicación y la división, tanto con variables como con números. Ejemplos: y = x + 5 // Hemos asignado a la variable y el valor de la variable x+5 x = 7 – z // Hemos asignado a la variable x el valor de restar a 7 el valor de z i = s * x // Asignamos a la variable i el valor de producto de los valores de las variables s y x x = x/2 // Asignamos a x el valor de x dividido por 2 x=y%z// Asignamos a x el valor del de la división y/z, si x=7%3 è x= 1 Existen unas formas particulares de operaciones aritméticas propias de este lenguaje de programación que son: X++ // Es equivalente a x=x+1 x-- // Es equivalente a x=x-1 x += y // Es equivalente a x=x+y x -= 5 // Es equivalente a x=x-5 x *= 10 // Es equivalente a x=x*10 x /= 13 // Es equivalente a x=x/13 Ejemplo: Int x = 1 // declaramos una variable llamada x de tipo entero que vale 1 void setup () { pinMode (pin13, OUTPUT); } void loop() { digitalWrite(pin13; HIGH);// hacemos que lo que pin13 tenga salida alta, es decir se ilumine

  MANUAL DE PROGRAMACIÓN Y USO DE ARDUINO

  delay(500*x); // se produce una pausa de 500*x ms digitalWrite(pin13; LOW);// hacemos que lo que pin13 tenga salida baja, es decir se apague delay(500*x); // se produce una pausa de 500*x ms x++ // hacemos que el valor de x se inclemente en una unidad } Con este programa hacemos que el LED parpadee cada vez mas despacio, la primera ver lucirá 0.5 s, y se apagará 0.5 s, la segunda 2 s y 2 s, la tercera 3 s y 3 s…….(recuerda que la función loop() produce un bucle que se repite de manera infinita).

  COMPARACIONES: 3.8.

  3.8.1. Operadores de comparación

  Habitualmente deberemos comparar los valores de 2 variables entre si o el de una variable con un número, para ello debemos usar los operadores de comparación, los operadores lógicos y las funciones de comparación. x == y // equivalente a decir x es igual a y. (OJO NO ES HACER QUE x SEA IGUAL A y) x != y // equivalente a decir x es distinto de y x < y x<= y // equivalente a x es menor o igual que y

  3.8.2. Operadores lógicos

  Los operadores lógicos son una forma de comparar dos expresiones y devolver TRUE (verdadero) o FALSE (falso). Hay tres operadores lógicos AND (y) representado en las declaraciones como “&&” (& se llama “et”), OR (o), representado como “||” ( el carácter | es el carácter ASCII 124, para que aparezca se debe mantener presionada la tecla Alt, teclear 124 y soltar Alt), NOT (no), representado como “ ! “ Ejemplos: if (x>0&& x<5) // Si se cumple que x>0 y x<5 la función if es TRUE , si no da FALSE if (x>0|| x<5) // Si se cumple que x>0 o que x<5 la función if es TRUE, si no da FALSE if (x!=0) // if es TRUE si x es distinto de 0, si no es FALSE

  3.8.3. Funciones de comparación. 3.8.3.1. if ()

  La función if(), es la comparación básica, si en español. Su estructura es If ( comparación) { HacerAlgo; } Ejemplo1: If (x == 5) { y=10; } En este ejemplo se compara el valor de la variable x, si vale 5 entonces hacemos que y valga 10, si x es distinto de 5 entonces no pasa nada Ejemplo2: If (x ==z) { procedimiento2; } En este ejemplo se compara el valor de la variable x, con el de la variable z, si vale lo mismo entonces hacemos que se ejecute la función procedimiento2, si x es distinto de z entonces no pasa nada.

  3.8.3.2. if () …….else

  Es muy parecida a la anterior, de hecho la primera parte es la misma. La diferencia está en que si no se cumple la condición impuesta en if(), se cumple la indicada en la parte de else. La estructura básica es la siguiente. if (condición) { HazAlgo1; } else { HazAlgo2; } Se pueden anidar condiciones una dentro de otra: if (condición1) { HazAlgo1; } else if (condicion2) { HazAlgo2; } else { HazAlgo3; }

3.8.4. CONSTANTES

  En Arduino hay predefinidos unos pocos valores denominados constantes. Estas son:

  TRUE/FALSE, es una constante de tipo Booleano ya que define los niveles lógicos. FALSE siempre es 0 y TRUE es de manera estricta 1, aunque vale cualquier valor distinto de 0.

  Ejemplo: If (z==TRUE); //si el valor de z es distinto de 0 se ejecuta hazAlgo { hazAlgo; }

  

HIGH/LOW, (alto/bajo), esta constante define los niveles de los pines como HIGH o LOW y se usa para leer o

  escribir en los pines digitales. HIGH se define como nivel lógico 1, ON o 5 voltios, LOW se define como nivel lógico 0, OFF o 0 voltios. digitalWrite (13, HIGH); // Pone 5 voltios en la salida digital del pin número 13

  INPUT/OUTPUT, (entrada/salida): define si un pin es entrada o salida de información

  pinMode (13 , OUTPUT);// Definimos el pin nº 13 como de salida

  for 3.9.

  For se usa para repetir un determinado número de veces algo. Generalmente se usa a modo de contador. La estructura es : for (inicialización; condición; incremento) { hazAlgo }

  MANUAL DE PROGRAMACIÓN Y USO DE ARDUINO

  Ejemplo: for ( int i=0; i<20; i++) { digitalWrite (13, HIGH); // ilumina el LED delay (250); //espera 0.25 segundos digitalWrite (13, LOW); //apaga el LED delay (250); //espera 0.25 segundos } Con este ejemplo hacemos que un LED conectado en el pin 13 parpadee 20 veces. La forma en que funciona la función for es la siguiente. Lo primero definimos una variable local de tipo entero llamada i, cuyo valor inicial es 0. A continuación comprueba que el valor de i < 20, si esto se cumple pasa al siguiente paso, le suma 1, es decir ahora i=1, y continua ejecutando las líneas inferiores encerradas entre las llaves{ }. Una vez ejecutadas estas líneas vuelve a comparar el valor de i con el 20, ahora i=1, por lo cual sigue siendo verdad, y vuelve a sumarle 1 al valor de i, ahora i=2, vuelve a ejecutar las líneas entre llaves. Así tantas veces como sea necesario hasta que llegue un momento en el que i=20 por lo cual al compararlo con 20 ya no se cumple la condición, por lo que la función termina.

  3.10. while

  While produce un bucle que funciona continua e indefinidamente hasta que la expresión de dentro del paréntesis sea falsa. Suele utilizarse para comprobar el estado de un sensor, de una variable o de una condición externa. La estructura es : while (variable ¿? Valor) { HazAlgo; } Ejemplo: while ( w < 200) { digitalWrite (13, HIGH); // ilumina el LED delay (250); //espera 0.25 segundos digitalWrite (13, LOW); //apaga el LED delay (250); //espera 0.25 segundos w++ } Si al principio w = 0 el LED parpadeará 200 veces. Pero si al principio w=30, sólo parpadearía 170 veces. Si al principio w=200 ó más no parpadearía ninguna vez.

  3.11. do…… while

  Es parecido a while pero la comprobación se hace después de hacer la acción, lo que asegura que la acción al menos se va a ejecutar una vez. La estructura es la siguiente: do { hazAlgo } while (variable ¿? Valor) Ejemplo: do { DigitalWrite (13, HIGH); // ilumina el LED delay (250);//espera 0.25 segundos

  DigitalWrite (13, LOW); //apaga el LED delay (250);//espera 0.25 segundos w++ } while ( w < 200) En este caso aunque w>200 se ejecutaría una vez.

  pinMode(nºpin, modo) 3.12.

  Esta función se usa dentro del bloque void setup() y sirve para indicar que función va a tener cada uno de los pines que van a ser utilizados es ese programa. Si un pin no va a ser utilizado no es necesario declararlo. Los pines pueden ser declarados como de salida OUTPUT o de entrada INPUT. Realmente sólo es estrictamente necesario declarar los pines como salida ya que por defecto son considerados como entrada. Ejemplo: pinMode (10;OUTPUT)// declara o inicializa el pin nº 10 como pin de salida Cuando se conecta un LED a un pin (excepto el nº 13) es necesario incorporar una resistencia de entre 470Ω a 1kΩ para proteger la tarjeta de posibles cortocircuitos y sobreintensidades.

  3.13. digitalRead(nºpin)

  Lee el valor del pin especificado, dando como valores posibles HIGH o LOW. Esta es la forma de que el sistema conozca si un sensor tipo final de carrera está accionado o no. Ejemplo: x = digitalRead(12) // hace que la variable llamada “x” tome el valor del pin nº 12

  3.14. digitalWrite (nºpin, valor) Los valores que se pueden escribir en los pines son HIGH y LOW.

  Si conecto un LED a un pin y quiero que se ilumine debo mandar el valor HIGH al pin en cuestión. Ejemplo: int led = 13 // definimos una variable de tipo entero y valor 13 llamada “led” int z = 7 // definimos una variable de tipo entero y valor 7 llamada “z” int val = 0 // definimos una variable de tipo entero y valor 0 llamada “val” void setup () { pinMode (led, OUTPUT) //definimos que el pin llamado led (=13) sea de salida pinMode( z, INPUT) // definimos que el pin llamado z (=7) sea de entrada

  } void loop () { val = digitalRead (z) // asigna a la variable “val” el valor de la entrada z, que es el pin nº 7

  // este pin al ser digital podrá tener dos tipos de entrada // HIGH o LOW digitalWrite (led, val) // escribe en el pin llamado “led” (nº13) el valor de la variable

  //llamada “val” que podrá ser HIGH o LOW } En resumen, este programa hace que si se mantiene pulsado un pulsador se ilumine un led y que si se suelta dicho pulsador el led se apague.

  MANUAL DE PROGRAMACIÓN Y USO DE ARDUINO analogRead (nºpin) 3.15.

  Esta orden lee el valor analógico del pin de entrada (ANALOG IN) definido en su argumento con una resolución

  10

  de 10 bits, es decir el valor oscilará entre 0 y 2 , es decir entre 0 y 1024. Esta función sólo es aplicable a los pines analógicos 0 a 5, que están en la parte inferior de la tarjeta e identificados con el rótulo “ANALOG IN” Los pines analógicos no deben ser declarados como entrada o salida ( OUTPUT o INPUT) Ejemplo: val = analogRead (2); // asigna a la variable “val”, definida previamente, el valor

  //analógico que hay en el pin analógico nº2

  3.16. analogWrite( nºpin,valor) Esta orden nos manda al pin indicado en el argumento un valor analógico comprendido entre los 0 y los 5V.

  Los valores del argumento varían entre 0 y 255, es decir si valor=0 la tensión en el pin indicado será de 0V, si valor=255, U=5V y si elijo cualquier valor intermedio la tensión en la salida será proporcional, por ejemplo si valor=145, U=145*5/255=2.84V. Ejemplo1: analogWrite(11,100); // manda al pin 11 una tensión V=100*5/255=1.96V (Realmente no es analógico puro sino pseudo analógico, ya que se consigue por medio de la “modulación por ancho de pulso”, PWM “pulse width modulation”, es decir siempre se mandan 5 V pero durante una parte del tiempo, es decir para mandar 5 V, estará el 100% del tiempo mandando 5V, para mandar 2.5V, manda 5V el 50% del tiempo, y así sucesivamente) Ejemplo2 int x= 10 // Definimos una variable de tipo entero y valor 10. En la entrada 10

  // pondremos un LED con su correspondiente resistencia de 220Ω int p = 0 // Definimos una variable de tipo entero y valor 0. En la entrada 0 // pondremos un potenciómetro int v // Definimos una variable de tipo entero sin valor de momento void setup () {} // no es necesario definir nada en la función setup void loop() { v = analogRead (p); //lee lo que hay en la entrada p (p=0) y lo asigna a la variable v v /= 4 ; // divide por 4 el valor de la variable “v” y lo vuelve a asignar a “v”

  // de tal manera que convertimos el rango 0 – 1023 a 0- 255 analogWrite (x; v); // hace que el LED situado en la salida x reciba una tensión mas o // menos grande, brillando de acuerdo a ésta. }

  3.17. delay (ms)

  Produce una pausa en el programa de ms milisegundos Ejemplo: delay (2000) ;// produce una pausa de 2 segundos

  3.18. millis ()

  Devuelve el número de milisegundos que han transcurrido desde que Arduino empezó a funcionar hasta que se ejecuta la orden. Ejemplo: x = millis(); // asigna a la variable x, el valor de millis () El valor de millis () vuelve a 0 tras aproximadamente 9 horas de funcionamiento.

  min (x, 100) 3.19.

  Selecciona el menor de los números x e y Ejemplo: c = min (x , y) ; selecciona el menor de entre x y 100 y lo asigna a la variable c, de esta manera aseguramos que el valor siempre va a ser menor de 100

  max (x, 100) 3.20.

  Selecciona el mayor de los números x e y. Ejemplo: c = min (x , y) ; selecciona el mayor de entre x y 100 y lo asigna a la variable c

  3.21. randomSeed(seed) random(max) random(min, max)

  Estas funciones permiten genera números aleatorios. La primera, randomSeed(seed), es de tipo preparatorio y como argumento se suele poner la función millis() o analogRead(). random (max), genera un número aleatorio entre 0 y max. random (min, max) genera un número aleatorio entre min y max. Ejemplo: int numeroAzar; //definimos una variable llamada numeroAzar de tipo entero int z =10 ; //definimos otra variable llamada z de tipo entero y le asignamos valor 10 void setup{} void loop() { randomSeed (millis()) //esta función es preparatoria, utilizamos millis() como semilla de nuestro número aleatorio numeroAleatorio = random(255) // genera un numero aleatorio menor de 255 y lo asigna a la variable numeroAleatorio analogWrite (z, numeroAleatorio);// manda a la salida z, en este caso la salida10, un valor entre 0 y 255, de tal manera que si tenemos un LED conectado brillará con mas o menos intensidad. delay (500); //hace una pausa en el programa de 500 milisegundos }

4. MONTAJES TÍPICOS

4.1. SALIDA DIGITAL

  Este es el montaje más básico que podemos encontrar, se trata de conectar un LED a un pin digital. El funcionamiento es que el LED está encendido o apagado. Es obligatorio poner una resistencia de 220 Ω para proteger el LED (excepto en el pin nº 13, que la lleva incorporada en la propia tarjeta).

  MANUAL DE PROGRAMACIÓN Y USO DE ARDUINO

  4.2. ENTRADA DIGITAL (PULSADOR, INTERRUPTOR, FINAL DE CARRERA,..)

  Esta es la entrada más sencilla que se puede hacer en Arduino, distingue entre dos estados, conectado y desconectado. El pulsador o el interruptor se montan entre un pin digital (los pines digitales sirven como entrada o como salida) y la toma que indica 5V en la propia tarjeta. Cuando el interruptor/pulsador está cerrado el pin leerá HIGH y si está abierto leerá LOW.

  4.3. SALIDA ELEVADA DE CORRIENTE. (MOTORES)

  La placa Arduino no es capaz de suministrar mas de 40 mA, por lo que no se puede controlar elemento que requieren más de esa corriente, por ejemplo un motor.

  Si utilizamos el BD138, al se de tipo PNP, el funcionamiento será a la inversa de lo normal:

  • Si PIN HIGH, motor OFF
  • Si PIN LOW, motor ON

  4.4. SALIDA CON MODULACIÓN POR ANCHO DE PULSOS (PWM)

  La modulación de anchura de pulsos es una forma de simulación de salida analógica mediante una salida digital. El montaje es idéntico al montaje de LED’s visto en 4.1, o al de salida de motores visto en 4.2 pero sólo se puede conectar a los pines en los que está impreso “PWM” , es decir los pines 3, 5, 6, 9, 10 y 11.

  4.5. ENTRADA DE POTENCIÓMETRO

  El pin al que está conctado el potenciómetro debe ser de tipo analógico

  BD 135 NPN BD138 PNP

  NPN MANUAL DE PROGRAMACIÓN Y USO DE ARDUINO

4.6. ENTRADA DE RESISTENCIA DEPENDIENTE DE PARÁMETRO FÍSICO ( LDR, PTC, NTC,..) La resistencia dependiente de parámetro físico puede ser una LDR, una NTC, PTC,..

  El pin al que está conctado el potenciómetro debe ser de tipo analógico

  CONEXIÓN AL CNY70 4.7.

  CONEXIÓN AL MÓDULO DE RELÉS 4.8.

  El relé se activa cuando el pin al que está conectado esta en LOW y se desactiva cuando está en HIGH Hay un puente (no dibujado) que si se desconecta permite alimentar a los relés con distinta pila que a los motores, pero no es necesario.

  CONTROL DE 2 MOTORES CON EL INTEGRADO L293D ( L2193) 4.9. Con este integrado pòdemos conectar hasta 2 motores de corriente continua y controlar de manera independiente el sentido de giro de cada uno de ellos. El sistema utilizado es mediante un chip de la familia L293, llamado también puente H (H-Bridge)

  

MANUAL DE PROGRAMACIÓN Y USO DE ARDUINO

  JAVIER SIMÓN

Mostrar más