Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte Experto: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Avances Exclusivos: Obtén acceso anticipado a nuevos anuncios de productos y vistas previas.

  • Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones y Sorteos Festivos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.

2.2.6 Módulo Sensor de Velocidad

Introducción

En este proyecto, aprenderemos a usar el módulo sensor de velocidad. Un Módulo Sensor de Velocidad es un tipo de tacómetro que se usa para medir la velocidad de un objeto giratorio como un motor.

Componentes Necesarios

En este proyecto, necesitaremos los siguientes componentes.

../_images/2.2.6component.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Raphael Kit

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

Módulo Sensor de Velocidad

-

Diagrama Esquemático

../_images/2.2.6circuit.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/2.2.6fritzing.png

Paso 2: Cambiar de directorio.

cd ~/raphael-kit/c/2.2.6/

Paso 3: Compilar.

gcc 2.2.6_speed_sensor_module.c -lwiringPi

Paso 4: Ejecutar.

sudo ./a.out

Después de ejecutar el código, el LED verde se encenderá. Si colocas un obstáculo en el hueco del módulo sensor de velocidad, se imprimirá «light blocked» en la pantalla y se encenderá el LED rojo. Retira el obstáculo y el LED verde se encenderá nuevamente.

Nota

Si no funciona después de ejecutarlo, o aparece un mensaje de error: "wiringPi.h: No such file or directory", consulta Instalar y verificar WiringPi.

Código

#include <wiringPi.h>
#include <stdio.h>

#define speedPin            0
#define Gpin                2
#define Rpin                3

void LED(int color)
{
    pinMode(Gpin, OUTPUT);
    pinMode(Rpin, OUTPUT);
    if (color == 0){
        digitalWrite(Rpin, HIGH);
        digitalWrite(Gpin, LOW);
    }
    else if (color == 1){
        digitalWrite(Rpin, LOW);
        digitalWrite(Gpin, HIGH);
    }
}

void Print(int x){
    if ( x == 0 ){
        printf("Light was blocked\n");
    }
}

int main(void){

    if(wiringPiSetup() == -1){ //when initialize wiring failed,print messageto screen
        printf("setup wiringPi failed !");
        return 1;
    }

    pinMode(speedPin, INPUT);
    int temp;
    while(1){
        //Reverse the input of speedPin
        if ( digitalRead(speedPin) == 0 ){
            temp = 1;
        }
        if ( digitalRead(speedPin) == 1 ){
            temp = 0;
        }

        LED(temp);
        Print(temp);
    }
    return 0;
}

Explicación del Código

void LED(int color)
{
    pinMode(Gpin, OUTPUT);
    pinMode(Rpin, OUTPUT);
    if (color == 0){
        digitalWrite(Rpin, HIGH);
        digitalWrite(Gpin, LOW);
    }
    else if (color == 1){
        digitalWrite(Rpin, LOW);
        digitalWrite(Gpin, HIGH);
    }
}

Configura una función LED() para controlar los 2 LEDs, el parámetro de esta función es color.

Cuando color es 0, se establece Rpin en HIGH (enciende el LED rojo) y Gpin en LOW (apaga el LED verde); cuando color es 1, entonces enciende el LED verde y apaga el LED rojo.

while(1){
    //Reverse the input of speedPin
    if ( digitalRead(speedPin) == 0 ){
        temp = 1;
    }
    if ( digitalRead(speedPin) == 1 ){
        temp = 0;
    }

    LED(temp);
    Print(temp);
}

Cuando colocas un obstáculo en el espacio del módulo sensor de velocidad, speedPin está en nivel bajo (0), luego llama a la función LED(1) para encender el LED verde y se imprime «Light was blocked!».

Imagen del Fenómeno

../_images/2.2.6photo_interrrupter.JPG