PRÁCTICA DIRIGIDA 1

PRACTICA DIRIGIDA 1: PROTOTIPOS INTERACTIVOS 2

Para este nuevo curso y nueva práctica, trabajamos conociendo la tarjeta Arduino UNO, la cual es diferente a la del curso anterior.  En esta práctica conocimos las funciones de la tarjeta y sus distintos componentes. También aprendimos a conectar diversos dispositivos como leds, buzzer, resistencias, interruptor de botón y resistencia LDR.

La primer práctica consistió en una simulación de un sistema de luces led que se encendían y apagaban alternadamente.  La programación en Arduino utilizada fue la siguiente:

int pinRojo = 3;
int pinAzul = 5;
void setup() 
{
  pinMode(pinRojo, OUTPUT);
  pinMode(pinAzul, OUTPUT);
  Serial.begin (9600);
}

void loop() {
  digitalWrite(pinRojo, HIGH);
  digitalWrite(pinAzul, LOW);
  delay(500);
  digitalWrite(pinRojo, LOW);
  digitalWrite(pinAzul, HIGH);
  delay(500);
}

El resultado en el siguiente video 1: 




En la siguiente práctica aprendí cómo conectar un buzzer al sistema de luces led, para que cuando la luz se active el buzzer emita una señal audible.  La programación elaborada en Arduino fue la siguiente:

int pinRojo = 3;
int pinAzul = 5;
int piezo = 6;
void setup() 
{
  pinMode(pinRojo, OUTPUT);
  pinMode(pinAzul, OUTPUT);
  pinMode (piezo,OUTPUT);
  Serial.begin (9600);
}

void loop() {
  digitalWrite(pinRojo, HIGH);
  digitalWrite(pinAzul, LOW);
  delay(1000);
  digitalWrite(pinRojo, LOW);
  digitalWrite(pinAzul, HIGH);
  delay(1000);

  tone (piezo,300,100);
  delay (100);
  tone (piezo, 450, 50);
  delay (100);
}

El resultado de la segunda programación puede verse en el vídeo 2:



Posteriormente la práctica nos llevó a aprender cómo programar un botón para apagar la alarma al mantenerlo presionado. Se realizó la conexión del botón en la tarjeta Protoboard y se utilizó la siguiente programación:

int pinRojo = 3;
int pinAzul = 5;
int piezo = 6;
int boton = 2;
int estado = 0;
void setup() 
{
  pinMode(pinRojo, OUTPUT);
  pinMode(pinAzul, OUTPUT);
  pinMode (piezo,OUTPUT);
  pinMode (boton,INPUT);
  Serial.begin (9600);
}

void loop() 
{
  while (digitalRead(boton)==0)
  {
  analogWrite(pinRojo, HIGH);
  analogWrite(pinAzul, LOW);
  delay(100);
  analogWrite(pinRojo, LOW);
  analogWrite(pinAzul, HIGH);
  delay(100);
  tone (piezo, 300, 100);
  Serial.println(digitalRead(boton));
  delay (100);
  }
  while (digitalRead(boton)==1)
  {
   analogWrite(pinRojo, LOW);
   analogWrite(pinAzul, LOW);
   Serial.println(digitalRead(boton));
  }
}


Y en el vídeo 3 podemos observar el funcionamiento del botón y cómo apaga el buzzer y el led:




Finalmente entramos en el reto del día, el cual consistía en observar un video en el cual se muestra cómo incorporar a un sistema de alarma una resistencia LDR, la cual es sensible al nivel de luz, y que sería utilizada como simulador de sensor de proximidad para que activara una alarma sonora con el buzzer.

Después de varios intentos fallidos debido a que el nivel de sensibilidad se había puesto muy alto, se logró corregir la programación y se pudo desarrollar el prototipo con éxito, utilizando la siguiente programación:

int ledPin=9;
int ldrPin=0;
int ldrValue=0;
int piezo=6;

void setup()
{
  Serial.begin(9600);
  pinMode(ledPin,OUTPUT);
  pinMode(piezo,OUTPUT);
  }

void loop() 
{
  ldrValue=analogRead(ldrPin);
  Serial.println(ldrValue);
  if(ldrValue>=900)
  {
    digitalWrite(ledPin,HIGH);
    tone (piezo,300,100);
  }
  else
  {
    digitalWrite(ledPin,LOW);
  }
  delay(500);
}

El reto solucionado puede verse en el vídeo 4 a continuación:



Eso fue la práctica y el reto por el día de hoy.

PRACTICA DIRIGIDA 1: PROTOTIPOS INTERACTIVOS 1


Para esta práctica observé un vídeo en el que nos dieron una programación para la tarjeta Cirtuit Playground que consistía en enviar un comando a un Neopixel o Led (en este caso Led "0") para que activara una luz morada y al mismo tiempo se emitiera un sonido en el parlante.


El comando para activar el Led lleva el siguiente formato en el programa Arduino:


          CircuitPlayGround.setPixelColor(P,R,G,B);


En el comando las letras significan lo siguiente:

          P: Número de neopixel (van del 0 al 9)

          R: rojo

          B: verde

          b: azul

Para que el parlante emita el sonido se utilizará la siguiente instrucción en el programa Arduino:

          CircuitPlayGround.playTone(freq,time,wait);


Estos parámetros tienen el siguiente significado:

          freq: frecuencia

          time: tiempo

          wait: espera

En el caso de este ejemplo no se utilizó la espera, por lo que la programación de Arduino quedó así:




Y se obtuvo el siguiente funcionamiento en la tarjeta Circuit Playground:




En la siguiente práctica se nos enseñó a elaborar una programación de Arduino para registrar si los botones izquierdo y/o derecho de la tarjeta playground estaban presionados o sin presionar, y el monitor de Arduino verificaría el proceso de presionar los botones. A continuación las imágenes que  evidencian el proceso de programación y monitoreo realizados:





La tercer práctica era para que la tarjeta PlayGround detectara si el interruptor deslizante se encontraba hacia la derecha o a la izquierda. La programación y el resultado en las siguientes imágenes:




La cuarta práctica era para que la tarjeta PlayGround activara el sensor de luz y este detectara el nivel de la misma. La programación y el resultado en las siguientes imágenes:





La quinta práctica era para que la tarjeta PlayGround activara el sensor de sonido (micrófono) y este detectara el nivel de sonido en el ambiente. La programación y el resultado en las siguientes imágenes:





La última práctica era para que la tarjeta PlayGround activara el sensor de temperatura y este detectara el nivel de temperatura en el ambiente. La programación y el resultado en las siguientes imágenes:





Para finalizar la práctica dirigida 1 se nos dió un reto opcional, el cual consiste en crear un procedimiento para el sensor Acelerómetro en el cual se encienda un neopixel en la dirección que se incline. Después de horas de probar!!!!  logré hacer que se encienda un neopixel cuando se inclina a la derecha o a la izquierda. La programación que diseñé fue la siguiente:

#include <Adafruit_CircuitPlayground.h>
#include <Adafruit_Circuit_Playground.h>
void setup()
{
  CircuitPlayground.begin();
  Serial.begin(9600);
}
void loop() {
  int inclinacion_derecha = CircuitPlayground.motionY();
  Serial.print("Valor de Y: ");
  delay (500);
  Serial.println(inclinacion_derecha);
  delay (500);
  if (inclinacion_derecha>1)
{
    CircuitPlayground.setPixelColor(7,255,0,255);
}
else
{
  CircuitPlayground.setPixelColor(7,0,0,0);
}
{
  int inclinacion_izquierda = CircuitPlayground.motionY();
  Serial.print("Valor de Y: ");
  delay (500);
  Serial.println(inclinacion_izquierda);
  delay (500);
  if (inclinacion_izquierda<-1)
{
    CircuitPlayground.setPixelColor(2,255,0,255);
}
else
{
  CircuitPlayground.setPixelColor(2,0,0,0);
}
}
}


Y a continuación mostraré un vídeo del resultado obtenido:




rca.




Comentarios

Entradas populares