Menú principal

jueves, 31 de diciembre de 2015

Semáforo con arduino

¿Quieres iniciarte a la programación en arduino pero no sabes cómo hacerlo? Hoy os traigo un proyecto con la placa arduino, realizar un semáforo. Puede parecer complicado pero si ya hemos conseguido encender un led (Entrada de como encender un led) hacer un semáforo es parecido, aprenderás algunas funciones necesarias como pueden ser las de apagar o encender una salida durante un determinado tiempo.  A continuación os mostrare el programación algunas indicaciones.

int rojo=2;      //pin al que vamos a conectar el led rojo
int amarillo=4;  //pin al que vamos a conectar el led amarillo
int verde=7;     //pin al que vamos a conectar el led verde

void setup() 
{ 
  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
{ 
 digitalWrite(rojo,HIGH);  //encendemos el led rojo
 delay(3000);              //esperamos 3 segundos
 digitalWrite(rojo,LOW);   //apagamos el led rojo
 delay(0);                 //no hay espera
 
 digitalWrite(verde,HIGH); //encendemos el led verde
 delay(3000);              //esperamos 3 segundos
 digitalWrite(verde,LOW);  //apagamos el led verde
 delay(0);                 //no hay espera
 
 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
}

Ahora os mostrare un esquema de cómo colocar las luces, las resistencias y los cables (realizado por Gumersindo Fernández)


Aquí os dejo un vídeo de como me ha funcionado mi semáforo: https://www.youtube.com/watch?v=Qh8FMXjCUXw

miércoles, 30 de diciembre de 2015

3.- Ejercicio resulto con do while en C (areaTriangulo)

Este programa será como el primero que hicimos con if. Se trata de calcular el area de un triangulo con la siguiente condición: que la base y la altura sea distinta y mayor de 0.

Aquí os dejo el programa resuelto:

#include <stdio.h>
main()
{
    float base,altura,area;
 
    do
    {
        printf("Base del triangulo: ");
        scanf("%f",&base);
    }
    while(base<=0);


    do
    {
         printf("altura del triangulo: ");
         scanf("%f",&altura);

    }
    while(altura<=0);

    area = base*altura/2;
    printf("El área es %f\n",area);
}

domingo, 29 de noviembre de 2015

Operadores aritméticos y lógicos en C

En primer lugar voy a remarcar algunos puntos en los que los nuevos programadores de C suelen fallar:

  1. No olvidarse el & en el scanf
  2. Cuando queremos decir que un numero n  mas otro n2 es el total t  no se puede poner: n+n1=t   sino que hay que poner t=n+n2. Las asignaciones con = se hacen siempre de derecha a izquierda.
  3. Si en un programa tenemos datos de tipo entero, ojo al hacer las divisiones: 
#include<stdio.h>
main()

{
    int numero1, numero2;
    double total;

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

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

    total=numero1/numero2;

    printf("El total es: %lf", total);

}
Podemos pensar que como hemos puesto total con el tipo de variable double, este nos va a salir con decimales pero esto no es cierto. Si hacemos la división del numero1, que pongamos vale 7, por el numero2, que supongamos vale 3,  nos daría un numero entero 2. Al asignarlo a una variable double como total nos lo guardaría como 2.000000.


En segundo lugar os voy a decir algunos operadores que os pueden ser útiles a la hora de programar.

Los operadores aritméticos
Tenemos los operadores tradicionales +, -, *, / para sumar, restar, multiplicar y dividir. Además hay otros que son un poco más curiosos:
  1.  ++       Estos dos signos representan un operador aritmético que hace que una variable incremente de uno en uno. Es decir, es lo mismo que poner variable++ que variable=variable+1. 
  2. --          Estos otros signos como os podéis imaginar hacer la misma función que ++ pero en vez de sumar mas 1 para restar uno
  3. %        El tanto por ciento ademas de utilizarse para representar el formato de una variable como hemos visto en printf y scanf también es un operador aritmético. Representa el resto de una división entera. Su sintaxis es: resto = dividentdo % divisor y aquí te sacaría por pantalla el valor del resto. Un ejemplo con números:   
         int n1=7, n2=3, resto;
         resto= 7 % 3;

        printf("El resto es %d", resto);

         Al ejecutar este programa te saldrá por pantalla: "El resto es 1"

Operadores lógicos
Estos nos permitirán relacionar dos o más condiciones cuando veamos las sentencias de control (if, while, etc). Los más utilizados son:
  1. &&      Estos dos ampersand significan "y". Se utilizan sobre todo para enlazar condiciones, de las cuales hablaré más adelante
  2.   ||         Estas dos "barritas" (AltGr + 1) se utiliza al igual que el anterior en las condiciones y textualmente significan "o".

Ejercicio resuelto en C (kelvin)

Programa pida al usuario que introduzca por teclado el dato de grados kelvin para hacer la equivalencia a grados centígrados.

Programa resuelto:

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

int main()
{
    double kelvin, centi;

    printf("Intro kelvin: ");
    scanf("%lf", &kelvin);

    centi=kelvin-273.15;

    printf("%lf kelvin son %lf grados C", kelvin, centi);
}

sábado, 28 de noviembre de 2015

Ejercicio resuelto en C (Área)

Realizar un programa que calcule el área de un triángulo introduciendo los datos de la base y la altura por teclado.

Programa resuelto:

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

int main()
{
    double base, h, area;

    printf("Intro la base: ");
    scanf("%lf", &base);

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

    area=(base*h)/2;

    printf("El area es: %lf", area);
}

viernes, 27 de noviembre de 2015

Ejercicio resuelto en C con if (kelvin)

El siguiente ejercicio consiste en realizar un programa que pase de kelvin a grados centigrados, sabiendo que 0 grados centigrados son 273.15 kelvin. Este programa tendrá la condición de que el dato de kelvin no sea negativo.

Aquí os dejo la solución:


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

int main()
{
    float kelvin, centi;

    printf("Intro kelvin: ");
    scanf("%f", &kelvin);
    if(kelvin<0)
    {
        printf("El numero tiene que ser mayor que 0\n");
        printf("Por favor reinicie el programa\n");
    }
    else
    {
        centi=kelvin-273.15;
        printf("%f kelvin son %f grados centigrados",kelvin,centi);
    }
    return 0;
}

jueves, 26 de noviembre de 2015

Bq Evolution Printbot EsquivaObstaculos

Hoy os traigo otro programa para el Bq evolution Printbot, el esquiva obstaculos. Consiste el que el sensor de ultrasonido haga un ruido y por el tiempo que tarde en volverlo a captar sea capaz de saber a que distancia está de ese obstaculo y poder esquivarlo.

En cuanto al programa que encontré en la web oficial del PrintBot Evolution, le modifiqué  porque no me gustaba como venia para esquivar el obstáculo, pero esto no quita que no vaya bien, yo os recomiendo probar los dos programas que os voy a dejar para que los podáis ejecutar desde el Bitbloq y dejéis vuestra opinión en los comentarios.

Ahora os enseñaré como va el robot mi programa:


                       

Aqui os dejo los dos programas:
Página oficial DIWO
Programa editado por mi: lo que he modificado es esta parte que os dejo abajo, lo demás es todo parecido.