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

sábado, 11 de junio de 2016

Teorema Pitágoras (switch) - C

/*Este programa caculará un cateto o la
hipotenusa de un triangulo rectangulo*/

#include <stdio.h>
#include <math.h>

int main()
{
    float c1, c2, h;
    int opcion;

    printf("         MENU    \n");
    printf("1. Introducir dos catetos\n");
    printf("2. Introducir un cateto y una hipotenusa\n\n");
    printf("Escoge una opcion: ");
    scanf("%d", &opcion);

    switch(opcion)
    {
        case 1:
        {
            printf("\nIntro cateto 1: ");
            scanf("%f", &c1);

            printf("Intro cateto 2: ");
            scanf("%f", &c2);

            h=sqrt((c1*c1)+(c2*c2));
            printf("La hipotenusa es: %f\n", h);

            break;
        }

        case 2:
        {
            printf("\nIntro un cateto: ");
            scanf("%f", &c1);

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

            c2=sqrt((h*h)-(c1*c1));
            printf("El otro cateto es: %f\n", c2);

            break;
        }

        default:
            printf("La opción es incorrecta");
    }

}


Muestra código ASCII - C

#include <stdio.h>

int main()
{
    int x;

    for(x=1; x<256; x++)
        printf("\n%d -- %c", x, x);
}


Teorema de Pitágoras - C

/*Programa que calcula la hipotenusa
de un triangulo recctangulo sabiendo
mediante el teorema de Pitágoras*/

#include <stdio.h>
#include <math.h>

int main()
{
    float c1, c2, h;

    printf("Intro cateto 1: ");
    scanf("%f", &c1);

    printf("Intro cateto 2: ");
    scanf("%f", &c2);

    h=sqrt((c1*c1)+(c2*c2));

    printf("La hipotenusa es de: %f", h);
}


¿El número es primo o no? - C

/*Programa que pide un numero al
usuario y le dice si es primo o no*/

#include <stdio.h>

int main()
{
    int n, i;

    printf("Intro numero: ");
    scanf("%d", &n);

    for(i=(n/2); i>1; i--)
    {
        if(n%i==0)
        {
            printf("El numero no es primo\n");
            break;
        }
        else
        {
            printf("El numero es primo\n");
            break;
        }
    }
    return 1;
}

sábado, 4 de junio de 2016

Media de números de un vector - C

/*Calcular media de los numeros introducidos
por el usuario en un vector*/

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

int main()
{
    int n, i;
    float suma=0;
    float media;

    printf("¿Cuantos numeros quieres introducir?: ");
    scanf("%d", &n);

    int num[n];

    for(i=0; i<n; i++)
    {
        printf("Intro %dº nuemro: ", i+1);
        scanf("%d", &num[i]);
    }

    for(i=0; i<n; i++)
        suma=suma+num[i];

    media=suma/n;
    printf("La media es: %f", media);
}


¿Par o impar? (vector) - C

/*Programa que mediante un vector te dice
si los numeros introducidos en este son pares
o impares*/

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

int main()
{
    int n;
    int i;

    printf("¿Cuantos datos quieres introducir?: ");
    scanf("%d", &n);

    int datos[n];

    for(i=0; i<n; i++)
    {
        printf("Intro dato %d: ", i+1);
        scanf("%d", &datos[i]);
    }

    for(i=0; i<n; i++)
    {
        if(datos[i]%2==0)
            printf("El numero %d es par\n", datos[i]);

        else
            printf("El numero %d es impar\n", datos[i]);
    }
}


Muestra vector del revés - C

/*Programa para introducir datos en un vector
y despues mostrarlos del reves*/

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

int main()
{
    int datos[5], i;

    /*INTRODUCIÓN DE DATOS*/

    for(i=0; i<5; i++)
    {
        printf("Intro dato %d: ", i+1);
        scanf("%d", &datos[i]);
    }

    printf("\n"); //RETORNO DE CARRO

    /*VISUALIZACIÓN DEL VECTOR*/

    for(i=4; i>=0; i--)
        printf("El %dº dato es: %d\n", i+1, datos[i]);
}