M1H 287003 281535 272016

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 31

Gonzalo Pérez (272016) - Tomás Cabrera (287003) - Matias Corvetto (281535) M1H

ENTREGA DE EJERCICIOS
TALLER DE TECNOLOGÍAS – 2022

1)
Código
void setup(){
pinMode(7, OUTPUT);
}
void loop(){
digitalWrite(7, HIGH);
delay(1000);
digitalWrite(7, LOW);
delay(1000);
}

Diagrama
2)
Código

void setup(){
pinMode(8, OUTPUT);
pinMode(7, INPUT);
}
void loop(){
if(digitalRead(7) == HIGH){
digitalWrite(8,HIGH);
}else{
digitalWrite(8,LOW);
}
}

Diagrama
3)
Código

void setup(){
pinMode(8, OUTPUT);
pinMode(7, INPUT);
Serial.begin(9600);
}
void loop(){
if(digitalRead(7) == HIGH){
digitalWrite(8,HIGH);
Serial.println("Presionado");
}else{
digitalWrite(8,LOW);
}
}

Diagrama
4)
Código

void setup(){
pinMode(5, OUTPUT);
Serial.begin(9600);
}
void loop(){
int voltajePote = analogRead(A0);
voltajePote = voltajePote/4;
analogWrite(5,voltajePote);
Serial.println(voltajePote);
}

Diagrama
5)
Código

long distanciaEnCm;
long tiempoTriggEcho;
int Echo = 11;
int Trigg = 12;
void setup(){
pinMode(Trigg, OUTPUT);
pinMode(Echo, INPUT);
Serial.begin(9600);
}
void loop(){
digitalWrite(Trigg,HIGH);
delayMicroseconds(5);
digitalWrite(Trigg,LOW);
delayMicroseconds(5);
tiempoTriggEcho = pulseIn(Echo,HIGH);
distanciaEnCm = int(0.01715*tiempoTriggEcho);
Serial.println("Distancia en cm:");
Serial.println(distanciaEnCm);
delay(1000);
}

Diagrama
6)
Código

long distanciaEnCm;
long tiempoTriggEcho;
int Echo=11;
int Trigg=12;
int rojo = 5;
int amarillo = 6;
int verde = 7;

void setup(){
Serial.begin(9600);
pinMode(Echo, INPUT);
pinMode(Trigg, OUTPUT);
pinMode(rojo, OUTPUT);
pinMode(amarillo, OUTPUT);
pinMode(verde, OUTPUT);
}
void loop(){
digitalWrite(Trigg,HIGH);
delayMicroseconds(1);
digitalWrite(Trigg,LOW);
delayMicroseconds(1);
tiempoTriggEcho=pulseIn(Echo,HIGH);
distanciaEnCm=int(0.01715*tiempoTriggEcho);
Serial.println("Distancia en cm:");
Serial.println(distanciaEnCm);
delay(1000);

if((distanciaEnCm>10)&&(distanciaEnCm<=20)){
digitalWrite(rojo, HIGH);
digitalWrite(amarillo, LOW);
digitalWrite(verde, LOW);
} else if ((distanciaEnCm>20)&&(distanciaEnCm<=30)){
digitalWrite(amarillo, HIGH);
digitalWrite(rojo, LOW);
}else if((distanciaEnCm>30)&&(distanciaEnCm<=40)){
digitalWrite(verde, HIGH);
digitalWrite(amarillo, LOW);
digitalWrite(rojo, LOW);
} else if(distanciaEnCm>40){
digitalWrite(rojo, LOW);
digitalWrite(amarillo, LOW);
digitalWrite(verde, LOW);
} else{
digitalWrite(rojo, HIGH);
digitalWrite(amarillo, HIGH);
digitalWrite(verde, HIGH);
}
}

Diagrama
7)
Código

long distanciaEnCm = 0;
long tiempoTriggEcho;
long aux = 0;
int Trigg = 12;
int Echo = 11;
int rojo = 2;
int verde = 3;

void setup(){
Serial.begin(9600);
pinMode(Echo, INPUT);
pinMode(Trigg, OUTPUT);
pinMode(rojo, OUTPUT);
pinMode(verde, OUTPUT);
}
void loop(){
Serial.println("Distancia en cm:");
Serial.println(distanciaEnCm);
digitalWrite(Trigg,HIGH);
delay(1);
digitalWrite(Trigg,LOW);
tiempoTriggEcho=pulseIn(Echo,HIGH);
distanciaEnCm=int(0.01715*tiempoTriggEcho);
Serial.println("Distancia en cm:");
Serial.println(distanciaEnCm);
Serial.println(aux);
Serial.println("aux");
If (distanciaEnCm == aux){
digitalWrite(rojo,LOW);
digitalWrite(verde, LOW);
Serial.println("Nada");
} else if (distanciaEnCm < aux){
digitalWrite(rojo,HIGH);
digitalWrite(verde,LOW);
Serial.println("rojo");
aux = distanciaEnCm;
} else if (distanciaEnCm > aux){
digitalWrite(rojo,LOW);
digitalWrite(verde,HIGH);
Serial.println("verde");
aux = distanciaEnCm;
}
Serial.println("Distancia en cm:");
Serial.println(distanciaEnCm);
Serial.println(aux);
Serial.println("aux");
delay(3000);
}

Diagrama
8)
Código

long distanciaEnCm = 0;
long tiempoTriggEcho;
int Trigg = 12;
int Echo = 11;
int rojo = 2;

void setup(){
Serial.begin(9600);
pinMode(Echo, INPUT);
pinMode(Trigg, OUTPUT);
pinMode(rojo, OUTPUT);
}

void loop(){
Serial.println("Distancia en cm:");
Serial.println(distanciaEnCm);
digitalWrite(Trigg,HIGH);
delay(1);
digitalWrite(Trigg,LOW);
tiempoTriggEcho=pulseIn(Echo,HIGH);
distanciaEnCm=int(0.01715*tiempoTriggEcho);
Serial.println("Distancia en cm:");
Serial.println(distanciaEnCm);
digitalWrite(rojo,LOW);
if(distanciaEnCm < 10){
digitalWrite(rojo,HIGH);
Serial.println("todo");
delay(1000);
} else if (distanciaEnCm > 255){
digitalWrite(rojo,LOW);
Serial.println("Nada");
delay(1000);
} else {
digitalWrite(rojo, (255-distanciaEnCm));
Serial.println("medio");
delay(1000);
}
Serial.println("Distancia en cm:");
Serial.println(distanciaEnCm);
delay(1000);
}

Diagrama
9)
Código
#include <Adafruit_LiquidCrystal.h>
int distanciaEnCm = 0;
int tiempoTriggEcho;
int Trigg = 12;
int Echo = 11;
int rojo = 2;
Adafruit_LiquidCrystal lcd_1(0);

void setup(){
Serial.begin(9600);
pinMode(Echo, INPUT);
pinMode(Trigg, OUTPUT);
pinMode(rojo, OUTPUT);
lcd_1.begin(16, 2);
lcd_1.print("Distancia: ");
}
void loop(){
Serial.println("Distancia en cm:");
Serial.println(distanciaEnCm);
digitalWrite(Trigg,HIGH);
delay(1);
digitalWrite(Trigg,LOW);
distanciaEnCm = 0;
tiempoTriggEcho=pulseIn(Echo,HIGH);
distanciaEnCm=int(0.01715*tiempoTriggEcho);
Serial.println("Distancia en cm:");
Serial.println(distanciaEnCm);
lcd_1.setCursor(0, 1);
lcd_1.print(distanciaEnCm);
Serial.println("Distancia en cm:");
Serial.println(distanciaEnCm);
delay(1000);
}
Diagrama
10)
Código

int estado1 = HIGH;


int estado2 = HIGH;
int reiniciar = true;
int led1 = 7;
int led2 = 5;
int boton1 = 9;
int boton2 = 8;
int azul = 6;
long val1 = LOW;
long val2 = LOW;
void setup(){
pinMode(led2, OUTPUT);
pinMode(6,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(8,INPUT);
pinMode(9,INPUT);
}
void loop(){
reiniciar = true;
digitalWrite(azul ,HIGH);
delay(500);
digitalWrite(azul ,LOW);
while (reiniciar == true){
delay(10);
int val1 = digitalRead(boton1);
int val2 = digitalRead(boton2);
if(estado1 != val1 || estado2 != val2) {
estado2 = val2;
estado1 = val1;
}
if (val1 == HIGH) {
digitalWrite(led1, val1);
reiniciar = false;
delay(1000);
}
if (val2 == HIGH){
digitalWrite(led2, val2);
reiniciar = false;
delay(1000);
}
Serial.print(val1, DEC);
Serial.println(val2, DEC);
}
}
digitalWrite(led2,LOW);
digitalWrite(led1,LOW);
digitalWrite(azul,LOW);
delay(2000);
}

Diagrama
11)
Código
int estado1 = HIGH;
int estado2 = HIGH;
int reiniciar = true;
int led1 = 7;
int led2 = 5;
int boton1 = 9;
int boton2 = 8;
long val1 = LOW;
long val2 = LOW;
int cant1 = 0;
int cant2 = 0;
void setup() {
pinMode(led2, OUTPUT);
pinMode(6,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(8,INPUT);
pinMode(9,INPUT);
}
void loop() {
for(int i = 0; i < 3; i++){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(500);
}
for (int j = 0; j < 11; j++){
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
reiniciar = true;
while (reiniciar == true){

delay(10);
int val1 = digitalRead(boton1);
int val2 = digitalRead(boton2);
if(estado1 != val1 || estado2 != val2) {
estado2 = val2;
estado1 = val1;
}
if (val1 == HIGH){
digitalWrite(led1, val1);
digitalWrite(led2, val2);
reiniciar = false;
delay(1000);
cant1++;
}
if (val2 == HIGH){
digitalWrite(led2, val2);
digitalWrite(led1, val1);
reiniciar = false;
delay(1000);
cant2++;
}
}
}
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(500);
if (cant1>cant2){
for(int k = 0; k < 10; k++){
digitalWrite(led1, HIGH);
delay(150);
digitalWrite(led1, LOW);
delay(150);
}
}else{
for(int k = 0; k < 10; k++){
digitalWrite(led2, HIGH);
delay(150);
digitalWrite(led2, LOW);
digitalWrite(verde, LOW);
delay(150);
}
}
}
Diagrama
12)
Código
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F(" Humedad: "));
Serial.print(h);
Serial.print(F("% Temperatura: "));
Serial.print(t);
Serial.print(F("°C "));
}

Diagrama
13)
Código
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
delay(2000);
float t = dht.readTemperature();
float hic = dht.computeHeatIndex(t, false);
Serial.print(sqrt(((t+273.15)*1.4*8.314)/0.029));
Serial.print(" m/s");
}

Diagrama
14)
Código
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
float distanciaEnCm;
long tiempoTriggEcho;
DHT dht(DHTPIN, DHTTYPE);
int Echo = 11;
int Trigg = 12;
float velocidad;

void setup() {
Serial.begin(9600);
pinMode(Trigg, OUTPUT);
pinMode(Echo, INPUT);
dht.begin();
}

void loop() {
delay(2000);
float t = dht.readTemperature();
float hic = dht.computeHeatIndex(t, false);
velocidad = sqrt(((t+273.15)*1.4*8.314)/0.029);
digitalWrite(Trigg,HIGH);
delayMicroseconds(5);
digitalWrite(Trigg,LOW);
delayMicroseconds(5);
tiempoTriggEcho = pulseIn(Echo,HIGH);
distanciaEnCm = ((((velocidad*100)/1000000)/2)*tiempoTriggEcho);
Serial.println("Distancia en cm:");
Serial.println(distanciaEnCm);
delay(1000);
}
Diagrama
15)
Código
#include <SoftwareSerial.h>
#define A 10
#define B 9
char C;
String recData;
SoftwareSerial mySerial = SoftwareSerial(A, B);
void setup(){
pinMode(A, INPUT);
pinMode(B, OUTPUT);
mySerial.begin(5000);
Serial.begin(5000);
}
void loop(){
if (mySerial.available() > 0) {
recData = "";
while(mySerial.available()) {
C = mySerial.read();
recData += C;
}
Serial.println("Recibido: " + recData);
}
If (Serial.available()){
recData = "";
recData = Serial.readString();
Serial.println("Enviado: " + recData);
mySerial.print(recData);
}
delay(1500);
}
Diagrama
16)
Código
#include <Servo.h>
int pinPot = A1;
Servo miServo;
void setup(){
miServo.attach(10);
}
void loop(){
int potRead = analogRead(pinPot);
int servoValue = map(potRead, 0, 1023, 0, 180);
miServo.write(servoValue);
delay(500);
}

Diagrama
17)
Código
#include "DHT.h"
#include <Servo.h>
#define DHTPIN 2
#define DHTTYPE DHT22
int azul = 12;
int rojo = 4;
DHT dht(DHTPIN, DHTTYPE);
Servo Servo;
void setup(){
Serial.begin(5000);
pinMode(8, INPUT);
pinMode(7, INPUT);
pinMode(12, OUTPUT);
pinMode(4, OUTPUT);
dht.begin();
Servo.attach(10);
}
void loop(){
if(digitalRead(7) == HIGH){
encenderPor(rojo, 60);
}
if(digitalRead(8) == HIGH){
encenderPor(azul, 60);
}
float h = dht.readHumidity();
float t = dht.readTemperature();
float hic = dht.computeHeatIndex(t, h, false);
if ((t>25)&&(h>90)){
Servo.write((t-25)*20);
} else {
Servo.write(0);
}
}
Diagrama

Ejercicio 2 - Teórico (7 puntos):

1) (4 puntos) ¿De qué forma realiza sus mediciones el sensor de distancia dado en el
curso? ¿Cuáles son sus pines y para qué sirven?

2) (3 puntos) En Arduino principalmente existen dos modos para los pines digitales
(OUTPUT, INPUT). ¿Qué comando usa para definir el tipo de un pin digital? ¿En que
casos asignaría OUTPUT y en qué casos asignaría INPUT?

El sensor de distancia HC-SR04 realiza mediciones mediante el ultrasonido este


emite sondas sonoras las cuales chocan con un objeto y vuelven al sensor y dependiendo
del tiempo en que las ondas demoren en volver al es como se determina la distancia.
Estos sensores son capaces de captar distancias hasta de 5 metros y también distancias
pequeñas desde hasta 1 centímetro.
Este sensor posee 4 pines o patillas los cuales se utilizan para conectarlo con la
placa de Arduino. Uno de ellos es el pin VCC el cual se encarga del suministro de energía
este se conecta con el pin de 5 voltios de la placa y el pin GND, el pin encargado de ser
la tierra, que se conecta a la tierra de la placa o mejor dicho a la masa de la placa esto
son los pines mas comunes los cuales podemos encontrar en la mayoría de los sensores.
Los otros dos pines que son los encargados de que este sensor emita la señal y
la reciba son el TRIGGER y el ECHO. El TRIGGER se encarga de informar cuando se ha
enviado la señal por eso cuando lo conectamos a uno de los pines de la placa cuando
vayamos a darle funcionalidad tenemos que escribir el pin como un OUTPUT, ya que es
el encargado de enviar la señal desde el sensor. EL ECHO es el encargado de recibir esa
señal rebotada por el objeto enviada por el TRIGGER, por eso cuando lo conectamos a
la placa de Arduino en uno de sus pines digitales ese pin cuando le vamos a dar
funcionalidad en el programa tenemos que indicarlo como un INPUT.
Para definir los dos modos de los pines digitales se usa el comando pinMode() y
dentro del paréntesis va el numero de pin digital que se uso y separado por una coma
se indica si ese pin es de salida (OUTPUT) o de entrada (INPUT).
OUTPUT se refiere al proceso de extracción de información del sistema, e INPUT
se encarga del ingreso de información al sistema.

18)
Busque para qué se utiliza la función millis () en Arduino. Proponga un ejercicio y de
solución a él.

¿Para qué se utiliza?


Millis es una función que se utiliza para medir tiempo. Está te da el tiempo en
milisegundos desde que se encendió la tarjeta Arduino. Uno de los principales usos es
el determinar el tiempo que ha pasado entre dos o más procesos del programa principal.
Por ejemplo, para evitar el debouce en un botón de entrada. Es decir, que mide el
tiempo entre el primer pulso de entrada del botón hasta el tiempo X. Es decir, hasta que
pase un tiempo X después del primer impulso, es que se procede a ejecutar la función
del botón.
Otro uso bastante importante de esta función es la de averiguar el tiempo de ejecución
en etapas críticas del código. Esto es para asegurar un tiempo real en la aplicación.

Nuestro ejercicio
Encender y apagar un LED verde de forma cíclica cada 1 segundo y simultáneamente
encender un LED rojo cuando se presiona un pulsador, y apagarlo al dejar de hacerlo.

Diagrama
Código

unsigned long variacion = 1000;


unsigned long tiempoAnterior =0;
bool estado = true;
const int pinLed = 4;
void setup() {
pinMode(pinLed,OUTPUT);
digitalWrite(pinLed,LOW);
Serial.begin(9600);
pinMode(8, OUTPUT);
pinMode(7, INPUT);
}
void loop(){
if(digitalRead(7) == HIGH){
digitalWrite(8,HIGH);
}else{
digitalWrite(8,LOW);
}
unsigned long tiempoAhora = millis();
if ((unsigned long)(tiempoAhora - tiempoAnterior) >= variacion) {
blinkLed();
tiempoAnterior = millis();
}
}

void blinkLed(){
estado = !estado;
if (estado) {
digitalWrite(pinLed,HIGH);
}
if (!estado) {
digitalWrite(pinLed,LOW);
}
}
19)
Busque un sensor no visto en el curso y explique su funcionamiento. Indique si utiliza
librerías, sus funciones y conexiones con Arduino.

Sensor PIR
¿Qué es un sensor PIR?
Los sensores infrarrojos pasivos (PIR) son dispositivos que se utilizan para la detección
de movimiento de diferentes objetos. Estos sensores tienen varios puntos positivos ya
que son baratos, de un tamaño pequeño, tienen una baja potencia y son fáciles de usar.
Es por esto que este tipo de sensor se usan a menudo en juguetes de niños, en
actividades domésticas, en sistemas de seguridad, etc.
Funcionamiento:
Este tipo de sensores está dividido en dos campos y tienen un circuito eléctrico que
compensa ambas mediciones. Cuando estos dos campos reciben la misma cantidad de
infrarrojos la señal eléctrica es nula. Y si esto no es lo que ocurre, y sucede que los dos
campos no están recibiendo la misma cantidad de infrarrojos, se genera una señal
eléctrica
De esta forma, si hay algún tipo de objeto que atraviesa o se interpone en uno de los
campos se genera una señal eléctrica diferente, que es captada por el sensor, y se emite
una señal digital.
La otra parte que nos queda hablar para que este pueda funcionar es la óptica del
sensor. Esto es básicamente una cúpula de plástico que formada por lentes de Fresnel
(Lentes de gran apertura, con una corta distancia focal sin el peso y volumen de material
que debería usarse en una lente de diseño convencional), que divide el espacio en zonas,
y enfoca la radiación infrarroja a cada uno de los campos del PIR.
Al final cada uno de los sensores capta un promedio de la radiación infrarroja que se
encuentra en el entorno. Cuando un objeto entra en el rango del sensor, alguna de las
zonas marcadas por la óptica recibirá una cantidad distinta de radiación, que terminará
siendo captado por uno de los campos del sensor, disparando la alarma.
Otro tema importante es que, si este tipo de sensor usa librería o no, y en este caso
específico este tipo de sensor no usa librería
Funciones
Los sensores PIR habitualmente se usan para la iluminación en zonas como entradas de
casa, pasillos, en el patio, etc. También este tipo de sensores no está solamente
relacionado con la iluminación sino también se puede usar para sistemas de
climatización o ventilación.
Hablando de la ventilación, un uso muy frecuente es cuando se los instala en los cuartos
de baño con el objetivo de activas los extractores del baño para eliminar mal olores y
humedad.
Es bastante frecuente, que los extractores de baño estén conectados a los interruptores
de la luz para así siempre que alguien entre al baño se va a activar su funcionamiento,
pero estos sensores nos puede hacer gastar menos energía y más eficiente en los casos
que no sea necesario prender la luz del baño ya que hay baños que de día tienen luz
natural, gracias a esto se va a poder prender solo los extractores sin la necesidad de
prender la luz.
Otro tipo de función muy habitual de estos sensores es para la seguridad tanto de casas,
como comercios, etc. Estos sensores como ya sabemos pueden detectar el movimiento
y es por esto que es muy frecuente en tema de seguridad y más específicamente en
alarmas. Se utilizan como método para activar una alarma de sonido y que los
delincuentes se vayan y que tu puedas saber si te entraron a robar

Conexiones con Arduino

Este tipo tiene 3 tres conexiones con Arduino, la primera es ground y como su nombre
en inglés indica es la tierra que necesita el sensor, la segunda es el numero de pin que
va conectado el sensor y la última conexión es al pin de 5v que es el pin para darle
energía al sensor.

También podría gustarte