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]);
}

sábado, 28 de mayo de 2016

Calcular vértice de una parábola - C

Calcular el las coordenadas del vértice de una parábola, sabiendo que la coordenada x se calcula con la expresión: -b/(2*a) y la coordenada y sustituyendo el valor de la x en la parábola.

/*Calcula el vertice de una parabola*/

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

int main()
{
    float a, b, c;
    float x, y; //coordenada y ordenada del vertice

    printf("Intro la parábola con forma ax^2+bx+c");

    printf("\nIntro a: ");
    scanf("%f", &a);

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

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

    if(a==0)
    {
        printf("La expresion introducida es una recta.");
        printf("\nEl valor de a tiene que ser diferente de 0.\n");
    }
    else
    {
        x=(-b/(2*a));
        y=a*(x*x)+b*x+c;

        printf("Las cordenadas del vertice son (%f , %f)", x, y);
    }
}



jueves, 26 de mayo de 2016

Calcular ecuación 2º grado - C

/*Calcula la ecuacion de 2 grado*/

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

int main()
{
    float a, b, c;
    float s1, s2;

    printf("La ecuación se introducirá de la siguiente manera ax^2 + bx + c\n");

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

    if(a==0)
    {
        printf("a tiene que ser distinto de 0\n");
        printf("Por favor reinicie el programa\n");
    }
    else
    {
        printf("Intro b: ");
        scanf("%f", &b);

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

        s1=(-b+sqrt(b*b-4*a*c))/(2*a);
        s2=(-b-sqrt(b*b-4*a*c))/(2*a);

        printf("\nLa primera solución es: %f", s1);
        printf("\nLa segunda solución es: %f", s2);
    }
}


sábado, 21 de mayo de 2016

Factorial de un número - C

Simplemente comentar que el factorial de un numero se calcula de la siguiente manera:

n! = n * (n-1) * (n-2) ... * 1
Ejemplo:

4! = 4 * 3 * 2 * 1 = 24

/*Calcula el factorial de un numero
introducido por el usuario*/
 


#include <stdio.h>

#include <stdlib.h> 
int main ( ) 
{ 
    
int num , i ; 
    
int total = 1 ; 

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

    
for ( i = num ; i > 0 ; i -- ) 
    
{ 
        total
 = i * total ; 
    
} 

    
printf ( "%d\n" , total ) ; 
}

Números pares (for) - C

/*Calcula con un bucle for los numeros pares
comprendidos entre el 0 y el 20*/
 


#include <stdio.h>

#include <stdlib.h> 
int main ( ) 
{ 
    
int i ; 

    
for ( i = 0 ; i < 21 ; i += 2 ) //Se utiliza el +=2 para ir de dos en dos 
    
{ 
        
printf ( "%d \n" , i ) ; 
    
} 
}

sábado, 14 de mayo de 2016

Función atoi - C

En este ejercicio utilizaremos una función que sirve para convertir una cadena de caracteres (que tenga algún número) en una variable que me guarde ese número ya sea int, float (atof)... En este caso será a int.

En el siguiente programa calcularemos los años que tiene el usuario.

/*Este programa calculará cuantos años tiene
el usuario sabiendo que estamos en el 2016.
El usuario introducira la fechar en formato:
DD/MM/AAAA*/

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

int main()
{
    char fecha[10];
    int i;
    char num[5];
    int anios;

    printf("Intro tu fecha de nacimiento (DD/MM/AAAA) : ");
    scanf("%s", fecha);

    if(strlen(fecha)!=10)
        printf("El formato debe de ser: DD/MM/AAAA");

    else
    {
        for(i=6; i<11; i++)//El año empieza en la posicion 7, fecha[6]
        {
            num[i-6]=fecha[i];
        }

        //Calculamos los años que tiene el usuario.
        anios=2016-atoi(num);

        printf("Tienes %d ", anios);
    }
}



viernes, 13 de mayo de 2016

Funciones - C

Una función es un conjunto de líneas de código que realizan una tarea específica y puede retornar un valor. Las funciones pueden tomar parámetros que modifiquen su funcionamiento. Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de código. Cuando una función es invocada se le pasa el control a la misma, una vez que esta finalizó con su tarea el control es devuelto al punto desde el cual la función fue llamada.

Para explicar la estructura de una función utilizaremos un programa que tiene una función para realizar una suma.

Algo importante a destacar es que los nombres de la variables que declaramos en la función fuera del main (Suma(int sumando1, int sumando2;) no tienen que ser igual a los que ponemos dentro del main ( int a, b, total;). Los valores de sumando1 y sumando 2 los asignara a a y b por orden, es decir si el sumando 1 vale 5 como hemos puesto en el main primero la a "total=Suma(a, b);" el valor 5 lo asignará a la a y el sumando 2 que por ejemplo es 3, lo asignará a b.


#include <stdio.h>
#include <stdlib.h>
int Suma(int sumando1, int sumando2);//como son los datos que va  a tener la suma

//-------------------ENTRAMOS EN EL MAIN-----------------//
int main()
{
    int a, b, total;

    printf("Intro sumando 1:");
    scanf("%d", &a);

    printf("Intro sumando 2:");
    scanf("%d", &b);

    total=Suma(a, b);//Total = a lo que devuelva la función Suma (return)

    printf("El resultado es %d\n", total);

}
//-------------FUERA DEL MAIN SE DECLARA LA SUMA CON SUS VARIABLES--------//
//Se realiza las operaciónes en la función, en este caso una suma

int Suma (int sumando1, int sumando2)
{
    int result;
    result = sumando1 + sumando2;

    return(result);
}


¿Par o impar? - Función - C

Realizar función para que te diga si un número es par o impar y luego lo imprima.

SOLUCIÓN

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

int par (int numero);

int main()
{
   int numero, result;

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

   result=par(int numero);

   if(result==1)
   {
       printf("El numero es par");
   }
   else
   {
       printf("El numero no es par");
   }
}

int par(int numero)
{
    int total;

    total=numero%2==0;

    return total;
}

Función multiplicación - C

El siguiente ejercicio consiste en realizar una multiplicación con dos números que introduzca el usuario con una función.

SOLUCIÓN

#include <stdio.h>
#include <stdlib.h>
float Multiplica(float x, float y);

int main()
{
    float total;
    float x, y;

    printf("Intro el primer número: ");
    scanf("%f", &x);

    printf("Intro el primer número: ");
    scanf("%f", &y);

    total=Multiplica(x, y);

    printf("El resultado es: %f\n", total);
}

float Multiplica(float x, float y)
{
    float resultado;

    resultado=x*y;

    return resultado;
}