Cambios

Busca en cnbGuatemala con Google

Página creada con «{{Título}} == Formas de conexionado de entradas y salidas == === Salida digital === Archivo:Salida digital - diagrama.png|alt=Salida digital - diagrama|centre|frameles...»
{{Título}}

== Formas de conexionado de entradas y salidas ==

=== Salida digital ===
[[Archivo:Salida digital - diagrama.png|alt=Salida digital - diagrama|centre|frameless|Salida digital - diagrama]]

Éste es el ejemplo básico equivalente al "hola mundo" de cualquier lenguaje de programación haciendo simplemente el encendido y apagado de un led. En este ejemplo el LED está conectado en el pin13, y se enciende y apaga “parpadea” cada segundo. La resistencia que se debe colocar en serie con el led en este caso puede omitirse ya que el pin13 de Arduino ya incluye en la tarjeta esta resistencia,

<code>int ledPin = 13; // LED en el pin digital 13</code>

<code>void setup() // configura el pin de salida</code>

<code>{</code>

<code>pinMode(ledPin, OUTPUT); // configura el pin 13 como</code>

<code>salida }</code>

<code>void loop() // inicia el bucle del programa</code>

<code>{</code>

<code>digitalWrite(ledPin, HIGH); // activa el LED delay(1000); // espera 1 segundo digitalWrite(ledPin, LOW); // desactiva el LED</code>

<code>delay(1000); // espera 1 segundo</code>

<code>}</code>

=== Entrada digital ===
[[Archivo:Entrada digital - diagrama.png|alt=Entrada digital - diagrama|centre|frameless|Entrada digital - diagrama]]

Ésta es la forma más sencilla de entrada con sólo dos posibles estados: encendido o apagado. En este ejemplo se lee un simple switch o pulsador conectado a PIN2. Cuando el interruptor está cerrado el pin de entrada se lee ALTO y encenderá un LED colocado en el PIN13

<code>int ledPin = 13; // pin 13 asignado para el LED de salida</code>

<code>int inPin = 2; // pin 2 asignado para el pulsador</code>

<code>void setup() // Configura entradas y salidas</code>

<code>{</code>

<code>pinMode(ledPin, OUTPUT); // declara LED como salida</code>

<code>pinMode(inPin, INPUT); // declara pulsador como entrada</code>

<code>}</code>

<code>void loop()</code>

<code>{</code>

<code>if (digitalRead(inPin) == HIGH) // testea si la entrada esta activa HIGH</code>

<code>{</code>

<code>digitalWrite(ledPin, HIGH); // enciende el LED</code>

<code>delay(1000); // espera 1 segundo</code>

<code>digitalWrite(ledPin, LOW); // apaga el LED</code>

<code>}</code>

<code>}</code>

=== Salida de alta corriente de consumo ===
[[Archivo:Salida de alta corriente de consumo - diagrama.png|alt=Salida de alta corriente de consumo - diagrama|centre|frameless|Salida de alta corriente de consumo - diagrama]]

A veces es necesario controlar cargas de más de los 40 mA que es capaz de suministrar la tarjeta Arduino. En este caso se hace uso de un transistor MOSFET que puede alimentar cargas de mayor consumo de corriente. El siguiente ejemplo muestra como el transistor MOSFET conmuta 5 veces cada segundo.

'''Nota:''' El esquema muestra un motor con un diodo de protección por ser una carga inductiva. En los casos que las cargas no sean inductivas no será necesario colocar el diodo.

<code>int outPin = 5; // pin de salida para el MOSFET</code>

<code>void setup()</code>

<code>{</code>

<code>pinMode(outPin, OUTPUT); // pin5 como salida</code>

<code>}</code>

<code>void loop()</code>

<code>{</code>

<code>for (int i=0; i<=5; i++) // repetir bucle 5 veces</code>

<code>{</code>

<code>digitalWrite(outPin, HIGH); // activa el MOSFET</code>

<code>delay(250); // espera 1/4 segundo</code>

<code>digitalWrite(outPin, LOW); // desactiva el MOSFET</code>

<code>delay(250); // espera 1/4 segundo</code>

<code>}</code>

<code>delay(1000); // espera 1 segundo</code>

<code>}</code>

=== Salida analógica del tipo PWM (modulación de impulsos en frecuencia) ===
[[Archivo:Salida analógica del tipo PWM - diagrama.png|alt=Salida analógica del tipo PWM - diagrama|centre|frameless|Salida analógica del tipo PWM - diagrama]]

La Modulación de Impulsos en Frecuencia (PWM) es una forma de conseguir una “falsa” salida analógica. Esto podría ser utilizado para modificar el brillo de un LED o controlar un servo motor. El siguiente ejemplo lentamente hace que el LED se ilumine y se apague haciendo uso de dos bucles.

<code>int ledPin = 9; // pin PWM para el LED</code>

<code>void setup(){} // no es necesario configurar nada</code>

<code>void loop()</code>

<code>{</code>

<code>for (int i=0; i<=255; i++) // el valor de i asciende</code>

<code>{</code>

<code>analogWrite(ledPin, i); // se escribe el valor de I en el PIN de salida del LED</code>

<code>delay(100); // pauses for 100ms</code>

<code>}</code>

<code>for (int i=255; i>=0; i--) // el valor de I desciende i</code>

<code>{</code>

<code>analogWrite(ledPin, i); // se escribe el valor de ii</code>

<code>delay(100); // pausa durante 100ms</code>

<code>}</code>

<code>}</code>

=== Entrada con potenciómetro (entrada analógica) ===
[[Archivo:Entrada con potenciómetro - diagrama.png|alt=Entrada con potenciómetro - diagrama|centre|frameless|Entrada con potenciómetro - diagrama]]

El uso de un potenciómetro y uno de los pines de entrada analógica-digital de Arduino (ADC) permite leer valores analógicos que se convertirán en valores dentro del rango de 0-1024. El siguiente ejemplo utiliza un potenciómetro para controlar un el tiempo de parpadeo de un LED.

<code>int potPin = 0; // pin entrada para potenciómetro</code>

<code>int ledPin = 13; // pin de salida para el LED</code>

<code>void setup()</code>

<code>{</code>

<code>pinMode(ledPin, OUTPUT); // declara ledPin como SALIDA</code>

<code>void loop()</code>

<code>{</code>

<code>digitalWrite(ledPin, HIGH); // pone ledPin en on</code>

<code>delay(analogRead(potPin)); // detiene la ejecución un tiempo “potPin”</code>

<code>digitalWrite(ledPin, LOW); // pone ledPin en off</code>

<code>delay(analogRead(potPin)); // detiene la ejecución un tiempo “potPin”</code>

<code>}</code>

<code>}</code>

=== Entrada conectada a resistencia variable (entrada analógica) ===
[[Archivo:Entrada conectada a resistencia variable - diagrama.png|alt=Entrada conectada a resistencia variable - diagrama|centre|frameless|Entrada conectada a resistencia variable - diagrama]]

Las resistencias variables como los sensores de luz LCD los termistores, sensores de esfuerzos, etc, se conectan a las entradas analógicas para recoger valores de parámetros físicos. Este ejemplo hace uso de una función para leer el valor analógico y establecer un tiempo de retardo. Este tiempo controla el brillo de un diodo LED conectado en la salida.

<code>int ledPin = 9; // Salida analógica PWM para conectar a LED</code>

<code>int analogPin =0; // resistencia variable conectada a la entrada analógica pin 0</code>

<code>void setup(){} // no es necesario configurar entradas y salidas</code>

<code>void loop()</code>

<code>{</code>

<code>for (int i=0; i<=255; i++) // incremento de valor de i</code>

<code>{</code>

<code>analogWrite(ledPin, i); // configura el nivel brillo con el valor de i</code>

<code>delay(delayVal()); // espera un tiempo</code>

<code>}</code>

<code>for (int i=255; i>=0; i--) // decrementa el valor de i</code>

<code>{</code>

<code>analogWrite(ledPin, i); // configura el nivel de brillo con el valor de i</code>

<code>delay(delayVal()); // espera un tiempo</code>

<code>}</code>

<code>}</code>

<code>int delayVal() // Método para recoger el tiempo de retardo</code>

<code>{</code>

<code>int v; // crea una variable temporal (local)</code>

<code>v = analogRead(analogPin); // lee valor analógico</code>

<code>v /= 8; // convierte el valor leído de 0-1024 a 0-128</code>

<code>return v; // devuelve el valor v</code>

<code>}</code>

=== Salida conectada a servo ===
[[Archivo:Salida conectada a servo - diagrama.png|alt=Salida conectada a servo - diagrama|centre|frameless|Salida conectada a servo - diagrama]]

Los servos de los juguetes tienen un tipo de motor que se puede mover en un arco de 180 o y contienen la electrónica necesaria para ello. Todo lo que se necesita es un pulso enviado cada 20ms. Este ejemplo utiliza la función servoPulse para mover el servo de 10o a170o.

<code>int servoPin = 2; // servo conectado al pin digital 2</code>

<code>int myAngle; // ángulo del servo de 0-180</code>

<code>int pulseWidth; // anchura del pulso para la función servoPulse</code>

<code>void setup()</code>

<code>{</code>

<code>pinMode(servoPin, OUTPUT); // configura pin 2 como salida</code>

<code>}</code>

<code>void servoPulse(int servoPin, int myAngle)</code>

<code>{</code>

<code>pulseWidth = (myAngle * 10) + 600; // determina retardo</code>

<code>digitalWrite(servoPin, HIGH); // activa el servo</code>

<code>delayMicroseconds(pulseWidth); // pausa</code>

<code>digitalWrite(servoPin, LOW); // desactiva el servo</code>

<code>delay(20); // retardo de refresco</code>

<code>}</code>

<code>void loop()</code>

<code>{</code>

<code>// el servo inicia su recorrido en 10<sup>o</sup> y gira hasta 170<sup>o</sup></code>

<code>for (myAngle=10; myAngle<=170; myAngle++)</code>

<code>{</code>

<code>servoPulse(servoPin, myAngle);</code>

<code>}</code>

<code>// el servo vuelve desde 170<sup>o</sup> hasta 10<sup>o</sup></code>

<code>for (myAngle=170; myAngle>=10; myAngle--)</code>

<code>{</code>

<code>servoPulse(servoPin, myAngle);</code>

<code>}</code>

<code>}</code>

[[Categoría:Tecnología]]