¿Qué es Arduino? Arduino es una herramienta para la fabricación de computadoras que pueden detectar y controlar más del mundo físico que el equipo de escritorio. Es una plataforma plataforma de computación física de código abierto abierto basado en una placa electronica simple y un entorno de desarrollo para escribir soft!are para la placa. Arduino se puede utili"ar para desarrollar ob#etos interacti$os teniendo las entradas de una $ariedad de interruptores o sensores y el control de una $ariedad de luces motores y otras salidas físicas. %royectos Arduino pueden ser entes indi$iduales o pueden comunicarse con el soft!are que se e#ecuta en el ordenador &por e#emplo 'lash %rocessing (a)(*%.+ (a)(*%.+ ,as tablas se pueden montar a mano o comprados preensambladopreensamblado- el /E de código abierto se puede descargar de forma gratuita. El lengua#e de programación de Arduino es una implementación de cableado una plataforma similar computación física que se basa en el entorno de programación multimedia de procesamiento.
¿%or qué Arduino? 0ay muchos otros microcontroladores y plataformas de microcontroladores microcontroladores disponibles disponibles para computación física. %aralla) 1asic *tamp de 2etmedia 13456 %hidgets 0andyboard del (7 y muchos otros ofrecen una funcionalidad funcion alidad similar. 7odas estas herramientas toman los detalles sucios de programación de microcontroladores microcontroladores y se en$uel$e en un paquete fácil de usar. usar. Arduino también simpli8ca el proceso de traba#ar con los microcontroladores microcontroladores pero ofrece algunas $enta#as para los profesores estudiantes y a8cionados interesados sobre otros sistemas9 •
•
placas Arduino son relati$amente relati$amente baratos en comparación con otras plataformas plataformas de microcontrolador microcontroladores. es. ,a $ersión menos menos costosa del módulo Arduino puede ser ensamblado a mano e incluso los módulos de Arduino premontados cuestan menos de : ;< (ultiplataforma 4 El soft!are de Arduino funciona en sistemas operati$os =indo!s =indo!s (acintosh >*3 y ,inu). ,inu). ,a mayoría de los sistemas de microcontrolador se limitan a =indo!s.
•
•
•
Entorno de programación simple claro 4 El entorno de programación de Arduino es su8ciente para los usuarios a$an"ados que apro$echan así de fácil de usar para principiantes pero e)ible. %ara los profesores se basa con$enientemente en el entorno de programación %rocessing por lo que los estudiantes aprenden a programar en ese entorno estarán familiari"ados con la apariencia de Arduino El código abierto y e)tensible en soft!are El soft!are de Arduino está publicado como herramientas de código abierto disponible para la e)tensión por programadores e)perimentados. El idioma se puede ampliar a tra$és de bibliotecas @ y la gente con ganas de entender los detalles técnicos pueden dar el salto de Arduino para el lengua#e de programación ABC @ en la que se basa. /el mismo modo puede agregar código ABC4@ directamente en sus programas de Arduino si quieres. El código abierto y el hard!are e)tensible 4 El Arduino se basa en A7(EDA y A7megaFG microcontroladores de Atmel. ,os planes para los módulos están publicados ba#o una licencia de @reati$e @ommons por lo que los diseHadores de circuitos e)perimentados pueden hacer su propia $ersión del módulo ampliándolo y me#orándolo. ncluso los usuarios con poca e)periencia pueden construir la $ersión tablero del módulo con el 8n de entender cómo funciona y ahorrar dinero.
%rimer bosque#o En la guía de instalación inicial & en =indo!s (ac >* 3 ,inu) + que ha subido un boceto que parpadea un ,E/. En este tutorial aprenderás cómo funciona cada parte de ese boceto. 1osque#o In bosque#o es el nombre que Arduino utili"a para un programa. Es la unidad de código que se carga en y e#ecutar en una placa Arduino. @omentarios ,as primeras líneas del 1linJ boceto son un comentario9 KL L 1linJ L L El e#emplo básico Arduino. *e enciende un ,E/ durante un segundo
L ,uego se apaga durante un segundo y así sucesi$amente ... Itili"amos el pin FM ya que L /ependiendo de tu placa Arduino no lle$en incorporado un ,E/ L > una resistencia incorporada de modo que sólo se necesita un ,E/. L L 0ttp9KK!!!.arduino.ccKenK7utorialK1linJ LK
N>btener códigoO
7odo entre el KL y LK es ignorado por el Arduino cuando se e#ecuta el boceto &el L al comien"o de cada línea es sólo allí para hacer el comentario $ea bonito y no es necesario+. Está ahí para la gente que lee el código9 para e)plicar lo que hace el programa cómo funciona o por qué está escrito tal como es. Es una buena práctica para comentar sus dibu#os y para mantener a los comentarios hasta a la fecha en que se modi8ca el código. Esto ayuda a otras personas a aprender o modi8car su código.
0ay otro estilo para comentarios cortos de una sola línea. Estos comien"an con KK y continPan hasta el 8nal de la línea. %or e#emplo en la línea de9
int led%in FM- KK ,E/ conectado al pin digital FM
N>btener códigoO el mensa#e R,E/ conectado al pin digital FMR es un comentario.
Variables
Ina $ariable es un lugar para almacenar una parte de los datos. 7iene un nombre un tipo y un $alor. %or e#emplo la línea desde el boceto 1linJ anterior declara una $ariable con el nombre led%in el tipo int y un $alor inicial de FM. Está siendo usado para indicar que el pin de Arduino el ,E/ está conectado. @ada $e" que el nombre led%in aparece en el código se recuperará su $alor. En este caso la persona que escribe el programa podría haber optado por no molestar a la creación de la led%in $ariable y en $e" simplemente haber escrito FM en todas partes que necesitaban para especi8car un nPmero de pin. ,a $enta#a de utili"ar una $ariable es que es más fácil mo$er el ,E/ a un pin diferente9 sólo tiene que editar el una línea que asigna el $alor inicial a la $ariable.
A menudo sin embargo el $alor de una $ariable cambiará mientras que el boceto se e#ecuta. %or e#emplo podría almacenar el $alor leído desde una entrada en una $ariable. 0ay más información en el tutorial Bariables .
Funciones
Ina función &también conocido como un procedimiento o sub4rutina+ es una pie"a con nombre de código que puede ser utili"ado de otra parte en un croquis. %or e#emplo aquí está la de8nición de la setup&+ la función del e#emplo 1linJ9
$oid setup &+ S pin(ode &led%in >I7%I7+- KK establece el pin digital como salida T
N>btener códigoO
,a primera línea proporciona información acerca de la función al igual que su nombre RsetupR. El te)to antes y después del nombre especi8car su tipo de retorno y parámetros9 éstas se e)plicarán más adelante. El código entre el S y T se llama el cuerpo de la función9 lo que hace la función.
Isted puede llamar a una función que ya ha sido de8nida &ya sea en su bosque#o o como parte del lengua#e Arduino +. %or e#emplo la línea pin(ode&led%in >I7%I7+- llama al pin(ode&+ función pasándole dos parámetros9 led%in y >I7%I7 . Estos parámetros son utili"ados por el pin(ode&+ la función para decidir qué pin y el modo de con8gurar.
pin(ode &+ digital=rite &+ y retardo &+
El pin(ode&+ función con8gura un pasador ya sea como una entrada o una salida. %ara utili"arla se le pasa el nPmero del pin de con8gurar y la entrada o salida constante. @uando se con8gura como una entrada un pasador puede detectar el estado de un sensor como un botón pulsadoresto se discute en un tutorial posterior . @omo una salida se puede conducir un actuador como un ,E/.
,os digital=rite&+ funciones salidas un $alor en un al8ler. %or e#emplo la línea9 digital=rite &led%in 0D0+N>btener códigoO
establecer el led%in &pin FM+ a 0D0 o ; $oltios. Escribir un ,o! en la $ía conecta a tierra o < $oltios. El delay&+ hace que el Arduino que esperar a que el nPmero especi8cado
de milisegundos antes de continuar a la siguiente línea. 0ay F.<<< milisegundos en un segundo por lo que la línea9 retardo &F<<<+-
N>btener códigoO
crea un retraso de un segundo.
setup &+ y loop &+ 0ay dos funciones especiales que son una parte de cada boceto Arduino9 setup&+ y loop&+ . El setup&+ se llama una $e" cuando se inicia el boceto. Es
un buen lugar para hacer las tareas de con8guración como los modos de a#uste de pasador o iniciali"ar las bibliotecas. El loop&+ función se llama una y otra y es el cora"ón de la mayoría de los bocetos. Es necesario incluir ambas funciones en su dibu#o incluso si usted no los necesita para nada.
Bariables Ina $ariable es un lugar para guardar un peda"o de datos. 7iene un nombre un $alor y un tipo. %or e#emplo esta declaración &llamado una declaración): int pin = 13;
crea una $ariable cuyo nombre es pin cuyo $alor es 13 y cuyo tipo es int . (ás tarde en el programa puede hacer referencia a esta $ariable por su nombre y en ese momento su $alor se le$antó y se utili"a. %or e#emplo en esta declaración9 pinMode(pin, OUTPUT);
es el $alor de la espiga &FM+ que se pasa a la función pin(ode &+. En este caso que en realidad no necesita utili"ar una $ariable esta declaración podría funcionar igual de bien9 pinMode(13, OUTPUT);
,a $enta#a de una $ariable en este caso es que sólo se necesita especi8car el nPmero real de la cla$i#a de una $e" pero se puede usar un montón de $eces. Así que si más adelante decide cambiar de pin FM al pin F5 sólo se necesita cambiar un punto en el código. Además puede utili"ar un nombre descripti$o para que el signi8cado de la $ariable clara &por e#emplo un programa que controla un ,E/ CD1 puede tener $ariables llamadas red%in green%in y 1lue%in+. Ina $ariable tiene otras $enta#as sobre un $alor como un nPmero. ,o más importante se puede cambiar el $alor de una $ariable utili"ando una asignación &indicado por un signo igual+. %or e#emplo9 pin = 12;
cambiará el $alor de la $ariable a F5. 7enga en cuenta que no se especi8ca el tipo de la $ariable9 no ha cambiado por la cesión. Es decir el nombre de la $ariable está asociada permanentemente con un tipo- sólo su $alor cambia. NFO 7enga en cuenta que usted tiene que declarar una $ariable antes de poder asignar un $alor a la misma. *i se incluye la declaración anterior en un programa sin la primera
declaración anterior obtendrá un mensa#e como9 Rerror9 pin no se declaró en este ámbitoR. @uando se asigna una $ariable a otra que está haciendo una copia de su $alor y el almacenamiento que copiar en la ubicación en la memoria asociado con la otra $ariable. @ambio de uno no tiene ningPn efecto en el otro. %or e#emplo después de9 int pin FM int pin5 pin pin F5-
sólo pin tiene el $alor F5- pin5 sigue siendo FM.
¿U ahora qué puede que se pregunte ¿Acaso la palabra RalcanceR en ese mensa#e de error signi8ca arriba? *e re8ere a la parte de su programa en el que se puede utili"ar la $ariable. Esto se determina por el lugar donde declara. %or e#emplo si usted quiere ser capa" de utili"ar una $ariable en cualquier parte de su programa se puede declarar en la parte superior de su código. Esto se llama una $ariable global; he aquí un e#emplo9 int pin FM $oid setup &+ S pin(ode &pin >I7%I7+ T $oid loop &+ S digital=rite &pin 0D0+ T
@omo se puede $er pin se utili"a tanto en el setup &+ y loop &funciones+. Ambas funciones se re8eren a la misma $ariable por lo que el cambio de uno afectará el $alor que tiene en el otro como en9 int pin FM $oid setup &+ S pin F5pin(ode &pin >I7%I7+ T $oid loop &+ S
digital=rite &pin 0D0+ T
Aquí la función digital=rite &+ se llama desde loop &+ se pasa un $alor de F5 ya que es el $alor que se asigna a la $ariable en la función setup &+. *i usted sólo tiene que utili"ar una $ariable en una sola función se puede declarar que e)iste en cuyo caso su ámbito de aplicación se limitará a esa función. %or e#emplo9 $oid setup &+ S int pin FMpin(ode &pin >I7%I7+digital=rite &pin 0D0+ T
En este caso el pasador $ariable sólo se puede utili"ar dentro de la función setup &+. *i tratas de hacer algo como esto9 $oid loop &+ S digital=rite &pin ,>=+- KK Equi$ocado9 pin no está en el ámbito aquí. T
obtendrá el mismo mensa#e que antes9 Rerror9 VpinV no se declaró en este ámbitoR. Es decir a pesar de que ha declarado pin en algPn lugar de su programa que está tratando de utili"arlo en algPn lugar fuera de su alcance. ¿%or qué puede que se pregunte ¿no crees que todas las $ariables globales? /espués de todo si no sé dónde podría necesitar una $ariable ¿por qué debería limitar su alcance a una sola función? ,a respuesta es que puede hacer que sea más fácil de a$eriguar qué pasa con él. *i una $ariable es global su $alor podría ser cambiado en cualquier parte del código lo que signi8ca que usted necesita para comprender todo el programa para saber qué $a a pasar a la $ariable. %or e#emplo si la $ariable tiene un $alor que no esperabas puede ser mucho más fácil de a$eriguar dónde está el $alor pro$enía de si la $ariable tiene un alcance limitado. NWmbito de bloqueO NtamaHo de las $ariablesO NFO En algunos idiomas como %ython los tipos se asocian con $alores nombres de $ariables no y usted puede asignar $alores de cualquier tipo a una $ariable. Esto se re8ere a la tipifcación como dinámica.
'unciones
,a segmentación de código en funciones permite al programador crear pie"as modulares de código que reali"an una tarea de8nida y luego $ol$er a la "ona de código desde el que la función fue RllamadoR. El caso típico para la creación de una función es cuando hay que reali"ar la misma acción $arias $eces en un programa. %ara los programadores acostumbrados a usar 1A*@ funciones en Arduino proporcionan &y e)tender+ la utilidad de usar subrutinas &D>*I1 en 1A*@+. ,a estandari"ación de los fragmentos de código en funciones tiene $arias $enta#as9 •
•
•
•
•
'unciones ayudan al programador estancia organi"ada. A menudo esto ayuda a conceptuali"ar el programa. 'unciones codi8car una acción en un solo lugar para que la función sólo tiene que ser pensado y depurado una $e". Esto también reduce las posibilidades de errores en la modi8cación si el código necesita ser cambiado. 'unciones hacen todo el boceto pequeHo y más compacto porque secciones de código son reutili"ados muchas $eces. 0acen más fácil de reutili"ar código en otros programas por lo que es más modular y como efecto secundario agradable utili"ando funciones también a menudo hace que el código sea más legible.
0ay dos funciones que se requieren en un boceto Arduino setup &+ y loop &+. >tras funciones deben crearse fuera de los corchetes de esas dos funciones. @omo e#emplo $amos a crear una función simple para multiplicar dos nPmeros.
E#emplo %ara RllamarR nuestra función de multiplicación simple le pasamos los parámetros del tipo de datos que se está a la espera9 void loop { int i = 2;
int j = 3; int k; k = myMultiplyFunction (i, j); // k ahora contiene 6 N>btener códigoO
2uestra función debe ser declarado fuera de cualquier otra función por lo que Rmy(ultiply'unction &+R puede ir por encima o por deba#o del Rloop &+R función. 7odo el boceto sería entonces el siguiente aspecto9 void setup () { !e"i#l comen$#" (%&''); void loop () { int i = 2; int j = 3; int k; k = myMultiplyFunction (i, j); // k ahora contiene 6 !e"i#l p"intln (k); "et#"do (''); int myMultiplyFunction (int *, int y) { int "e+ult#do; "e+ult#do = * y; "e+ult#do "e-"e+#";
N>btener códigoO
>tro e#emplo Esta función leerá un sensor de cinco $eces con analogCead &+ y calcular la media de cinco lecturas. A continuación las escalas de los datos a bits &<45;;+ y la in$ierte de$ol$iendo el resultado in$ertido. int .e#d!en+/#nd/0ondition () { int i; int +v#l = '; o" (i = '; i ; i ) { +v#l = +v#l #n#lo-.e#d ('); // sensor en el pin analógico 0
+v#l = +v#l 4 ; // promedio +v#l = +v#l 4 5; // escala de 8 bits (0-255)
+v#l = 2 6 +v#l; // salida invertida volve" +v#l;
N>btener códigoO
%ara llamar a nuestra función nos asignamos a una $ariable. +en+ int; +en+ = .e#d!en+/#nd/0ondition ();
Ceferencia nicio
N>btener códigoO
Correcciones, sugerencias, y nueva documentación deberán ser publicadas en el Foro .
El te)to de la referencia de Arduino está licenciado ba#o una licencia de @reati$e @ommons M.< Ceconocimiento4@ompartir ba#o la misma . ,os e#emplos de código de la referencia están liberados al dominio pPblico.
%ines digitales ,as cla$i#as del Arduino se pueden con8gurar como entradas o salidas. Este documento e)plica el funcionamiento de los pasadores en esos modos. (ientras que el título de este documento se re8ere a los pines digitales es importante tener en cuenta que gran mayoría de Arduino &Atmega+ pines analógicos puede estar con8gurado y se utili"a e)actamente de la misma manera que los pines digitales.
%ropiedades de los botones con8gurados como entrada Arduino &Atmega+ pasadores por defecto a los insumos por lo que no necesitan ser declaradas e)plícitamente como entradas con pin(ode &+ cuando se está utili"ando como insumos. %rendedores con8gurados de esta manera se dice que están en un estado de alta impedancia. %ines de entrada hacen e)tremadamente pequeHas demandas en el circuito que están muestreo equi$alentes a una resistencia en serie de F<< megaohmio en frente del pasador. Esto signi8ca que se necesita muy poca corriente para mo$er el pin de entrada de un estado a otro y puede hacer que los pasadores Ptiles para tareas como la implementación de un sensor táctil capaciti$a la lectura de un ,E/ como un fotodiodo o la lectura de un sensor analógico con un esquema tales como C@7ime.
Esto también signi8ca sin embargo que los pines con8gurados como pin(ode &pin 2%I7+ sin nada conectado a ellos o con cables conectados a los que no están conectados a otros circuitos reportarán cambios aparentemente al a"ar en el estado de pin la captación de ruido eléctrico de la medio ambiente o capaciti$amente acoplar el estado de un pasador de cerca.
,as resistencias pullup pines con8gurados como entrada A menudo es Ptil para dirigir un pin de entrada a un estado conocido si no hay entrada está presente. Esto puede hacerse mediante la adición de una resistencia pull4up &a ;B+ o una resistencia pulldo!n &resistencia a tierra+ en la entrada. Ina resistencia de F
%ropiedades de pines con8gurados como 2%I7Y%I,,I% 0ay 5 cuando el interruptor está abierto y ,>= cuando se pulsa el interruptor. ,as resistencias de pullup proporcionan su8ciente corriente para iluminar tenuemente un ,E/ conectado a un pin que se ha con8gurado como una entrada. *i los ,E/ en un proyecto parecen estar funcionando pero muy débilmente esto es probable que lo que está pasando.
,as resistencias de pull4up están controladas por los mismos registros &ubicaciones de memoria interna+ de chips que controlan si un pin es alto o ba#o. En consecuencia un al8ler que está con8gurado para tener resistencias pullup enciende cuando el pin es una entrada tendrá el pin con8gurado como A,7> si el pasador se conmutará luego a una salida con pin(ode &+. Esto funciona en la otra dirección así y un pin de salida que se de#a en un estado de alta tendrá las resistencias pullup establecidos se pase a una entrada con pin(ode &+. Antes de Arduino F.<.F es posible con8gurar los pull4ups internas de la siguiente manera9 pin(ode &pin 2%I7+- KK @on#unto pines a la entrada digital=rite &pin 0D0+- KK Encender resistencias pullup
2>7A9 pin digital FM es difícil de usar como una entrada digital que los otros pines digitales ya que tiene un ,E/ y una resistencia conectada que está soldada a la placa en la mayoría de las placas. *i habilita su resistencia pull4up interno 5. *i tiene que usar el pin FM como entrada digital a#uste su pin(ode &+ para introducir y utili"ar una resistencia de pull do!n e)terno.
%ropiedades de los botones con8gurados como *A,/A %rendedores con8gurados como salida con pin(ode &+ se dice que están en un estado de ba#a impedancia. Esto signi8ca que pueden proporcionar una cantidad sustancial de la corriente a otros circuitos. Atmega pasadores pueden fuente &proporcionar corriente positi$a+ o hundirse &proporcionar corriente negati$a+ hasta 6< mA &miliamperios+ de corriente a otros dispositi$os K circuitos. Esto es su8ciente corriente para brillantemente lu" un ,E/ &no se ol$ide de la resistencia en serie+ o e#ecutar muchos sensores por e#emplo pero no su8ciente corriente para e#ecutar la mayoría de los relés solenoides o motores. ,os cortocircuitos en los pines de Arduino o intentar e#ecutar los dispositi$os de alta corriente de ellos pueden daHar o destruir los transistores de salida en el pin o daHar todo el chip A7mega. A menudo esto se traducirá en un pasador RmuertoR en el microcontrolador pero el chip restante seguirá funcionando adecuadamente. %or esta ra"ón es una buena idea para conectar los pines de salida a otros dispositi$os con 6[
menos que se requiere la má)ima e)tracción de corriente de las cla$i#as para una aplicación particular.
pin(ode &+ /escripción @on8gura el pin especi8cado a comportarse ya sea como una entrada o una salida. Béase la descripción de los pines digitales para obtener más información sobre la funcionalidad de los pines. A partir de Arduino F.<.F es posible acti$ar las resistencias de pull4up internas con la 2%I7Y%I,,I% modo. Además el modo de E27CA/A desacti$a e)plícitamente las dominadas internos.
*inta)is pin(ode &pin modo+
%arámetros pin9 el nPmero del pin cuyo modo que desea a#ustar modo9 E27CA/A *A,/A o 2%I7Y%I,,I% . &Ber el pines digitales página para una descripción más completa de la funcionalidad+.
/e$oluciones 2inguno
E#emplo int ledPin = 13; // LE conectado al pin digital !" void setup () { pinMode (ledPin, OUTPUT); // establece el pin digital como salida
void loop () { di-it#l7"ite (ledPin, 89:8); // establece el LE "et#"do (1'''); // espera #n seg#ndo di-it#l7"ite (ledPin, O7); // establece el LE apagado "et#"do (1'''); // espera #n seg#ndo N>btener códigoO
2ota ,os pines de entrada analógica se pueden utili"ar como pines digitales referido como A< AF etc.
digital=rite &+ /escripción Escribe una A,7A o una 1A\A $alor a un pin digital. *i el pasador se ha con8gurado como una salida con pin(ode &+ su $olta#e se establece en el $alor correspondiente9 ;B &M.MB o en los tablones de MM B+ para 0D0 + o desacti$ar &1A\>+ el pull4up interna en el pin de entrada. *e recomienda a#ustar la pin(ode &+ para 2%I7Y%I,,I% para habilitar la resistencia de actuación interna. Ber los pines digitales tutorial para más información. 2>7A9 *i no se establece la pin(ode &+ a *A,/A y conectar un ,E/ a un pasador al llamar digital=rite &A,7>+ el ,E/ puede aparecer tenue. *in establecer e)plícitamente pin(ode &+ digital=rite &+ le han permitido a la resistencia de actuación interna que actPa como una gran resistencia limitadora de corriente.
*inta)is digital=rite &pin $alor+
%arámetros pin9 el nPmero de %2 $alor9 A,7A o 1A\A
/e$oluciones ninguno
E#emplo int led%in FM- KK ,E/ conectado al pin digital FM $oid setup &+ S pin(ode &led%in >I7%I7+- KK Establece el pin digital como salida T $oid loop &+ S digital=rite &led%in 0D0+- KK Establece el ,E/ en retardo &F<<<+- KK Espera un segundo digital=rite &led%in ,>=+- KK Establece el ,E/ apagado retardo &F<<<+- KK Espera un segundo T
Establece pin FM a A,7> hace un segundo de larga demora y establece el pasador de $uelta a ,>=.
2ota ,os pines de entrada analógica se pueden utili"ar como pines digitales referido como A< AF etc.
digitalCead &+ /escripción ,ee el $alor de un pin digital especi8cado ya sea A,7A o 1A\A .
*inta)is digitalCead &pin+
%arámetros pin9 el nPmero del pin digital que desee leer (int)
/e$oluciones A,7A o 1A\A
E#emplo
Establece el pin FM para el mismo $alor que el pin [ declarado como una entrada. int ledPin = 13; // LE conectado al pin digital !" int inPin = <; // p#lsador conectado al pin digital $ int v#l = '; // variable para almacenar el valor de lect#ra
void setup () { pinMode (ledPin, OUTPUT); // establece el pin digital !" como salida
pinMode (inPin, 9PUT); // establece el pin digital $ como entrada
void loop () { v#l = di-it#l.e#d (inPin); // leer el pin de entrada di-it#l7"ite (ledPin, v#l); // establece el LE al valor del botón
N>btener códigoO
2ota *i el pasador no está conectada a nada digitalCead &+ puede regresar ya sea alta o ba#a &y esto puede cambiar aleatoriamente+.
%ines de entrada analógica Ina descripción de los pines de entrada analógica en un chip de Arduino &Atmega AtmegaFG AtmegaM5 o A7megaF5<+.
In con$ertidor A K / ,os controladores Atmega utili"ados para el Arduino contienen un con$ertidor de analógico a digital &A K /+ a bordo de G canales. El con$ertidor tiene una resolución de F< bits $ol$iendo enteros de < a F<5M. *i bien la función principal de los pines analógicos para la mayoría de los usuarios de Arduino es leer sensores analógicos los pines analógicos también tienen toda la funcionalidad de entrada de propósito general K salida &D%>+ pasadores &el mismo que los pines digitales < 4 FM+. En consecuencia si un usuario necesita pines de salida de entrada propósito más general y todos los pines analógicos no están en uso los pines analógicos se pueden usar para D%>.
(apeo %in ,os pines analógicos se pueden usar de forma idéntica a los pines digitales utili"ando los alias A< ¶ la entrada analógica <+ AF etc. %or e#emplo el código se $ería así de con8gurar el pin analógico < a una salida y para establecerlo A,7A 9 pin(ode &A< >I7%I7+ digital=rite &A< 0D0+-
Cesistencias pullup ,os pines analógicos también tienen resistencias de pull4up que funcionan de forma idéntica a pullup resistencias en los pines digitales. Ellos están habilitados mediante la emisión de un comando como digital=rite &A< 0D0+- KK Establecer pull4up en el pin analógico < mientras que el pin es una entrada.
7enga en cuenta sin embargo que encender un pull4up afectará a los $alores reportados por analogCead &+.
/etalles y Ad$ertencias El comando analogCead no funcionará correctamente si un al8ler se ha a#ustado pre$iamente a una salida por lo que si este es el caso a#uste de nue$o a una entrada antes de usar analogCead. /el mismo modo si el pasador se ha establecido en alto como una salida se establecerá la resistencia de pull4up cuando se $uel$e a una entrada. Esta ho#a de datos A7mega también ad$ierte contra el cambio pines analógicos en pro)imidad temporal cerca de hacer lecturas A K / &analogCead+ en otros pines analógicos. Esto puede hacer que el ruido eléctrico e introducir #itter en el sistema analógico. %uede ser deseable después de manipular pines analógicos &en modo digital+ para agregar un pequeHo retraso antes de usar analogCead &+ para leer otros pines analógicos.