Menú principal

martes, 28 de junio de 2016

Cronómetro de décimas de segundo - Arduino

/*REALIZAR CRONOMETRO CON DOS DISPLAY DE 7 SEGMENTOS.
 EL CRONOMETRO MOSTRARA LAS DECIMAS DE SEGUNDO Y
 AUTOMATICAMENTE SE REINICIARA*/

#define TIME 100/*Definiremos el tiempo que va a transcurrir entre
cada numero que muestra el display*/

int matriz[10][7]={
  {
    1,1,1,1,1,1,0                        }//numero 0
  ,
  {
    0,1,1,0,0,0,0                        }//1
  ,
  {
    1,1,0,1,1,0,1                        }//2
  ,
  {
    1,1,1,1,0,0,1                        }//3
  ,
  {
    0,1,1,0,0,1,1                        }//4
  ,
  {
    1,0,1,1,0,1,1                        }//5
  ,
  {
    1,0,1,1,1,1,1                        }//6
  ,
  {
    1,1,1,0,0,0,0                        }//7
  ,
  {
    1,1,1,1,1,1,1                        }//8
  ,
  {
    1,1,1,1,0,1,1                        }//9
};

void setup()
{

  for(int i=0; i<14; i++)//todas
  {
    pinMode(i, OUTPUT);//declarar como salida
  }
  pinMode(A5, OUTPUT);/*El punto lo metemos en una entrada analogica
  porque ya no hay mas digitales*/

}void loop()
{
  digitalWrite(A5, HIGH);//El punto del display 1 estara siempre encendido

  /*------------------------DISPPLAY 1-------------------------*/
  for(int num=0; num<10; num++)//repetir 9 veces 
  {
    for(int i=0; i<7; i++)//i representa cada led del display de la izquierda
    {
      if(matriz[num][i]==1)//si en el numero[0] led[2]==1, enciendele si no apagale
        digitalWrite(i, HIGH);
      else 
        digitalWrite(i, LOW);
    }
    /*--------------------------DISPLAY 2-------------------------*/
    for(int num=-1; num<9; num++) 
    {
      for(int i=7; i<14; i++)//i representa cada led del display de la derecha
      {
        if(matriz[num][i]==1)//si en el numero[0] led[2]==1, enciendele si no apagale
          digitalWrite(i, HIGH);
        else 
          digitalWrite(i, LOW);
      }
      delay(TIME);//entre numero y numero espera 1 segundo
    }  
  }
}

Video -> https://www.youtube.com/watch?v=me2d_iVtzKI

Semaforo con segundero - Arduino

/*PROGRAMA EN EL CUAL UN DISPLAY DE 7 SEGMENTOS
 CUENTA LOS SEGUNDOS CUANDO UN SEMAFORO ESTA EN VERDE
 Y EN ROJO*/

/*DISPLAY*/
int matriz[11][7]={
  {
    1,1,1,1,1,1,0          }//numero 0
  ,
  {
    0,1,1,0,0,0,0          }//1
  ,
  {
    1,1,0,1,1,0,1          }//2
  ,
  {
    1,1,1,1,0,0,1          }//3
  ,
  {
    0,1,1,0,0,1,1          }//4
  ,
  {
    1,0,1,1,0,1,1          }//5
  ,
  {
    1,0,1,1,1,1,1          }//6
  ,
  {
    1,1,1,0,0,0,0          }//7
  ,
  {
    1,1,1,1,1,1,1          }//8
  ,
  {
    1,1,1,1,0,1,1          }//9
};

/*SEMAFORO*/
int rojo=10;      //pin al que vamos a conectar el led rojo
int amarillo=11;  //pin al que vamos a conectar el led amarillo
int verde=12;     //pin al que vamos a conectar el led verde

void setup()
{
  /*---------------DISPLAY-----------------*/
  for(int i=2; i<9; i++)//desde entrada 2 a la 9 
  {
    pinMode(i, OUTPUT);//declarar como salida
  }
  /*---------------SEMAFORO-------------------*/
  pinMode(rojo,OUTPUT);   //declaramos pin rojo como salida
  pinMode(amarillo,OUTPUT);//declaramos el pin amarillo como salida
  pinMode(verde,OUTPUT);   //declaramos el pin verde como salida  
}

void loop() //bucle
{ 
  /*--------------SEMAFORO-------------------*/
  digitalWrite(rojo,HIGH); //encendemos el led rojo
  delay(0);  //esperamos 0 segundos

  /*----------DISPLAY-----*/
  for(int num=5; num>=0; num--)
  {
    for(int i=0; i<7; i++)
    {
      if(matriz[num][i]==1)
        digitalWrite(i+2, HIGH);
      else
        digitalWrite(i+2, LOW);
    }
    delay(1000);
  }
  /*------------------------*/
  digitalWrite(rojo,LOW);  //apagamos el led rojo
  delay(0);               //no hay espera

  /*--------------------SEMAFORO-----------------*/
  digitalWrite(verde,HIGH); //encendemos el led verde
  delay(0);             //esperamos 0 segundos
  /*----------DISPLAY------------*/
  for(int num=5; num>=0; num--)
  {
    for(int i=0; i<7; i++)
    {
      if(matriz[num][i]==1)
        digitalWrite(i+2, HIGH);
      else
        digitalWrite(i+2, LOW);
    }
    delay(1000);
  }
  /*-------------------------------*/
  digitalWrite(verde,LOW);  //apagamos el led verde
  delay(0); //no hay espera


  /*----------SEMAFORO--------------*/
  digitalWrite(amarillo,HIGH); //encendemos el led amarillo
  delay(1500);                 //esperamos segundo y medio
  digitalWrite(amarillo,LOW);  //apagamos el led amarillo
  delay(0);                  //esperamos medio segundo
}

Video de funcionamiento: video

domingo, 26 de junio de 2016

Dibuja cuadrado o rectángulo - C

/*Programa en el que el usuario decide si dibujar
un cuadrado o un rectángulo e introduce el
tamaño del elgido. Posteriormente el programa
lo representara*/

#include <stdio.h>

int main()
{
    int tam, tam1, tam2, i, j, k, q, opcion;

    printf("¿Qué desea dibujar?\n");
    printf("    1- Cuadrado\n");
    printf("    2- Rectangulo\n");
    printf("Elija opción: ");
    scanf("%d", &opcion);

    switch(opcion)
    {
    case 1:
    {
        printf("Has elegido cuadrado\n");
        //Usuario introduce tamaño del cuadrado
        printf("Intro tamaño del cuadrado: ");
        scanf("%d", &tam);

        //Primera fila
        for(i=1; i<tam; i++)
            printf("- ");

        //Primera columna
        printf("-\n");
        for(j=2; j<tam; j++)
        {
            printf("|");
            //Segunda columna
            for(k=2; k<=tam; k++)
                printf("  ");
            printf("|\n");
        }
        //Ultima fila
        for(q=1; q<=tam; q++)
            printf("- ");

        break;
    }

    case 2:
    {
        //Usuario introduce tamaño del rectángulo
        printf("Intro un lado del rectangulo: ");
        scanf("%d", &tam1);

        printf("Intro otro lado del rectangulo: ");
        scanf("%d", &tam2);

        //Primera fila
        for(i=1; i<tam1; i++)
            printf("- ");

        //Primera columna
        printf("-\n");
        for(j=2; j<tam2; j++)
        {
            printf("|");
            //Segunda columna
            for(k=2; k<=tam1; k++)
                printf("  ");
            printf("|\n");
        }
        //Ultima fila
        for(q=1; q<=tam1; q++)
            printf("- ");

        break;
    }
    }
}


Realiza un cuadrado con cualquier numero - C

/*Programa en el que el usuario introduce
el tamaño de un cuadrado y el programa se
lo representa con asteriscos*/

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int tam, i, j, k, q;

    //Usuario introduce tamaño del cuadrado
    printf("Intro tamaño del cuadrado: ");
    scanf("%d", &tam);

    //Primera fila
    for(i=1; i<tam; i++)
        printf("* ");

    //Primera columna
    printf("*\n");
    for(j=2; j<tam; j++)
    {
        printf("*");
        //Segunda columna
        for(k=2; k<=tam; k++)
            printf("  ");
        printf("*\n");
    }
    //Ultima fila
    for(q=1; q<=tam; q++)
        printf("* ");
}


sábado, 25 de junio de 2016

Calcular valor de una resistencia - C

/*Calcular el valor de una resistencia
utilizando únicamente los 3 primeros
colores*/

#include <stdio.h>

int main()
{
    int col1, col2, col3;

    printf("    COLORES     \n");
    printf("    neg=0 \n");
    printf("    mar=1 \n");
    printf("    roj=2 \n");
    printf("    nar=3 \n");
    printf("    ama=4 \n");
    printf("    ver=5 \n");
    printf("    azu=6 \n");
    printf("    vio=7 \n");
    printf("    gri=8 \n");
    printf("    bla=9 \n");

    printf("Intro numero al que corresponda el primer color:  ");
    scanf("%d", &col1);
    printf("Intro numero al que corresponda el segundo color: ");
    scanf("%d", &col2);
    printf("Intro numero al que corresponda el tercer color: ");
    scanf("%d", &col3);

    if(col3==0)
        printf("La resistencia es de: %d%d", col1, col2);
    else if(col3==1)
        printf("La resistencia es de: %d%d0", col1, col2);
    else if(col3==2)
        printf("La resistencia es de: %d%d00", col1, col2);
    else if(col3==3)
        printf("La resistencia es de: %d%d000", col1, col2);
    else if(col3==4)
        printf("La resistencia es de: %d%d0000", col1, col2);
    else  if(col3==5)
        printf("La resistencia es de: %d%d00000", col1, col2);
    else if(col3==6)
        printf("La resistencia es de: %d%d000000", col1, col2);
    else
        printf("El color no es válido");

}


Elige para calcular area (switch) - C

/*Programa para calcular area de
un cuadrado, un triangulo, un rectangulo
y un circulo dandole a elegir la opcion*/

#include <stdio.h>

int main()
{
    int opcion;
    float area, l1, l2, radio, h, base;

    printf("        MENU    \n");
    printf(" 1- Cuadrado\n");
    printf(" 2- Rectangulo\n");
    printf(" 3- Triangulo\n");
    printf(" 4- Ciruclo\n");
    printf("Por favor introduce una opcion: ");
    scanf("%d", &opcion);

    switch(opcion)
    {
        case 1:
        {
            printf("Intro lado: ");
            scanf("%f", &l1);

            area=l1*l1;
            printf("El area es de: %f", area);

            break;
        }

        case 2:
        {
            printf("Intro lado 1: ");
            scanf("%f", &l1);

            printf("Intro lado 2: ");
            scanf("%f", &l2);

            area=l1*l2;
            printf("El area es de: %f", area);

            break;
        }

        case 3:
        {
            printf("Intro base: ");
            scanf("%f", &base);

            printf("Intro altura: ");
            scanf("%f", &h);

            area=(base*h)/2;
            printf("El area es de: %f", area);

            break;
        }

        case 4:
        {
            printf("Intro radio: ");
            scanf("%f", &radio);

            area=(radio*radio)*3.14;
            printf("El area es de: %f", area);

            break;
        }

        default:
            printf("La opcion no es correcta");
    }
}


jueves, 23 de junio de 2016

Encender un led con un botón - Arduino

//Encender un led con un boton

const int led=13;
const int boton=8;

int estBot=0; //apagado

void setup()
{
  pinMode(led, OUTPUT);
  pinMode(boton, INPUT);
}

void loop()
{
  estBot=digitalRead(boton);//leer a ver si el boton esta apagado o encendido
  
  if(estBot == HIGH)
    digitalWrite(led, HIGH);
  else
    digitalWrite(led, LOW);
}
Vídeo de funcionamiento: video