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.5 Modulo di Evitamento Ostacoli IR

Introduzione

In questo progetto, impareremo a conoscere il modulo di evitamento ostacoli IR, un sensore che può essere utilizzato per rilevare ostacoli a breve distanza, con piccole interferenze, facile da assemblare e da usare. Può essere ampiamente utilizzato nell’evitamento di ostacoli nei robot, nei carrelli con evitamento ostacoli, nel conteggio su linee di montaggio e altro ancora.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/2.2.5component.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

Modulo di evitamento ostacoli

ACQUISTA

Schema Elettrico

../_images/IR_schematic.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/2.2.5fritzing.png

Passo 2: Cambia directory.

cd ~/raphael-kit/c/2.2.5/

Passo 3: Compila.

gcc 2.2.5_IrObstacle.c -lwiringPi

Passo 4: Esegui.

sudo ./a.out

Dopo l’esecuzione del codice, quando metti la mano davanti alla sonda del modulo, l’indicatore di uscita sul modulo si accende e «Detected Barrier!» verrà ripetutamente stampato sullo schermo.

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 ObstaclePin      0

void myISR(void)
{
   printf("Detected Barrier !\n");
}

int main(void)
{
   if(wiringPiSetup() == -1){ //quando l'inizializzazione wiring fallisce, stampa messaggio a schermo
      printf("setup wiringPi failed !\n");
      return 1;
   }

   if(wiringPiISR(ObstaclePin, INT_EDGE_FALLING, &myISR) < 0){
      printf("Unable to setup ISR !!!\n");
      return 1;
   }

   while(1){
      ;
   }

   return 0;
}

Spiegazione del Codice

void myISR(void)
{
   printf("Detected Barrier !\n");
}

Definisci una funzione myISR() per stampare ostacolo rilevato , indicando che è stato rilevato un ostacolo.

if(wiringPiISR(ObstaclePin, INT_EDGE_FALLING, &myISR) < 0){
   printf("Unable to setup ISR !!!\n");
   return 1;
}

Questa funzione wiringPiISR() registra una funzione myISR() per ricevere interruzioni sul pin specificato ObstaclePin.

Quando il pin ObstaclePin passa da alto a basso, significa che è stato rilevato un ostacolo. In questo momento, viene chiamata la funzione myISR() per stampare «Detected Barrier !».

Il prototipo di questa funzione wiringPiISR() è mostrato di seguito.

int wiringPiISR (int pin, int edgeType,  void (*function)(void)) ;

Il parametro edgeType può essere INT_EDGE_FALLING , INT_EDGE_RISING , INT_EDGE_BOTH o INT_EDGE_SETUP. Se è INT_EDGE_SETUP non verrà eseguita alcuna inizializzazione del pin – si presume che il pin sia già stato configurato altrove (ad esempio con il programma gpio), ma se si specifica uno degli altri tipi, il pin verrà esportato e inizializzato come specificato.

Per maggiori informazioni, fai riferimento a: wiringPi-Functions (API).

Immagine del Fenomeno

../_images/2.2.5IR.JPG