{"id":110,"date":"2017-02-02T10:43:33","date_gmt":"2017-02-02T10:43:33","guid":{"rendered":"http:\/\/escueladefrikis.com\/?p=110"},"modified":"2017-02-02T10:43:33","modified_gmt":"2017-02-02T10:43:33","slug":"primer-proyecto-arduino-encender-led","status":"publish","type":"post","link":"https:\/\/escueladefrikis.com\/index.php\/2017\/02\/02\/primer-proyecto-arduino-encender-led\/","title":{"rendered":"Primer proyecto con Arduino: encender un led"},"content":{"rendered":"<p>Hoy vamos a realizar el primer proyecto con Arduino. Por un lado ya hemos sido capaces de <a href=\"https:\/\/www.escueladefrikis.com\/2017\/01\/21\/primeros-pasos-con-arduino\/\">configurar correctamente nuestro Arduino<\/a> y adem\u00e1s hemos visto <a href=\"https:\/\/www.escueladefrikis.com\/2017\/01\/30\/diodos-y-leds\">qu\u00e9 es un LED, c\u00f3mo funciona y c\u00f3mo hacer que emita luz<\/a>.<\/p>\n<p>As\u00ed que nuestro siguiente paso es hacer un peque\u00f1o programa para encender un LED a nuestro antojo.<\/p>\n<p><!--more--><\/p>\n<h3>Circuito y conexi\u00f3n a Arduino<\/h3>\n<p>El circuito que queremos realizar es el que nos permite encender un LED, es decir, el circuito de polarizaci\u00f3n directa de un LED que vimos en un <a href=\"https:\/\/www.escueladefrikis.com\/2017\/01\/30\/diodos-y-leds\">post anterior<\/a>:<\/p>\n<table style=\"width: 1141px;\">\n<tbody>\n<tr>\n<td style=\"width: 492.902px;\">\n<p><figure id=\"attachment_86\" aria-describedby=\"caption-attachment-86\" style=\"width: 209px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-86\" src=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/circuito_polarizacion_directa_led-1-209x300.gif\" alt=\"Circuito de polarizaci\u00f3n directa de un LED\" width=\"209\" height=\"300\" \/><figcaption id=\"caption-attachment-86\" class=\"wp-caption-text\">Circuito de polarizaci\u00f3n directa de un LED<\/figcaption><\/figure><\/td>\n<td style=\"width: 647.098px;\">\n<p><figure id=\"attachment_97\" aria-describedby=\"caption-attachment-97\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-97\" src=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/circuito_prueba_fuente_conectada-1-300x295.jpg\" alt=\"Circuito de prueba de LED - Fuente conectada\" width=\"300\" height=\"295\" srcset=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/circuito_prueba_fuente_conectada-1-300x295.jpg 300w, https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/circuito_prueba_fuente_conectada-1.jpg 671w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-97\" class=\"wp-caption-text\">Circuito de prueba de LED &#8211; Fuente conectada<\/figcaption><\/figure><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>En este circuito,\u00a0vamos a sustituir la pila por conexiones a nuestra placa de Arduino de manera que podamos encender y apagar a nuestro antojo. Para ello vamos a utilizar los pines digitales de la placa. En una salida <strong>digital<\/strong>, o mejor dicho <strong>binaria<\/strong>, s\u00f3lo dos posibles valores:<\/p>\n<ul>\n<li><strong>\u00abHIGH\u00bb<\/strong> (\u00abalto\u00bb en ingl\u00e9s), que equivale a un<strong> \u00ab1\u00bb l\u00f3gico<\/strong> y que el\u00e9ctricamente es <strong>+5 voltios<\/strong>. Como ya sabemos, este voltaje es suficiente para superar la tensi\u00f3n umbral del LED y que se encienda.<\/li>\n<li><strong>\u00abLOW\u00bb<\/strong> (\u00abbajo\u00bb en ingl\u00e9s), que equivale a un <strong>\u00ab0\u00bb l\u00f3gico<\/strong> y que el\u00e9ctricamente es <strong>+0 voltios<\/strong>.<\/li>\n<\/ul>\n<p>\u00bfD\u00f3nde debemos conectar en nuestra placa Arduino? Pues tenemos que encontrar qu\u00e9 pines van a ser el polo positivo (+) y el polo negativo (-) de nuestra pila.<\/p>\n<ul>\n<li>En nuestra placa tenemos un pin que indica \u00abGND\u00bb, que es la abreviatura de \u00abGround\u00bb en ingl\u00e9s, que significa \u00abtierra\u00bb. Este es el punto de referencia para todo el circuito y para nosotros equivale a los 0 voltios. En wikipedia ten\u00e9is la explicaci\u00f3n de \u00abtierra\u00bb, pero est\u00e1 mejor explicado en la versi\u00f3n inglesa, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Ground_(electricity)\">\u00abground (electricity)\u00bb<\/a> :<\/li>\n<\/ul>\n<p style=\"padding-left: 60px;\"><em>\u00abIn electrical engineering, ground or earth is the reference point in an electrical circuit from which voltages are measured,<strong> a common return path for electric current<\/strong>, or a direct physical connection to the Earth.\u00bb<\/em><\/p>\n<p style=\"padding-left: 60px;\">Adem\u00e1s la indicaci\u00f3n del punto de referencia que hab\u00eda explicado antes, a\u00f1ade otro concepto que es muy \u00fatil: <em>\u00abel camino de regreso de la corriente el\u00e9ctrica\u00bb<\/em>. Fij\u00e1ndonos en nuestro circuito, la corriente sale por el polo positivo de la pila y vuelve por el polo negativo. As\u00ed pues,\u00a0nuestro cable negro del circuito, que era el polo negativo (-) de la pila, lo vamos a conectar al pin \u00abGND\u00bb.<\/p>\n<ul>\n<li>Dado que ya tenemos el polo negativo (-) que es la referencia para el circuito conectado al pin de tierra (\u00abGND\u00bb), el polo positivo (+) es mucho m\u00e1s f\u00e1cil: cualquier pin que sea salida digital. La placa Arduino en este caso nos lo pone muy f\u00e1cil: todos los pines digitales pueden ser tanto de salida como de entrada.<\/li>\n<\/ul>\n<p>En resumidas cuentas.<\/p>\n<ul>\n<li>Cable negro del circuito, lo que antes era el polo negativo (-) de la pila, conectado al pin \u00abGND\u00bb.<\/li>\n<li>Cable rojo del circuito, lo que antes era el polo positivo (+), conectado a un pin digital. Yo he elegido el pin 12.<\/li>\n<\/ul>\n<p>Y tendr\u00e9is algo tan bonito como esto:<\/p>\n<figure id=\"attachment_112\" aria-describedby=\"caption-attachment-112\" style=\"width: 1024px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-112\" src=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/2017-01-29-20.10.16-1.jpg\" alt=\"Circuito de encendido de LED: conexi\u00f3n a la placa\" width=\"1024\" height=\"759\" srcset=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/2017-01-29-20.10.16-1.jpg 1024w, https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/2017-01-29-20.10.16-1-300x222.jpg 300w, https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/2017-01-29-20.10.16-1-768x569.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption id=\"caption-attachment-112\" class=\"wp-caption-text\">Circuito de encendido de LED: conexi\u00f3n a la placa<\/figcaption><\/figure>\n<h3>Programa en Arduino<\/h3>\n<p>Una vez tenemos conectada nuestro Arduino a nuestra placa vamos a programarla. Para ello, lo primero:<\/p>\n<ul>\n<li>Conectamos la placa por USB al ordenador<\/li>\n<li>Abrimos nuestro Arduino IDE<\/li>\n<li>Comprobamos que la placa est\u00e1 bien conectada<\/li>\n<\/ul>\n<p>Nada que no hayamos probado ya antes y que explic\u00e1bamos en <a href=\"https:\/\/www.escueladefrikis.com\/2017\/01\/21\/primeros-pasos-con-arduino\/\">esta entrada anterior<\/a>. Nuestro programa est\u00e1 basado en el ejemplo \u00abBlink\u00bb y es as\u00ed:<\/p>\n<pre>\/\/ Constantes\nconst int PIN2BLINK=12;\nconst int DELAYTIME=1000; \/\/ tiempo de espera: un segundo\n\n\/\/ Funcion de inicializacion\nvoid setup() {\n \/\/ Configuramos el pin como salida\n pinMode(PIN2BLINK, OUTPUT);\n}\n\n\/\/ Bucle infinito de ejecucion\nvoid loop() {\n digitalWrite(PIN2BLINK, HIGH); \/\/ Encendemos el LED\n delay(DELAYTIME); \/\/ wait\n digitalWrite(PIN2BLINK, LOW); \/\/ Apagamos el LED\n delay(DELAYTIME); \/\/ wait\n}<\/pre>\n<p>La explicaci\u00f3n del c\u00f3digo es la siguiente:<\/p>\n<ul>\n<li>Al comienzo del c\u00f3digo se incluyen las constantes que ser\u00e1n utilizadas en el resto del c\u00f3digo. En nuestro caso tenemos dos variables:\n<ul>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">PIN2BLINK<\/span>: qu\u00e9 pin vamos a utilizar para hacer parpadear el LED. El pin seleccionado es el 12.<\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">DELAYTIME<\/span>: que es el tiempo entre que lo encendemos y apagamos. Este tiempo est\u00e1 en milisegundos as\u00ed que un valor de 1000 representa un segundo.<\/li>\n<\/ul>\n<\/li>\n<li>Funci\u00f3n <span style=\"font-family: 'courier new', courier, monospace;\">setup()<\/span>: es la parte de c\u00f3digo que se va a ejecutar antes de entrar en un bucle infinito y sirve para ejecutar las sentencias que s\u00f3lo es necesario realizar una vez. \u00bfCu\u00e1les son estas sentencias? Las que nos permiten configurar la placa. En este caso configuramos el pin <span style=\"font-family: 'courier new', courier, monospace;\">PIN2BLINK<\/span> como salida.<\/li>\n<\/ul>\n<pre> pinMode(PIN2BLINK, OUTPUT);<\/pre>\n<ul>\n<li>Funci\u00f3n <span style=\"font-family: 'courier new', courier, monospace;\">loop()<\/span>: es la parte de c\u00f3digo que se ejecutar\u00e1 infinitamente. \u00bfQu\u00e9 hacemos en nuestro caso?\n<ol>\n<li>Encendemos el LED, haciendo que en el pin <span style=\"font-family: 'courier new', courier, monospace;\">PIN2BLINK<\/span> tenga el valor de un <span style=\"font-family: 'courier new', courier, monospace;\">\u00ab1\u00bb<\/span> l\u00f3gico, que es representado por la constante <span style=\"font-family: 'courier new', courier, monospace;\">\u00abHIGH\u00bb<\/span> y que significa que ponemos ese pin a +5 voltios. Como el pin est\u00e1 en modo salida (<span style=\"font-family: 'courier new', courier, monospace;\">OUTPUT<\/span>) la operaci\u00f3n que realizamos es escribir un <span style=\"font-family: 'courier new', courier, monospace;\">\u00ab1\u00bb<\/span> en el pin <span style=\"font-family: 'courier new', courier, monospace;\">PING2BLINK<\/span>:\n<pre> digitalWrite(PIN2BLINK, HIGH); \/\/ Encendemos el LED<\/pre>\n<\/li>\n<li>Esperamos un tiempo <span style=\"font-family: 'courier new', courier, monospace;\">DELAYTIME<\/span> antes de realizar otra acci\u00f3n.\n<pre> delay(DELAYTIME); \/\/ wait<\/pre>\n<\/li>\n<li>Apagamos el LED escribiendo un <span style=\"font-family: 'courier new', courier, monospace;\">\u00ab0\u00bb<\/span> l\u00f3gico (<span style=\"font-family: 'courier new', courier, monospace;\">\u00abLOW\u00bb<\/span>) en el mismo pin.<\/li>\n<li>Volvemos a esperar.<\/li>\n<li>Y vuelva al punto 1.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p>Ya tenemos nuestro programa. \u00bfComo hacemos que nuestro Arduino ejecute nuestro programa?. Tendremos que hacer los siguientes pasos:<\/p>\n<ul>\n<li><strong>Validar el programa:<\/strong> el Arduino IDE comprueba que el programa est\u00e1 bien escrito y no hay ning\u00fan error. Para validar el programa lo m\u00e1s sencillo es pulsar sobre el icono <img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-115 size-full\" src=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/boton_compilar_validar-1.gif\" width=\"28\" height=\"32\" \/>Si ten\u00e9is un error de compilaci\u00f3n os aparecer\u00e1 algo\u00a0como esto:\n<figure id=\"attachment_114\" aria-describedby=\"caption-attachment-114\" style=\"width: 483px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-114\" src=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/error_compilacion-1.jpg\" alt=\"Error de compilaci\u00f3n Arduino\" width=\"483\" height=\"592\" srcset=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/error_compilacion-1.jpg 483w, https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/error_compilacion-1-245x300.jpg 245w\" sizes=\"auto, (max-width: 483px) 100vw, 483px\" \/><figcaption id=\"caption-attachment-114\" class=\"wp-caption-text\">Error de compilaci\u00f3n Arduino<\/figcaption><\/figure>\n<p>En mi caso est\u00e1 indicando que se me ha olvidado el car\u00e1cter <span style=\"font-family: 'courier new', courier, monospace;\">\u00ab;\u00bb<\/span> al final de una sentencia.<\/li>\n<li>Una vez ya no tenemos ning\u00fan error, transferimos el programa compilado a nuestra placa con el icono\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-116\" src=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/boton_transferir-1.gif\" alt=\"Bot\u00f3n transferir\" width=\"28\" height=\"29\" \/><\/li>\n<\/ul>\n<p>Si todo ha ido bien, nuestro LED se pondr\u00e1 a parpadear:<\/p>\n<div style=\"width: 1920px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-110-1\" width=\"1920\" height=\"1080\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/VID_20170129_211936-1.mp4?_=1\" \/><a href=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/VID_20170129_211936-1.mp4\">https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/01\/VID_20170129_211936-1.mp4<\/a><\/video><\/div>\n<h3>M\u00e1s Pruebas<\/h3>\n<p>Ya tenemos nuestro primer proyecto realizado, lo que viene a ser el HelloWorld del mundo Arduino. Con este primer circuito os propongo algunas pruebas que pod\u00e9is realizar:<\/p>\n<ul>\n<li>Podemos variar el tiempo para que parpadee m\u00e1s r\u00e1pido o m\u00e1s lento. Si aumentamos el tiempo, parpadear\u00e1 m\u00e1s lento, pues no tiene mucha gracia (parpadea m\u00e1s lento y punto), pero si disminuimos el tiempo, parpadear\u00e1 m\u00e1s r\u00e1pido y si lo disminuimos much\u00edsimo, llega un punto en que parece que est\u00e1 siempre encendido, aunque en realidad s\u00f3lo est\u00e1 encendido la mitad del tiempo.<br \/>\n<strong>Pregunta:<\/strong> \u00bfCon qu\u00e9 tiempo os parece siempre encendido?<br \/>\n<strong>Nota:<\/strong> no tengo ni idea pero puede que esta prueba de disminuir el tiempo pueda ser peligroso para una persona epil\u00e9ptica. Cuidado con esto.<\/li>\n<li>Podemos hacer que el tiempo que est\u00e1 encendido y el tiempo que est\u00e1 apagado sea distinto utilizando constantes distintas.<\/li>\n<li>Podemos a\u00f1adir m\u00e1s LEDS al circuito.<br \/>\n<strong>Pregunta:<\/strong> \u00bfcu\u00e1ntos LEDS seguidos es capaz de encender una salida digital? Y lo m\u00e1s importante \u00bfPor qu\u00e9?<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Hoy vamos a realizar el primer proyecto con Arduino. Por un lado ya hemos sido capaces de configurar correctamente nuestro Arduino y adem\u00e1s hemos visto qu\u00e9 es un LED, c\u00f3mo funciona y c\u00f3mo hacer que emita luz. As\u00ed que nuestro siguiente paso es hacer un peque\u00f1o programa para encender un LED a nuestro antojo.<\/p>\n","protected":false},"author":2,"featured_media":151,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[10,26],"class_list":["post-110","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","tag-arduino","tag-principiante"],"jetpack_featured_media_url":"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/02\/arduino_led_encendido-1.jpg","_links":{"self":[{"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/posts\/110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/comments?post=110"}],"version-history":[{"count":0,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/posts\/110\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/media\/151"}],"wp:attachment":[{"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/media?parent=110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/categories?post=110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/tags?post=110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}