martes, 16 de abril de 2019

Practica 7 sensor ultrasonido

Experimento con sensor de ultrasonido

En esta practica, vais apoder aprender como funciona un sensor de ultrasonido (HC-SR04). Funciona similarmente a los sensores de aparcamiento, ya que indica a la distancia a la que se encuentra el obstáculo como vais a apreciar en el video.
Nosotros en vez de reproducir un sensoer de aparcamiento, hemos hecho que a diversaas distancias se encienda un led distinto, hasta los 20 cm se encendera el led rojo; desde los 20cm, hasta los 50cm se encendera el led amarillo; y a partir de los 50cm se encendera el led verde.

Lo unico basico que necesitais para esta practica es poseer un sensor de ultrasonido, y la placa pero que se puede utilizar: buzzer, leds...












Ahora en podeuis ver el codigo de programacion que no es nada dificil, se basa en la parte del principio para dar nombre a los leds y al sensor; escribir bien el tiempo y las distancia para que arduino la calcule; y por ultimo redactar los periodos o los mon¡mentos en los que se han de encender los leds.


const int EchoPin = 5;
const int TriggerPin = 6;
const int LedPinVerde = 13;
const int LedPinamarillo = 12;
const int LedPinRojo = 11;
float distancia;
long tiempo;
 
void setup() {
   Serial.begin(9600);
   pinMode(LedPinVerde, OUTPUT);
  pinMode(LedPinamarillo, OUTPUT);
  pinMode(LedPinRojo, OUTPUT);
   pinMode(TriggerPin, OUTPUT);
   pinMode(EchoPin, INPUT);
}
 
void loop() {

  digitalWrite(TriggerPin, HIGH);  
  delayMicroseconds(10);
  digitalWrite(TriggerPin, LOW);


  tiempo = (pulseIn(EchoPin, HIGH)/2); 
  
  distancia = float(tiempo * 0.0343);

   Serial.print("Distancia: "); 
   Serial.println(distancia);


if (distancia < 20) {
  digitalWrite(LedPinVerde , LOW);
  digitalWrite(LedPinamarillo , LOW);
  digitalWrite(LedPinRojo , HIGH);
  Serial.println("rojo");
} else if ((distancia > 20) && (distancia < 50)) {
  digitalWrite(LedPinVerde , LOW);
  digitalWrite(LedPinamarillo , HIGH);
  digitalWrite(LedPinRojo , LOW);
  Serial.println("amarillo");
} else if (distancia > 50){
  digitalWrite(LedPinVerde , HIGH);
  digitalWrite(LedPinamarillo , LOW);
  digitalWrite(LedPinRojo , LOW);
  Serial.println("verde");
}

delay(1000);

}

lunes, 8 de abril de 2019

Practica 6 SERVOMOTOR

Experimento con servomotor

En esta practica vamos a experimentar con un servomotor. Un servomotor (también llamado servo) es un dispositivo similar a un motor de corriente continua que tiene la capacidad de ubicarse en cualquier posición dentro de su rango de operación, y mantenerse estable en dicha posición.
El servomotor es un motor electrico lleva incorporado un sistema de regulación que puede ser controlado tanto en velocidad como en posición.
Es posible modificar un servomotor para obtener un motor de corriente continua que, si bien ya no tiene la capacidad de control del servo, conserva la fuerza, velocidad y baja inercia que caracteriza a estos dispositivos.
Podeis ver la imagen de fritzing del experimento, junto aua foto y un video de como funciona. Ademas del codigo de programacion para que podais modificarlos a vuestra manera.




 
#include <Servo.h>
Servo myservo;  
int pos = 0;    
int led = 2;
int led2 = 1;
void setup() {
  myservo.attach(9);
 pinMode(led, OUTPUT); 
 pinMode(led2, OUTPUT);  
}
void loop() {
  for (pos = 0; pos <= 180; pos += 1) { 
    myservo.write(pos);  
digitalWrite(led, HIGH); 
digitalWrite(led2, LOW);
    delay(15);                       
  }
  for (pos = 180; pos >= 0; pos -= 1) { 
    myservo.write(pos);
digitalWrite(led, LOW);
digitalWrite(led2, HIGH);
    delay(15);                       
  }
}

miércoles, 3 de abril de 2019

Practica 5 MONITOR

Experimento con el monitor


En esta practica vamos a alternar las luces mediante el monitor. Cuando escribamos una letra se encendera un led, y cuando le demos a otra letra se encendera el otro led y el otro se apagara.

Ahora os mostraremos un video, el fritzing y el codigo de progamacion para que podais modificarlo como de costumbre.












 int led = 13; 
 int led2 = 8;
 char leer; 
 int prendido=false; 
 void setup() 
 { Serial.begin(9600); 
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
 }
 
void loop()
 { 
 
 leer=Serial.read(); 
 if ( (leer=='f') && (prendido==false) ) {
 digitalWrite(led,HIGH);
 prendido=true; 
 }
 else if ( (leer=='v') && (prendido==true) ) {
 digitalWrite(led,LOW); 
 prendido=false; 
 }
  if ( (leer=='v') && (prendido==false) ) {
 digitalWrite(led2,HIGH);
 prendido=true; 
 }
 else if ( (leer=='f') && (prendido==true) ) {
 digitalWrite(led2,LOW); 
 prendido=false; 
 }
 } 

viernes, 29 de marzo de 2019

Practtica 4 PULSADOR

Experimento con el pulsador

En este experimento lo que hemos propuesto es que mediante el pulsador podamos alternar el buzzer y el led. 
Un botón o pulsador es un dispositivo utilizado para activar alguna función. Los botones son por lo general activados al ser pulsados, normalmente con un dedo. Un
botón de un dispositivo electrónico funciona por lo general como un interruptor
eléctrico, es decir en su interior tiene dos contactos, si es un dispositivo NA
(normalmente abierto) o NC (normalmente cerrado), con lo que al pulsarlo se activará la función inversa de la que en ese momento este realizando.

Aqui podeis ver un video y el esquema de Fritzing, ademas el codigo de programacion para que lo modifiqueis a vuestro gusto:
















const int pulsador = 6; 
const int led = 12;
const int buzzer = 9;
int encendido = 0;

void setup() {

 pinMode(led, OUTPUT);

 pinMode(pulsador, INPUT);
 
 pinMode(buzzer, OUTPUT);
}

void loop() {
if (digitalRead(pulsador) == LOW) {
if (encendido == 0) {
digitalWrite(led, LOW);
digitalWrite(buzzer, LOW);
encendido = 1;

} 
else if (encendido == 1){
digitalWrite(led, HIGH);
digitalWrite(buzzer, HIGH);
encendido = 0;
} 
}
delay(100);
}

martes, 26 de marzo de 2019

Practica 3 CONSOLA

Experimento con consola
En este experimento no va muy alla de los otros anteriores ya que solo se le añade una funcion para que nos diga que luz, buzzero otro objeto esta encendido, se llama Monitor Serial

Podemos utilizar la consola del programa de arduino para recibir o mandar información al ordenador:. Para hacer funcionar la consola es necesario añadir Serial.begin(9600); en el void setup para abrir la consola y Serial.println() para escribir en ella. La consola se abre en Herramientas-Monitor serie.

Para ver una demostracion de la consola hemos hecho un video para que lo podais ver. Ademas de una foto y esquema del proyecto con el que hemos trabajado.















/* luces con consola
 Leds conectados a pines 3 y 4 */
int verde = 3;
int amarillo = 4
int rojo = 0;
void setup()
{
pinMode(verde, OUTPUT);
pinMode(amarillo, OUTPUT)
pinMode(rojo, OUTPUT);
 Serial.begin(9600); //inicializa la comunicación Serial
}
void loop()
{
Serial.println("Luces - Inicio"); //Escribe el texto
digitalWrite(verde, HIGH);
Serial.println("Luz - Verde"); //Escribe el texto
delay(3000);
digitalWrite(verde, LOW);
digitalWrite(amarillo, HIGH); 
Serial.println("Luz - Amarilla"); //Escribe texto
delay(800);
digitalWrite(rojo, LOW);
digitalWrite(rojo, HIGH); 
Serial.println("Luz - roja"); //Escribe texto
delay(800);
digitalWrite(rojo, LOW);
} 

miércoles, 20 de marzo de 2019

Practica 2 BUZZER

Melodía de Star Wars con Buzzer

Hoy os traemos el siguiente experimento con el buzzer ( un zumbador piezoeléctrico (buzzer en inglés), es un transductor electroacústico que produce un sonido o zumbido continuo o intermitente de un mismo tono. Sirve como mecanismo de señalización o aviso, y son utilizados en múltiples sistemas como en automóviles o en electrodomésticos ). 
Su construcción consta de dos elementos, un electroimán y una lámina metálica de acero. El zumbador puede ser conectado a circuitos integrados especiales para así lograr distintos tonos o en nuestro caso controlarlo mediante Arduino UNO.
Cuando se acciona, la corriente pasa por la bobina del electroimán y produce un campo magnético variable que hace vibrar la lámina de acero sobre la armadura produciéndose de esta manera el sonido. Variando la frecuencia de vibración de la lámina podemos conseguir multitud de tonos en un mismo zumbador, además si esos tonos les aplicamos durante una duración determinada podremos conseguir reproducir cualquier tipo de canción con un parecido razonable, aunque este proceso es bastante complejo.Cuando encendemos el programa suena la cancion de Star Wars.
Aquí os dejo el una imagen de fritzing para que os sea mas facil realizar la tarea, y a continuacion un video y una imagen de como funciona.




          





                                 

Por último teneis el codigo de programación el cual no es muy dificil, basicamente es como el del semaforo que lo teneis mas abajo. 
Todo siempre hay que escribirlo con puntos, comas, puntos y comas, comillas... para que el programa funcione.


#define  c3    7634
#define  d3    6803
#define  e3    6061
#define  g3    5102
#define  f3    5714
#define  a3    4545
#define  c4    3816    // 261 Hz
#define  b3    4049
#define  d4    3401    // 294 Hz
#define  e4    3030    // 329 Hz
#define  f4    2865    // 349 Hz
#define  g4    2551    // 392 Hz
#define  a4    2272    // 440 Hz
#define  a4s   2146
#define  b4    2028    // 493 Hz
#define  c5    1912    // 523 Hz
#define  d5    1706
#define  d5s   1608
#define  e5    1517    // 659 Hz
#define  f5    1433    // 698 Hz
#define  g5    1276
#define  a5    1136
#define  b5    1012
#define  a5s   1073
#define  c6    955
         #define  R     0      
// Melodia 1 tono imperial
int melodia1[] = { a4, R, a4, R, a4, R, f4, R, c5, R, a4, R, f4, R, c5, R, a4, R, e5, R, e5, R, e5, R, f5, R, c5, R, g5, R, f5, R, c5, R, a4, R};
int beats1[] = { 50, 20, 50, 20, 50, 20, 40, 5, 20, 5, 60, 10, 40, 5, 20, 5, 60, 80, 50, 20, 50, 20, 50, 20, 40, 5, 20, 5, 60, 10, 40, 5, 20, 5, 60, 40};
// Melodia 2 de star wars
int melodia2[] = { f4, f4, f4, a4s, f5, d5s, d5, c5, a5s, f5, d5s, d5, c5, a5s, f5, d5s, d5, d5s, c5};
int beats2[] = { 21, 21, 21, 128, 128, 21, 21, 21, 128, 64, 21, 21, 21, 128, 64, 21, 21, 21, 128 };
int MAX_COUNT = sizeof(melodia1) / 2;
long tempo = 10000;
int pause = 1000;
int rest_count = 50;
int tonoM = 0;
int beat = 0;
long duracion = 0;
int potVal = 0;
int speakerOut = 9;
int led = 6;
void setup() {
pinMode(speakerOut, OUTPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Melodia1
for (int i=0; i<MAX_COUNT; i++) {
tonoM = melodia1[i];
duracion = beat * tempo;
beat = beats1[i];
playTone();
delayMicroseconds(pause);
}
// Melodia2
MAX_COUNT = sizeof(melodia2) / 2;
for (int i = 0; i < MAX_COUNT; i++) {
tonoM = melodia2[i];
duracion = beat * tempo;
beat = beats2[i];
playTone();
delayMicroseconds(pause);
}
}
void playTone() {
long elapsed_time = 0;
if (tonoM > 0) {
          digitalWrite(led,HIGH);
while (elapsed_time < duracion) {
digitalWrite(speakerOut,HIGH);
delayMicroseconds(tonoM / 2);
digitalWrite(speakerOut, LOW);
delayMicroseconds(tonoM / 2);
elapsed_time += (tonoM);
       }
digitalWrite(led,LOW);
}
else {
for (int j = 0; j < rest_count; j++) {
delayMicroseconds(duracion);
}
}
}

miércoles, 13 de marzo de 2019

Practica 1 ARDUINO SEMAFORO

Semáforo con luces en Arduino

En el experimento que vamos a explicar en los siguientes apéndices de este documento, hemos recreado un semaforo mediante unas luces: roja, amarilla y verde. Cuando cargamos el progama en la placa las luces se van alternando como si se tratara de dicho semaforo.



Aqui podeis ver el esquema de fritzing que os hara la tarea mas facil, y a continuacion una foto de nuestro proyecto. 



Para que podais ver un video tutorial de como funciona los leds y ademas no puede faltar el codigo de programación.





El progama de este experimento es muy sencillo, has de fijarte en la primera parte de introducir la posicion del led, tal que: "int led = 13"... Una vez esto, hay que escribir "void setup" donde declaramos las salidas de corriente del arduino, que se refieren a los numeros que le hemos introdicido a los leds. Por esos numeros saldran las corrientes que permitiran encender los leds.
El siguiente paso es indicar mediante "void loop" cuando los leds van a encendere y apagarse, como tenemos en el ejmeplo de abajo: "digitalwrite(...) indica que leds va encender o apagar; delay indica el tiempo que va a realizar esta accion.
Todo siempre hay que escribirlo con puntos, comas, puntos y comas, comillas... para que el programa funcione.









/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
int led2 = 8;
int led3 = 10;
// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);
   pinMode(led2, OUTPUT);
   pinMode(led3, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(2000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(0);               // wait for a second
    digitalWrite(led2, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(2000);               // wait for a second
  digitalWrite(led2,LOW);    // turn the LED off by making the voltage LOW
  delay(0);               // wait for a second
      digitalWrite(led3, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(2000);               // wait for a second
  digitalWrite(led3,LOW);    // turn the LED off by making the voltage LOW
  delay(0);               // wait for a second
}