7
Manuals and Curriculum (http://playground.arduino.cc/Main/ManualsAndCurriculum) Arduino StackExchange (http://arduino.stackexchange.com) Board Setup and Configuration (http://playground.arduino.cc/Main/ArduinoCoreHardware) Development Tools (http://playground.arduino.cc/Main/DevelopmentTools) Arduino on other Atmel Chips (http://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips) Interfacing With Hardware (http://playground.arduino.cc/Main/InterfacingWithHardware) Output (http://playground.arduino.cc/Main/InterfacingWithHardware#Output) Input (http://playground.arduino.cc/Main/InterfacingWithHardware#InputTOC) User Interface (http://playground.arduino.cc/Main/InterfacingWithHardware#ui) Storage (http://playground.arduino.cc/Main/InterfacingWithHardware#Storage) Communication (http://playground.arduino.cc/Main/InterfacingWithHardware#Communication) Power supplies (http://playground.arduino.cc/Main/IntWithHW- PwrSup) General (http://playground.arduino.cc/Main/InterfacingWithHardware#General) Interfacing with Software (http://playground.arduino.cc/Main/InterfacingWithSoftware) User Code Library (http://playground.arduino.cc/Main/GeneralCodeLibrary) Snippets and Sketches (http://playground.arduino.cc/Main/SketchList) Libraries (http://playground.arduino.cc/Main/LibraryList) Tutorials Search the Arduino Playground - - - - - - - - - -

Arduino Playground - OSW041

Embed Size (px)

DESCRIPTION

Arduino Playground - OSW041

Citation preview

  • Manuals and Curriculum(http://playground.arduino.cc/Main/ManualsAndCurriculum)Arduino StackExchange(http://arduino.stackexchange.com)Board Setup and Configuration(http://playground.arduino.cc/Main/ArduinoCoreHardware)Development Tools(http://playground.arduino.cc/Main/DevelopmentTools)Arduino on other Atmel Chips(http://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips)Interfacing With Hardware(http://playground.arduino.cc/Main/InterfacingWithHardware)

    Output(http://playground.arduino.cc/Main/InterfacingWithHardware#Output)Input

    (http://playground.arduino.cc/Main/InterfacingWithHardware#InputTOC)User Interface

    (http://playground.arduino.cc/Main/InterfacingWithHardware#ui)Storage

    (http://playground.arduino.cc/Main/InterfacingWithHardware#Storage)Communication

    (http://playground.arduino.cc/Main/InterfacingWithHardware#Communication)Power supplies

    (http://playground.arduino.cc/Main/IntWithHW-PwrSup)General

    (http://playground.arduino.cc/Main/InterfacingWithHardware#General)

    Interfacing with Software(http://playground.arduino.cc/Main/InterfacingWithSoftware)User Code Library(http://playground.arduino.cc/Main/GeneralCodeLibrary)

    Snippets and Sketches(http://playground.arduino.cc/Main/SketchList)Libraries

    (http://playground.arduino.cc/Main/LibraryList)Tutorials

    Search the Arduino Playground

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

  • (http://playground.arduino.cc/Main/TutorialList)

    Suggestions & Bugs(http://code.google.com/p/arduino/issues/list)Electronics Technique(http://playground.arduino.cc/Main/ElectroInfoResources)Sources for Electronic Parts(http://playground.arduino.cc/Main/Resources)Related Hardware and Initiatives(http://playground.arduino.cc/Main/SimilarBoards)Arduino People/Groups & Sites(http://playground.arduino.cc/Main/People)Exhibition(http://playground.arduino.cc/Projects/ArduinoUsers)Project Ideas(http://playground.arduino.cc/Projects/Ideas)Languages(http://playground.arduino.cc/Main/Languages)

    PARTICIPATE(http://playground.arduino.cc/Main/Participate)

    Suggestions(http://code.google.com/p/arduino/issues/list)Formatting guidelines

    (http://playground.arduino.cc/Main/Participate#contribrules)All recent changes

    (http://playground.arduino.cc/Site/AllRecentChanges)PmWiki

    (http://playground.arduino.cc/PmWiki/PmWiki)WikiSandBox training

    (http://playground.arduino.cc/Main/WikiSandbox)Basic Editing

    (http://playground.arduino.cc/PmWiki/BasicEditing)Cookbook (addons)

    (http://www.pmwiki.org/wiki/Cookbook/CookbookBasics)Documentation index

    (http://www.pmwiki.org/wiki/PmWiki/DocumentationIndex)Drone with Arduino

    (http://www.bartoloilliano.com/arduino-tutorial-costruire-un-drone-con-webcam-telecomandato-da-pc-tramite-csharp.html)Thermostat with Arduino

    (http://arduinothermostat.blogspot.co.uk)

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    Pgina a revisar.

    '''Falta definir traduccion: Thermistor, Pull Up Resistor

    Captulo 6: Usando los pinesanalgicos

  • Como se mencion anteriormente en este libro, el mundo real no es digital y, a veces, no puedestraducir los cambios en el entorno en lecturas digitales. Por ejemplo, la temperatura no cambia slo defro a caliente, cambia en un rango valores distintos y, normalmente, estos cambios ocurren muylentamente. ste es el motivo por el cual, a menudo, utilizamos sensores analgicos para leer losparmetros del entorno tales como, la temperatura, la luz, o el movimiento. Esta informacinresultante es almacenada como datos digitales secuenciales. Dado que Arduino no puede manejar lainformacin como los humanos, necesitamos traducir los datos analgicos para que Arduino puedaentenderlos.

    Los sensores analgicos pueden transformar los datos del entorno en un valor de voltaje comprendidoentre 0V y 5V. Estos valores son distintos de los HIGH o LOW que utilizan los sensores digitales. Para lospines digitales, HIGH y LOW significan 5V y 0V respectivamente, y nada ms. Sin embargo los pinesanalgicos pueden diferenciar cualquier valor intermedio.

    La resolucin entre los valores mximos y mnimos difieren de un microprocesador a otro. Arduinonicamente puede distinguir 1024 niveles en rango de 0V a 5V.

    1: La cremallera analgica

    La cremallera analgica es diferente a la cremallera digital del captulo anterior. La cremallera digitalslo poda estar HIGH o LOW (5V o 0V). sin embargo, la cremallera analgica, puede darte un rango devalores entre 0V y 5V.

    Para hacer una cremallera analgica necesitas una cremallera normal, algo de hilo conductor y unaresistencia de 10k. Comience cosiendo la resistencia en su lugar. Despus cose un cable rojo en unode los terminales de la resistencia, y un cable azul en el otro terminal. Los colores de los cables son paraque recuerdes dnde va cada cable. Desde donde empieza el cable azul, cselo entre cada diente de lacremallera. Cuando llegues al final de un lado de la cremallera, haz lo mismo en el otro lado y baja denuevo.

    Asegurate de que el hilo est intacto a lo largo de la cremallera o no funcionar. Una vez hayas llegadoal final de la cremallera por el otro lado, une un cable negro y coselo en su lugar. Ahora la cremalleraest lista y podemos empezar a escribir nuestro cdigo para leer qu valores nos proporciona lacremallera. Para poder mostrar qu valores nos da la cremallera, necesitamos usar la comunicacinserie, de modo que Arduino pueda conectarse al equipo y mostrarnos los datos en el monitor:

    int analogPin = 2; /* Aqu declaramos que queremos usar el pin analgico 2, y lo llamaremos analogPin */

    int myZipper=0; /* Aqu declaramos un entero que actuar como variable temporal, donde podremosalmacenar los valores que nos proporcione la cremallera */

    void setup(){ Serial.begin(9600); /* Esto configurar tu comunicacin y la fijar a 9600 baudios (9600 bits porsegundo) */}

    void loop(){

  • myZipper = analogRead(analogPin); /* Aqu hacemos una lectura analgica de analogPin y guardamos el valor en lavariable myZipper */ Serial.println(myZipper); /* Este comando enviar el valor almacenado en myZipper a travs del puerto serie ydespus hace una pausa de 200 milisegundos */ delay(200); //pausa de 200 milisegundos}

    [Get Code] (http://playground.arduino.cc/Es/OSW041?action=sourceblock&num=1)

    Lo primero que hacemos en void loop() es una lectura analgica del pin analgico 2. El valor esalmacenado en la variable myZipper. Despus imprimimos este valor por el puerto serie y, cualquieraparato conectado a Arduino (por ejemplo, un PC) recibir el valor almacenado en la variable. Lo ultimoque hacemos es aadir una pausa en nuestro programa, ya que, aunque Arduino es pequeo, todavase comunica ms rapidamente que un ordenador normal, as que la pausa permite sincronizarse conArduino. Ahora podemos subir nuestro cdigo a la placa Arduino. Una vez que el cdigo est subido,conecta el cable rojo en el puerto que indica 5V, el cable negro a uno de los puertos de GND, y el ltimocable al pin analgico 2. Si declaras tu analogPin en tu programa como cualquiero otro pin que no seael 2, tendrs que colocar el cable azul en ese pin analgico:

    Una vez que hayas subido el cdigo y conectado los cables, abre el monitor serie, que es el botn ms ala derecha de tu IDE de Arduino. Ahora aparecern los valores en el monitor y, si abres y cierras lacremallera, los valores irn cambiando. Si no puedes ver ningn nmero en tu monitor, asegurate quela velocidad de comunicacin fijada en el IDE de Arduino es la misma que en tu programa (9600 en elejemplo). Cada cremallera te dar unos valores diferentes, puesto que no es algo exacto; pequeasdiferencias afectarn en los resultados. Este tipo de sensor analgico casero es lo suficientementebueno como para ser usado en la mayora de prototipos que necesiten un dispositivo de entradaoculto.

    2: Usando un sensor de luz LDR

    El siguiente esquema muestra como coser una LDR y una resistencia en un trozo de tela y dnde debenconectarse los cables en el Arduino: '###################################### The resistorused in the example is what is called a pull up resistor. We sometimes use pull up resistors to ensurewe wont get 5V straight back in the Arduino. A pull up resistor is the same as a normal resistor but isused to lower the output voltage from a power source. The combination of a resistor with the LDR isalso necessary for another reason: without it we wouldnt be able to get analog values from the LDR.This configuration is called a voltage divider and it changes the voltage on the Arduino inputdepending on the changes in the LDR. '#######################################

    La resistencia usada en el ejemplo es lo que llamamos una resistencia "Pull up". A veces usamosresistencias pull-up para asegurarnos que no recibe los 5V en sentido contrario el Arduino. Unaresistencia Pull up es una resistencia normal pero usada para reducir el voltaje de salida de una fuentede tensin. La combinacin de una resistencia con la LDR es necesaria por otra razn: sin ella noseramos capaces de obtener valores analgicos de la LDR. sta configuracin se conoce con el nombrede divisor de tensin y cambia el voltaje a la entrada del Arduino dependiendo de los cambios en laLDR. Conecta un cable rojo a una de las patillas de la resistencia y a los 5V de Arduino. Entre laresistencia y la LDR ponemos un cable que conecte a nuestro pin analgico. La misma conexin va a

  • una patilla de la LDR. No importa que patilla conectes. De la otra patilla de la LDR cose un cable queconecte con el puerto GND del Arduino. Cuando hayas conectado todo prueba el siguiente cdigo yobserva los valores que proporciona la LDR:

    int analogPin = 2; /* el pin analgico que usaremos en Arduino */int myLDR = 0; /* variable temporal para almacenar los valores de la LDR */

    void setup(){ Serial.begin(9600); /* configurando la conexin y la velocidad */}

    void loop(){ myLDR = analogRead(analogPin); /* leemos el valor de la LDR y lo almacenamos */ Serial.println(myLDR); /* mostramos el valor almacenado en myLDR */ delay(200);}

    [Get Code] (http://playground.arduino.cc/Es/OSW041?action=sourceblock&num=2)

    En el ejemplo anterior leemos el valor, lo almacenamos y lo mostramos en el ordenador. No olvidesabrir tu monitor serie en el IDE de Arduino y configurarlo a 9600 baudios para poder ver los valorescaptados por Arduino. Una vez que todo funcione, prueba a tapar la LDR con tu mano y compruebaque el valor que devuelve Arduino. Recuerda este valor y prueba el siguiente cdigo de ejemplo.

    int analogPin = 2; /* el pin analgico que usaremos en Arduino */int myLDR = 0; /* variable temporal para almacenar el valor de la LDR */int myDarkNumber = 100; /* el umbral de oscuridad, sustituir por el valor obtenido tapando la LDR con la mano */int ledPin = 13;

    void setup(){ Serial.begin(9600); /* configurando la conexin y la velocidad */ pinMode(ledPin,OUTPUT); /* declaramos ledPin como Salida */}

    void loop(){ myLDR = analogRead(analogPin); /* leemos el valor de la LDR y lo almacenamos */ if (myLDR

  • Share

    3: Usando un sensor de temperatura NTC

    El cdigo siguiente, para leer un termmetro, es el mismo que para la LDR. Ambos funcionan bien portratarse de sensores analgicos:

    int analogPin = 2; /* el pin analgico que usaremos en Arduino */

    int myNTC= 0; /* variable temporal para guardar los valores del termmetro */

    void setup(){ Serial.begin(9600); /* configurando la comunicacin y la velocidad */}

    void loop(){ myNTC = analogRead(analogPin); /* lee el valor del NTC y lo almacena */ Serial.print(myNTC); /* muestra el valor almacenado en myNTC */ delay(200);}

    [Get Code] (http://playground.arduino.cc/Es/OSW041?action=sourceblock&num=4)

    Ahora conecta todo como muestra la siguiente ilustracin y carga el cdigo en tu placa Arduino. Unavez que todo est en su lugar, abre tu monitor serie e intenta calentar tu termmetro con las manos.Debes poder observar variaciones frente al valor original, cuando comenz el programa. Aunque lostermistores no sean los mejores sensores para obtener la temperatura exacta, son una manera fcil ybarata de diferenciar entre fro y caliente. Si ests usando altas corrientes en tus prendas, o materialesque se calienten como "muscle wires", los termistores son una manera de comprobar si tu prenda estdemasiado caliente (antes de que empiece a arder).

    NEWSLETTER

    Enter your email to sign upSUBSCRIBE

  • 2015 Arduino Copyright Notice (http://arduino.cc/en/Main/CopyrightNotice)Contact us (http://arduino.cc/en/Main/ContactUs)

    (https://twitter.com/arduino) (http://www.facebook.com/official.arduino)

    (https://plus.google.com/+Arduino) (http://www.flickr.com/photos/arduino_cc)

    (http://youtube.com/arduinoteam)