Arduino: Controla la entrada salida (3 / 4 paso)

Paso 3: Escribir el código

Utilizando el IDE de Arduino crear un dibujo nuevo.

Antes de la función setup(), declarar las variables para el pin analógico conectado a la fotorresistencia y el pin digital conectado al LED.

 //Photoresistor Pinint analogPin = 0; // LED Pin int ledPin = 9; 

Para este firmware no necesitas poner nada en el método de instalación. Normalmente declararía el pin digital como salida utilizando la función pinMode(), sin embargo, vamos a utilizar la función analogWrite(), que no requiere el pin al ser declarados como salida.

En la función loop() comenzará por la lectura en el nivel de iluminación de la fotorresistencia utilizando el mismo código de la última lección.

 void loop() { // put your main code here, to run repeatedly: // read the raw data coming in on analog pin 0: int lightLevel = analogRead(analogPin); } 

A continuación se convertirá el nivel de luz entrante en el rango correcto para el LED. Para ello utilizará dos nuevas funciones - map() y constrain().

La función de mapa tiene cinco argumentos de entrada - el valor, un valor bajo y un valor alto de la gama actual y un valor bajo y un alto valor para el rango objetivo.

 int val = map(value, fromLow, fromHigh, toLow, toHigh); 

Todo ello no es volver a asignar un valor de un rango en el valor equivalente en otra gama. Por ejemplo, el mapa (25, 0, 50, 0, 100) devolvería 50 (50 es el equivalente en el 0-100 hasta 25 dentro de la gama de 0-50). En esta lección usted trazará un mapa de la lightLevel (un 0-1023 gama) a una gama PWM (0-255). Otra forma de accompishing el mismo objetivo en este caso sería dividir el valor de lightLevel por 4 (0-255 es el cuarto de 0-1023), pero si hizo eso, no puedes aprender la función map(). Además, porque no desea que su luz nocturna que en cuando hay alguna luz (por ejemplo, poca luz) tienes que modificar la gama de lightLevel. Por ejemplo, en mi oficina el valor de lightLevel es alrededor de 340 cuando las luces estén encendidas (no una oficina muy luminosa). Me gustaría tratar esto como si hay suficiente luz que el LED no debe ser iluminado, por lo que no estoy quemando el LED cuando las luces estén encendidas. Para ello, mapa de la gama de lightLevel como 350-1023.

 void loop() { // put your main code here, to run repeatedly: // read the raw data coming in on analog pin 0: int lightLevel = analogRead(analogPin); // re-map the value from the analog pin to a smaller range // Experiment with the right fromLow level based on your environment int brightness = map(lightLevel, 350, 1023, 0, 255); } 

Usted tendrá que experimentar con esto para encontrar la mejor gama para utilizar (Recuerde, usted puede utilizar el monitor serial de la lección anterior para buscar el valor bruto de la fotorresistencia).

Mapeo de la gama de lightLevel con un valor bajo que es mayor que un valor que podría introducir podría resultar en un número negativo (por ejemplo, en mi ejemplo, la lightLevel podría ser 340 aunque identifiqué el extremo inferior de la gama en 350). Para protegerse contra el ajuste de brillo a un número negativo se puede utilizar la función constrain().

La función de constrain() toma tres argumentos de entrada - el valor, un valor bajo y un alto valor.

 int val = constrain(value, lowValue, highValue); 

Si el valor está entre los trámites y el alto valor, se devolverá el valor. Si el valor es menor se devolverán los trámites, luego trámites. Si valor es mayor que el alto valor, alto valor se devolverá.

Utilizando la función constrain() puede asegurarle no ajustar brillo a un valor incorrecto. Ahora que tiene un valor de buen brillo, puede utilizar la función analogWrite() para configurar el PWM por la patilla del LED. Un valor de brillo de 0 es un ciclo de trabajo de 0% (apagado) y un valor de brillo de la 127 es un 50% ciclo de trabajo, etc..

 void loop() { // put your main code here, to run repeatedly: // read the raw data coming in on analog pin 0: int lightLevel = analogRead(analogPin); // re-map the value from the analog pin to a smaller range // Experiment with the right fromLow level based on your environment int brightness = map(lightLevel, 350, 1023, 0, 255); // use constrain to avoid negative numbers and/or numbers above the high range brightness = constrain(brightness, 0, 255); // use analogWrite to send PWM data (a square wave) analogWrite(ledPin, brightness); } 

Artículos Relacionados

Inicio entrada-salida control de luces mediante sensor de luminosidad

Inicio entrada-salida control de luces mediante sensor de luminosidad

En este proyecto veremos cómo controlar el jardín, piscina y porche luz con sensor de luminosidad.Paso 1: Comprensión de los elementos utilizadosObjetivoEl jardín, Porche y piscina luz de control según la luminancia de la luz del díaConexión entrada-
Poco golpes paso a paso: Arduino control de LEDs RGB de WS2812B, WS2811 y WS2812

Poco golpes paso a paso: Arduino control de LEDs RGB de WS2812B, WS2811 y WS2812

descargo de responsabilidad: durante el año pasado, unas bibliotecas diferentes se han escrito para controlar estos ubicuos LEDs RGB por otros fabricantes de Adafruit, PJRC y el proyecto de FastSPI.  Las bibliotecas de un gran trabajan, y les debemos
Arduino controla cabeza madera animatronic (lámpara)

Arduino controla cabeza madera animatronic (lámpara)

esta es una lámpara de lectura que puede ser ajustada para la dirección de la iluminación y atenuada como sea necesario.Este Instructable combina Arduino, programación, algunos electrónica simple, talla con herramientas manuales y eléctricas, control
Arduino controla el faro

Arduino controla el faro

Resumen:A menudo he pensado que un faro de un gran proyecto para un Arduino, y decidí probar con uno de los faros locales aquí en Erie, Pennsylvania como inspiración. Elegí el Norte Pierhead Faro que custodia la entrada a la bahía de la isla de Presq
Arduino controla solenoide Motor

Arduino controla solenoide Motor

Este instructable fue creado en cumplimiento de la exigencia de proyecto de la Makecourse de la Universidad de South Florida (www.makecourse.com). En este instructable, usted aprenderá cómo hacer un motor solenoide alimentado, concretamente un soleno
Hackeado Hexbug araña Arduino Control

Hackeado Hexbug araña Arduino Control

Este proyecto tiene hexbug araña basada en Arduino robot comprobaré. El sistema de control completa nuestro proyecto proporcionando tanto por teléfono y la computadora.http://make.robimek.com/Arduino-control-Hexbug-Spider/Paso 1: materiales:Hexbug ar
Inicio entrada-salida controlar mediante tarjeta DAQ

Inicio entrada-salida controlar mediante tarjeta DAQ

Interfaz de tarjeta DAQ- control de inicio E/S con dispositivos externosPaso 1: Comprender los elementosObjetivo: Inicio de interfaz-controladora tarjeta DAQ I/O utilizando dispositivos externosControl: Conexión I/O Descargar aquíPlataforma programa:
La introducción de Climaduino - el termostato basado en Arduino controlas desde tu teléfono!

La introducción de Climaduino - el termostato basado en Arduino controlas desde tu teléfono!

Actualización:Hay una nueva versión de la Climaduino y el Climaduino con algunos cambios muy significativos.Soporta múltiples zonasUtiliza el Arduino YúnTrabaja con aire acondicionado CentralSe comunica mediante el protocolo MQTT (se puede integrar c
Inicio alerta de entrada-salida intruso

Inicio alerta de entrada-salida intruso

Cómo hacer una alarma para la entrada no autorizadaPaso 1: Comprender los elementosObjetivoAlerta de intruso-levantar una alarma para la entrada no autorizadaControl: Conexión de E/S Software descargar aquíPlataforma programa: FBD (incorporado conexi
Edison de Intel como servidor de I/O de alta velocidad: entrada-salida análoga y Digital transmisión a través de conexión WiFi al PC cliente

Edison de Intel como servidor de I/O de alta velocidad: entrada-salida análoga y Digital transmisión a través de conexión WiFi al PC cliente

Este instructable es escrito como un diseño de referencia para aquellos que necesitan recopilar datos de los sensores y enviar por WiFi en un relativamente de alta velocidad. Con esta solución, fácilmente se alcanzan tasas de hasta 1000 veces por seg
Botón de entrada/salida de LED del

Botón de entrada/salida de LED del

Este es un circuito que introduce el concepto de programación de entrada / salida. La salida de 4 LED y la entrada está un botón. Después de completarlo tienes una gran plataforma para experimentar con conceptos como si las funciones y valores boolea
Inicio entrada-salida controlar luz usando olla

Inicio entrada-salida controlar luz usando olla

Interfaz de tarjeta DAQ- Control de inicio E/S analógica utilizando dispositivos externosControl: Conexión entrada-salidaPlataforma programa: FBD (incorporado conexión entrada-salida)Entorno casa de entrada-salidaDescargar aquía partir de las condici
Inicio entrada-salida automático cierre de la puerta de entrada de

Inicio entrada-salida automático cierre de la puerta de entrada de

OBJETIVO:TRABA de la operación de abrir y cerrar de la puertaLa puerta debe abrir completamente el borde de levantamiento del Sensor 1 y la puerta debe cerrar completamente por flanco descendente de Sensor 2De control:Conexión entrada-salida. Descarg
Arduino controla el temporizador de cocina

Arduino controla el temporizador de cocina

Todos ustedes deben han experimentado esto que tienes algo cocinan sobre su cocina por el otro lado conseguir ocupado viendo la televisión o conseguir una conversación profunda que te das cuenta en la detección de un olor que completamente fue estrop