lunes, 13 de mayo de 2019

Sensor aparcamiento

Crearemos, un sensor de aparcamiento mediante un sensor de ultrasonidos, que cuando este cerca de colisionar emita un sonido muy molesta y encienda la luz roja, encienda la luz amarilla con un sonido menos molesto cuando no haya mucho peligro, y cuando no haya nada de peligro encienda la luz verde


long distancia;//

long tiempo;//
int pinTrig=9;//
int pinEcho=8; //
int verde=13;//Declaramos el led verde en el pin 13.
int amarillo=2;//Declaramos el led amarillo en el pin 2;
int rojo=4;//Declaramos el led rojo en el pin 4;
int sonido=6;//Declaramos el zumbador en el pin 6;
int tonoa=2000;//Declaramos el tono a 
int tonob=5000;//Declaramos el tono b 
int tonoc=1000;//Declaramos el tono c 

void setup(){
  Serial.begin(9600);// 
  pinMode(pinTrig, OUTPUT); 
  pinMode(pinEcho, INPUT);
  pinMode(verde,OUTPUT);
  pinMode(rojo,OUTPUT);

  pinMode(amarillo,OUTPUT);
  pinMode(sonido,OUTPUT);
}
void loop(){
  digitalWrite(pinTrig,LOW); /* Por cuestión de estabilización del sensor*/
  delayMicroseconds(5);//esperamos 5 microsegundos.
  digitalWrite(pinTrig, HIGH); /* envío del pulso ultrasónico*/
  delayMicroseconds(10);//esperamos 10 microsegundos.
  tiempo=pulseIn(pinEcho, HIGH);//
  distancia= int(0.017*tiempo); //distancia medida en cm
  Serial.println("Distancia ");//En la consula aparece la palabra distancia.
  Serial.println(distancia);
  Serial.println(" cm");//En la consula aparece la palabra cm
  delay(1000);//esperamos 1000ms
    if(distancia>30){//creamos una condicional
  digitalWrite(rojo,LOW);
  digitalWrite(amarillo,LOW);
  digitalWrite(verde,LOW);
  noTone(sonido);
    delay(10);//si la distancia es mayor que 30 cm todos los led estan apagados y esperamos 10 ms.

    }else
    {
      if(distancia>20d&&distancia<30){
  
    digitalWrite(rojo,LOW);
    digitalWrite(verde,HIGH);
    digitalWrite(amarillo,LOW);
    tone(sonido,tonoc,1000);
    delay(10);//si la distancia es mayor de 20 cm y menor que 30 cm solo se encience el led verde y espera 10 ms.
      }
      else{
        if(10<=distancia&&distancia<20){
  digitalWrite(rojo,LOW);
  digitalWrite(amarillo,HIGH);
  digitalWrite(verde,LOW);
  tone(sonido,tonob,100);
  delay(10);//si la distancia es mayor o igual que 10 cm y menos que 20 cm ,solo  se enciende el del amarillo.
  }
      else{
  
  if(distancia<10){
  digitalWrite(rojo,HIGH);
  digitalWrite(amarillo,LOW);
  digitalWrite(verde,LOW);
  tone(sonido,tonoc,10);
    delay(10);si la distancia  es manor que 10 cm, solo se enciende el led rojo y esperamos 10 ms.
  }
    
  }
      }
}

viernes, 12 de abril de 2019

Servomotor con 4 pulsadores

#include <Servo.h>

Servo motor1;
Servo motor2;
int posicion_motor1=0;
int pulsadorizquierda=2;
int estado_pulsadorizquierda=0;
int incremento_de_angulo=10;
int pulsadorderecha=5;
int estado_pulsadorderecha=0;
int posicion_motor2=0;
int pulsadorarriba=3;
int estado_pulsadorarriba=0;
int pulsadorabajo=4;
int estado_pulsadorabajo=0;

void setup()
{
motor1.attach(9);
pinMode(pulsadorizquierda,INPUT);
pinMode(pulsadorderecha,INPUT);
motor1.write(posicion_motor1);
motor2.attach(10);
pinMode(pulsadorarriba,INPUT);
pinMode(pulsadorabajo,INPUT);
motor2.write(posicion_motor2);
}

void loop() {

estado_pulsadorizquierda= digitalRead(pulsadorizquierda);
estado_pulsadorderecha= digitalRead(pulsadorderecha);
estado_pulsadorarriba= digitalRead(pulsadorarriba);
estado_pulsadorabajo= digitalRead(pulsadorabajo);
if (estado_pulsadorizquierda==HIGH)
{
posicion_motor1 = posicion_motor1 + incremento_de_angulo;  //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor1.write(posicion_motor1);
delay(100); 
  if (posicion_motor1 >= 180){
  posicion_motor1=0;                                      //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
  motor1.write(posicion_motor1);
  }
}

if (estado_pulsadorderecha==HIGH)
{
posicion_motor1 = posicion_motor1 - incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador derecho
motor1.write(posicion_motor1);
delay(100); 
    if (posicion_motor1 <= 0){
  posicion_motor1=180;                //Hacemos que vuelva a su posicion inicial al llegar a su limite de giro
  motor1.write(posicion_motor1);
  }
}
if (estado_pulsadorarriba==HIGH)
{
posicion_motor2 = posicion_motor2 + incremento_de_angulo;  //introducimos cuanto queremos que se mueva el servo pulsando el pulsador izquierdo
motor2.write(posicion_motor2);
delay(100); 
  if (posicion_motor2 >= 180){
  posicion_motor2=0;                                      //introducimos cuanto queremos que se mueva el servo pulsando el pulsador superior
  motor2.write(posicion_motor2);
  }
}

if (estado_pulsadorabajo==HIGH)
{
posicion_motor2 = posicion_motor2 - incremento_de_angulo; //introducimos cuanto queremos que se mueva el servo pulsando el pulsador inferior
motor2.write(posicion_motor2);
delay(100); 
    if (posicion_motor2 <= 0){
  posicion_motor2=180;                //Hacemos que vuelva a su posicion inicial al llegar a su limite de giro
  motor2.write(posicion_motor2);
  }
}
}

jueves, 28 de marzo de 2019

Servo controlado co M_block

#include <Servo.h>
Servo miservo;
int pos=0;
int TECLA=0;
void setup() {
  Serial.begin(9600);
  miservo.attach(9);
  pos=0;
}
void loop() {
    miservo.write(pos);
    delay(50);
    Serial.println(pos);
    if (Serial.available() > 0) {  //esto da algo de error
       delay(100);
       TECLA=Serial.read();
       if (TECLA==49){  //es decir,  "1"
          pos=0; //ángulo que debe tomar con la tecla indicada
          }
       if (TECLA==50){  //es decir,  "2"
          pos=45; //ángulo que debe tomar con la tecla indicada
       }
       if (TECLA==51){  //es decir,  "3"
          pos=90; //ángulo que debe tomar con la tecla indicada
          }
        if (TECLA==52){  //es decir,  "4"
          pos=135; //ángulo que debe tomar con la tecla indicada
          }
       if (TECLA==53){  //es decir,  "5"
          pos=180; //ángulo que debe tomar con la tecla indicada
          }
     
     
       }
}

Así conseguiriamos girar el servo al angulo deseado mediante las teclas

Servo controladopor ponteciometro

1.- Mueve un servo según una  determinada entrada analógica. Mediante un joystick o un dispositivo que cuente con un  potenciómetro podemos controlar el movimiento de un servo. 

int val;                     //introducimos la variable val
#include <Servo.h>
Servo servo;
int pot = 3;  //entrada analógica del potenciometro
void setup() {
  Serial.begin(9600);
  servo.attach(6);
}
void loop() {
  int valorpot= analogRead(pot);
  val=map(valorpot,0,1023,0,180); //el valor de ""val" ira variando según varie el valor del potenciometro
  Serial.println(val); //hacemos que nos muestre el angulo de giro en el monitor
  delay(500);
  servo.write(val);
  delay(100);
}

Así conseguiriamos que el servomotor giré exactamente el ángulo que deseemos mediante un controlador, el cual es en este caso en potenciómetro.

viernes, 22 de marzo de 2019

Limpiaparabrisas

1.- Modifica el programa para que el LIMPIAPARABRISAS se mueva más lentamente  cuando se mueva en un sentido y más rapidamente en el otro. 

#include <Servo.h>     
#define pinServo 9   
Servo miservo;         
int pos=0;                 
void setup() {
    miservo.attach(pinServo);        //declaramos la salida del sevo
}
void loop() {
    for (pos=0; pos<=170; pos=pos+1); {
       miservo.write(pos);                     //movemos el servo en un sentido
       delay(800);
    }
    for (pos=170; pos>=10; pos=pos-70); {
       miservo.write(pos);                   //aumentamos el posicionamiento para aumentar la velocidad
       delay(700);
    }
}

Movimiento de Servo Simple

Actividades para tomar contacto con las funciones mas simples de los servomotores

jueves, 31 de mayo de 2018

Mole Mash

En esta práctica hemos realizado un juego en el que hay que darle a un topo con el dedo para que sume puntos pero si fallas suma un error, como el topo se mueve es mas dificil.
Como mejora he incluido una flor que si la tocas suma un fallo y quita una vida, la cual es otra mejora, he incluido vidas que restan con cada fallo, y cuando las vidas llegan a 0 aparece una segunda pantalla en la que pone Has Perdido, y en esta pantalla he puesto un botón para que se pueda jugar de nuevo, también he incluido música mientas juegas que se reinicia cuando le das al botón que te aparece al perder y también he incluido que cada vez que toques un personaje (Flor o Topo) o el fondo, el fondo vaya cambiando de color, para que sea mas perceptible el toque, el móvil vibra con cada toque.
Generador de Códigos QR Codes

lunes, 28 de mayo de 2018

Dale al Huevo

En esta práctica hemos hecho un juego que consisten en tocar un huevo un determinado numero de veces hasta que se rompa. Como mejora personal he incluido 2 botones para aumentar o disminuir la velocidad.
Generador de Códigos QR Codes

lunes, 21 de mayo de 2018

App Don quijote

En esta practica hemos hecho una aplicación con preguntas de Don Quijote para poner a prueba tu conocimiento sobre el. Además como novedad he añadido un menu principal previo a las preguntas.
Generador de Códigos QR Codes
<img src="http://www.codigos-qr.com/qr/php/qr_img.php?d=https%3A%2F%2Fdrive.google.com%2Fopen%3Fid%3D1H_5qPv2eKEwbZrRPcYIwIv7uqE4-j_aW&s=8&e=q" alt="Generador de Códigos QR Codes"/>

lunes, 14 de mayo de 2018

Aplicación App Inventor




En esta práctica hemos desarrollado una aplicación en la que se puede dibujar, hacer fotos y dibujar sobre las fotos que hagas. Como mejora propia he incluido un deslizador para poder aumentar o disminuir el grosor de la linea para poder dibujar con mas posibilidades, una canción de fondo y una pantalla extra que serviría como menú principal. Además he puesto un botón extra llamado "Guardar" para que al pulsarlo se te guarde en el móvil la imagen con el dibujo que has hecho o simplemente el dibujo si lo deseas.
Generador de Códigos QR Codes

<img src="http://www.codigos-qr.com/qr/php/qr_img.php?d=https%3A%2F%2Fdrive.google.com%2Fopen%3Fid%3D1m3BaihxIZFKjlRWXGdIY7SFU5_HUNpQN&s=8&e=m" alt="Generador de Códigos QR Codes"/>

lunes, 7 de mayo de 2018

Laberinto

En esta práctica hemos elaborado un laberinto en el que se tiene que recorrer un camino sin salirse de el para poder ganar, hemos puesto un menú principal, con instrucciones donde se explican los controles, un contador de victorias y 2 pantallas para mostrar quien ha ganado.

Laberinto

lunes, 23 de abril de 2018

Pong

Además de las instrucciones dadas en el tutorial, hemos añadido que cada vez que la pelota toque a un jugador aumente su velocidad, haciéndolo así cada vez mas difícil.

Juego De Pong

jueves, 26 de octubre de 2017

Arquitectura de un ordenador


Componentes de un ordenador

En la siguiente actividad hemos formado nuestro propio ordenador comprando sus partes una por una, consiguiendo así un ordenador a nuestra medida. A continuación adjunto el ejercicio.