P. 1
Arquitectura de Computadoras

Arquitectura de Computadoras

|Views: 14|Likes:
Published by Gladys Cuzcano
Arquitectura de Computadoras
Arquitectura de Computadoras

More info:

Categories:Types, Presentations
Published by: Gladys Cuzcano on Feb 25, 2014
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

02/25/2014

pdf

text

original

Universidad Nacional Mayor de San Marcos Facultad de Ingeniería de Sistemas e Informática Arquitectura de Computadoras Laboratorio 2 – Entradas/Salidas Analogicas

Uso de Potenciometro en Arduino Junto con los pines digitales, Arduino también tiene 6 pines que se pueden utilizar para entrada analógica. Estas entradas reciben un voltaje (de 0 a 5 voltios) y lo convierten en un número digital entre 0 (0 voltios) y 1024 (5 voltios) (10 bits de resolución). Un dispositivo muy útil que explota estas entradas es un potenciómetro (también llamado una resistencia variable). Cuando está conectado con 5 voltios a través de sus patillas exteriores del pin del medio leerá algún valor entre 0 y 5 voltios depende del ángulo al que se gira (es decir, 2,5 voltios en el medio). A continuación, puede utilizar los valores devueltos como una variable en el programa Materiales: 1 Potenciometro de 10Kohms 1 Resistencia de 220ohms / 330ohms 1 LED Amarillo Cables Diagrama esquemático:

Implementación .

.El código queda de la siguiente manera: /* Analog Input * Demonstrates analog input by reading an analog sensor on analog * pin 0 and turning on and off a light emitting diode(LED) connected to digital pin 13.

// stop the program for for <sensorValue> milliseconds: } Se muestra una imagen del circuito implementado: . */ int sensorPin = 0.* The amount of time the LED will be on and off depends on the value obtained by * analogRead(). OUTPUT). // select the input pin for the potentiometer int ledPin = 13.// read the value from the sensor: digitalWrite(ledPin. // turn the ledPin off: delay(sensorValue). HIGH). //declare the ledPin as an OUTPUT: } void loop() { sensorValue = analogRead(sensorPin). // turn the ledPin on delay(sensorValue). LOW). // stop the program for <sensorValue> milliseconds: digitalWrite(ledPin. // variable to store the value coming from the sensor void setup() { pinMode(ledPin. // select the pin for the LED int sensorValue = 0.

.

se cambia la cantidad de resistencia a cada lado del control que está conectado al pin central del potenciómetro. e imprimirlo al monitor serial. convertir los valores de analogRead () en tensión. Cuando la resistencia entre el centro y el lado conectado a 5 voltios es cercana a cero (y la resistencia en el otro lado es cerca de 10 Kohms). la tensión en la patilla central se acerca a . Cuando las resistencias se invierten. el voltaje en la patilla central se acerca a 5 voltios. Materiales · · Arduino Board a variable resistor.Lectura de voltaje analógico Este ejemplo muestra cómo leer una entrada analógica en el pin 0. Esto cambia el voltaje en el pin central. like a potentiometer Al girar el eje del potenciómetro.

Esta tensión es la tensión analógica que estás leyendo como una entrada. Esquematico Codigo Serial. hay 0 voltios en un pin. En el medio. Cuando el eje se gira todo el camino en la dirección opuesta. . Cuando el eje del potenciometro gira completamente en una dirección. y el valor de entrada es 0. o tierra. int sensorValue = analogRead(A0). Arduino tiene un circuito interno llamado convertidor analógico-a-digital (ADC) que lee este cambio de voltaje y lo convierte en un número entre 0 y 1023.0 voltios. analogRead () devuelve un número entre 0 y 1023 que es proporcional a la cantidad de voltaje que se aplica al pin. hay 5 voltios que van a la clavija y el valor de entrada es 1023.begin(9600).

0 y que se multiplican por sensorValue: float voltage= sensorValue * (5.0 / 1023.0.println(voltage) Ahora. A medida que gira el eje.0 hasta 5. converts it to voltage. This example code is in the public domain. and prints the result to the serial monitor. usted tendrá que crear otra variable. Attach the center pin of a potentiometer to pin A0. correspondiente a la tensión de entrada en pin A0.0).0.0 1023. } . un float. /* ReadAnalogVoltage Reads an analog input on pin 0. */ // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600). y hacer un poco de matemáticas. Para escalar los números comprendidos entre 0. los valores cambiarán. al abrir el monitor serial en el entorno de desarrollo Arduino (haciendo clic en el botón a la derecha del botón "Upload" en la cabecera del programa). debería ver un flujo constante de números que van desde 0. se divide por 5.0 y 5. and the outside pins to +5V and ground. Serial.Para cambiar los valores de 0 a 1023 a un rango que corresponde a la tensión del pin está leyendo.

println(voltage). // print out the value you read: Serial. // Convert the analog reading (which goes from 0 .// the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0).1023) to a voltage (0 5V): float voltage = sensorValue * (5. } Las figuras que muestran el funcionamiento del circuito son: .0).0 / 1023.

.

org/VODI).Circuito con LDR En el presente circuito se mostraran las características del LDR y su uso en un circuito en Arduino. . ¿qué es lo que utilizamos cuando queremos un experimento controlado ambientalmente? Se utiliza exactamente los mismos principios pero en lugar de un potenciómetro (resistencia basada en torsión ) se utiliza una foto resistencia (resistencia basada en la luz). Mientras que conseguir la entrada de un potenciómetro puede ser útil para humanos experimentos controlados. Arduino no puede directamente medir la resistencia (se detecta voltaje). pero para los propósitos de esta experiencia(sólo sensor de luz relativa) se puede experimentar con los valores y ver lo que funciona para nosotros. El voltaje exacto en el pin de detección es calculable. Un valor bajo se producirá cuando el sensor está bien iluminado. mientras que un valor alto se producirá cuando está en la oscuridad. así que se crea un divisor de tensión (http://ardx.

El diagrama pictorico sera el siguiente: .

El codigo que muestra el funcionamiento de este circuito esta a continuacion: /* * A programa that will change the * intensity of an LED based on the amount of * light incident on the photo resistor. .

* */ //PhotoResistor Pin int lightPin = 0. OUTPUT).//the pin the LED is connected to we are controlling brightness so //we use one of the PWM (pulse //width modulation pins) void setup() { pinMode(ledPin.this function will start after setup * finishes and then repeat */ void loop() { int lightLevel = analogRead(lightPin). //the analog pin the photoresistor is connected to //the photoresistor is not calibrated to any units so //this is simply a raw sensor //value (relative light) //LED Pin int ledPin = 9. //sets the led pin to output } /* * loop() . //Read the lightlevel .

lightLevel). LOW). //make sure the value is betwween 0 and 255 analogWrite(ledPin.lightLevel = map(lightLevel. //adjust the value 0 to 900 to 0 to 255 lightLevel = constrain(lightLevel. 0. 255). 255 . Upload and watch the response change: Luces nocturnas En lugar de controlar el brillo del LED en respuesta a la luz. ----> analogWrite(ledPin. void loop(){ int threshold = 300. Eso se puede hacer fácilmente ya que sólo se cambiaria: analogWrite(ledPin. //write the value } Invertir la respuesta: Tal vez sería más interesante una respuesta opuesta. Cambie el código de loop () con. 0. lightLevel). puede activar o desactivar el led. 0. basándose en un valor umbral. }else{ digitalWrite(ledPin. } . 900.lightLevel). HIGH). 255). if(analogRead(lightPin) > threshold){ digitalWrite(ledPin.

} .

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->