![Page 1: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/1.jpg)
![Page 2: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/2.jpg)
ElcontenidodelaobrahasidodesarrolladoexclusivamenteporlosmiembrosdelequipodeTimeofSoftware.
Reservados todos los derechos. Queda rigurosamente prohibida, sin laautorizaciónescritadeTimeofSoftware,bajolassancionesestablecidasenlasleyes, la reproducción parcial o total de esta obra por cualquier medio oprocedimiento,incluidoslareprografíayeltratamientoinformático,asícomoladistribucióndeejemplaresmediantealquileropréstamopúblico.Paramásinformaciónvisita:www.timeofsoftware.comwww.aprendeenunfindesemana.com
![Page 3: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/3.jpg)
TABLADECONTENIDO
INTRODUCCIÓN¿QUÉNECESITOPARAEMPEZAR?PROCESODEAPRENDIZAJE
OrganizaciónDistribucióndelfindesemana
GLOSARIO¿QUÉESLAROBÓTICA?
LeyesdelaRobóticaARDUINO
¿PorquéapareceArduino?¿QuéesArduino?ComponentesplacadeArduinoPinesdigitalesPinesanalógicosPinesalimentaciónsensoresMicrocontroladordecomunicacionesMicrocontroladordeprogramaciónBotónresetPuertoUSBConectordeAlimentación¿ArduinoyRobótica?Ventajas
ENTORNODEDESARROLLOEntornowebAplicativoInstalacióndeArduinoenmacOSInstalacióndeArduinoenWindowsInstalacióndeArduinoenLinux
FAMILIARIZÁNDOTECONELENTORNODEDESARROLLOPantallaprincipalMenúprincipalMenúArchivoMenúProgramaMenúHerramientasBarradeaccesorápidoVerificarSubirNuevoAbrirSalvarMonitorSerie
ANTESDEEMPEZAREstructuradeunprogramaComponentescomunesentodoslosmontajesPlacaArduinoProtoboardCableUSB
![Page 4: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/4.jpg)
CablesResistenciasLEDLEDRGBPotenciómetroZumbadorSensordeluz(LDR)SensordehumedadytemperaturaSensordepresenciaSensordeaguaPantallaLCD
OBJETIVO1–MANEJOLEDSExplicaciónFuncionesdeprogramación#definepinModedigitalWriteanalogWritedelayforVariablesMaterialesFase1:InteractuarconunLEDMontajefísicoProgramaciónFase2:InteractuarconvariosLEDSMontajefísicoProgramaciónFase3:InteractuarconunLEDRGBMontajefísicoProgramacióndigitalProgramaciónanalógicaAhoraerescapazde…
OBJETIVO2–MANEJOPULSADORESExplicaciónFuncionesdeprogramacióndigitalReadifINPUT_PULLUPMaterialesFase1:EncenderyapagarvariosLEDSconunpulsador(Versión1)MontajefísicoProgramaciónFase2:EncenderyapagarvariosLEDSconunpulsador(Versión2)MontajefísicoProgramaciónAhoraerescapazde…
PROYECTO-CrearunsemáforoExplicaciónMaterialesMontajefísico
![Page 5: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/5.jpg)
ProgramaciónCódigofuente
OBJETIVO3–MANEJODEPOTENCIÓMETROSExplicaciónFuncionesdeprogramaciónanalogReadanalogWritemapMaterialesFase1:ControldesonidodeunzumbadorconunpotenciómetroMontajefísicoProgramaciónFase2:ControldeencendidodeLEDSconunpotenciómetroMontajefísicoProgramaciónAhoraerescapazde…
OBJETIVO4–MANEJODESENSORESExplicaciónFuncionesdeprogramaciónLibrerías#includeMaterialesFase1:LecturadeunsensorLDRMontajefísicoProgramaciónFase2:SeguridadconsensordepresenciaMontajefísicoProgramaciónFase3:LecturadeunsensordetemperaturayhumedadMontajefísicoProgramaciónSalidadelalectura(monitorserie)Ahoraerescapazde…
PROYECTOFINAL–ControlatucasaExplicaciónMaterialesMontajefísicoProgramación
¡CONSEGUIDO!SOBRELOSAUTORESYAGRADECIMIENTOS
![Page 6: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/6.jpg)
INTRODUCCIÓN¡Bienvenid@!¡SiestásleyendoéstoesporquehasdecididoaprenderArduino!¡Buenaidea!Todoelmundohapronunciadoohaescuchadoalgunavezensuvidaestasdosfrasesrefiriéndosealhechodeaprenderalgonuevo:
Notengotiempoparaaprenderlo.Esmuydifícil.
Seguroquesí,¿verdad?Puesconeste libro tevasadarcuentaqueaprenderArduinoesfácily…¡quesepuedehacerenuntiemporecord!Hemosdiseñadounmétodoconelquepodrásaprendertodoloquenecesitassaber para tener una base que permita ir desenvolviéndote poco a poco encualquierproyectoqueteplanteeshacerconArduino.Elmétodosebasaenunaprendizajeprogresivo,adentrándoseyprofundizandoenaquellosconceptosbásicosdeelectrónicayprogramaciónquenecesitasentenderparacomenzaratrabajarenel“MundoArduino”.Todoello…¡enunfindesemana!Una vez hayas acabado el libro, siguiendo el modo de aprendizaje que teproponemos,podemosgarantizartequevasasercapazdetenerlaautonomíasuficienteparallevaracabotuspropiosproyectos,oalmenoslanzarteaquelo intentes, ya que habrás adquirido unos conocimientos suficientes que tepermitirán diseñar y montar tus propios circuitos, desarrollar el código deprogramaciónylomejordetodo,verlosresultadosdetuspropiosproyectos.Estamossegurosdequesinosacompañashastael finaldel librose tevanaocurrirunacantidadgrandedeideaspararealizarconArduino,yaquecuantosmásconocimientosvasaprendiendo,máscuriosidaddesarrollarásymásideasteiránsurgiendo.Teanimamosaquecomiencesaadentrarteenestemundoydisfrutesconcadaproyecto.Nodesesperessinoloconsiguesalaprimera,yaqueseguroquedecadaerroraprendesalgoque tesirveparaseguiravanzando.Éstoessoloelcomienzo,yArduinonotienelímites,aligualquetuimaginación.
![Page 7: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/7.jpg)
¿QUÉNECESITOPARAEMPEZAR?ParaaprenderArduinoenun finde semana talycomo teproponemosaquí,necesitarás una serie de elementos que te permitirán realizar todos los retosqueteplanteamos.LoquenecesitasparapoderempezaratrabajarconArduinoes:
Unordenador, con total independencia del sistemaoperativo que tengainstalado. Si no dispones de conexión a internet deberás de descargardesde cualquier ordenador el ejecutable de instalación del entorno dedesarrollo de Arduino e instalarlo en el ordenador que vas a utilizardurante todoel aprendizaje.En losapartados siguientes teexplicaremoslospasosaseguirpara instalarelentornodedesarrolloencadaunodelos sistemas operativos soportados por la plataforma de desarrollo deArduino.
PlacadeArduino.
Kitdecomponenteselectrónicosbásico.
TantolaplacacomoelkitpuedesadquirirloenAmazon.Yporsupuesto…¡unfindesemana!
![Page 8: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/8.jpg)
PROCESODEAPRENDIZAJE
![Page 9: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/9.jpg)
ORGANIZACIÓNElaprendizajeestádivididoendospartesclaramentediferenciadas:
TeoríaypuestaenmarchaPráctica
Laprimeraparteestácompuestaporunafaseexclusivamenteteórica,enlaqueaprenderás conceptos básicos para que te desenvuelvas sin problema conArduino.Además,estaparteincluyetodolonecesarioparaqueseascapazdemontar todala infraestructurasoftwarequenecesitasparaempezara trabajarconArduino,juntoconlaexplicacióndetalladadelentornodedesarrollo.El aprendizaje práctico está dividido en cuatro Objetivos diferentes y dosProyectos para afianzar los conocimientos adquiridos en los diferentesObjetivos.LosObjetivostienendificultadincremental;amedidaquesevaavanzandosevan adquiriendo nuevos conocimientos de mayor complejidad que losanteriores. Los Objetivos están compuestos por diferentes ejercicios quellamaremosFases.EncadaObjetivoseindica,antesdeempezar,losmaterialesquesenecesitany las funcionesdeprogramacióncomunesa todas lasFasesquecomponenelObjetivo.UnaFaseesunejercicioqueprofundizaenunáreadeconocimientodentrodelObjetivo.EncadaFaseseindicaelmontajefísicodelcircuitoyelcódigodelprogramaArduino.LosProyectossonejerciciosdedificultadavanzadaquepermitenafianzarlosconocimientosadquiridosenlosObjetivosanteriores.DuranteelaprendizajeserealizandosProyectos.ElprimerodeellosestábasadoenlosdosprimerosObjetivos,yserealizadespuésdeacabarelsegundoObjetivoyelsegundosebasaenloscuatroObjetivosyserealizaalacabarelcuartoObjetivo.
![Page 10: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/10.jpg)
DISTRIBUCIÓNDELFINDESEMANAElmétododeaprendizajehasidodiseñadoyoptimizadoparaqueseascapazde aprender Arduino en un fin de semana. Obviamente, el tiempo deaprendizaje puede verse modificado ligeramente por los conocimientospreviosquetengas.La secuencia de aprendizaje que debes seguir para alcanzar el objetivo deaprenderArduinoeslasiguiente:
Ilustración1.Organiz aciónde l apre ndiz aje
![Page 11: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/11.jpg)
GLOSARIOA continuación te mostramos todos los términos relevantes que vamos autilizar durante todo el libro y que necesitas conocer para llevar a cabo elaprendizaje.CódigofuenteEselconjuntodelíneasdetextoqueformanunprograma.Laslíneasdetextoindicancómosedebeejecutardichoprogramayloquetienequehacer.El código fuente se escribe en un lenguaje específico de programación quetienequesertraducidoallenguajequeentiendeelordenador.SentenciaUnasentenciaescadaunadelaslíneasdelcódigofuente.LenguajedeprogramaciónLenguaje formal utilizado por los ingenieros de software para escribirprogramas. Mediante el lenguaje de programación se indican todas lassentenciasquedebedeejecutarelprograma.CompilarProcesodetraducirelcódigofuenteallenguajequeentiendeelordenador.LenguajemáquinaLenguajequeentiendeelordenadoryalqueescompiladoelcódigofuente.BucleSentencia específica que se repite durante un tiempo. El número derepeticionespuedeirenfuncióndediversosfactores,peroestánindicadosenlapropiasentenciaenlaquesedefineelbucle.ConstanteUnaconstanteesunvalorquenocambiaen toda laejecucióndelprograma.Paracrearconstantesenelcódigofuenteseutilizansentenciasespecíficas.VariableUnavariableesunvalorquecambiadurantelaejecucióndelprograma.Paracrearvariablesenelcódigofuenteseutilizansentenciasespecíficas.
![Page 12: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/12.jpg)
LibreríaConjuntode funcionalidadesquese incluyenen losprogramasyquenosondesarrolladasenélyaquepertenecenaotrasaplicaciones.InterfazElementosoftwarequesirveparacomunicardoselementosentresímedianteelconjuntodeoperacionesquedefine.PinCadaunadelasentradasosalidasquetienelaplacadeArduino.Unpinpuedeconfigurarse como entrada o como salida y es donde conectaremos loscomponentespara interactuarconellos.LaplacadeArduino tienediferentestiposdepines:digitales,analógicos,etc.SalidaProceso de enviar datos desde la placa de Arduino a los componentes delcircuitoelectrónico.EntradaProcesode recibirdatosdesde loscomponentesdel circuitoelectrónicoa laplacadeArduino.PrototipoEselresultadoderealizarunprocesodeprototipado.Elprocesoconsisteenlaconstrucción rápida del objetivo a conseguir sin tener un conocimientoprofundode todas las fasesdelprocesograciasa lautilizaciónde técnicasyherramientasquelopermiten.HardwareConjuntodeelementosfísicosomaterialesqueconstituyenunordenadorounsistemainformático.SoftwareConjuntodeprogramasyprocesosquepermitenalordenador la realizacióndedeterminadastareas.CPUConjunto de elementos hardware de un ordenador que interpretan
![Page 13: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/13.jpg)
las instrucciones de un programa informáticomediante la realización de lasoperacionesbásicasaritméticas,lógicasydeentrada/salidadelsistema.ProcesadorElementodelaCPUqueinterpretalasinstruccionesyprocesalosdatosdelosprogramas.CircuitoConjuntodecomponentesqueformanunaredeléctricacerrada.CircuitoIntegradoEstructura de pequeñas dimensiones sobre la que se fabrican circuitoselectrónicosyquecontienetodosloselementosquecomponenelcircuito.MicroprocesadorProcesadordemuypequeñasdimensionesenelquetodosloselementosdelaCPUestánagrupadosenunsolocircuitointegrado.
![Page 14: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/14.jpg)
¿QUÉESLAROBÓTICA?LaRobóticaseentiendecomolacienciaylatécnicaqueestudiaeldiseñoylaconstrucciónderobots.Además,secentraenlautilizacióndelosmismosparadesempeñar tareas de manera automática o realizar trabajos difíciles oimposiblesparalossereshumanos.Unrobotesunamáquinaprogramablecapazdeinteractuarconelentornoquelerodea,moverse,mostrarcomportamientointeligente,sentirelentorno,etc.UnodelosaspectosmásimportantesdelaRobóticaesqueaúnaenunamismaciencia a diferentes ciencias, como son la informática, la electrónica, laingenieríaylamecánica.LaRobóticaesunadelascienciasconmayoraugeyquemásestáavanzando,porejemplo, seestáempezandoautilizarencamposcomo lamedicinapararealizaroperacionesdedificultadalta,laindustriadelautomóvil,etc.
![Page 15: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/15.jpg)
LEYESDELAROBÓTICAHablandodeRobótica nunca debes dejar de lado las tres leyes descritas porIsaacAsimov en sus novelas. La primera vez que fueron nombradas en suslibrosfueen1942,enellibroRunaroundydicenlosiguiente:1. Unrobotnoharádañoaunserhumanoo,porinacción,permitirqueun
serhumanosufradaño.2. Unrobotdebehacerorealizarlasórdenesdadasporlossereshumanos,
exceptosiestasórdenesentrasenenconflictoconla1ªLey.3. Un robot debe proteger su propia existencia en la medida en que esta
protecciónnoentreenconflictoconla1ªola2ªLey.
Lastresleyessuponenlarendicióncompletadelosrobotsaloshumanos,esdecir,asumenelpapeldeesclavosdeloshumanos.Veamos:
En laprimera leyseantepone la integridadde lapersonaantecualquierotracosa,esdecir,es laprotecciónbásicadel serhumanorespectoa lamáquina.
Enlasegundaleyseestablecelacadenademandoentreelserhumanoyelrobot.Esteúltimodeberáobedecersiemprealserhumano,siempreycuandonoseapararealizardañoaotroserhumano.
En la tercera ley se establece la rendición absoluta de los robots a losseres humanos. A la vez que los robots siempre deben protegerse parasobrevivir, deberán ser completamente sumisos respecto al serhumano,debiendoautodestruirsesirecibenlaordendehacerlo.
En 1985, el propio Isaac Asimov, enunció una nueva ley mediante la cualquedaríantodassubordinadasaella.Estaleyseconsideralaleycero,ydice:
Unrobotnopuedecausardañoalahumanidado,porinacción,permitirquelahumanidadsufradaño.
![Page 16: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/16.jpg)
LasleyesdeAsimovseconsideranlabaseparadeterminarelcomportamientobásicoquedeberíantenertodoslosrobots.
![Page 17: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/17.jpg)
ARDUINO
![Page 18: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/18.jpg)
¿PORQUÉAPARECEARDUINO?EstaeslaprimerapreguntaquedebesdehacerteyaqueconellacomprenderáscomoArduinohaconseguidoeléxitoquetieneahoramismo.Laconstruccióndecircuitoselectrónicosnoesunprocesosencillo,requiereuna variedad de conocimientos en diferentes ramas que hace que no esté alalcance de muchas personas. El proceso se complica aún más cuando loscircuitoselectrónicosestánacompañadosdeprogramassoftwarequemanejanelcomportamientodelpropiocircuito.Por tanto, para llevar a cabo el proceso con éxito, la persona o el equipoencargadodellevaracaboelproyecto,debentenerconocimientosampliosdediversasramascientíficas,loquehacequenosencontremosconunprocesodeconstruccióndecircuitoselectrónicoscomplejo.EnestepuntoescuandoapareceArduino,rompiendotodoslosmoldessobrelosquese trabajabahastaesemomento,yaque,utilizando lapotenciade losmicrocontroladores o microprocesadores consigue simplificar el uso de laelectrónica,perosinocultarsudinámicadefuncionamiento.GraciasaArduinosepuedenconseguirresultadosdeformarápidaysencilla,poniendoalalcancedetodoelmundolarealizacióndeproyectosderobóticamediantelautilizacióndeprototipos.
![Page 19: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/19.jpg)
¿QUÉESARDUINO?Arduinoesunaplataformadecódigoabiertodeprototiposelectrónicosquesebasaenhardwareysoftwareflexiblesyfácilesdeusarqueponenalalcancedecualquierpersonalaconstruccióndecircuitoselectrónicos/robots.Enloreferenteahardware,sebasaenplacasquesepuedenensamblaramanooquesepuedencomprardirectamentepreensambladas.Cadaunadelasplacaslleva un microcontrolador en el que se carga el programa software que esnecesariodesarrollarpara“darlevida”alaplaca.EnlasiguienteimagenpuedesverlaPlacaArduinoUnoR3consuspartesmásimportantesseñaladasqueserándescritasenelapartadosiguiente:
Ilustración2.PlacaArduinoUnoR3
![Page 20: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/20.jpg)
COMPONENTESPLACADEARDUINOPINESDIGITALESLospinesdigitalessonlasconexionesdigitalesdelosdispositivosconectadosenlaplaca.LaplacadeArduinocuentacon14pinesdigitales,quevandel0al13.Unaseñaldigitalsolopuedetenerdosestados:
0(LOW,bajo,false):Indica0Vdetensiónenviadosdesdelaplaca.1(HIGH,alto,true):Indica5Vdetensiónenviadosdesdelaplaca.
Porlotanto,cuandoponemosunpindigitalavalorHIGH,laplacasuministra5V de tensión por la salida que hayamos indicado, y si ponemos el valor aLOWsuministrará0Vdetensión.(Ojo:Hayquetenerencuentaquelos5Vnosiempreson5nilos0siempreson0)Los pines digitales deArduino pueden ser usados tanto de entrada como desalida.
PINESANALÓGICOSLos pines analógicos pueden medir un rango de valores de voltaje, adiferenciadelosdigitalesquesoloentiendendosvalores:0-1,oloqueeslomismo,0Vo5V.Conlospinesanalógicosvamosapoderleervaloresintermediosentre0Vy5V,representadosconunvalorenterocomprendidoentre0y1023,yaquelainformación se representa en números de 10 bits, y también vamos a poderescribir en los pines valores comprendidos entre 0 y 255, ya que lainformaciónserepresentaennúmerosde8bits.Enelpuntoanteriorhemoshablado sobrepinesdigitales, si te fijas enellosverásqueaparecenalgunosconelsímbolo“~”enlaplaca,estesímboloindicaquepuedenserutilizadostambiéncomopinesanalógicos.PINESALIMENTACIÓNSENSORES
![Page 21: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/21.jpg)
Además de los pines de entrada y salida descritos anteriormente, Arduinodispone de pines que nos permiten alimentar componentes externos,concretamenteunocon5Vyotrocon3,3V.Tambiéndisponedepinesdetierra(GND).MICROCONTROLADORDECOMUNICACIONESEl microcontrolador de comunicaciones se encarga de gestionar lascomunicacionescontodoloqueseconectaalaplaca.
MICROCONTROLADORDEPROGRAMACIÓNEste componente de la placa es el cerebro de la misma, es donde la placaalmacenaelprogramaquetienequeejecutaryelqueloejecuta.Elmicrocontrolador de la placa se programa utilizando el IDE (Entorno deDesarrolloIntegrado)deprogramacióngratuitodeArduino.Enlosapartadossiguientesexplicamoscómoinstalarloycomoponerloafuncionar.BOTÓNRESETEl botón Reset permite reiniciar el programa que se ha cargado en elmicrocontrolador interrumpiendo la ejecución actual. Ten en cuenta que noborraelprogramaquesehacargado,únicamenteloreinicia.PUERTOUSBElpuertoUSBeselpuertomedianteelcualnoscomunicaremosconlaplacadeArduino.Susfuncionesprincipalesson:
AlimentaciónCargarlosprogramasenelmicrocontrolador.Envíodeinformacióndesdelaplacaalordenador.
![Page 22: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/22.jpg)
CONECTORDEALIMENTACIÓNArduinodisponedeunpuertodealimentaciónexternoquenospermitiráhacerfuncionar laplacasinutilizarunordenador.Tienesquetenerencuentaelnoalimentarlaplacaconmasvoltajedelquesoporta,yaquepodríasdañarla.Lorecomendadoesalimentarlaentre7Vy12V.
![Page 23: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/23.jpg)
¿ARDUINOYROBÓTICA?Arduinoesconsideradounadelasbasessobrelasqueempezaratrabajarentemasrelacionadosconrobótica,yaque,porsusimplicidad,permiteadquirirconocimientos básicos para dar el paso posteriormente a tecnologías máscomplejasycompletas.
![Page 24: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/24.jpg)
VENTAJASExisten multitud de microcontroladores y plataformas en el mercado, peroningunade ellas ha conseguido tener tanto éxito comoha tenidoArduino, yeso es debido aquepresentaunanotable cantidaddeventajas respecto a suscompetidores:
Precio:ElcostedelasplacasArduinoesridículamentebaratocomparadoconelrestodeplacas.Laplacamásbaratacuestaentornoa30€eincluyetodolonecesariopararealizarcualquiertipodeproyecto.
Multiplataforma: El software de Arduino se ejecuta en sistemasoperativosWindows,MacintoshOSXyGNU/Linux.
Facilidad de uso: El entorno de programación y la placa son losuficientementesencillosparaquepersonasprincipiantespuedanusarlossinproblemas.
SoftwareExtensibleyflexible:Arduinonoestápensadoúnicamenteparaque personas principiantes aprendan, sino que también permite quepersonas con conocimientos avanzados puedan realizar proyectoscomplejos. Además, al tratarse de software libre, el código fuente seencuentra accesible y permitirá a usuarios más avanzados acceder yextenderlasfuncionalidadesdisponibles.
Hardware abierto y extensible: Arduino está basado enmicrocontroladores que tienen sus módulos publicados bajo licenciaCreativeCommons, lo que permite a diseñadores experimentados poderhacersupropiaversióndelmódulo,extendiéndoloymejorándolo.
![Page 25: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/25.jpg)
ENTORNODEDESARROLLOArduino tiene un entorno de desarrollo propio que te permite cargar en laplacalosprogramasqueescribes.Existendosformasdiferentesdeutilizarelentorno de desarrollo, el primero es utilizarlo en un navegador web y elsegundoesinstalárteloenelordenador.Para instalarlo entra en https://www.arduino.cc, y después entra en el menúSoftware:
Ilustración3.Me núprincipal We bArduino
También puedes entrar directamente enhttps://www.arduino.cc/en/Main/Software.Enestapáginawebpodrásaccederacualquieradelasdosformasdisponiblesdelentornodedesarrollo.Acontinuación,teexplicarécomopuedesaccederacadaunodeellos.Dejoatu elección el entorno a usar, ya que ambos tipos ofrecen las mismasposibilidades.
![Page 26: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/26.jpg)
ENTORNOWEBParautilizarelentornodedesarrollowebtienesqueregistrartepreviamente,porloque,éseeselprimerpaso.Paraellotienesqueentraren“Tryitnow”yposteriormenteen“SignUp”,rellenatodalainformaciónquetepidenycomoúltimo paso tienes que activar la cuentamediante el email que te enviará alfinalizarelproceso.
Ilustración4 .ArduinoWe b
Unavezhasacabadoelprocesoderegistrotienesqueentrarutilizandoelloginylacontraseñaquehasintroducidoduranteelprocesoderegistro.Alentrarlaprimeraveztienesqueaceptarlascondicionesdeuso:
![Page 27: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/27.jpg)
Ilustración5.Plug inArduino
Una vez aceptas las condiciones tienes que permitir que Arduino instale elpluginnecesarioparaelsistemaoperativoquetienes:
![Page 28: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/28.jpg)
Ilustración6.Proce soinstalaciónArduinoWe b
Eligeelsistemaoperativoque tienesysigue las instruccionesde instalación,tendrás que aceptar las condiciones y proceder con la instalación. Una veztengaselplugininstalado,podrásaccederaArduinoCreate:
![Page 29: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/29.jpg)
Ilustración7 .ArduinoWe b
![Page 30: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/30.jpg)
APLICATIVOEn la secciónen laquepuedesdescargarelentornodedesarrollo tendrás laposibilidaddedescargarloparaelsistemaoperativoqueestésutilizando:
Ilustración8.De scargaraplicaciónparaArduino
Selecciona la versión que quieres descargar y te llevará a la página dedescarga, desde la que podrás hacer algún donativo para Arduino odirectamentedescargarlo:
Ilustración9.DonaciónaArduino
INSTALACIÓNDEARDUINOENMACOS
![Page 31: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/31.jpg)
ParainstalarlaversióndemacOSúnicamentetienesquecopiarelficherodedescargaalacarpetadelasaplicaciones:
Ilustración10.Instalacióne nmacOS
Puedescopiarloacualquiercarpeta,peroterecomendamosquelocopiesalacarpeta donde están instaladas todas las aplicaciones y así accedas desde elLaunchpad.INSTALACIÓNDEARDUINOENWINDOWSParainstalarlaversióndeWindowsejecutaelinstaladordescargadoyaceptalascondicionesquetemuestralaprimerapantalladelinstalador:
![Page 32: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/32.jpg)
Ilustración11.Instalandoe nWindows(Paso1)
Una vez aceptadas las condiciones tienes que indicarle qué componentesquieresinstalar:
Ilustración12.Instalandoe nWindows(Paso2)
Tras seleccionar los componentes a instalar tienes que indicar la ruta dondequieresinstalarelentornodedesarrollo:
![Page 33: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/33.jpg)
Ilustración13.Instalandoe nWindows(Paso3)
Elprocesodeinstalaciónempezaráunavezseleccioneslaruta,unavezacabecierraelinstaladoryyatendráselentornolistoparaempezar:
Ilustración14 .Instalandoe nWindows(Paso4 )
Una vez haya acabado, únicamente tienes que ejecutar la aplicación desde elaccesodirectoquesehacreado.INSTALACIÓNDEARDUINOENLINUXPara instalar la versión deLinux tienes que extraer el contenido del fichero
![Page 34: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/34.jpg)
descargadoeneldirectorio/home.
Ilustración15.Instalandoe nLinux(Paso1)
Unavezlotienesextraído,entraparacomprobarquetienestodoslosficherosycarpetasqueaparecenenlasiguienteimagen:
Ilustración16.Instalandoe nLinux(Paso2)
![Page 35: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/35.jpg)
Para instalar el IDE de Arduino únicamente tienes que ejecutar el ficheroinstall.shdesdeelterminal:
Ilustración17 .Instalandoe nLinux(Paso3)
Elprocesodeinstalacióncrearáelaccesodirectoenelescritorio,porloqueparaentraralentornoúnicamentetienesqueejecutarlodesdeahí.
![Page 36: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/36.jpg)
FAMILIARIZÁNDOTECONELENTORNODEDESARROLLOEn este apartado se explicará el entorno de desarrollo con el que realizarástodoslosobjetivos,retosyproyectosqueteproponemosenestelibro.
![Page 37: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/37.jpg)
PANTALLAPRINCIPALNadamásabrirelentornopuedesapreciar losencilloe intuitivoquees.Pordefecto,seteabreunproyectovacíoconlaestructuradelprogramaArduino.Lapantallaprincipalestácompuestapor:
MenúPrincipal que contiene todas las funciones y herramientas de lasqueestácompuestoelentorno.Barradeaccesorápidoalasoperacionesmáscomunes.Panel inferior de mensajes donde se muestran los mensajes deinformación y error enviados por el entorno al usuario que lo estáutilizando.
Ilustración18.Pantallaprincipal IDE
![Page 38: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/38.jpg)
MENÚPRINCIPALMENÚARCHIVOEl menú Archivo contiene todas las funcionalidades típicas de este menú.Desde aquí se puede crear un proyecto nuevo, abrir proyectos existentes,accederalosejemplospredefinidos,guardarelproyectoactual.
Ilustración19.Me núArchivo
Ademásdelasoperacionesdegestióndeproyectos,permiteaccederalmenúdeconfiguracióndelentornodedesarrolloparapoderconfigurarelementosnorelacionadosconeldesarrollo,compiladoyejecucióndelosprogramasdeArduino.
![Page 39: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/39.jpg)
Ilustración20.Me núpre fe re ncias IDE
MENÚPROGRAMAElmenú Programa contiene todas las operaciones y funcionalidades que sepuedenllevaracaboconelproyectoque tenemosactualmentecargadoenelentornodedesarrollo.
![Page 40: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/40.jpg)
Ilustración21.Me núPrograma
Además de las funciones de compilado y carga del programa en la placa,desdeestemenúsepuedenañadirlibreríasalentornodeprogramación.Paraello,hayqueaccederalaopcióne“IncluirLibrería”.Unavezdentro,sepuedeseleccionaruna librería ya existente, cargaruna librería en formato “Zip”oaccederalaherramientagestoradelibrerías,desdedondepodremosagregarlibreríasseleccionandolaversiónainstalar.
![Page 41: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/41.jpg)
Ilustración22.Ge storde l ibre rías
MENÚHERRAMIENTASElmenúHerramientaspermiteelaccesoyconfiguracióndeelementosajenosalentornodedesarrollo.Loselementosmáscomunesqueseutilizandeestemenúson:
MonitorSerie:Explicadoenelapartado“PantallaPrincipal”.Configuracióndelaplaca:Desdeaquísepuedeconfigurarlaplacaquetenemos conectada al ordenador. Por defecto la aplicación la detectaráautomáticamente.Configuracióndelpuerto:Desdeaquísepuedeconfigurarelpuertodeconexióndelaplacaalordenador.Pordefectolaaplicaciónladetectaráautomáticamente.
![Page 42: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/42.jpg)
Ilustración23.Me núHe rramie ntas
![Page 43: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/43.jpg)
BARRADEACCESORÁPIDOAcontinuación,estánexplicadastodaslasfuncionesdeaccesorápidoincluidasenlabarradeaccesosdirectos.VERIFICAR
Laoperación“Verificar”permitecomprobarsielcódigofuenteescritoenelentornodedesarrollonotienefallos,esdecir,compruebasicompila.El resultado de la verificación del código es mostrado en la consola demensajes inferior, si no contiene errores la consola mostrará un mensajecomoeste:
Ilustración24 .Ve rificarOK
En caso de contener errores, todos ellos serán mostrados de la siguienteforma:
Ilustración25.Ve rificarKO
SUBIR
![Page 44: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/44.jpg)
Laoperación“Subir”permitecargarelcódigofuentecompiladoen laplacadeArduino.Una vez subido el programa, éste comenzará a ejecutarse en laplaca.NUEVO
La operación “Nuevo” abrirá un nuevo proyecto de Arduino vacío, con laestructuraprincipalyacreada.
ABRIR
La operación “Abrir” permite buscar un proyecto Arduino en nuestroordenadoryabrirloenelentornodedesarrollo.SALVAR
Laoperación“Salvar” guardará el proyectodeArduino en la ruta donde leindiquemos.MONITORSERIE
Laoperación“MonitorSerie” abrirá la consola de intercambio demensajesentrelaplacayelordenadoratravésdelpuertodecomunicaciones.Talycomopodrásverenunafasedelobjetivonúmero4,el“MonitorSerie”seutilizaparamostrarinformaciónenlapantalladelordenador.
![Page 45: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/45.jpg)
ANTESDEEMPEZAR
![Page 46: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/46.jpg)
ESTRUCTURADEUNPROGRAMAElprogramaenArduinoesmuysencillo.Estácompuestobásicamentepordossecciones diferentes y obligatorias en las que se codifican diferentescomponentesdelprograma.
Ilustración26.EstructuraprogramaArduino
En la primera sección del programa, setup(), es donde se define laconfiguración del programa, es decir, es donde se codifican todas lassentencias de configuración, inicialización de los puertos de la placa,configuración de las comunicaciones y otros parámetros que dependerán decadaprogramaquesedesarrolle.Enlasegundaseccióndelprograma,loop(),esdondesecodificaelprogramaqueseejecutarádeformacíclicaenArduino.Estasecciónestácompuestaportodaslassentenciasquecomponenelprogramayquellevaránacabotodaslasoperacionesquelocompongan.Resumiendo,ensetupsedefineeinicializaloqueseusaenloop,siendoestaúltimasecciónelcorazóndeunprogramadeArduino.
![Page 47: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/47.jpg)
COMPONENTESCOMUNESENTODOSLOSMONTAJESPLACAARDUINOLa placaArduino ha sido explicada en el punto anterior en el que te hemosexplicadoArduino.Enlosejerciciosqueserealizaránposteriormente,seirándefiniendolasconexionesenfuncióndelmontajequeestemosllevandoacabo.
PROTOBOARDLaplacaprotoboard es una base dematerial aislante (plástico) con orificiosparalainsercióndeloscomponenteselectrónicos,deformaqueesténunidoseléctricamenteentreellos,yaqueensuinteriorlosorificiosestánconectadosentresígraciasaunaslíneasdematerialconductor.UsarlaplacaProtoboardesmuysencillo.Simplementetienesqueinsertarloscomponentes teniendoencuentaquehaylíneasqueactúancomosi todos loscomponenentesestuvieranconectadosenelmismopunto.Lasdos líneas deorificios externas, que se encuentran entre la líneapintadarojayazúl,destacadaunadeellasenamarillo,actúancomosifueraelmismopunto de conexión, es decir, cualquier componente que pinchemos encualquiera de los orificios señalados sería como si estuviera conectadodirectamenteaotrocomponentequeestuvierapinchadoenotrodelospuntosdelamismalínea.
Ilustración27 .Protoboard1
La línea azul y la línea rojanospueden ayudarpara conectar enunode susextremosuncableconcarganegativaypositivarespectivamenteytenerasíelrestodelosorificiosalimentadoscondichascargas.
![Page 48: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/48.jpg)
Losorificiosdelapartecentraldelaplacaestánconectadoseléctricamentedeformadiferentealaslíneasexteriores.Enlaimagensiguientepuedesverunalíneailuminadadeamarilloquesonlospuntosconectadoseléctricamenteentresí.
Ilustración28.Protoboard2
Ojo,paraconectarunamitaddelaplacaconlaotra,tendremosquehacerunpuentedeformaqueconectea travésdeuncableunalíneaconlaotracomovemosenlaimagensiguiente:
Ilustración29.Protoboard3
CABLEUSBLo usaremos para pasar el programa desde el ordenador a la placa deArduino,paraque interactúe con los componentes electrónicos, y en sentidoinverso,desdeloscomponenteselectrónicos(sensores),alordenador.
![Page 49: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/49.jpg)
Ilustración30.Cable USB
CABLESUsaremos cables macho-macho o macho-hembra en función de lo quenecesitemosconectarencadaproyecto.
Ilustración31.Cable s de circuito
RESISTENCIASLas resistencias sonunosdispositivosque se oponen al pasode la corrienteeléctrica cuando pasa través de ellas, por tanto, antes de una resistencia ydespués de ella habrá una diferencia de carga eléctrica, siempremenor a lasalidaquealaentrada.Deestamanera,protegeremosaotrosdispositivosdeser atravesados por una intensidad mayor a la pueden soportar y por tantosufrirunasobrecarga.Para saber qué resistencia será necesaria para proteger un determinadodispositivo,necesitaremosconocer la intensidadmáximaquepuede soportarel dispositivo (I) y la tensión a la que va a estar sometido (V). Conociendodichos valores podemos calcular la resistencia (R) que protegerá nuestrodispositivo.ParacalcularloutilizamoslaLEYDEOHM(V=IxR):
R=V/I
Dondelaresistencia(R)semideenohmios,Ω;latensióneléctrica(V)semideenvoltios,V;ylacorrienteointensidadeléctrica(I)semideenamperios,A.Algoquedebestenerencuentaesquenoexistenresistenciascomercialesdetodos los valores óhmicos, por lo que tendrás que calcular y elegir laresistencia que más se aproxime al valor ideal del proyecto que estás
![Page 50: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/50.jpg)
realizando.Porello,acontinuación,teexplicounejemplodecómocalcularelvalordeunaresistenciaparaprotegerundispositivo,enestecaso,unLED.Tenemos que tener en cuenta dos cuestiones: la primera es que un LEDestándarsoportauna intensidaddehasta20mA,ydejaremosunmargenparano correr el riesgodeque elLEDse funda (17mA).Y la segunda es que elvoltajeconelquevamosatrabajaresdeunos5V.Conello,vamosacalcularelvalordelaresistenciaquetendríamosquemontarenserieparaqueelLEDnosufraunasobrecarga.AplicandolaleydeOhm:V=IxR5V=17mAxRR=5/0,017R=294ΩPuestoquenovamosaencontrarunaresistenciaconestevalorexacto,tendrásqueelegirotradevaloraproximadosiempreporencima,paraasegurarnoslaprotección del dispositivo. En este caso nos tendremos que hacer con unaresistenciade330Ω.Una vez que hemos calculado el valor de la resistencia que necesitamos,debemoselegir físicamenteesa resistencia.Pero,¿cómopodemossabercuáles el valor óhmicodeuna resistencia física?Muy sencillo: fijándonos en sucódigo de colores. Cada resistencia cuenta con unas líneas de colores quesegúnsucombinaciónofrecenmásomenosresistencia.
![Page 51: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/51.jpg)
Ilustración32.Re laciónbandas re s is te nciaycolor
Enestecaso,laresistenciaquenecesitábamos,de330Ω,seríalaquetieneloscolores:
Ilustración33.Colore s re s is te nciauti l iz ada
LEDL.E.D. (Light EmittingDiode o diodo emisor de luz), es un dispositivo queemiteluzcuandoseencuentranenpolarizacióndirecta,esdecirnecesitaestarconectado de una forma determinada: la pata larga (ánodo) conectada a unpolo positivo y la pata corta (cátodo) a un polo negativo. Si se conecta alrevés, la corriente no pasará y por tanto no emitirá luz. Esto es algo muyimportantequedebestenerencuentaalahoraderealizarlosmontajesdetusproyectos.
![Page 52: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/52.jpg)
Ilustración34 .LED
Los LEDs se utilizan mucho para realizar montajes electrónicos, ya quepresentan dos ventajas importantes con respecto a otro tipo de dispositivolumínico:1. Consumenmuypocaenergíayaquecasitodalaenergíaqueconsumeun
LED(másdeun80%)seutilizaendarluzynocalor.
2. Tienenunavidaútilmuylarga:másde100.000horasdeluz.
UnLEDpuedeconectarsetantoaunpindigitalcomoanalógico.LEDRGBUnLEDespecialeselRGB,cuyassiglashacenreferenciaa loscoloresRed(Rojo),Green(Verde)yBlue(Azul),loscoloresprimariosdelaluz.UnRGBes en realidad la unión de tres LEDs, cada uno de un color básico, en unencapsuladocomún.Enfuncióndelatensiónquerecibacadaunodeellos,elRGBemitiráuncoloruotro.PodemosencontrardostiposdeRGB:
Decátodocomún:compartenelpinqueseconectaaGND.Losotrostrespinesseconectanapinesdigitalesoanalógicos.
Deánodocomún:compartenelpinqueseconectaalaalimentación(5Ven nuestra placa de Arduino). Los otros tres pines se conectan a pines
![Page 53: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/53.jpg)
digitalesoanalógicos.
Ilustración35.Tipos de LEDRGB
Para identificar qué pin corresponde a cada color debemos tener enconsideración:
Lapatillamás larga es la de alimentacióno la tierra (GND), según seacátodocomúnoánodocomún.
Normalmente,lapatillaqueestásolaalladodelamáslargaeselrojoRylasotrasdoscorrespondenalverdeGyalazulB.
Teniendo en cuenta que el rango de valores RGB va de 0 a 255, podemosjugaracombinarunoscoloresconotros.Laeleccióndedichosvaloressetraducecomolatensiónquepodemosponerencadapin.Mediante laeleccióndelosvaloresconseguiremoslamezcladecolorquedeseemosdeformasencilla.Conlasiguienteimagenpuedeshacerteunaideadelaluzqueobtendremossimezclamosvariasdeellas,teanimamosaquepruebesaintroducirdiferentesvalores para cada uno de los colores y así podrás comprobar diferentestonalidadesdecolores.
![Page 54: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/54.jpg)
Ilustración36.Luz
Talycomopuedesobservar, lamezclade la luzdecolor rojo,verdeyazulnosdacomoresultadounaluzblanca.POTENCIÓMETROUnpotenciómetroesundispositivoqueproporcionaunaresistenciavariablesegúnvayamosmodificandosuposicióngraciasalarotacióndeunejequeseva desplazando interiormente sobre un material resistivo. Un ejemplo depotenciómetro es el que vemos en la siguiente imagen, aunque existen en elmercadomuchostiposmás.
Ilustración37 .Pote ncióme tro
ParaconectarelpotenciómetroalaplacaArduino,debemosunirlapatillaAaGND(tierra),laBalos5V(oviceversa)ylacentralaunaentradaanalógica,yaquelovaloresquevamosaintroducirvanaservariables.
ZUMBADORUn zumbador es un dispositivo fabricado con un material piezoeléctrico,normalmente cuarzo, que al ser sometido a una tensión eléctrica variablevibranproduciendounsonido.
![Page 55: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/55.jpg)
Ilustración38.Zumbador
Laconexióndelzumbadoressencilla,unapataconectaráconGND(tierra)yla otra a una entrada analógicaodigital por donde entrará la tensiónque leprovocarálavibración.SENSORDELUZ(LDR)ElLDR(LightDependentResistor)esunaresistenciacuyovalordependedelacantidaddeluzqueincidasobreella.
Ilustración39.Se nsorde luz
CuandolaluzincidesobreelLDR,elmaterialsevuelvemásconductorporloquesuresistenciadisminuye.Alcontrario,cuantamenosluzincidasobreella,mayor será su resistencia.Ésto se traduce enquepodrádar paso amayor omenorcantidaddecorrienteeléctricaenfuncióndelaluzquereciba.Al ser un dispositivo que no tiene polaridad, las patillas pueden conectarseindistintamente,sintenerencuentaelpolopositivonielnegativo.
SENSORDEHUMEDADYTEMPERATURAElDHT11,DigitalTemperaturaandHumiditysensor,esundispositivoquenosvaapermitirobteneruna informaciónsimultáneade temperaturayhumedadmedianteunprocesadorinternoquerealizadichoprocesodemedición.ElsensorquevamosautilizareselDHT11,noeselmejordetodos,peropararealizar nuestro proyecto esmás que suficiente. Si queremos afinarmás ennuestrasmediciones podríamos hacernos con unDHT22,más preciso, perotambiénmáscaro.
![Page 56: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/56.jpg)
Las características técnicasdelDHT11 son las siguientes, teniendoen cuentaqueelsensorvatomandovaloresambientalescadasegundo:
MedicióndeTªde0a50°C 2°C
MedicióndeHde20a80% 5%
Ilustración40.Se nsorde hume dadytempe ratura
ParaconectarelsensoralaplacaArduinolotendremosfácil.Fijándonosenlaleyendadeldispositivo,conectamoslaspatillasexterioresaGNDyVCCylacentral a una entrada digital, ya que el procesador del DHT11 proporcionamedicionesmedianteseñalesdigitales.SENSORDEPRESENCIAEl sensor infrarrojo de movimiento PIR HC-SR501, donde PIR viene de‘Pyroelectric Infrared’ o ‘Passive Infrared’, es un dispositivo que detectamovimientobasándoseenlaradiaciónelectromagnéticainfrarrojaqueemitenlosseresvivosyobjetosdebidoalatemperaturaalaqueseencuentran.Elsensordetectapresenciasielobjetoseencuentradentrodeunconode110°desdesucentroyunadistanciamáximadehasta7metros.
![Page 57: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/57.jpg)
Ilustración41.Se nsorde pre se ncia
Podemos ajustar el comportamiento del sensor modificando con undestornilladorlosdospotenciómetrosyeljumperqueincorpora:
Ajustedeltemporizador:Paramarcareltiempoenelqueseactivaráelsensor cuando haya detectado presencia, de 3 segundos a 5 minutos.Girando hacia la derecha tardará más en actuar y girando hacia laizquierdaseactivaráenmenostiempo.
Ajuste de sensibilidad: Para modificar la distancia y la cantidad demovimiento necesaria para activar el sensor, de 3 a 7 metrosaproximadamente. Girando hacia la derecha decrece la sensibilidad (seactivará cuando detecte el objeto a menos distancia). Girando hacia laizquierdaaumenta la sensibilidad (seactivarácuandodetecteelobjetoamayordistancia).
Ajuste del modo: El sensor puede trabajar en modo continuo: siqueremos esté continuamente detectando movimiento y por tantoactivado, o enmodorepetición: si queremos que sólo se active cuandodetectemovimiento.
ParaconectarloconlaplacadeArduino:conectamoselpinVCCdelsensoralos5Vdelaplaca,elpincentraldelsensoraunpindelaplacaparatransmitirinformaciónyelpinGNDdelsensoralGNDdeArduino.
![Page 58: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/58.jpg)
SENSORDEAGUALo primero de todo es no confundir el sensor de agua con el sensor dehumedad,yaquemidencosasdiferentes.
Ilustración42.Se nsorde agua
Este sensor estima la presencia de agua a través de unos filamentosconductores paralelos que serán los que entren en contacto directo con ellíquido. Esto provoca una señal analógica que será traducida por Arduinoindicando que efectivamente el sensor ha detectado agua. Dichos valoresanalógicos medidos pueden variar desde 0 (sensor totalmente seco) a 1023(sensortotalmenteempapado).Aunque el sensor necesita entrar en contacto con el agua para detectar suexistenciaono,esonoquieredecirquetodassuspartespuedanmojarse.¡Noolvidemos que es un dispositivo electrónico!Por ello debemos proteger loscontactosyparteseléctricasdelcircuito.Delocontrario,podremosprovocaruncortocircuito.PANTALLALCDLa pantalla LCD, Liquid Crystal Display (Display de cristal líquido), es undispositivo que nos va a permitir visualizar información de forma gráficamediantetexto.
Ilustración43.PantallaLCD
![Page 59: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/59.jpg)
Estaspantallasposeenpinesdeentrada/salidadedatoscomosemuestraenlasiguienteimagen.
Ilustración44 .De tal le pine s LCD
ElsignificadodecadaunodelospinesdelapantallaLCDeselsiguiente:
VSS:pinqueconectaatierra(GND,masa)VDD:pinqueconectaa5voltiosparaalimentarlapantalla.VO: pin que ajusta el contraste de la pantalla. Se conecta a unpotenciómetronormalmente.RS:pinselectorderegistroparaelegirelusodeldispositivo.RW: pin de lectura/escritura. En función del estado (HIGH o LOW),podremosescribiroleerdatosenelLCD.E (enable): pin que habilita/deshabilita la pantalla para recibirinformación.D0 aD7: pines de datos por donde se envía o recibe información, esdecir,pordondesetransfierenlosdatos.A:pindelLED(ánodo)queiluminalapantalla(5V)K:pindelLED(cátodo)queiluminalapantalla(GND)
De forma gráfica, podemos ver la conexión de la placa Arduino con lapantalla LCD en la siguiente imagen. A la izquierda se encuentra la placaArduino y a la derecha la pantalla LCD. Las líneas de colores indican las
![Page 60: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/60.jpg)
unionesquesedebenhacerparaconectarambosdispositivos:
Ilustración45.Cone xióne ntre placaArduinoyLCD
EnelObjetivo4utilizaremoslapantallaLCDparavisualizarlainformaciónque nos aportan determinados sensores y las conexiones vendrán descritasparacadaunodeellos.
![Page 61: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/61.jpg)
OBJETIVO1–MANEJOLEDS
![Page 62: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/62.jpg)
EXPLICACIÓNEn el objetivo número 1 explicaremos todo lo necesario para aprender amanejardiferentestiposdeLEDs,interactuandocondiferentespinesdesalidadelaplacadeArduino.
![Page 63: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/63.jpg)
FUNCIONESDEPROGRAMACIÓNEn este objetivo vamos a profundizar en las siguientes funciones deprogramación:#DEFINEEstasentenciapermiteladefinicióndevaloresconstantesentodoelprograma.Porejemplo,sienelcircuitovamosautilizarlasalidanúmero5delaplaca,lo normal es crear una constante con el valor 5 y utilizarla en el código enlugardeutilizarelvalor5.Lautilizacióndeconstantesenelcódigoesalgomuycomúnqueseutilizaenprogramación.EneldesarrollodeprogramasparaArduinonosvaapermitir,entreotrascosas,que,siporejemplocambiamoselnúmerodelpinenlaquetenemosenchufadoelcircuito,cambiandoelvalorde laconstante,de formaautomática en todas las sentencias en las que estamos usando ese valor seactualicenytodosigafuncionandodeformacorrecta.Esdecir,notendremosquecambiarporelnuevovalortodaslassentenciasdondeseutilizalasalida,únicamentecambiaremoselvalordelaconstante.En el siguiente ejemplo se define una constante que se llamaVERDE y quetieneelvalor3,esdecir,elLEDverdeestáconectadoalpinnúmero3:#defineVERDE3
PINMODELasentenciaesutilizadaparaconfigurarelmododetrabajodecadaunodelospinesquetienelaplacaArduino.Lasecciónenlaqueseutilizaeslaseccióndeconfiguración,esdecir,ensetup().Existendosmodosdiferentesdefuncionamientodelospines:
INPUT:Elpinesutilizadocomoentradade informaciónen laplacadeArduino.
OUTPUT:ElpinesutilizadocomosalidadeinformacióndelaplacadeArduino.
![Page 64: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/64.jpg)
LaconfiguraciónpordefectodetodoslospinesdelaplacadeArduinoesdesalida,por tanto, sino indicamos locontrarioestospines funcionaránenestemodo.Te aconsejamosque, independientementedeque sea el valor pordefectoeldesalida,configureselmododefuncionamientodetodoslospines.Enelsiguienteejemplosedefineelpinnúmero3comosalida:pinMode(3,OUTPUT);En lugar de utilizar el valor 3, en el siguiente ejemplo temostramos comoutilizarlaconstantequehemosdefinidopreviamente:pinMode(VERDE,OUTPUT);DIGITALWRITEMediante esta sentencia vamos a enviar valores binarios (0 o 1) al pinconfiguradocomosalida.En la sentenciahayque indicarelnúmerodelpin,quevade0a13ypuedeespecificarseporvaloroporconstante,yelvaloraenviar.Losposiblesvaloresaenviarson:
HIGH:Paraenviarelvalor1.LOW:Paraenviarelvalor0.
En el siguiente ejemplo se envía el valor HIGH al pin número 3, es decir,quieroactivareldispositivoconectadoalpin3,enestecaso,encenderel ledconectadoalpin3:digitalWrite(3,HIGH);En lugar de utilizar el valor 3, en el siguiente ejemplo temostramos comoutilizarlaconstantequehemosdefinidopreviamente:digitalWrite(VERDE,HIGH);
ANALOGWRITELasentenciaenviarávaloresentre0y255alpinconfiguradocomosalida.Enlasentenciahayqueindicarelpinsobreelquesequiererealizarlaescriturayelvaloraescribir.
![Page 65: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/65.jpg)
Enelsiguienteejemploseenvíaelvalor120alpinnúmero3:analogWrite(3,120);En lugar de utilizar el valor 3, en el siguiente ejemplo temostramos comoutilizarlasentenciaconlaconstantequehemosdefinidopreviamente:analogWrite(VERDE,120);DELAYLa funciónpermitedetenerde forma temporal laejecucióndelprogramadeArduino.Eltiempodedetenciónseindicaenmilisegundos.Enelsiguienteejemplosedetieneelprogramamediosegundo(tenencuentaqueunsegundoson1000milisegundos):delay(500);
FORLasentenciaFOResutilizadapararepetirunbloquedesentenciasunnúmerodeterminadodeveces,esdecir,utilizaremosestasentenciasiqueremosrepetirunaaccióno secuenciadeacciones, comoporejemploque seencienday seapagueunledvariasvecesseguidas.Para la ejecución se utiliza una condición de terminación,mientras que estacondiciónnoseacierta,elbloquedesentenciaseejecutarepetitivamente,unavezlacondiciónesciertadejadeejecutarseelbucle.EnelsiguienteejemplopuedesverunbucleFORqueserepite10veces:for(inti=0;i<10;i++){
digitalWrite(VERDE,HIGH);delay(2000);digitalWrite(VERDE,LOW);delay(2000)
}
![Page 66: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/66.jpg)
El ejemplo enciende elLED, esperados segundos, apaga elLEDyvuelve aesperardossegundos.Lacondicióndesalidadelbucleesquelavariableiseamayoroigualque10,esdecir,mientrasqueseamenor,elbloquedecódigoseejecutará y por tanto hasta que no se repita 10 veces la sentencia, se estarárepitiendoelencendidoyapagadodelled.Porcadarepetición,lavariableivaaumentandode1en1suvalor,talycomoseindicaconi++.Podríamoshaberpuestoi=i+1oi+=1enlugardei++,yaqueelfuncionamientoeselmismo.VARIABLESLas variables son un elemento de la programación que se utilizan paraalmacenarvalorestemporalmente.Ladiferenciaprincipalconlasconstantesesque pueden almacenar diferentes valores que van cambiando durante laejecucióndelprograma.Lasvariablesdebende serdeclaradas antesde serutilizadas.En el siguienteejemplopuedesverladeclaracióndeunavariabledetiponúmeroentero(int)ylaasignacióndeunvalor:intVariableEjemplo=0;VariableEjemplo=3+5;Enlaprimerasentenciasedeclaralavariable(VariableEjemplo)yseleasignael valor inicial de 0. Posteriormente, la variable almacenará el resultado derealizarlasumadelosvalores3+5.Enelaprendizajeutilizaremoslossiguientestiposdevariable:
int:Representaunnúmeroenterode16bitscomprendidoentre-32767y32768.
bool:Tipodevariablequeúnicamentepuedetenerdosvalores:TRUEoFALSE(VerdaderooFalso).
![Page 67: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/67.jpg)
byte:Valornuméricode8bitssindecimalescomprendidoentre0y255.
![Page 68: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/68.jpg)
MATERIALESAcontinuación,puedesencontrarellistadodematerialesquevamosautilizarenésteprimerobjetivo.
Ilustración46.Mate riale s obje tivo1
![Page 69: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/69.jpg)
FASE1:INTERACTUARCONUNLEDLafase1consisteenelmontajedeuncircuitoelectrónicobásicobasadoenelencendidoyapagadoautomáticodeunLED.MONTAJEFÍSICOElmontajefísicoparalarealizacióndelafase1eselsiguiente:
Ilustración47 .CircuitoObje tivo1Fase 1
Enelmontajedeestecircuitotienesqueprestarespecialatenciónalaconexiónde las patillas del led. Recuerda que las resistencias son necesarias paraprotegeralledyquenotienenpolaridad,porloquelaconexiónessencilla.Fíjate como está montado en la imagen. Si una vez montado el circuito ymetidoelcódigoellednoseilumina,revisalaconexióndelaspatillasporsilashubierasconectadodelrevés.
PROGRAMACIÓN
![Page 70: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/70.jpg)
EnlaprimerapartedelcódigodefiniremoslaconstantequeindicaráelpinalquehemosconectadoelLED.EnelejerciciohemosconectadounLEDverdealpin5,entonceselvalordedichaconstante será5.Paraorganizartemejorconelcódigoteaconsejamosqueutilicesnombresdeconstantedescriptivas,noutilicesnombresdelestiloCONSTANTE1,CONSTANTE2…En la sección de configuración, setup(), configuraremos el pin enmodo defuncionamientodesalidayenviaremoselvalorinicial.Enestecaso,alenviarelvalorLOWleestamosestableciendoelvalordeapagadoalLED.En la sección principal, loop(), encenderemos el LED, detendremos elprogramaunsegundo,apagaremoselLEDydenuevovolveremosadetenerelprogramaunsegundo.Estasecciónseejecutarádeformaindefinida,esdecir,serepetiráconstantementeencendiendoyapagandoelLED.CÓDIGOFUENTE#defineGREEN5voidsetup(){
pinMode(GREEN,OUTPUT);digitalWrite(GREEN,LOW);
}voidloop(){
digitalWrite(GREEN,HIGH);delay(1000);digitalWrite(GREEN,LOW);delay(1000);
}
![Page 71: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/71.jpg)
FASE2:INTERACTUARCONVARIOSLEDSLa fase 2 consiste en el montaje de un circuito electrónico basado en elencendidoyapagadodevariosLEDs.MONTAJEFÍSICOAcontinuación,puedesverelmontajeelectrónicodelcircuito:
Ilustración48.CircuitoObje tivo1Fase 2
Igualqueenelmontajeanterior,prestaratenciónalaconexióndecadapatillade los LED. La toma de tierra ha sido conectada a la protoboard para sercompartida por todos los componentes que se utilicen, en este caso los tresLEDs.
PROGRAMACIÓNEn la primera parte del código definiremos las constantes que indican los
![Page 72: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/72.jpg)
pines a los quehemos conectado cadaunode los tresLEDs.En el ejerciciohemosconectadoelLEDazulalpinnúmero7,elverdealpinnúmero5yelrojoalpinnúmero3.En la sección de configuración indicaremos los tres pines como salida, yademás,estableceremoselestadoinicialdetodosellos,queseráelLEDrojoencendidoyelverdeyazulapagados.ElestadoinicialloestablecemosconlafuncióndigitalWrite,escribiendoHIGH(1)enlasalidadelLEDrojoyLOW(0)enlassalidasdelosLEDsazulyverde.EnlasecciónprincipalsevanairencendiendoyapagandolosLEDs,deunoenunoydeteniendolaejecucióndelprogramaunsegundoentrecadaunadelasoperacionesqueserealizan.CÓDIGOFUENTE#defineBLUE7#defineGREEN5#defineRED3voidsetup(){
pinMode(RED,OUTPUT);pinMode(GREEN,OUTPUT);pinMode(BLUE,OUTPUT);digitalWrite(RED,HIGH);digitalWrite(GREEN,LOW);digitalWrite(BLUE,LOW);
}voidloop(){
digitalWrite(RED,HIGH);delay(1000);digitalWrite(RED,LOW);delay(1000);digitalWrite(BLUE,HIGH);delay(1000);digitalWrite(BLUE,LOW);delay(1000);digitalWrite(GREEN,HIGH);delay(1000);digitalWrite(GREEN,LOW);delay(1000);
}
![Page 73: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/73.jpg)
FASE3:INTERACTUARCONUNLEDRGBLafase3yúltimadeesteprimerobjetivoconsisteenlautilizaciónanalógicaydigital de unLEDRGB.El circuito que vamos amontar es compartido porambos modos de utilización, lo único que cambia es el código fuente quecargaremosenlaplacadeArduino.MONTAJEFÍSICOElmontajefísicodelcircuitoeselsiguiente:
Ilustración49.CircuitoObje tivo1Fase 3
TienesqueprestarespecialatenciónalapatilladelLEDRGBalaqueconectaslatomadetierra.CadapatilladelLEDsecorrespondeconuncoloryunaconlatierra,talycomopuedesverenlasiguienteimagen:
![Page 74: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/74.jpg)
Ilustración50.Pati l las LEDRGB
PROGRAMACIÓNDIGITALEn la primera parte del código definiremos las constantes que indican lospinesalosquehemosconectadocadaunadelostrespatillasdelLEDRGBquese corresponden con los colores rojo, verde y azul. En el ejercicio hemosconectadoelLEDazulalpinnúmero3,elverdealpinnúmero5yelrojoalpinnúmero6.En la sección de configuración especificaremos como salidas los tres pinesquehemosconfiguradoparacadaunode loscoloresde laspatillasdelLEDRGB. Además, estableceremos el estado inicial de cada uno de ellos,concretamente,todaslassalidasestaráninicializadasconelvalorLOW.En la sección principal vamos a ir encendiendo y apagando cada una de laspatillas del LED RGB, estableciendo un pequeño delay para que se puedaapreciarelcambiodecoloresdelLEDRGB.CÓDIGOFUENTE#defineRED6#defineGREEN5#defineBLUE3
voidsetup(){
pinMode(RED,OUTPUT);pinMode(GREEN,OUTPUT);pinMode(BLUE,OUTPUT);digitalWrite(RED,LOW);digitalWrite(GREEN,LOW);digitalWrite(BLUE,LOW);
}
![Page 75: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/75.jpg)
voidloop(){
digitalWrite(RED,HIGH);delay(500);digitalWrite(RED,LOW);delay(500);digitalWrite(GREEN,HIGH);delay(500);digitalWrite(GREEN,LOW);delay(500);digitalWrite(BLUE,HIGH);delay(500);digitalWrite(BLUE,LOW);delay(500);
}
PROGRAMACIÓNANALÓGICAEn este ejercicio utilizaremos el mismo circuito electrónico que hemosmontadoparaelanterior.Ladiferenciaentreambosejerciciosresideenqueenel anterior hemos utilizado las salidas de forma digital y en éste de formaanalógica.Paraesteejerciciohemosañadidounanuevaconstante,delayTime,queindicael tiempoque transcurreentrecadacambioqueharemosen la intensidaddelLED.Laseccióndeconfiguraciónesexactamenteigualqueenelanteriorejercicio.Elcambiorespectoalejercicioanteriorradicaenlasecciónprincipal(loop),iremos encendiendo cada una de las patillas del LED RGB de formaprogresiva para después apagarla con un digitalWrite y continuar con lasiguientepatilla.CÓDIGOFUENTE#defineRED6#defineGREEN5#defineBLUE3#definedelayTime20voidsetup(){
pinMode(RED,OUTPUT);
![Page 76: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/76.jpg)
pinMode(GREEN,OUTPUT);pinMode(BLUE,OUTPUT);digitalWrite(RED,LOW);digitalWrite(GREEN,LOW);digitalWrite(BLUE,LOW);
}voidloop(){
delay(1000);for(inti=0;i<255;i+=1){
analogWrite(GREEN,i);delay(delayTime);
}digitalWrite(GREEN,LOW);delay(1000);for(inti=0;i<255;i+=1){
analogWrite(RED,i);delay(delayTime);
}digitalWrite(RED,LOW);delay(1000);for(inti=0;i<255;i+=1){
analogWrite(BLUE,i);delay(delayTime);
}digitalWrite(BLUE,LOW);
}
![Page 77: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/77.jpg)
AHORAERESCAPAZDE…Hasacabadoelprimerobjetivoyhasadquiridolossiguientesconocimientos:
Familiarizaciónconelentornodedesarrollo.FamiliarizaciónconlaplacaArduino.Realizacióndepequeñosprogramas.Utilizacióndesentenciassencillas.ManejodeLEDs.ManejodeLEDRGB.MontajebásicodecircuitosutilizandoLEDs.
![Page 78: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/78.jpg)
OBJETIVO2–MANEJOPULSADORES
![Page 79: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/79.jpg)
EXPLICACIÓNEn el objetivo número 2 explicaremos todo lo necesario para aprender amanejar pulsadores con el fin de controlar el encendido y apagado de losLEDs.Enelobjetivoanteriorhasaprendidoamanejarlassalidasdelaplaca.Enéste,loprincipalesqueaprendasa interactuarcon lasentradasde laplacay seascapazdecombinarlainteraccióndeambas.
![Page 80: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/80.jpg)
FUNCIONESDEPROGRAMACIÓNEn este objetivo vamos a profundizar en las siguientes funciones deprogramación:DIGITALREADMediante la sentencia digitalRead podemos leer el valor que tiene un pinalmacenado.Paraprocederconlalecturahayqueindicarelpinaleer,queiráde0a13ypodráserindicadomediantevaloroconstante.Elvalorleídoseráunodelosdossiguientes:
HIGH:Elpincontieneelvalor1.LOW:Elpincontieneelvalor0.
Enelsiguienteejemploserecibeelvalordelpinnúmero3:valor=digitalRead(3);En lugar de utilizar el valor 3, en el siguiente ejemplo temostramos comoutilizarlaconstantequehemosdefinidopreviamente:valor=digitalRead(VERDE);
IFLasentencia if seutilizaparacomprobar siunacondiciónsecumpleonoyejecutarunbloquedecódigouotrodependiendodeello.Esdecir,medianteifvamosapoderejecutardiferentessentenciasdependiendodelresultadodeunacomparaciónentredoselementos.Las comparaciones que se pueden realizar entre los dos elementos de lacomparaciónson:
![Page 81: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/81.jpg)
Ilustración51.Ope radore s comparación
Enel siguienteejemplosecompruebaelvalorde laentradanúmero5de laplaca, y en caso de serHIGH escribe en el pin de salida el valorHIGH, esdecir, si en el pin 5 tenemos una señal de entrada HIGH, en la salida sedevolverá otra señal HIGH. Traducido a un ejemplo sencillo, sería: siactivamos un dispositivo, provocamos la activación de otro, en este caso,encendemoselledverde.If(digitalRead(5)==HIGH){
digitalWrite(VERDE)=HIGH;}Enlasentenciaifpuedeañadirseelbloquedecódigoquesedebedeejecutaren caso de que la condición no se cumpla, éste bloque es añadido con lasentenciaelse.Enelsiguienteejemplosecompruebasielvalordelpinnúmero5esHIGHyencasodeserloescribeHIGHenlasalidaVERDE,porelcontrario,sinosecumple,escribeHIGHenlasalidaROJO.
If(digitalRead(5)==HIGH)
{digitalWrite(VERDE)=HIGH;
}else
{digitalWrite(ROJO)=HIGH;
{Traducido a un ejemplo sencillo sería: si (if) activamos un dispositivo
![Page 82: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/82.jpg)
determinadoseenciendeelledverde,ysino(else)loactivamosseenciendeelledrojo.En la condición de la sentencia if también se pueden poner diferentescondicionesmedianteoperadoresORyAND.
OR:Serepresentapor||eindicaquesetienequecumplirunauotra.AND:Serepresentapor&&eindicaquesetienenquecumplirunayotra.
En la siguiente sentencia se está comprobandomedianteOR que la variablevalorseamenorquevalorminimooqueseamayorquevalormaximo:
if(valor<valorminimo||valor>valormaximo)
INPUT_PULLUPEsuntipodeconfiguracióndepindelaplacadeArduino,juntoconINPUTyOUTPUT. La diferencia respecto a INPUT es que si utilizamosINPUT_PULLUPelcircuitoutilizarálasresistenciasinternasdelaplacadeArduino,cosaquenoocurreconelmododefuncionamientoINPUT.Llevadoalapráctica,siutilizamosINPUTdeberemosdeutilizarresistenciasennuestroscircuitosparaloselementosdeentradadelaplaca,ysiutilizamosINPUT_PULLUPnotendremosqueutilizarlasyaqueutilizarálas internasdelaplaca.
![Page 83: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/83.jpg)
MATERIALESAcontinuación,puedesencontrarellistadodematerialesquevamosautilizarenéstesegundoobjetivo:
Ilustración52.Mate riale s obje tivo2
![Page 84: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/84.jpg)
FASE 1: ENCENDER Y APAGAR VARIOS LEDS CON UN PULSADOR(VERSIÓN1)La fase 1 de este objetivo consiste en la utilización de un pulsador paraencender y apagar dos LEDs en función de su pulsación. El modo defuncionamientodelpindeentradaseráINPUT.MONTAJEFÍSICOAcontinuación,tieneselmontajedelcircuitoelectrónicoparaestafase:
Ilustración53.CircuitoObje tivo2Fase 1
Tienes que prestar atención a que el pulsador esté correctamente conectadoparapoderleerlaentradasinproblemas.
PROGRAMACIÓNEnlaprimeraseccióndelprogramasedefinenlasconstantesqueutilizaremosen la actividad.Hemos definido para el LED rojo la constante 13 y para el
![Page 85: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/85.jpg)
verde la 12, que son los pines donde están conectados a la placa. Para elpulsador hemos definido la constante 4, que es el pin donde lo hemosconectado.EnlaseccióndeconfiguraciónsedefinencomosalidaslospinesdondeestánconectadoslosLEDs(lasalidaserefierealencendido/apagadodelosleds)ycomoentrada,elpindondehemosconectadoelpulsador(laentradaserefierealapulsaciónonodelpulsador).La sección principal consiste en que si el pulsador se encuentra presionado(LOW),elLEDverdeseencenderá(elrojoestaráapagado),encasocontrario,si no se encuentra presionado, el LED encendido será el rojo (y el verdeapagado).CÓDIGOFUENTE#defineRED13#defineGREEN12#defineBUTTON4voidsetup(){
pinMode(RED,OUTPUT);pinMode(GREEN,OUTPUT);pinMode(BUTTON,INPUT);
}voidloop(){
if(digitalRead(BUTTON)==LOW){
digitalWrite(GREEN,LOW);digitalWrite(RED,HIGH);
}else{
digitalWrite(RED,LOW);digitalWrite(GREEN,HIGH);
}}
![Page 86: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/86.jpg)
FASE 2: ENCENDER Y APAGAR VARIOS LEDS CON UN PULSADOR(VERSIÓN2)Lafase2delobjetivoconsisteenlautilizacióndelmododefuncionamientodepinesINPUT_PULLUPyelmanejodedosLEDsenfuncióndelapulsacióndeunpulsador.MONTAJEFÍSICOElcircuitoelectrónicoeselsiguiente:
Ilustración54 .CircuitoObje tivo2Fase 2
Debes prestar especial atención al circuito formado con el pulsador, comopuedes ver, respecto al circuito de la fase anterior, hemos omitido laresistenciayaquevamosautilizarlafunciónINPUT_PULLUP.
PROGRAMACIÓNElcódigofuentedeesteejercicioesexactamenteigualqueelejemploanterior,a excepción del modo de configuración del pin asignado al pulsador, en el
![Page 87: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/87.jpg)
ejercicio anterior lo definíamos como INPUT y en este ejercicio comoINPUT_PULLUP.CÓDIGOFUENTE#defineRED13#defineGREEN12#defineBUTTON4voidsetup(){
pinMode(RED,OUTPUT);pinMode(GREEN,OUTPUT);pinMode(BUTTON,INPUT_PULLUP);
}voidloop(){
if(digitalRead(BUTTON)==LOW){
digitalWrite(GREEN,LOW);digitalWrite(RED,HIGH);
}else{
digitalWrite(RED,LOW);digitalWrite(GREEN,HIGH);
}}
![Page 88: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/88.jpg)
AHORAERESCAPAZDE…Tras la finalización del segundo objetivo has adquirido los siguientesconocimientos:
Has aprendido a montar un circuito con componentes de entrada a laplaca.Hasaprendidounnuevomododefuncionamientodepin.Hasaprendidoaleerinformacióndeentrada.Hasampliadolassentenciasdecódigoquesabesutilizar.
![Page 89: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/89.jpg)
PROYECTO-CREARUNSEMÁFORO
![Page 90: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/90.jpg)
EXPLICACIÓNEn este proyecto resumen vas a aprender a simular un semáforo utilizandoLEDsyunpulsadorjuntoconfuncionesdeprogramaciónyaconocidasenlosdosobjetivosanteriores.Elobjetivodelarealizacióndelsemáforoesponerenprácticalaaplicacióndelógicadefuncionamientodeelementosexistentesennuestroentornodeldíaadía al código fuente que escribes, junto con la consolidación de losconocimientosdeconstruccióndecircuitosyfuncionesdeprogramación.El proyecto que vas a construir simulará el funcionamiento de un semáforoconvencional, la relación entre los componentes electrónicos y los delsemáforoeslasiguiente:
SemáforodecochesSimulaciónconLEDs.SemáforopeatonesSimulaciónconLEDs.BotónpeatonesparaactivarsemáforoPulsadoryLEDdeindicacióndepulsación.
![Page 91: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/91.jpg)
MATERIALESAcontinuación,puedesencontrarellistadodematerialesquevamosautilizarenesteproyecto:
Ilustración55.Mate riale s proye cto
![Page 92: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/92.jpg)
MONTAJEFÍSICOElcircuitodelproyectoeselsiguiente:
Ilustración56.CircuitoProye ctoSemáforo
En el ejemplo vas a utilizar un modo de configuración de entradaINPUT_PULLUP, por lo que no es necesario el uso de resistencias en elcircuitoquevasamontarconelpulsador.
![Page 93: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/93.jpg)
PROGRAMACIÓNLapartededefinicióndeconstantes (#define)contiene todas lasdefinicionesdetodaslasentradasysalidasquevasautilizardelaplacadeArduino.Vasatenerladefinicióndelos3coloresexistentesenunsemáforodecochesylos2coloresexistentesenelsemáforodelospeatones.Tambiénlaluzdeindicacióndequehasidopresionadoelpulsadorporunpeatónparaqueelsemáforodecochessepongaenrojoyasípoderpasar.Porúltimotienesladefinicióndelpinalqueestáconectadoelpulsador.En la siguiente imagen puedes ver a qué color corresponde cada una de lasconstantesdefinidasenelcódigo:
Ilustración57 .Re laciónconstante s-semáforore al
Enlaseccióndeconfiguraciónsedefineelmododefuncionamientodetodoslospinesjuntoconelestadoinicialdelcircuito.El programaprincipal consiste enuna serie de accionesque se ejecutanunavez es presionado el pulsador y que simulan el funcionamiento de unsemáforo.CÓDIGOFUENTE#defineREDCARS13#defineYELLOWCARS12#defineGREENCARS11#defineGREENPEDESTRIANS10#defineREDPEDESTRIANS9#defineSIGNAL3#defineBUTTON6
![Page 94: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/94.jpg)
voidsetup(){
pinMode(REDCARS,OUTPUT);pinMode(YELLOWCARS,OUTPUT);pinMode(GREENCARS,OUTPUT);pinMode(REDPEDESTRIANS,OUTPUT);pinMode(GREENPEDESTRIANS,OUTPUT);pinMode(SIGNAL,OUTPUT);pinMode(BUTTON,INPUT_PULLUP);
digitalWrite(REDCARS,LOW);digitalWrite(YELLOWCARS,LOW);digitalWrite(GREENCARS,HIGH);digitalWrite(REDPEDESTRIANS,HIGH);digitalWrite(GREENPEDESTRIANS,LOW);digitalWrite(SIGNAL,LOW);
}voidloop(){
if(digitalRead(BUTTON)==LOW){
digitalWrite(SIGNAL,HIGH);delay(5000);digitalWrite(YELLOWCARS,HIGH);digitalWrite(GREENCARS,LOW);delay(2000);digitalWrite(YELLOWCARS,LOW);digitalWrite(REDCARS,HIGH);digitalWrite(SIGNAL,LOW);digitalWrite(REDPEDESTRIANS,LOW);digitalWrite(GREENPEDESTRIANS,HIGH);delay(10000);for(inti=0;i<3;i++){
digitalWrite(GREENPEDESTRIANS,LOW);delay(1000);digitalWrite(GREENPEDESTRIANS,HIGH);delay(1000);
}digitalWrite(GREENPEDESTRIANS,LOW);digitalWrite(REDPEDESTRIANS,HIGH);digitalWrite(REDCARS,LOW);digitalWrite(GREENCARS,HIGH);
}}La traducción del código es la correspondiente al funcionamiento de dossemáforos, uno de vehículos y otro de peatones, que podemos encontrar encualquiercalle:
![Page 95: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/95.jpg)
En la primera parte el LED rojo del semáforo de los coches está apagadodigitalWrite(REDCARS,LOW) y el verde encendido digitalWrite(GREENCARS,HIGH) (estáncirculandoloscoches)yalcontrarioenelcasodelsemáforodelospeatones,el verde apagado digitalWrite(GREENPEDESTRIANS,LOW) y el rojo encendidodigitalWrite(REDPEDESTRIANS,HIGH)(lospeatonesnopuedencruzar).Sisepresionaelpulsadorif(digitalRead(BUTTON)==LOW),seiluminaelLEDblancodigitalWrite(SIGNAL,HIGH), indicando que lo hemos activado. Pasados 5 segundosdelay(5000),seiluminaelamarillodeloscochesdigitalWrite(YELLOWCARS,HIGH)paraavisar que deben ir parando y a la vez se apaga el verdedigitalWrite(GREENCARS,LOW). Pasados 2 segundos delay(2000) el amarillo se apagadigitalWrite(YELLOWCARS,LOW)yseiluminaelrojodigitalWrite(REDCARS,HIGH)paraquelos vehículos paren totalmente. En ese momento se apaga el LED blancodigitalWrite(SIGNAL,LOW) y el rojo de los peatones se apagadigitalWrite(REDPEDESTRIANS,LOW) para iluminarse el verdedigitalWrite(GREENPEDESTRIANS,HIGH)yasípermitirelpasoalospeatones.Pasados10segundosdelay(10000)elLEDverdedelospeatonesseenciendeyseapaga3 veces durante 1 segundo (1 segundo encendido, 1 pagadoy así tresveces)for(inti=0;i<3;i++)avisandoalospeatonesquedebenirdejandodecruzar.Una vez repetido tres veces, el LED verde de los peatones se apagarádigitalWrite(GREENPEDESTRIANS,LOW) encendiéndose el rojodigitalWrite(REDPEDESTRIANS,HIGH)yalavez,elverdedeloscochesseencenderádigitalWrite(GREENCARS,HIGH)yelrojoseapagarádigitalWrite(REDCARS,LOW).Aquíterminaráelcódigoquehemoscreadohastaquesevuelvaapresionarelpulsadorquevolveráainiciarelbucle.
![Page 96: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/96.jpg)
OBJETIVO3–MANEJODEPOTENCIÓMETROS
![Page 97: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/97.jpg)
EXPLICACIÓNElobjetivo3sebasaenlautilizacióndecomponentesanalógicosdelaplacayenutilizarnuevoscomponentesdesalida.Se trata de una extensión del objetivo 2, en el que has aprendido a leercomponentesdigitalesdeentradas.
![Page 98: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/98.jpg)
FUNCIONESDEPROGRAMACIÓNEn este objetivo vamos a profundizar en las siguientes funciones deprogramación:ANALOGREADLafunciónnospermitelalecturaanalógicadelasentradas0ala5(ANALOGIN:A0,A1,A2,A3,A4,A5).Lalecturavienedadaenunvalorentre0y1023.Unacaracterísticadelospinesanalógicosesquenonecesitanserdeclaradoscomoentradasosalidas,sonsiemprepinesdeentradaalaplacadeArduino.Enelsiguienteejemplosemuestracomoseleeelpinnúmero3:intValor=analogRead(3);Tambiénesposibleutilizar las constantesdefinidaspara realizar las lecturasanalógicas:intValor=analogRead(VERDE);
ANALOGWRITELa función nos permite escribir valores analógicos comprendidos entre 0 y255alospines3,5,6,9,10y11delaplacadeArduino,quesonlosúnicosquepermitenvaloresanalógicos.Recuerdaqueestospinesllevanelsímbolo:~delantedelnúmerodepin:~3,~5..Talycomopuedesverenelsiguienteejemplo,lafunciónrequieredelnúmerodelpinalquesevaaenviarelvaloryelvaloraenviar:analogWrite(3,200);Tambiénsepuedeutilizanunaconstanteparaelpin:analogWrite(VERDE,200);El valor enviado puede ser especificado mediante una constante en vez demedianteunvalordirectamente:analogWrite(VERDE,VALORMAXIMO);
![Page 99: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/99.jpg)
MAPLafunciónmapnospermiterelacionarunvalorqueseencuentraenunrangodevaloresaotrorangodevalores.Enelejemploqueestamostrabajando,laplaca hace una lectura del pin analógico (potenciómetro) comprendida entrelos valores 0 y 1023 y tendrá que transformar ese valor en un rangocomprendido entre 0 y 255 para escribirlo en una salida (zumbador). Pararealizarestaconversiónusamoslafunciónmap.En el siguiente ejemplo se muestra la utilización de la función map paraconvertir el valor de una variable que se encuentra en el rango 0-1023 alrango0-255:
intValorFinal=map(ValorInicial,0,1023,0,255);Porlotanto,lafunciónseutilizadelasiguienteforma:
map(Valor a transformar, InicialMenor, InicialMayor, FinalMenor,FinalMayor);
Ilustración58.Transformaciónconmap
![Page 100: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/100.jpg)
MATERIALESAcontinuación,puedesencontrarellistadodematerialesquevamosautilizarenestetercerobjetivo:
Ilustración59.Mate riale s obje tivo3
![Page 101: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/101.jpg)
FASE 1: CONTROL DE SONIDO DE UN ZUMBADOR CON UNPOTENCIÓMETROEn la fase 1 de este tercer objetivo vas a aprender a utilizar dos nuevoscomponentes electrónicos: un potenciómetro y un zumbador. Mediante elprimerodeelloscontrolaremoselsegundodeformatotalmenteanalógica:enfunción de la corriente que deje pasar el potenciómetro, girándolo más omenos,elzumbadoremitiráunsonidomásomenoselevado.MONTAJEFÍSICOAcontinuación,puedesencontrarelmontajedelcircuitoelectrónico.
Ilustración60.CircuitoObje tivo3Fase 1
El zumbador conecta a tierra (GND) y a una salida analógica. Elpotenciómetroconectaatierra(GND),unaentradaanalógicayalos5Vdelaplaca.
PROGRAMACIÓN
![Page 102: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/102.jpg)
En la sección de definición hemos definidos dos constantes: la 11 paraespecificarelpinenelqueestáconectadoelzumbadoryla5paraelpindondeseencuentraconectadoelpotenciómetro.En la sección de configuración se define el pin del zumbador como salidapinMode(BUZZER,OUTPUT) y el del potenciómetro como entradapinMode(POTENTIOMETER,INPUT).El funcionamiento de la sección principal es simple: lee el valor delpotenciómetrointValueFromPotentiometer=analogRead(POTENTIOMETER), lo transformaenelrangode0a255conelquetrabajanlassalidasanalógicasintValueToBuzzer= map(ValueFromPotentiometer,0,1023,0,255) y lo escribe en la salida del zumbadoranalogWrite(BUZZER,ValueToBuzzer)pararegularelvolumenconelquesuena.CÓDIGOFUENTE#defineBUZZER11#definePOTENTIOMETER5voidsetup(){
pinMode(BUZZER,OUTPUT);pinMode(POTENTIOMETER,INPUT);
}voidloop(){
intValueFromPotentiometer=analogRead(POTENTIOMETER);intValueToBuzzer=map(ValueFromPotentiometer,0,1023,0,255);analogWrite(BUZZER,ValueToBuzzer);
}
![Page 103: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/103.jpg)
FASE 2: CONTROL DE ENCENDIDO DE LEDS CON UNPOTENCIÓMETROEn la fase2del objetivovamos amanejar el encendidoy apagadodeLEDsmediante un potenciómetro, es decir, mediante una entrada analógica (señalenviada por el potenciómetro) vamos a controlar un conjunto de salidasdigitales(señaldeencendidooapagadodelosLEDs).Unavezmontadoy subidoel código,veremosquegirandomásomenos elpotenciómetro iremos encendiendo progresivamente los LEDs. Cuanto másgiremoselpotenciómetro,másLEDsiremosencendiendoysilogiramosensentidocontrariolosiremosapagando.MONTAJEFÍSICOElcircuitoelectrónicoeselsiguiente:
Ilustración61.CircuitoObje tivo3Fase 2
LaconexióndelosLEDspuedesverloenelapartadodelObjetivo1yladelpotenciómetroenelapartadoanterior.
![Page 104: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/104.jpg)
PROGRAMACIÓNEnlaseccióndeconstantesestándefinidastodaslasconstantesqueespecificanlosLEDs conectados a la placa, estos pines van del 8 al 13.A su vez se hadefinido una constante para indicar el pin en el que se ha conectado elpotenciómetro,elnúmero5.LaseccióndeconfiguracióninicializalospinesdelosLEDscomosalidaydelpotenciómetrocomoentrada.Lasecciónprincipalestansimplecomoladelejercicioanterior,aunquemásextensaen loqueacantidaddecódigofuentese refiere.Básicamente tiene3subsecciones claramente diferenciadas, en la primera se obtiene el valor delpotenciómetrointValueFromPotentiometer=analogRead(POTENTIOMETER),enlasegundasetraduceelvaloralrango0y255intvalue=map(ValueFromPotentiometer,0,1023,0,6)yenlaúltimaparteencenderálosLEDsquesecorrespondanconelvalorleídodesdeelpotenciómetro:if(value==0)–NingúnLEDencendido(todosLOW)elseif(value==1)–1LEDencendido,elverdedlaizquierda(1)elseif(value==2)–2LEDsencendidos,el1yel2elseif(value==3)–3LEDsencendidos,el1,2y3elseif(value==4)–4LEDsencendidos,el1,2,3y4elseif(value==5)–5LEDsencendidos,el1,2,3,4y5elseif(value==6)–6LEDsencendidos,todosCÓDIGOFUENTE#defineGREEN113#defineGREEN212#defineYELLOW111#defineYELLOW210#defineRED19#defineRED28#definePOTENTIOMETER5voidsetup(){
pinMode(GREEN1,OUTPUT);pinMode(GREEN2,OUTPUT);
![Page 105: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/105.jpg)
pinMode(YELLOW1,OUTPUT);pinMode(YELLOW2,OUTPUT);pinMode(RED1,OUTPUT);pinMode(RED2,OUTPUT);pinMode(POTENTIOMETER,INPUT);
}voidloop(){
intValueFromPotentiometer=analogRead(POTENTIOMETER);intvalue=map(ValueFromPotentiometer,0,1023,0,6);if(value==0){
digitalWrite(GREEN1,LOW);digitalWrite(GREEN2,LOW);digitalWrite(YELLOW1,LOW);digitalWrite(YELLOW2,LOW);digitalWrite(RED1,LOW);digitalWrite(RED2,LOW);
}elseif(value==1){
digitalWrite(GREEN1,HIGH);digitalWrite(GREEN2,LOW);digitalWrite(YELLOW1,LOW);digitalWrite(YELLOW2,LOW);digitalWrite(RED1,LOW);digitalWrite(RED2,LOW);
}elseif(value==2){
digitalWrite(GREEN1,HIGH);digitalWrite(GREEN2,HIGH);digitalWrite(YELLOW1,LOW);digitalWrite(YELLOW2,LOW);digitalWrite(RED1,LOW);digitalWrite(RED2,LOW);
}elseif(value==3){
digitalWrite(GREEN1,HIGH);digitalWrite(GREEN2,HIGH);digitalWrite(YELLOW1,HIGH);digitalWrite(YELLOW2,LOW);digitalWrite(RED1,LOW);digitalWrite(RED2,LOW);
}elseif(value==4){
digitalWrite(GREEN1,HIGH);digitalWrite(GREEN2,HIGH);
![Page 106: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/106.jpg)
digitalWrite(YELLOW1,HIGH);digitalWrite(YELLOW2,HIGH);digitalWrite(RED1,LOW);digitalWrite(RED2,LOW);
}elseif(value==5){
digitalWrite(GREEN1,HIGH);digitalWrite(GREEN2,HIGH);digitalWrite(YELLOW1,HIGH);digitalWrite(YELLOW2,HIGH);digitalWrite(RED1,HIGH);digitalWrite(RED2,LOW);
}elseif(value==6){
digitalWrite(GREEN1,HIGH);digitalWrite(GREEN2,HIGH);digitalWrite(YELLOW1,HIGH);digitalWrite(YELLOW2,HIGH);digitalWrite(RED1,HIGH);digitalWrite(RED2,HIGH);
}}
![Page 107: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/107.jpg)
AHORAERESCAPAZDE…Unavezrealizadoelobjetivonúmero3hasaprendidoa:
Utilizarentradasanalógicas.Utilizarsalidasanalógicas.Mapearvaloresentrerangosdiferentes.Hasaumentadoelnúmerodecomponentesquesabesutilizar.
![Page 108: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/108.jpg)
OBJETIVO4–MANEJODESENSORES
![Page 109: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/109.jpg)
EXPLICACIÓNElobjetivo4consisteenaprenderautilizardiferentessensoresconectadosalaplacadeArduino.Ademásdelossensores,sevanautilizarnuevoscomponentesdesalidajuntoconel”MonitorSerie”deArduino.(Verapartado“PantallaPrincipal”)
![Page 110: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/110.jpg)
FUNCIONESDEPROGRAMACIÓNEn este objetivo vamos a profundizar en las siguientes funciones deprogramación:LIBRERÍASUna librería es un componente software que contiene operaciones yaimplementadasyqueofrecenuninterfazconocidoquepermitenelusodelasmismas.Funcionalmentehablando,una librería esun ficheroqueañadimosanuestroprograma y que contiene código fuente ya escrito que podemos utilizar atravésdelinterfazqueofrecen.Arduino ya incluye librerías en la instalación del IDE del desarrollo, pero,además, en internet podrás encontrar un montón de librerías que puedesincorporara tusprogramas.Teanimoaquebusquesporquevasaencontrarlibreríasquetevanapoderayudaradesarrollartuspropiosprogramas.
#INCLUDEMediante la sentencia #include puedes incluir para el uso en tu programasoftwarelibreríasyadesarrolladas.Enesteobjetivosehanutilizadoalgunaslibreríasparaincluirfuncionalidadesyadesarrolladasenelcódigofuente.Laslibreríasquesehanutilizadoson:
LiquidCrystal: Contiene todos los elementos necesarios para interactuardeformasencillaconunapantallaLCD.SimpleDHT:Contienetodosloselementosnecesariosparainteractuarconelsensordehumedadytemperaturaquesehautilizado.
![Page 111: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/111.jpg)
MATERIALESAcontinuación,puedesencontrarellistadodematerialesquevamosautilizarenestecuartoobjetivo:
Ilustración62.Mate riale s obje tivo4
![Page 112: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/112.jpg)
FASE1:LECTURADEUNSENSORLDREnestafase1delúltimoobjetivovamosautilizarunsensorLDRparaobtenerlaintensidaddelaluzambientalymostrarlaenunapantallaLCD.MONTAJEFÍSICOElcircuitoelectrónicoeselsiguiente:
Ilustración63.CircuitoObje tivo4 Fase 1
DebesprestaratenciónalasconexionesdelaplacaArduinoylapantallaLCD,yaqueeslaprimeravezqueutilizarásunnúmerotanampliodecablesparaunúnicocomponente.Revisaelapartado“PANTALLALCD”dondepodrásvermásdetallessobrelasconexionesentrelapantallaylaplacaArduino.
![Page 113: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/113.jpg)
PROGRAMACIÓNEn la sección de definiciones se definen constantes y variables, además deincluir la librería necesaria para interactuar de forma fácil y rápida con lapantalla LCD que hemos conectado a la placa #include <LiquidCrystal.h>. Lasconstantes definidas indican que el sensor LDR está conectado al pin 5mientrasque lapantallaLCDestá conectadaa lospinesquevandel7 al12,ambos inclusive. En esta sección también se definen las variables para lapantallaLCDyunpardevariablesqueseutilizaránenlasecciónprincipal.La sección de configuración inicializa los diferentes pines como entrada osalidasegúncorresponda.Además,de lasdos líneasde laLCDenlasquesemostraráinformación,enlafilasuperiorsemostraráunabrevedescripcióndeloquesemostraráenlasegundalínea,“Niveldeluz”.LasecciónprincipalleeelvalordelsensorLDRylotransformaaunvalorde0a100,yaquesemostraráelnivelde luzde formaporcentual.Unavezsetieneelvalortransformado,ésteesescritoenlasegundalíneadelLCD.CÓDIGOFUENTE#include<LiquidCrystal.h>#defineLDR5#definePIN17#definePIN28#definePIN39#definePIN410#definePIN511#definePIN612LiquidCrystallcd(PIN1,PIN2,PIN3,PIN4,PIN5,PIN6);intvalue,normalizedValue;voidsetup(){
pinMode(LDR,INPUT);pinMode(PIN1,OUTPUT);pinMode(PIN2,OUTPUT);pinMode(PIN3,OUTPUT);pinMode(PIN4,OUTPUT);pinMode(PIN5,OUTPUT);pinMode(PIN6,OUTPUT);lcd.begin(16,2);lcd.print("Niveldeluz");
}
![Page 114: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/114.jpg)
voidloop(){
value=analogRead(LDR);normalizedValue=map(value,0,1023,0,100);lcd.setCursor(0,1);lcd.print(normalizedValue);lcd.print("%");
}
![Page 115: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/115.jpg)
FASE2:SEGURIDADCONSENSORDEPRESENCIALafase2consisteenlasimulacióndeunapequeñaalarmaqueseactivaconelsensordepresenciaymovimiento.Sielsensordetectaqueexistemovimientoopresenciaactivaráelzumbador,emitiendounaseñalacústica,yunosLEDs,emitiendounaseñalluminosa.MONTAJEFÍSICOAcontinuación,puedesobservarelcircuitoelectrónico:
Ilustración64 .CircuitoObje tivo4 Fase 2
Elcircuitoesbastantefamiliaralosquehemostratadoentodoslosobjetivosanteriores, con la única salvedad de la utilización del sensor de presencia ymovimiento, sobre el que deberás prestar atención a la hora de conectarcorrectamentecadaunadelasconexiones.
PROGRAMACIÓN
![Page 116: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/116.jpg)
En la seccióndedeclaracióndeconstanteshemosdefinidoscincoconstantesdiferentes para cada uno de los pines que vamos a utilizar. El sensor depresencia está conectado al pin número 13, el zumbador en el 8 y los tresLEDsenel2,4y6.Enlaseccióndeconfiguraciónsedefineelmododefuncionamientodecadaunodelopinesquesevanautilizar,todosellossonpinesdesalidaexceptoeldelsensor,queesunpinqueseutilizarácomoentrada.En el programa principal se comprobará el estado del sensor. En caso dedetectar presencia if(digitalRead(PIRSENSOR) == HIGH), encenderá los LEDsdigitalWrite(LED1, HIGH) y activará el zumbador digitalWrite(BUZZER, HIGH). Hemosconfiguradoundelaydetressegundosdelay(3000)antesdevolveracomprobarel estadode zumbador, de estemodo serámás sencillo comprobarque todofuncionacorrectamente,yaque,sinointroducimosestedelay,laseñalacústicayvisualqueseactivaporladeteccióndepresenciapuedepasarinadvertidapornosotros.EnelmomentoenelqueelsensordejadedetectarpresenciaapagalosLEDsdigitalWrite(LED1,LOW)ydesactivaelzumbadordigitalWrite(BUZZER,LOW).CÓDIGOFUENTE#definePIRSENSOR13#defineBUZZER8#defineLED16#defineLED24#defineLED32voidsetup(){
pinMode(BUZZER,OUTPUT);pinMode(LED1,OUTPUT);pinMode(LED2,OUTPUT);pinMode(LED3,OUTPUT);pinMode(PIRSENSOR,INPUT);
}voidloop(){
if(digitalRead(PIRSENSOR)==HIGH){
digitalWrite(BUZZER,HIGH);digitalWrite(LED1,HIGH);digitalWrite(LED2,HIGH);digitalWrite(LED3,HIGH);delay(3000);
![Page 117: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/117.jpg)
}else{
digitalWrite(BUZZER,LOW);digitalWrite(LED1,LOW);digitalWrite(LED2,LOW);digitalWrite(LED3,LOW);
}}
![Page 118: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/118.jpg)
FASE3:LECTURADEUNSENSORDETEMPERATURAYHUMEDADLafase3es la fasemássencilladelobjetivoen loquea laconstruccióndelcircuito se refiere, yaque, lo importante de esta fase es el aprendizaje de lautilizacióndelaconsolaserialdeArduino.MONTAJEFÍSICOElcircuitoelectrónicoquevamosautilizareselsiguiente:
Ilustración65.CircuitoObje tivo4 Fase 3
Elmontajedelcircuitoesmuysencillo,elsensorDHT11tiene3conexionesposibles,porloquedeberásdeconectarcorrectamentecadaunadeellasalpinde la placa que corresponda. Además, en el mismo sensor (aunque no entodos) puedes ver la leyenda de cada uno de los pines a los que debe irconectado.
PROGRAMACIÓNLaseccióndeconfiguracióndelejercicio tiene tressentenciasdiferentesquerealizanoperacionesdiferentes.Mediante#includehemos incluido la libreríaque contiene todas las funciones de interacción del sensor de temperatura yhumedadquehemosutilizado#include<SimpleDHT.h>.Tambiénhemosdefinidoelpin7paraelsensor#defineSENSOR7,yporúltimo,hemosdeclaradolavariable
![Page 119: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/119.jpg)
queutilizaremosparainteractuarconelsensorSimpleDHT11sensor.La sección de configuración establece el pin del sensor como entradapinMode(SENSOR, INPUT) e inicializa la salida Serial Serial.begin(9600), además seindicaporpantallamedianteelSerialquehasidoinicializadoelsensor.Aligualqueseconfiguranlospinesdeentradaysalida,aliniciarelMonitorSerieSerial.begin(9600),debesdeconfigurar lavelocidaddecomunicaciónentrelaplacadeArduinoyelordenador,queenestecasolohemosconfiguradoa9600bpsqueeselvalortípicodecomunicacióndelpuertoserie.ElprogramaprincipalleelosdatosdelsensorylosmuestraporlasalidadelMonitorSerie.Elprocesolorepitecadaminuto.La función Serial.println(“texto”) manda la información (lectura del sensor) alPuertoserieymostrarádichainformaciónenelMonitorSerie.CÓDIGOFUENTE#include<SimpleDHT.h>#defineSENSOR7SimpleDHT11sensor;voidsetup(){
pinMode(SENSOR,INPUT);Serial.begin(9600);Serial.println("SENSORSTARTED");
}voidloop(){
Serial.println("Readingthesensor...");
bytetemperature=0;bytehumidity=0;bytedata[40]={0};if(sensor.read(SENSOR,&temperature,&humidity,data)){
Serial.print("Therewasanerrorreading!");}
Serial.println("...Sensorreaded!");Serial.print("Temperature:");Serial.print((int)temperature);
![Page 120: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/120.jpg)
Serial.println("*C,");Serial.print("Humidity:");Serial.print((int)humidity);Serial.println("%");Serial.println("###########");delay(60000);
}SALIDADELALECTURA(MONITORSERIE)ParaarrancarelMonitorSeriepuedeshacerlopinchandoensuiconodesdelabarradeaccesosdirectos.
En la siguiente imagen puedes comprobar una ejecución del ejercicio queacabamosderealizar,enellapuedesapreciarelmensajedeinicializacióndelsensoryvariasmedicionesrealizadas.
Ilustración66.MonitorSe rie s Obje tivo4 Fase 3
![Page 121: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/121.jpg)
![Page 122: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/122.jpg)
AHORAERESCAPAZDE…Unavezconcluidoelobjetivo4,erescapazde:
Utilizardiferentessensores,tantoanalógicoscomodigitalesManejarlaconsolaserialdeArduino.IncluirlibreríasexternasatusproyectosdeArduino.
![Page 123: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/123.jpg)
PROYECTOFINAL–CONTROLATUCASA
![Page 124: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/124.jpg)
EXPLICACIÓNEl proyecto final consiste en la utilización de una amplia variedad decomponentesdentrodeunmismoproyectointeractuandotodosellosalmismotiempo.Con este proyecto vamos a construir un circuito complejo que te permitirátener controlados los parámetros ambientales más importantes de tu casa,comopuedenserlatemperatura,lahumedadylaluz,alavezquemanejarássensores para detectar cualquier tipo de intrusión mediante el sensor depresencia.Además,detectaremostambiéncualquiertipodefugadeaguaquepuedasexistirmediantelautilizacióndelsensordedeteccióndeagua.Para cada uno de los sensores de medición vas a establecer una serie deumbralesquetepermitandefinirvaloresmínimosymáximosparacadaunadelasmedicionesincluidasenelproyecto.Además, enel circuito, vas a incorporarun simuladorde alarmacompuestopor un zumbador y un conjunto de LEDs rojos. La alarma se activará si sedetectan valores fuera de los umbrales establecidos para cada uno de lossensoresdemediciónytambiéncuandosedetectepresenciaofugadeagua.ElcircuitoincorporatambiénundisplayLCDquemuestralosvaloresdelasmediciones que está leyendo y en caso de producirse una alarma indica elsensorquelahaoriginado.
![Page 125: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/125.jpg)
MATERIALESAcontinuación,puedesvertodosloscomponentesquevamosautilizarenesteproyectofinal:
Ilustración67 .Mate riale s proye ctofinal
![Page 126: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/126.jpg)
MONTAJEFÍSICOElcircuitodelproyectofinaleselsiguiente:
Ilustración68.CircuitoProye ctoFinal -Controlatucasa
Debes prestar especial atención a las conexiones de la pantalla LCD y a lasconexionesa lospinesde losdiferentessensores.Tienesque tenerencuentaque las entradas analógicas tienenque estar conectadas apinesquepermitenser analógicos, no únicamente digitales. Otra cosa a tener en cuenta es quecomoqueremosutilizarelsensordeaguaennuestraestaciónmeteorológicaparadetectarsillueveono,debemoscolocarelsensorenposiciónhorizontalparaquelasgotasincidansobretodasusuperficie.Amedidaquelasgotasvancayendosobreelsensorseformaráunapelículadeaguasobresusuperficieloque provocará un aumento del valor del pin S y por tanto detectar si estálloviendoono.Al haber un gran número de cables conectores diferentes sería bueno queutilizasesuncolorparacadatipodeconexión.Parauncorrectomontajedelcircuitoteaconsejoquevayasmontándolopocoapoco,comprobandoquefuncionantodosycadaunodeloscomponentesquevas incluyendo.Deestaforma, teasegurarásqueelcircuitoelectrónicofinalquemontes es correcto y te resultemás fácil encontrar posibles errores demontaje.
![Page 127: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/127.jpg)
![Page 128: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/128.jpg)
PROGRAMACIÓNEnlaprimerapartedelcódigofuentesehanincluidolaslibreríasexternasquese han utilizado para interactuar con el sensor de temperatura y humedad#include<SimpleDHT.h>yconeldisplayLCD#include<LiquidCrystal.h>.Tambiénestándefinidas todas las constantes en dos grupos: el primer grupo de definicióncontiene las constantes de los pines de la placa que utiliza cada componente#define WATER 1, #define DHT 2..., y el segundo grupo contiene los diferentesumbrales para cada uno de los sensores #define minTemperature 10, #definemaxTemperature30...,quepuedesestablecerleselvalorqueconsideresconvenientepara adecuar las alarmas al entorno en el que estés.Dentro de esta primeraparteestánincluidaslasdeclaracionesdelasvariablesquesonutilizadasporelprograma.Enlaseccióndeconfiguraciónseinicializancadaunodelosdiferentespinesdelaplacaquesevanautilizar juntoconelmododefuncionamientode losmismos.Además,tambiéninicializaremoseldisplayLCD.La secciónprincipal es extensa pero sencilla.Tal y comopuedes ver se vancomprobandocadaunodelosdiferentessensoresysecompruebanlosvaloresobtenidos con sus umbrales correspondientes y se marcará ese sensor enestado de alarma en caso de que esté fuera de dichos umbrales. Una vezcomprobadostodoslossensoresserealizarálacomprobacióndesialgunodeellos ha disparado una alarma.El displayLCDmostrará los valores para latemperatura,humedadyluzencasodenohaberseproducidoningunaalarma,encasocontrarioseactivaránlasseñalesluminosasysonorasyeneldisplaysemostrará elmensaje de alarma junto con el código del sensor que la haprovocado.Loscódigosdelossensoressonlossiguientes:
T:TemperaturaH:HumedadL:LuzP:PresenciaW:Agua
Dadalalongituddelprograma,paralaexplicacióndelflujodelmismohemosutilizado comentarios incrustados en el código fuente. Los comentarios seintroducencon//omediantebloques/*texto*/.Laslíneasdecomentariosson
![Page 129: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/129.jpg)
ignoradasdurantelaejecucióndelprogramaysonutilizadasparadocumentarelcódigofuentequeseescribe.CODIGOFUENTE//Incluimoslaslibreríasquevamosautilizar#include<LiquidCrystal.h>#include<SimpleDHT.h>//Definimoslasconstantesdelospinesdelaplaca,dondevanconectadoslosdiferentessensoresenlaplaca.Ejemplo,enelpin1vaconectadoelsensordeagua,enel2elsensorDHT…#defineWATER1#defineDHT2#defineLDR3#definePIRSENSOR4#defineLED15#defineLED26#defineBUZZER7#definePIN18#definePIN29#definePIN310#definePIN411#definePIN512#definePIN613//Definimos losumbralespara cadaunode los sensores.Ejemplo, el rangoque consideramos para la Tª está entre 10ºC como mínimo y 30ºC comomáximo.#defineminTemperature10#definemaxTemperature30#defineminHumidity5#definemaxHumidity80#defineminLight15#definemaxLight95#definemaxWater10//Definimoslasvariablesqueutilizaráelprogramadurantesuejecución//VariableparainteractuarconeldisplayLCDLiquidCrystallcd(PIN1,PIN2,PIN3,PIN4,PIN5,PIN6);//VariabledecontrolparasabersiexistealgunaalarmaboolExistAlarm;//Variablespararealizarcálculosintvalue,normalizedValue;
![Page 130: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/130.jpg)
//VariableparainteractuarconelsensorDHTSimpleDHT11sensor;//VariablesdecontroldealarmadelosdiferentessensoresboolAlarmFromTemperature;boolAlarmFromHumidity;boolAlarmFromLight;boolAlarmFromPresence;boolAlarmFromWater;//Inicializacióndelprogramavoidsetup(){
pinMode(PIN1,OUTPUT);pinMode(PIN2,OUTPUT);pinMode(PIN3,OUTPUT);pinMode(PIN4,OUTPUT);pinMode(PIN5,OUTPUT);pinMode(PIN6,OUTPUT);pinMode(BUZZER,OUTPUT);pinMode(LED1,OUTPUT);pinMode(LED2,OUTPUT);pinMode(PIRSENSOR,INPUT);pinMode(LDR,INPUT);pinMode(DHT,INPUT);pinMode(WATER,INPUT);
//InicializacióndelavariabledelapantallaLCDlcd.begin(16,2);
}//Ejecucióndelprogramavoidloop(){
//Lasvariablesse igualan todasaFalseparavolveracomprobar lossensores
ExistAlarm=false;AlarmFromTemperature=false;AlarmFromHumidity=false;AlarmFromLight=false;AlarmFromPresence=false;AlarmFromWater=false;
//ComprobaciónsensorLDRvalue=analogRead(LDR);normalizedValue=map(value,0,1023,0,100);if(normalizedValue<minLight||normalizedValue>maxLight){
![Page 131: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/131.jpg)
ExistAlarm=true;AlarmFromLight=true;
}
//Comprobaciónsensordeaguaif(analogRead(WATER)>maxWater){
ExistAlarm=true;AlarmFromWater=true;
}
//Comprobaciónsensordetemperaturayhumedadbytetemperature=0;bytehumidity=0;bytedata[40]={0};sensor.read(DHT,&temperature,&humidity,data);if(temperature<minTemperature||temperature>maxTemperature){
ExistAlarm=true;AlarmFromTemperature=true;
}if(humidity<minHumidity||humidity>maxHumidity){
ExistAlarm=true;AlarmFromHumidity=true;
}
//Comprobaciónsensordepresenciaif(digitalRead(PIRSENSOR)==HIGH){
ExistAlarm=true;AlarmFromPresence=true;
}/*Comprobamossihaexistidoalarma.
Si existe alarma (if), el display LCDmuestra dicha alarmajuntoconelsensorosensoresquelahanprovocado.
Sinoexistealarma(else),eldisplayLCDmostraráelvalordetodoslossensores*/if(ExistAlarm){
lcd.clear();lcd.setCursor(0,0);lcd.print("ALARMA");lcd.setCursor(0,1);if(AlarmFromTemperature){
lcd.print("T");
![Page 132: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/132.jpg)
}if(AlarmFromHumidity){
lcd.print("H");}if(AlarmFromLight){
lcd.print("L");}if(AlarmFromPresence){
lcd.print("P");}if(AlarmFromWater){
lcd.print("W");}
digitalWrite(BUZZER,HIGH);digitalWrite(LED1,HIGH);digitalWrite(LED2,HIGH);delay(1000);
}else{
digitalWrite(BUZZER,LOW);digitalWrite(LED1,LOW);digitalWrite(LED2,LOW);lcd.clear();lcd.setCursor(0,0);lcd.print("L:");lcd.print(normalizedValue);lcd.print("%");lcd.print("H:");lcd.print(humidity);lcd.print("%");lcd.setCursor(0,1);lcd.print("T:");lcd.print(temperature);lcd.print("*C");delay(1000);
}}
![Page 133: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/133.jpg)
¡CONSEGUIDO!¡Enhorabuena!¡Hasllegadoalfinaldelaprendizaje!Paraqueseasconscientede todo lo que has aprendido en un fin de semana te hemos preparado unresumenconloshitosquehasalcanzado:
ConocimientosrelacionadosconlaRobótica,ElectrónicayDesarrollodeSoftware.Conocimiento del funcionamiento electrónico de dispositivos básicos:resistencias,LEDs,sensores,etc.Montajedecircuitos.UtilizacióndelentornodedesarrollodeArduino.UtilizacióndelaplacaArduino.UtilizacióndelasentradasysalidasdelaplacadeArduino.ManejodeLEDs.ManejodeLEDRGB.ManejodePulsadores.ManejodePotenciómetros.ManejodeZumbadores.Manejodediferentessensores.ManejodepantallaLCD.UtilizacióndelMonitorSeriedeArduino.RealizacióndeprogramasparaArduino.Realización de proyectos complejos con lógica de funcionamientomediantecódigofuente.UtilizacióndelibreríasdeArduino.
![Page 134: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/134.jpg)
SOBRELOSAUTORESYAGRADECIMIENTOSEstelibroytodoloquerodeaaTimeofSoftwareeselresultadodemuchosañosdedicadosaladocenciaenelámbitotecnológico.PrimerocongruposdeEducaciónSecundariaObligatoriayBachilleratoyposteriormentemedianteladocenciaaformadores.El trabajodecreacióndelmétododeaprendizaje, sintetizaciónyordenaciónde toda la informaciónteóricarelacionadaconArduinoyelaboraciónde lasdiferentesprácticasplasmadasenellibrosonresponsabilidaddelaspersonasdirectamente responsables deTime of Software, Alfredo Moreno y SheilaCórcoles,apasionadosporelmundodeArduinoyporladocencia.Queremosagradeceranuestras familias,amigosycompañerosde trabajoelapoyo incondicional y las aportaciones que han realizado al método deaprendizaje de Arduino que hemos desarrollado, ¡gracias por ser nuestrosconejillosdeindias!Sinvosotrosestonohubierasidoposible.Y por supuesto gracias a ti por comprar “Aprende Arduino en un fin desemana”, esperamos que hayas conseguido el objetivo que te propusistecuando compraste el libro. Habrás podido comprobar que ésto es sólo elprincipio,queArduinoesunmundoapasionante.Notengasdudasenponerteencontactoconnosotrosparacontarnosquétal teha idoycómoteva,¡NOESTÁSSOLO!
![Page 135: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/135.jpg)
TableofContentsINTRODUCCIÓN¿QUÉNECESITOPARAEMPEZAR?PROCESODEAPRENDIZAJE
OrganizaciónDistribucióndelfindesemana
GLOSARIO¿QUÉESLAROBÓTICA?
LeyesdelaRobóticaARDUINO
¿PorquéapareceArduino?¿QuéesArduino?ComponentesplacadeArduino
PinesdigitalesPinesanalógicosPinesalimentaciónsensoresMicrocontroladordecomunicacionesMicrocontroladordeprogramaciónBotónresetPuertoUSBConectordeAlimentación
¿ArduinoyRobótica?Ventajas
ENTORNODEDESARROLLOEntornowebAplicativo
InstalacióndeArduinoenmacOSInstalacióndeArduinoenWindowsInstalacióndeArduinoenLinux
FAMILIARIZÁNDOTECONELENTORNODEDESARROLLOPantallaprincipalMenúprincipal
MenúArchivoMenúProgramaMenúHerramientas
Barradeaccesorápido
![Page 136: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/136.jpg)
VerificarSubirNuevoAbrirSalvarMonitorSerie
ANTESDEEMPEZAREstructuradeunprogramaComponentescomunesentodoslosmontajes
PlacaArduinoProtoboardCableUSBCablesResistenciasLEDLEDRGBPotenciómetroZumbadorSensordeluz(LDR)SensordehumedadytemperaturaSensordepresenciaSensordeaguaPantallaLCD
OBJETIVO1–MANEJOLEDSExplicaciónFuncionesdeprogramación
#definepinModedigitalWriteanalogWritedelayforVariables
MaterialesFase1:InteractuarconunLED
MontajefísicoProgramación
Fase2:InteractuarconvariosLEDSMontajefísico
![Page 137: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/137.jpg)
ProgramaciónFase3:InteractuarconunLEDRGB
MontajefísicoProgramacióndigitalProgramaciónanalógica
Ahoraerescapazde…OBJETIVO2–MANEJOPULSADORES
ExplicaciónFuncionesdeprogramación
digitalReadifINPUT_PULLUP
MaterialesFase1:EncenderyapagarvariosLEDSconunpulsador(Versión1)
MontajefísicoProgramación
Fase2:EncenderyapagarvariosLEDSconunpulsador(Versión2)MontajefísicoProgramación
Ahoraerescapazde…PROYECTO-Crearunsemáforo
ExplicaciónMaterialesMontajefísicoProgramación
CódigofuenteOBJETIVO3–MANEJODEPOTENCIÓMETROS
ExplicaciónFuncionesdeprogramación
analogReadanalogWritemap
MaterialesFase1:Controldesonidodeunzumbadorconunpotenciómetro
MontajefísicoProgramación
Fase2:ControldeencendidodeLEDSconunpotenciómetroMontajefísicoProgramación
![Page 138: El contenido de la obra ha sido desarrollado exclusivamente por … · 2019-06-25 · El contenido de la obra ha sido desarrollado exclusivamente por los miembros del equipo de Time](https://reader030.vdocumento.com/reader030/viewer/2022040301/5e7104ec42569253791c507a/html5/thumbnails/138.jpg)
Ahoraerescapazde…OBJETIVO4–MANEJODESENSORES
ExplicaciónFuncionesdeprogramación
Librerías#include
MaterialesFase1:LecturadeunsensorLDR
MontajefísicoProgramación
Fase2:SeguridadconsensordepresenciaMontajefísicoProgramación
Fase3:LecturadeunsensordetemperaturayhumedadMontajefísicoProgramaciónSalidadelalectura(monitorserie)
Ahoraerescapazde…PROYECTOFINAL–Controlatucasa
ExplicaciónMaterialesMontajefísicoProgramación
¡CONSEGUIDO!SOBRELOSAUTORESYAGRADECIMIENTOS