Hola a todos:
En esta sesión vamos a seguir con estructuras de programación como el condicional, utilizar salidas y entradas analógicas.
PROYECTOS DE LA SESIÓN 6:
- Sensor de temperatura
- Sensor de temperatura con LED
- Sensor de temperatura con LED y altavoz
- Motor sg90 (girarlo de 0º a 180º)
- Motor sg90 (girarlo de grado en grado)
- Motor sg90 y sensor de ultrasonidos (puerta que se abre al detectar presencia)
1. Sensor de temperatura LM35
CÓDIGO
const int sensorPin= A0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
int value = analogRead(sensorPin);
float millivolts = (value / 1023.0) * 5000;
float celsius = millivolts / 10;
Serial.print(celsius);
Serial.println(" ºC");
delay(1000);
}
Deberás de añadir al termómetro un juego de 3 LED (verde, amarillo y rojo). Utilizarás un condicional que encienda los LED a medida que vaya aumentando la temperatura, de manera que se quede encendida la luz verde para la temperatura ambiente, se encienda, además de la verde, la amarilla si aumenta la temperatura en 5 ºC y se encienda, además de la verde y la amarilla, la roja si aumenta la temperatura otros 5 ºC.
CÓDIGO:
const int sensorPin= A0;
void setup()
{
Serial.begin(9600);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
}
void loop()
{
int value = analogRead(sensorPin);
float millivolts = (value / 1023.0) * 5000;
float celsius = millivolts / 10;
Serial.print(celsius);
Serial.println(" ºC");
//Introducimos el condicional
if (celsius<27)
{
digitalWrite(11,HIGH);
}
if (celsius>=27 && celsius<30)
{
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
}
if (celsius>=30)
{
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
}
delay(200);
//Ahora los apagamos todos los LED y empezamos de nuevo.
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}
3. Sensor de temperatura con LED y altavoz
Deberás de añadir al ejercicio anterior, un altavoz que emita un pitido continuo al sobrepasar una temperatura que coincidirá con aquella que encienda el LED rojo.
CÓDIGO:
const int sensorPin= A0;
int pinzumbador=9;
int frecuencia=220;
void setup()
{
Serial.begin(9600);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
}
void loop()
{
int value = analogRead(sensorPin);
float millivolts = (value / 1023.0) * 5000;
float celsius = millivolts / 10;
Serial.print(celsius);
Serial.println(" ºC");
//Introducimos el condicional
if (celsius<27)
{
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
noTone(pinzumbador);
}
if (celsius>=27 && celsius<30)
{
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,LOW);
noTone(pinzumbador); }
if (celsius>=30)
{
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
tone(pinzumbador,frecuencia);
}
delay(200);
}
4. Motor sg90 (girarlo de 0º a 180º)
CÓDIGO:
// Incluímos la librería para poder controlar el servo
#include <Servo.h>
// Declaramos la variable para controlar el servo
Servo servoMotor;
void setup() {
// Iniciamos el monitor serie para mostrar el resultado
Serial.begin(9600);
// Iniciamos el servo para que empiece a trabajar con el pin 9
servoMotor.attach(9);
}
void loop() {
// Desplazamos a la posición 0º
servoMotor.write(0);
// Esperamos 1 segundo
delay(1000);
// Desplazamos a la posición 90º
servoMotor.write(90);
// Esperamos 1 segundo
delay(1000);
// Desplazamos a la posición 180º
servoMotor.write(180);
// Esperamos 1 segundo
delay(1000);
}
CÓDIGO:
// Incluímos la librería para poder controlar el servo
#include <Servo.h>
// Declaramos la variable para controlar el servo
Servo servoMotor;
void setup() {
// Iniciamos el monitor serie para mostrar el resultado
Serial.begin(9600);
// Iniciamos el servo para que empiece a trabajar con el pin 9
servoMotor.attach(9);
// Inicializamos al ángulo 0 el servomotor
servoMotor.write(0);
}
void loop() {
// Vamos a tener dos bucles uno para mover en sentido positivo y otro en sentido negativo
// Para el sentido positivo
for (int i = 0; i <= 180; i++)
{
// Desplazamos al ángulo correspondiente
servoMotor.write(i);
// Hacemos una pausa de 25ms
delay(25);
}
// Para el sentido negativo
for (int i = 179; i > 0; i--)
{
// Desplazamos al ángulo correspondiente
servoMotor.write(i);
// Hacemos una pausa de 25ms
delay(25);
}
}
6. Motor sg90 y sensor de ultrasonidos (puerta que se abre al detectar presencia)
Deberás de construir una compuerta que se abra o se cierre en función de si detecta la presencia de una persona o coche.
6. Motor sg90 y sensor de ultrasonidos (puerta que se abre al detectar presencia)
Deberás de construir una compuerta que se abra o se cierre en función de si detecta la presencia de una persona o coche.
No hay comentarios:
Publicar un comentario