• No se han encontrado resultados

E_S analógicas

N/A
N/A
Protected

Academic year: 2020

Share "E_S analógicas"

Copied!
16
0
0

Texto completo

(1)
(2)

Entradas y salidas: digitales y

analógicas

Sensores tipo apagado-encendido

Interruptores

(switches)

Termostatos

Interruptores magnéticos

Interruptores de presión

Interruptores de inclinación

Sensor de infrarrojos, PIR,

(Passive Infrared

Sensor)

(3)

Salidas analógicas: regulación de

intensidad con PWM

La idea es jugar con los tiempos de

encendido y apagado.

Esto lo podemos hacer colocando

retardos en el código, pero es

incómodo y poco eficiente.

Con Arduino podemos modular la

intensidad usando los pines

analógicos 3, 5, 6, 9, 10 y 11.

Se controlan con la función

analogWrite(pin, valor)

valor: un nº entre 0 y 255

(4)

Los sensores analógicos necesitan un tipo diferente de

pin a los de los sensores de respuesta

si-no.

en la placa Arduino hay 6 pines marcados como

‘ANALOG IN’ (A0 a A5).

la función para leer la información de este tipo de

entradas es

analogRead(pin).

• analogRead()

devuelve un valor entre 0 y 1023 para

voltajes entre 0 y 5 voltios.

(5)

Sketch

para

aumentar y

disminuir la

intensidad del LED

/* Disminuir y aumentar la intensidad del LED */

• const int LED = 9; // the pin for the LED

• int i = 0; // usamos este contador para contar hacia arriba y // hacia abajo

• void setup() {

• pinMode(LED, OUTPUT); // tell Arduino LED is an output

• }

• void loop() {

• for (i = 0; i < 255; i++) { // bucle de 0 a 254 (intensidad //aumenta)

• analogWrite(LED, i); // establecer el brillo del LED

• delay(10); // esperar 10ms: analogWrite es instantáneo

• // y podríamos no ver el cambio

• }

• for (i = 255; i > 0; i--) { // loop from 255 to 1 (fade out)

• analogWrite(LED, i); // establecemos el brillo del LED

• delay(10); // esperar 10ms

• }

• }

(6)

// Mantener encendido el LED tras la pulsación y cambiar el brillo mientras el botón esté pulsado.

const int LED = 9; // the pin for the LED

const int BUTTON = 7; // input pin of the pushbutton

int val = 0; // stores the state of the input pin

int old_val = 0; // stores the previous value of "val"

int state = 0; // 0 = LED off while 1 = LED on

int brightness = 128; // almacena el valor de la intensidad

unsigned long startTime = 0; // when did we begin pressing?

void setup() {

pinMode(LED, OUTPUT); // el LED es una salida

pinMode(BUTTON, INPUT); // y el botón una entrada

}

Montar el circuito correspondiente y ejecutar el siguiente sketch

(7)

void loop() {

val = digitalRead(BUTTON); // lee el valor de entrada y lo guarda

// comprobamos si ha habido una transición

if ((val == HIGH) && (old_val == LOW)) {

state = 1 - state; // cambiar el estado de apagado a // encendido o vice-versa startTime = millis(); // millis() es el reloj de Arduino

//devuelve las milésimas de seg. transcurridas desde que //se restableció la placa

delay(10); }

// comprobamos si el botón se ha mantenido pulsado

if ((val == HIGH) && (old_val == HIGH)) {

// If the button is held for more than 500 ms.

if (state == 1 && (millis() - startTime) > 500) {

brightness++; // increment brightness by 1

delay(10); // retardo para evitar que el brillo pase demasiado deprisa

if (brightness > 255) { // 255 is the max brightness

brightness = 0; // if we go over 255 let’s go back to 0

(8)

} } }

old_val = val; // val es ahora antiguo y lo almacenamos

if (state == 1) {

analogWrite(LED, brightness); // encender el LED al nivel actual de brillo

} else {

analogWrite(LED, 0); // turn LED OFF

} }

Esto funciona! Si pulsamos

y soltamos, el LED se

enciende y apaga. Si lo

mantenemos pulsado, el

brillo cambia hasta que lo

soltemos.

(9)

Montamos una nueva versión del circuito del botón y

el LED.

Cambiamos el botón por una fotorresistencia o LDR

(resistencia dependiente de la luz).

Si tapamos la LDR con las manos, el LED se apaga y si

las quitamos, el LED se enciende de nuevo.

Este tipo de sensores nos pueden decir no sólo si hay o

no luz, sino, además y muy importante, la cantidad de

luz que hay.

(10)

montamos el circuito de la figura (o uno mejorado), y

ejecutamos el siguiente código:

En la placa de montajes colocamos el fotorresistor y una resistencia de 10 k Ω

// LED que parpadea a la velocidad especificada por el valor de la entrada analógica

const int LED = 13; // el pin del LED

int val = 0; // variable usada para almacenar el valor //que proviene del sensor

void setup() {

pinMode(LED, OUTPUT); // LED es una salida

}

void loop() {

val = analogRead(0); // leer el valor del sensor

digitalWrite(LED, HIGH); // encender el LED

delay(val); // detener el programa durante un tiempo

digitalWrite(LED, LOW); // apagar el LED

(11)

// Establecer el brillo del LED según el valor de una entrada analógica

const int LED = 9; // the pin for the LED

int val = 0; // variable used to store the value coming from the sensor

void setup() {

pinMode(LED, OUTPUT); // LED is as an OUTPUT

}

void loop() {

val = analogRead(0); // read the value from the sensor

analogWrite(LED, val/4); // encender el LED con el brillo obtenido del sensor

delay(10); // stop the program for some time

}

Ahora, vamos a juntar el sensor (LDR) y el actuador (LED) en un mismo

circuito.

Modificamos el circuito.

(12)

MEDIDOR DE TEMPERATURA

MATERIAL NECESARIO

- 3 LED’s rojos

- 1 sensor de temperatura TMP36

- 3 resistencias de 220 Ω

- Cables, placa de montajes

-1 placa Arduino

A destacar

- entrada analógica

- uso del monitor serie

• Descripción del proyecto

Vamos a usar un sensor de

temperatura (datos analógicos) para medir nuestra temperatura. El voltaje de salida es directamente proporcional a la temperatura en grados centígrados.

(13)

MEDIDOR DE TEMPERATURA

la pata corta del LED, cátodo, a tierra a través de la resistencia

patilla izquierda a la corriente y derecha a tierra; la central a A0 corriente y toma de tierra

 La conexión USB se puede utilizar para mandar datos al equipo o recibirlos desde el ordenador.

 Después de cargar el sketch, hacer clic en el icono del monitor serie (arriba, derecha).

(14)

// medidor de temperatura

// nombramos al pin donde está conectado el sensor

const int sensorPin = A0;

// room temperature in Celcius (la medimos o estimamos)

const float baselineTemp = 20.0;

void setup() {

// abrimos el puerto serie para ver los datos en pantalla Serial.begin(9600);

// declaramos los LED’s como salidas y los apagamos

for (int pinNumber = 2; pinNumber < 5; pinNumber++) { pinMode(pinNumber, OUTPUT);

digitalWrite(pinNumber, LOW); }

}

(15)

void loop() {

// leer el valor en el pin A0 y almacenarlo en una variable local // el valor está entre 0 y 1023

int sensorVal = analogRead(sensorPin);

Serial.print(“lectura del sensor: "); Serial.print(sensorVal);

// convert the ADC reading to voltage

float voltaje = (sensorVal / 1024.0) * 5.0;

// Send the voltage level out the Serial port

Serial.print(", Volts: "); Serial.print(voltaje);

// convert the voltage to temperature in degrees C // tenemos en cuenta las especificaciones

// del sensor (10mV equivale a 1 ºC)

Serial.print(", grados (C): ");

float temperature = (voltaje - .5) * 100; Serial.println(temperature);

(16)

// if the current temperature is lower than the baseline // turn off all LEDs

if (temperature < baselineTemp) { digitalWrite(2, LOW);

digitalWrite(3, LOW); digitalWrite(4, LOW);

} // if the temperature rises 2-4 degrees, turn an LED on

else if (temperature >= baselineTemp + 2 && temperature < baselineTemp + 4) { digitalWrite(2, HIGH);

digitalWrite(3, LOW); digitalWrite(4, LOW);

} // if the temperature rises 4-6 degrees, turn a second LED on

else if (temperature >= baselineTemp + 4 && temperature < baselineTemp + 6) { digitalWrite(2, HIGH);

digitalWrite(3, HIGH); digitalWrite(4, LOW);

} // if the temperature rises more than 6 degrees, turn all LEDs on else if (temperature >= baselineTemp + 6) {

digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH); } delay(50); }

Referencias

Documento similar

Primeros ecos de la Revolución griega en España: Alberto Lista y el filohelenismo liberal conservador español 369 Dimitris Miguel Morfakidis Motos.. Palabras de clausura

El interesado podrá acudir ante el señor Personero Municipal o a la Defensoría del Pueblo para que se le colabore en la elaboración de su demanda o petición, así como en los

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

A lo largo del proceso, al ir aumentando el número de calas, hallaba que las mejores soluciones se alternaban con regularidad entre los tres traductores. El cotejo, por fin, de

No comáis grasas animales // No comáis grasas, animales. En la primera frase recomiendo no comer grasas animales. En cambio, en la segunda frase, llamo animales a los que

37 El TPI, en los fundamentos jurídicos del 149 al 154 de la sentencia «Virgia- micina», examinó las dos actividades complementarias que integran la evaluación de riesgos:

En su natal Caracas, donde se formó Bello como latinista, no pudo tener la oportunidad de aprender griego. Cuando nació, ya hacía 14 años que los jesuitas habían sido