Nota

Ciao, benvenuto nella community di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

  • Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e Condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Ottieni accesso anticipato ai nuovi annunci di prodotti e anteprime.

  • Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni Festive e Giveaway: Partecipa a concorsi e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti subito!

2.2.6 Modulo Sensore di Velocità

Introduzione

In questo progetto, impareremo l’uso del modulo sensore di velocità. Un Modulo Sensore di Velocità è un tipo di tachimetro utilizzato per misurare la velocità di un oggetto rotante, come un motore.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/2.2.6component.png

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

COMPONENTI IN QUESTO KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link seguenti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED

ACQUISTA

Modulo Sensore di Velocità

-

Schema Elettrico

../_images/2.2.6circuit.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/2.2.6fritzing.png

Passo 2: Cambia directory.

cd ~/raphael-kit/c/2.2.6/

Passo 3: Compila.

gcc 2.2.6_speed_sensor_module.c -lwiringPi

Passo 4: Esegui.

sudo ./a.out

Dopo l’esecuzione del codice, il LED verde si accenderà. Se inserisci un ostacolo nella fessura del modulo sensore di velocità, verrà stampato «luce bloccata» sullo schermo e il LED rosso si accenderà. Rimuovi l’ostacolo e il LED verde si riaccenderà.

Nota

Se non funziona dopo l’esecuzione o appare un errore come: "wiringPi.h: No such file or directory", fai riferimento a Installa e Controlla wiringPi.

Codice

#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){ //quando l'inizializzazione wiring fallisce, stampa messaggio a schermo
        printf("setup wiringPi failed !");
        return 1;
    }

    pinMode(speedPin, INPUT);
    int temp;
    while(1){
        //Inverti l'input di speedPin
        if ( digitalRead(speedPin) == 0 ){
            temp = 1;
        }
        if ( digitalRead(speedPin) == 1 ){
            temp = 0;
        }

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

Spiegazione del Codice

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

Definisci una funzione LED() per controllare i 2 LED, il parametro di questa funzione è color.

Quando color è 0, imposta Rpin su HIGH (accende il LED rosso) e Gpin su LOW (spegne il LED verde); quando color è 1, accende il LED verde e spegne il LED rosso.

while(1){
    //Inverti l'input di speedPin
    if ( digitalRead(speedPin) == 0 ){
        temp = 1;
    }
    if ( digitalRead(speedPin) == 1 ){
        temp = 0;
    }

    LED(temp);
    Print(temp);
}

Quando inserisci un ostacolo nella fessura del modulo sensore di velocità, speedPin è a livello basso (0), quindi chiama la funzione LED(1) per accendere il LED verde e viene stampato «La luce è stata bloccata!».

Immagine del Fenomeno

../_images/2.2.6photo_interrrupter.JPG