void setup()
{
Serial.begin(9600); //Establecemos la
velocidad de comunicacion serial
Serial.println(" Hello world! "); //Imprimimos
nuestro "Hello World!" en monitor serial
}
void loop()
{
//No hacemos nada al entrar al loop o ciclo infinito
}
El IDE del Arduino nos proporciona una herramienta que nos permite
enviar y visualizar los datos que se manejan a través del puerto Serial.
Dicha herramienta se conoce como Monitor Serial y se puede encontrar en
el menú de herramientas, en la opción “Monitor Serial”.
La tarjeta Arduino tiene una circuito interno llamado convertidor análogo-
digital (también conocido como ADC, por sus siglas en ingles Analog to
Digital Converter) que lee un voltaje de 0V a 5V y devuelve un número en
una escala entre 0 a 1023. El comando analogRead() retorna el valor del
ADC que es aproximadamente proporcional al valor de voltaje aplicado al
pin de entrada analógica.
void setup()
{
void loop()
{
int valor_sensor = analogRead(A0); // lee la entrada analógica
desde el pin 0
Serial.println(valor_sensor); // muestra el valor que se leyó
delay(1); // retraso entre lectura y lectura,
para la estabilidad
}
Arduino Básico: Lectura Serial Digital
Ahora que el setup esta completo, nos dirigimos al loop principal del
código. Cuando el pulsador es presionado, 5 voltios se dirigirán desde
tu circuito, y cuando el pulsador no este presionado, el pin de
entrada estará conectado hacia tierra. Esto es una entrada digital,
eso significa que el pulsador puede estar solo en estado activo (visto
desde el arduino como un '1', o como HIGH) o en un estado no activo
(visto desde el arduino como un '0', o como LOW).
El primer paso que se necesita hacer en el loop principal es
establecer una variable que contenga la información proveniente del
pulsador. Esta información proveniente del pulsador puede ser un '1'
o un '0', se puede usar un int datatype. Llamamos a esta variable
sensorValue, esto se puede lograr con una sola línea de código: int
sensorValue = digitalRead(2);
Una vez que el Arduino ha leído la entrada, hacer que imprima esta
información en la computadora como un valor decimal. Se puede
hacer esto con el comando Serial.println() en la ultima linea del
código: Serial.println(sensorValue);
/*
LecturaDigitalSerial
Lee una entrada digital del pin, muestra el resultado en el monitor
serial
Pulsador en configuración Pull Down
*/
{
Serial.begin(9600); // inicializa la comunicación serial en
9600 bits por segundo
pinMode(pulsador, INPUT); // asigna al pin 2 como pin de
entrada
}
void setup()
{
Serial.begin(9600); //Establecemos la
velocidad de comunicacion serial
Serial.println("Hello world!"); //Imprimimos
nuestro "Hello World!" en monitor serial
pinMode(boton, INPUT_PULLUP);
}
void loop()
{
if (digitalRead(boton) == LOW)
{
Serial.println("Boton presionado");
}
delay(1000);
}
/*
Lectura serial de una entrada digital
Leer una entrada digital y mostrar por la pantalla del
computador (consola serial) el estado del pulsador
cuando es oprimido
*/
/*
Lectura de Voltaje Analógico
*/
void loop()
{
int valor_sensor = analogRead(A0); // lee el pin de
entrada analogico (pin A0)
float voltaje = valor_sensor * (5.0 / 1023.0); // Convierto la
lectura analogica (de 0-1023)
// hacia un voltaje (0 -
5V):
void setup()
{
Serial.begin(9600); //Establecemos la
velocidad de comunicacion serial
Serial.println("Hello world!"); ); //Imprimimos
nuestro "Hello World!" en monitor serial
}
void loop()
{
int valorPotenciometro = analogRead(A0);
Serial.println("El valor del potenciometro es:");
Serial.println(valorPotenciometro);
delay(1000);
}
Este código hace lo mismo que en el anterior, solo que en el “loop()” hace
una lectura a la entrada analoga A0 y guarda el valor en
“valorPotenciometro” después imprime este valor en el monitor serial, y
hace un delay de 1000 ms. Con este código se puede monitorear el
cambio en una entrada análoga y desplegar el valor obtenido.
Arduino Básico: Lectura Serial Digital
Ahora que el setup esta completo, nos dirigimos al loop principal del
código. Cuando el pulsador es presionado, 5 voltios se dirigirán desde
tu circuito, y cuando el pulsador no este presionado, el pin de
entrada estará conectado hacia tierra. Esto es una entrada digital,
eso significa que el pulsador puede estar solo en estado activo (visto
desde el arduino como un '1', o como HIGH) o en un estado no activo
(visto desde el arduino como un '0', o como LOW).
El primer paso que se necesita hacer en el loop principal es
establecer una variable que contenga la información proveniente del
pulsador. Esta información proveniente del pulsador puede ser un '1'
o un '0', se puede usar un int datatype. Llamamos a esta variable
sensorValue, esto se puede lograr con una sola línea de código: int
sensorValue = digitalRead(2);
Una vez que el Arduino ha leído la entrada, hacer que imprima esta
información en la computadora como un valor decimal. Se puede
hacer esto con el comando Serial.println() en la ultima linea del
código: Serial.println(sensorValue);
/*
LecturaDigitalSerial
Lee una entrada digital del pin, muestra el resultado en el monitor
serial
*/
{
Serial.begin(9600); // inicializa la comunicación serial en
9600 bits por segundo
pinMode(pulsador, INPUT); // asigna al pin 2 como pin de
entrada
}
Este ejemplo muestra cómo enviar datos desde una PC a una tarjeta
Arduino para controlar el brillo de un LED. Los datos se envían en
bytes individuales, cada uno de los cuales oscila en valor de 0 a 255.
Arduino lee estos bytes y los utiliza para ajustar el brillo del LED. El
IDE del Arduino nos proporciona una herramienta que nos permite
enviar y visualizar los datos que se manejan a través del puerto
Serial. Dicha herramienta se conoce como Monitor Serial y se puede
encontrar en el menú de herramientas, en la opción “Monitor Serial”.
/*
Atenuador de brillo
Muestra los datos enviados desde la PC a la tarjeta Arduino. Con
estos se controla el brillo de un LED, se envían los datos en bytes
individuales, desde 0 a 255. Arduino lee los bytes y los utiliza para
ajustar el brillo del LED.
*/
const int ledPin = 9; // Se declara una variable entera
con valor de 9
void setup()
{
Serial.begin(9600); // inicializa la comunicacion
serial:
pinMode(ledPin, OUTPUT); // inicializa el ledPin como pin de
salida:
}
void loop()
{
byte brightness; // revisa si el dato a sido enviado
desde la computadora:
if (Serial.available())
{
brightness = Serial.read(); // lee el byte más reciente (el cual
podría ser desde 0 hasta 255): analogWrite(ledPin, brightness);
// determina el brillo del LED:
}
}
Arduino Analógico: Entrada analógica y salida serial
Si leemos una entrada analógica, el resultado esta en un rango de 0 a 255,
y usamos ese resultado para configurar una señal PWM que va hacia el
LED. El IDE del Arduino nos proporciona una herramienta que nos permite
enviar y visualizar los datos que se manejan a través del puerto Serial,
diicha herramienta se conoce como Monitor Serial.
/*
Después de declarar los pines de salida,
entrada (pin analógico 0 para el
potenciómetro y pin digital 9 para el
LED) y dos variables, SensorValue y
OutputValue, en la función setup se
declara la velocidad de la comunicación
serial.
En void loop el valor de sensorValue se
asigna al pin analógico . Como el
comando analogRead tiene una
resolucion de 0-1023, y analogWrite una
resolución de 0 a 255, este dato debe
ser convertido antes de usarlo. Con el
fin de ampliar este valor, se utiliza una
función llamada map (). OutputValue =
map(sensorValue, 0, 1023, 0, 255); El
nuevo valor asignado a outputValue es
la salida al LED, la cual varía segun el
giro del potenciometro. Este resultado
esta dentro del rango 0 a 255 y se
envía como una señal PWM al pin de
salida y se muestra en el Serial Monitor
*/
const int analogInPin = A0;
const int analogOutPin = 9;
int sensorValue = 0; // valor leido
desde el potenciómetro
int outputValue = 0; // valor de la salida PWM (salida analógica)
void setup()
{
Serial.begin(9600); // inicializa la comunicacion serial con 9600 bits
por segundo
}
void loop()
{
sensorValue = analogRead(analogInPin); // lectura de la entrada
analógica
outputValue = map(sensorValue, 0, 1023, 0, 255); // ubica el valor de
la entrada en el rango
//de la salida analógica
analogWrite(analogOutPin, outputValue); // cambia el valor de
salida analógica
Serial.print("sensor = " ); // muestra el resultado en
el Serial Monitor:
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);
delay(2); // espera 2 milisegundos antes
del siguiente ciclo
}
Arduino Analógico: Calibración
/*
Calibración
Antes de comenzar con la función setup(), se definen los valores máximos
y mínimos como:
int sensorMin = 1023; // valor mínimo del sensor
int sensorMax = 0; // valor máximo del sensor
Estas pueden parecer al revés. Inicialmente, se establece el alto mínimo y
leer cualquier cosa menor que eso, guardándolo como el nuevo mínimo.
Asimismo, se establece la máxima baja y leer cualquier cosa más alto que
el nuevo máximo, de este modo:
while (millis() < 5000) // calibración durante los primeros cinco segundos
{
sensorValue = analogRead(sensorPin);
if (sensorValue > sensorMax) // asigna el nuevo máximo valor
{
sensorMax = sensorValue;
}
if (sensorValue < sensorMin) // asigna el nuevo mínimo valor
{
sensorMin = sensorValue;
}
}
De esta manera, cualquier lectura que se toma puede asignarse a un
rango entre el mínimo y el máximo de este modo:
sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); // aplica
la calibración a la lectura del sensor
*/
const int sensorPin = A0; // el número del pin al cual se
conectará el sensor
const int ledPin = 9; // el número del pin al cual se
conectará el LED
int sensorValue = 0; // se inicializa el valor del sensor
int sensorMin = 1023; // se inicializa el valor mínimo del
sensor
int sensorMax = 0; // se inicializa el valor máximo del
sensor
void setup() {
pinMode(13, OUTPUT); // prende el LED para señalar que
comienza el periodo de calibración
digitalWrite(13, HIGH);
void loop()
{
sensorValue = analogRead(sensorPin); // lee el sensor
sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); //
aplica la calibracion a la lectura del sensor
sensorValue = constrain(sensorValue, 0, 255); // en caso el
valor del sensor este fuera del rango
// visto durante la
calibración
analogWrite(ledPin, sensorValue); // se atenua el
LED usando el valor de calibración
}
Arduino Analógico: Cambio de brillo en un LED
/*
Atenuación
Este ejemplo muestra como atenuar el brillo un LED usando la
función analogWrite().
*/
int ledPin = 9; // el LED conectado al pin digital 9
void setup()
{
}
void loop()
{
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) //
cambia el brillo desde el mínimo al máximo,
// incrementando de
5 en 5:
{
analogWrite(ledPin, fadeValue);
delay(30); // espera por 30 milisegundos
para distingir el efecto de cambio
}
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) //
cambia el brillo desde el máximo al mínimo,
// disminuyendo de 5
en 5:
{
analogWrite(ledPin, fadeValue); delay(30); // espera
por 30 milisegundos para
//distingir el efecto
de cambio
}
}
Sentencia: Switch Case
Una sentencia if le permite elegir entre dos opciones diferenciadas,
verdadero o falso. Cuando hay más de dos opciones, puede utilizar
múltiples sentencias if, o puede utilizar la sentencia switch. la sentencia
switch permite elegir entre varias opciones discretas. En este ejemplo
usaremos la sentencia switch para cambiar entre cuatro estados deseados
de una fotoresistencia: muy oscuro, oscuro, medio y brillante. Este
programa lee primero la fotorresistencia. A continuación, utiliza el mapa ()
para mapear su salida a uno de cuatro valores: 0, 1, 2, o 3. Por último, se
utiliza la sentencia switch() para imprimir uno de los cuatro mensajes de
vuelta al ordenador, dependiendo de cuál de los cuatro valores se
devuelve.
/*
Sentencia Switch
Demuestra el uso de la sentencia Switch. La sentencia Switch
permite elegir entre un numero de valores discretos. Esto es como
una serie de sentencias if.
*/
const int sensorMin = 0; // la máxima y mínima lectura
const int sensorMax = 600; //que se obtiene del sensor:
void setup()
{
Serial.begin(9600); // inicializa la comunicación serial:
}
void loop()
{
int sensorReading = analogRead(A0); // Lectura del sensor
int range = map(sensorReading, sensorMin, sensorMax, 0, 3);
switch (range) // dependiendo del valor de range realiza una
determinada acción
{
case 0:
Serial.println("dark"); // una mano esta sobre el sensor
break;
case 1 Serial.println("dim"); // una mano esta cerca del sensor
break;
case 2 Serial.println("medium"); // una mano esta un poco alejada
del sensor
break;
case 3: Serial.println("bright"); // una mano no esta cersa del
sensor
break;
}
delay(1); // retraso entre lecturas para la
estabilidad
}
Sentencia While Loop
A veces quieres que todo el programa se detenga mientras una condición
dada es verdadera. Usted puede hacer esto utilizando un while loop. En
este ejemplo se muestra cómo utilizar un while loop para calibrar el valor
de un sensor analógico.
En el loop principal, el siguiente esquema se lee el valor de una
fotorresistencia el pin 0 analógico y lo utiliza para desaparecer un LED en
el pin 9. Pero mientras se presiona un botón conectado al pin digital 2, el
programa se ejecuta un método llamado calibrar () que busca los valores
más altos y más bajos del sensor analógico. Al soltar el botón, continúa
con el bucle principal. Esta técnica le permite actualizar los valores
máximos y mínimos de la fotorresistencia cuando las condiciones de
ilumina.
/*
Condicional - Sentencia While
Mientras el pulsador es presionado, la rutina de calibración es corrida.
La lectura del sensor durante el while loop define el los valores máximo y
mínimos esperados de la fotoresistencia.
Esta es una variación del ejemplo de calibración
*/
const int sensorPin = A2; // el sensor se declara en el pin A2
const int ledPin = 9; // ledpin se declara en el pin 9
const int indicatorLedPin = 13; // indicatorLedPin se declara en el pin
13
const int buttonPin = 2; //el botón se declara en elpin 2
int sensorMin = 1023; // mínimo valor del sensor
int sensorMax = 0; // máximo valor del sensor
int sensorValue = 0; // el valor del sensor
void setup()
{
pinMode(indicatorLedPin, OUTPUT);
pinMode (ledPin, OUTPUT);
pinMode (buttonPin, INPUT);
}
void loop()
{
while (digitalRead(buttonPin) == HIGH) // cuando el boton
es presionado hacemos la calibracion
{
calibrate();
}
digitalWrite(indicatorLedPin, LOW); // señal de
termino del periodo de calibración
sensorValue = analogRead(sensorPin); // lectura
del sensor:
sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255); //
aplica la calibración a la lectura del sensor
sensorValue = constrain(sensorValue, 0, 255);
analogWrite(ledPin, sensorValue); // Atenua el brillo
del LED usando el valor de calibración:
}
void calibrate()
{
digitalWrite(indicatorLedPin, HIGH); // prende el LED para
indicar que la calibración esta sucediendo:
sensorValue = analogRead(sensorPin); // lectura del sensor:
if (sensorValue > sensorMax) // almacena el máximo
valor del sensor
{
sensorMax = sensorValue;
}
if (sensorValue < sensorMin) // almacena el mínimo valor
del sensor
{
sensorMin = sensorValue;
}
}
Sentencia for loop
A menudo se desea iterar sobre una serie de pines y hacer algo para cada
uno. Por ejemplo, este ejemplo hace parpadear 5 LEDs conectados al
Arduino utilizando la sentencia: for () loop para modificar la salida desde el
pin 2 al pin 6. Los LED se enciende y se apaga, en secuencia, utilizando
tanto las funciones de delay() y digitalWrite().
/*
Bucle de iteración
Muestra el uso de: for() loop.
Prende multiples LEDs en secuencia de una direccion a otra y viceversa
El siguiente código utiliza un for () loop para asignar los pines 2-6 como
salidsa, las cuales iran conectadas a los 5 LEDs utilizados. Una vez que se
encendió
el ultimo LED, este se apaga y se prende el LED anterior esto continua de
forma
continua hasta llegar primer LED, donde se inicia el ciclo
*/
void setup()
{
for (int pin = 2; pin <= 6; pin++) // usa la sentencia loop para declarar
los pines como pines de salida
{
pinMode(pin, OUTPUT);
}
}
void loop()
{ for (int pin = 2; pin <= 6; pin++) // bucle
{
digitalWrite(pin, HIGH); // prende el LED:
delay(tiempo);
digitalWrite(pin, LOW); // apaga el LED:
}
void setup() {
// inicializa el pin del LED como pin de salida
pinMode(ledPin, OUTPUT);
// inicialización de la comunicación serial
Serial.begin(9600);
}
void loop() {
// lectura del valor del potenciómetro
int analogValue = analogRead(analogPin);
Ejerecicip para aprender a mover la luz entre varios leds al estilo del
auto fantástico. La velocidad la podemos controlar con el
potenciómetro. Si giramos el potenciómetro en sentido horario la
velocidad de esplazamiento aumentará y si lo giramos en sentido
antihorario disminuirá.Para lograrlo utilizamos la estructura switch -
case que circula por los diferentes estados en que cada led está
encendido. Luego hacemos una pausa por un tiempo que depende de
la lectura del potenciómetro. En éste caso estamos usando la fórmula
tiempo=(valorPot/2)+25 con la que obtenemos un rango de tiempo
entre medio segundo y 25 milisengundos de espera antes de pasar al
siguiente estado.
/*
Movimiento de Luces con Control de Velocidad
Con este programa la luz se va moviendo por los leds al estilo del
auto
fantastico. La velocidad del movimiento la podemos controlar
girando el
potenciometro.
*/
// Variables
int valorPot = 0; // aca almacenamos el valor del potenciometro
int tiempo = 0;
int estado = 1;
void setup() {
// inicializamos los pines de los leds como salidas
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
// asignamos los valores iniciales a los leds (apagados)
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
void loop() {
// Leemos el valor del potenciometro y lo alamacenamos
valorPot = analogRead(pinPot); // va de 0 a 1023
// Calculamos el tiempo en milisegundos en base al valor del
// potenciometro de modo que el tiempo entre estados sea como
// maximo alrededor de medio segundo y como minimo 25
milisegundos.
tiempo = ( valorPot / 2 ) + 25;
// Evaluamos el estado en el que nos encontramos (que led debe
estar
// encendido)
switch(estado) {
case 1:
digitalWrite(led4, LOW);
digitalWrite(led5, HIGH);
break;
case 2:
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
break;
case 3:
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
break;
case 4:
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
break;
case 5:
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
break;
case 6:
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
break;
case 7:
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
break;
case 8:
digitalWrite(led3, LOW);
digitalWrite(led4, HIGH);
break;
}
// evaluamos si llegamos al estado final
if ( estado == 8 ) {
// pasamos al estado 1
estado = 1;
} else {
// pasamos al siguiente estado
estado = estado + 1;
}
// esperamos el tiempo que va a estar encendido un led
delay(tiempo);
}
Mover Posición de LED Encendido con Potenciómetro
/*
Cambiar Posicion de Led Encendido con Potenciometro
Con este programa podras cambiar el led encendido segun el valor
del
potenciometro que leemos por una entrada analogica. El rango de
lectura
es de 0 a 1023 por los que dividimos ese rango en cinco rangos que
concidan
con los leds segun su posicion.
*/
// Variables
int valorPot = 0; // aca almacenamos el valor del potenciometro
void setup() {
// inicializamos los pines de los leds como salidas
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
}
void loop() {
// Leemos el valor del potenciometro y lo alamacenamos para
comparar
// el valor mas adelante
valorPot = analogRead(pinPot);
// comparamos con los valores de los rangos para cada led.
if( valorPot > 818 ){ // rango led5 : 819 - 1023
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, HIGH);
} else if( valorPot > 614 ){ // rango led4 : 615 - 818
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
} else if( valorPot > 409 ){ // rango led3 : 410 - 614
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
} else if( valorPot > 205 ){ // rango led2 : 206 - 409
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
} else { // rango led1 : 0 - 205
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
}
SENSOR LDR
void loop()
{
buttonState = digitalRead(buttonPin); // cargamos estado de
entrada
// comprobamos si esta presionado el
pulsador
if (buttonState == LOW ) // y si esta pulsado
incrementamos variable conteo de pulsos
{ //y enviamos el valor por puerto serie
if(EstadoAnteriorPulsador!=buttonState)
{
EstadoAnteriorPulsador=buttonState;
ContPulso++;
Serial.println(ContPulso);
}
}
else
{
EstadoAnteriorPulsador = HIGH;
}
}
// Código para evitar el indeseado efecto rebote. La lectura de la pulsación
de un botón no se procesa hasta que está pulsación este estable durante
al menos 200 ms. Controla el encendido y apagado de led.
const int buttonPin = 11; // pin del pulsador
const int ledPin = 13; // pin del led
.int ledStatus = false; // almacena el estado del led. Por defecto
está apagado
int buttonState = 0; // estado actual del botón
int lastButtonState = 0; // estado del botón tras el filtrado del
debounce
int lastButtonState2 = LOW; // estado anterior para el filtrado del
debounce
int reading; // para la lectura del pin del pulsador
long lastDebounceTime = 0; // contador para el debounce
long debounceDelay = 200; // tiempo que tiene que mantenerse
estable la señal de la pulsación
void setup()
{
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop()
{
reading = digitalRead(buttonPin); // lectura del pin
if (reading != lastButtonState2) // si ha cambiado con respecto al
estado anterior
{
lastDebounceTime = millis(); // resetear el contador para el
debounce
}
if ((millis() - lastDebounceTime) > debounceDelay)
{ //si la señal se ha mantenido estable más del tiempo establecido
por lo tando se puede cambiar el valor
buttonState = reading;
}
lastButtonState2 = reading; // almacenar la lectura para la
siguiente comprobación
if (buttonState != lastButtonState) // comparar el estado del pulsador
con el estado anterior
{
if (buttonState == LOW) // si el estado ha cambiado
comprobar si ha sido porque ha sido pulsado
{ // y no porque ha sido soltado
ledStatus = !ledStatus; // el botón ha sido presionado,
cambiamos el valor del led
}
lastButtonState = buttonState; // almacenar el nuevo valor del botón
}
if (ledStatus) // actualizar el estado del led de acuerdo a
la variable
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}}
int led = 22; //asociamos el numero de pin 22 a la
variable led
int pulsador = 24; // asociamos el numero de pin 24 al
pulsador
int estado = 0; //hacemos una variable para almacenar
el estado del led
void setup() //iniciamos el void setup , que se ejecuta
una vez al iniciarse la placa arduino
{
pinMode(led,OUTPUT); //aqui configuramos el led como
salida digital
pinMode(pulsador,INPUT); //Aqui configuramos el pulsador como
entrada digital
digitalWrite(led,LOW); //iniciamos con el led apagado
}
void loop() //ahora pasamos al loop, que se ejecuta
una y otra vez infinitamente
{
if(digitalRead(pulsador)==1) //si se presiona el pulsador
{
if(estado == 0) //si el estado es 0, es decir, el led esta
apagado
{
digitalWrite(led,HIGH); //prendemos el led
estado = 1; //y establecemos la variable estado a
1
}
else //de lo contrario, significa que estado es igual a uno,
y el led esta encendido, por lo tanto
{
digitalWrite(led,LOW); //lo apagamos
estado = 0; //y establecemos estado a 0
}
delay(500); //un retardo de 500 ms para evitar que se lea
varias veces el pulsador al mismo tiempo
}
}
/*
Funcionamiento de las entradas analógicas configurando el pin
analógico A0 para tomar datos de una señal. Esta toma de datos
es utilizada para variar la velocidad de parpadeo de un diodo LED
conectado a la salida digital 9.
*/
int pinSensor = A0; // Entrada para el
potenciómetro.
int pinLed = 9; // Seleccionamos pin para el Led.
int valorSensor = 0; // variable para el valor del
sensor.
void setup()
{
pinMode(pinLed, OUTPUT); // Declaramos el pin del
Led como salida:
}
void loop()
{
valorSensor = analogRead(pinSensor); // Leemos el
valor del sensor y lo almacenamos:
digitalWrite(pinLed, HIGH); // encendemo el
diodo LED:
delay(valorSensor); // Detenemos el programa
durante <valorSensor> milisegundos:
digitalWrite(pinLed, LOW); // Apagamos el diodo Led:
delay(valorSensor); // Detenemos el programa
durante <valorSensor> milisegundos:
}
/*
Pulsador para 2 LED´s
*/
void setup()
{
pinMode(ledPin, OUTPUT); // Se inicializan los pines que son salida
pinMode(ledPin2,OUTPUT);
pinMode(inputPin, INPUT); // y se declara el Pin del pulsador como
entrada
Serial.begin(9600);
}
void loop()
{
val = digitalRead(inputPin); // lee el valor del pulsador
if (val == HIGH) // condicion de lectura del pulsador
{
digitalWrite(ledPin, LOW);
digitalWrite(ledPin2, HIGH);
Serial.println("EL led 2 encendido");
}
else
{
digitalWrite(ledPin, HIGH);
Serial.println("EL led 1 encendido");
digitalWrite(ledPin2, LOW);
}
}
Tengo el botón conectado en mi conector 12, es decir que voy a usar
digitalRead(12) para saber cuál es su valor, asignándolo a la variable
sensorValue. Después, le indico que el sensorValue lo muestre en la
ventana Serial monitor, que debo abrir usando el menú Tools. Una vez
compilado el código (botón “verify”, el primero) y subido a la placa (botón
“upload”. el que tiene una flecha hacia la derecha) , pulso el botón y veo en el
Serial monitor una secuencia de ceros, que cuando pulso el botón se
transforman en unos.
/*
Aqui usamos el boton para encender el LED.
*/
void setup()
{
Serial.begin(9600);
pinMode(12, OUTPUT);
}
void loop()
{
int sensorValue = digitalRead(A2);
Serial.println(sensorValue);
if (sensorValue == 1)
{
digitalWrite(12, HIGH); // si el valor del sensor es 1, enciende el
LED
delay(100); // espera un ratito
digitalWrite(12, LOW); // apaga el LED
}
}
void setup()
{
Serial.begin(9600);
pinMode(A3, OUTPUT);
}
void loop()
{
int sensorValue = analogRead(A2);
analogWrite(A3, sensorValue/4); // escribimos en el conector A3 el
valor del sensor (del potenciómetro)
// dividido cuatro.
Serial.println(sensorValue);
}
Control de intensidad de un LED", donde es usado una Mini fotocelda, el
cual es usado para detectar luz.
/*
Control de intensidad de un LED
*/
void setup
{
Serial.begin(9600); //Inicia comunicacion
pinMode(9,OUTPUT); //Configurar el pin 9 como salida
}
void loop()
{
int foto = analogRead(A0); //Variable del valor de la lectura
analoga de la mini fotocelda
int conversion = 780 - foto; // Verifica el valor máximo y se realiza
una conversion
if ( conversion < 0) //Condicion para establecer un valor
absoluto
conversion = conversion * -1; //Multiplicar por -1
Serial.print("Foto : "); //Se Imprimen los datos de la mini
fotocelda
Serial.print(foto);
Serial.println("");
Serial.print("Conv : "); //Se Imprimen los datos del valor de la
conversion
Serial.print(conversion);
Serial.println("");
analogWrite(9, conversion); //Escritura análoga de PWM en el LED de
acuerdo a la conversion
delay(100);
}
Interruptor crepuscular
El circuito propuesto esta compuesto por una resistencia LDR y un led. Una
resistencia LDR es un componente cuya resistencia al paso de la corriente
eléctrica varia en función de la luz que recibe.
La resistencia se conecta de tal modo que sea proporcional a la cantidad
de luz que recibe, es decir, cuanta más luz, mayor será la resistencia que
oponga al paso de la corriente eléctrica, para ello colocaremos una
resistencia de 1KOhm para estabilizar su salida. Cuando haya poca luz se
encendera un led y se apagará cuando se supere cierto umbral.
int ldr = A0;
//La resistencia LDR estará en la entrada 0 de analogico
int led = 1; //El led estará conectado a la salida digital 1
int luz = 0; // Variable para el valor de la intensidad de la luz
int umbral = 10;
//umbral en el que encenderemos/apagaremos el led
int t = 5000;
void setup()
{
pinMode(ldr,INPUT) ;
//configuramos el pin de la resistencia como entrada
pinMode(led,OUTPUT); //configuramos el pin del led cómo salida
}
void loop()
{
luz = analogRead(ldr); //leemos el valor de la resitencia LDR
if (luz >= umbral)
{
digitalWrite(led,HIGH); //si no supera el umbral, encendemos e
l led
}
else
{
digitalWrite(led,LOW); //si lo supera, lo apagamos.
}
delay(t); //esperamos antes de volver a leer y comprobar
}
/*Declaramos una variables de tipo caracter en la que se almacenará lo q
ue nos llegue por consola*/
char orden; //Definimos el led estará en la patilla 9;
int led = 9;
void setup()
{
pinMode(led,OUTPUT); //definimos la patilla del led cómo salida
Serial.begin(9600); // Abrimos la conexión serial a 9600 baudios
}
void loop()
{ /*leemos las ordenes que nos llegan por consola y la almacenamos en
la variable orden*/
orden = Serial.read();
switch (orden)
{
case 'e': digitalWrite(led,HIGH);
break;
case 'E': digitalWrite(led,HIGH);
break;
case 'o': digitalWrite(led,LOW);
break;
case 'O': digitalWrite(led,LOW);
break;
default: digitalWrite(led,HIGH);
delay(300);
digitalWrite(led,LOW);
delay(300);
digitalWrite(led,HIGH);
delay(300);
digitalWrite(led,LOW);
break;
}
}