miércoles, 18 de marzo de 2015

Variación de la intensidad de un LED con salidas digitales PWM

Lista de componentes
  • 1x Arduino Mega (podemos emplear cualquier Arduino que funcione a 5v).
  • 1x Resistencia 220 Ω.
  • 1x LED Blanco 5 mm.
  • 1x Potenciómetro lineal de 10 kΩ.
  • 1x Protoboard.
  • 1x Juego de cables.
Diagrama conexiones eléctricas

Seguiremos utilizando el pin analógico A0 como entrada analógica, y los pines de 5v y gnd del propio arduino como fuente y referencia de tensión para la parte de recepción de datos. Para conectar el led con la resistencia en serie utilizaremos el pin digital 10.
 
/*
***********************************************************
****   rDuinoStar.com - Comunidad Arduino en Español   ****
***********************************************************
  Tutorial 4.- Salidas Digitales PWM
 
  Lectura de entrada analógica y variación en la intensidad de
  iluminación de un LED utilizando salidas digitales con modulación
  en ancho del pulso.
 
  Uso público citando el autor o procedencia, bajo licencia:
  Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)
 
  Éste y más ejemplos en rDuinoStar.com, tu comunidad Arduino
  en Español
*/
 
// Pin digital PWM que utilizaremos para alimentar el LED
int pinLed = 10;
// Pin analógico que utilizaremos como entrada de datos
int entradaDatos = A0;
// Variable que recogerá las lecturas de A0
int valorDatos = 0;
 
void setup()
{
  // Configuramos el pin del LED como salida, aunque no es necesario
  pinMode(pinLed, OUTPUT);
}
 
void loop()
{
  // Leemos el valor en la entrada analógica A0 y se lo asignamos a
  // valorDatos
  valorDatos = analogRead(entradaDatos);
  // Determinamos el nivel de salida
  analogWrite(pinLed, valorDatos / 4);
}


Video tutorial "Instalación de Arduino"


jueves, 12 de marzo de 2015

Sensor de distancia por ultrasonidos y distancia en pantalla LCD


Para ello vamos a necesitar:
  • Arduino
  • Sensor de ultrasonidos HC-SR04
  • Pantalla LCD de 2 X 16
  • Potenciómetro de 1k
  • Placa protoboard
  • Conectores protoboard
  • Las librerias <Ultrasonic.h> y <LiquidCrystal.h>
Lo conectaremos siguiendo el esquema de esta imagen:

El código del programa es el siguiente:

// Medidor de distancias con sensor de ultrasonidos HC-SR04 y pantalla LCD
#include <Ultrasonic.h> //Librerias incluidas
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Pines que utiliza nuestra LCD
Ultrasonic ultrasonic(9,8); // (Trig PIN,Echo PIN) Pines del sensor HC-SR04
void setup() {
lcd.begin(16, 2);
}
void loop()
{
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(ultrasonic.Ranging(CM)); // Se puede elegir entre CM or INC
  lcd.print("cm");
  delay(100);
}       

Fuente: http://ardujoan.blogspot.com.es

Sensor de Temperatura

Objetivo:
Aprender a manjejar un sensor de temperatura. Y a usar la función map y constrain de Arduino.


Material necesario:
1 – Tarjeta ARDUINO UNO
1 – Cable USB para Arduino
1 – Tarjeta Protoboard
1 – Software IDE de Arduino
1 Sensor de Temperatura LM35
1 LED RGB catodo comun ó en su caso 2 LEDs comunes de colores Rojo y Azul.
2 Resistencias de 330 ohms.
Cables

Descripción
Conectamos el sensor de temperatura a la protoboard, teniendo el lado plano del sensor de frente realizamos las conexiones de la siguiente forma:
  • El pin izquierdo lo conectamos a 5v.
  • El pin derecho lo conectamos a tierra.
  • El pin central lo conectamos a cualquier pin analógico de nuestro Arduino (el pin A0 en nuestro caso).
Conectamos dos LEDs de distintos colores, agregamos una resistencia a cada LED en la parte plana que vaya a tierra.
El otro pin del LED lo conectamos uno al 3 y 5 que son los que tienen funcionalidad PWM.Conectamos los cables de tierra y 5V de la Arduino a la protoboard.
Cargamos el código.

Código


/* Practica  - Uso del Sensor de temperatura.
 Encender un LED rojo o azul dependiendo de la temperatura*/

const int sensor = 0; // entrada del sensor LM35
const int ledRojo = 3; // pin del LED rojo
const int ledAzul = 5; // pin del LED azul

long miliVolts;
long temperatura;
int brillo;

long calctemp(int datosSensor){
  /*Calculamos los mV en la entrada*/
  miliVolts = (analogRead(datosSensor) * 5000L) / 1023; 
  /* Calculamos la temperatura*/
  temperatura = miliVolts / 10;
  /*Regresamos el valor de temperatura*/
  return temperatura;
}

void setup () {
  Serial.begin(9600); // iniciamos la comunicacion serial
  /*Declaramos los LEDs como salida*/
  pinMode(ledRojo, OUTPUT);
  pinMode(ledAzul, OUTPUT);
}

void loop () {
  /*Llamamos a la función para calcular temperatura
   y guardamos el valor*/
  temperatura = calctemp(sensor);

  /*Ajustamos la escala de temperatura para poder usar analoWrite*/
  brillo = map(temperatura, 10, 40, 0, 255);
  /*Restringimos el rango de brillo entre 0 y 255*/
  brillo = constrain(brillo, 0, 255);

  /*Ajustamos el color de los LED*/
  analogWrite(ledRojo, brillo);
  analogWrite(ledAzul, 250-brillo);

  /*Mandamos el valor de la temperatura al monitor serial
   y agregamos un delay para no saturar el monitor*/
  Serial.print("Temperatura: "); 
  Serial.print(temperatura);
  Serial.println("grados");
  delay(200);
}
 
 
Fuente del artículo: https://manualarduinos52.wordpress.com  

Luces "Coche fantástico"

Necesitaremos 8 diodos LED, ocho resistencias de 220 Ohmios y una placa de prototipos y conectamos el esquema como el de la figura. Los diodos leds se encenderán y apagaran siguiendo un patrón establecido en el código, se muestran tres posibles opciones, podremos variar el tiempo de encendido y apagado, modificando la variable timer.

 /* Coche fantástico 1*/
int pinArray[] = {2, 3, 4, 5, 6, 7,8,9};
int count = 0;
int timer = 70;
void setup(){
for (count=0;count<8;count++) {
pinMode(pinArray[count], OUTPUT);
}
}
void loop() {
for (count=0;count<8;count++) {
digitalWrite(pinArray[count], HIGH);
delay(timer);
digitalWrite(pinArray[count], LOW);
delay(timer);
}
for (count=7;count>=0;count--) {
digitalWrite(pinArray[count], HIGH);
delay(timer);
digitalWrite(pinArray[count], LOW);
delay(timer);
}
}


Fuente: http://www.tecnosalva.com