Nota

Ciao, benvenuto nella community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Immergiti più a fondo in Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti?

  • Supporto esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra community e del nostro team.

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

  • Anteprime esclusive: Ottieni accesso anticipato a nuovi annunci di prodotti e anteprime esclusive.

  • Sconti speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e omaggi: Partecipa a concorsi e promozioni festive.

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

2.2.5 Modulo di Evitamento Ostacoli a Infrarossi

Introduzione

In questo progetto, impareremo il modulo di evitamento ostacoli a infrarossi, un modulo sensore che può essere utilizzato per rilevare ostacoli a brevi distanze, con piccole interferenze, facile da assemblare e utilizzare. Può essere ampiamente utilizzato per l’evitamento di ostacoli nei robot, nei carrelli di evitamento ostacoli, nel conteggio su nastri trasportatori, ecc.

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

ELEMENTI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE COMPONENTE

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 la 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 di fronte alla sonda del modulo, l’indicatore di uscita sul modulo si accenderà e «Detected Barrier!» verrà stampato ripetutamente sullo schermo.

Nota

Se non funziona dopo l’esecuzione o compare un messaggio di errore: "wiringPi.h: No such file or directory", consulta Installazione e verifica di WiringPi.

Codice

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

#define ObstaclePin      0

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

int main(void)
{
   if(wiringPiSetup() == -1){ // se l'inizializzazione di wiring fallisce, stampa un messaggio sullo 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 obstacle detected , 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 la funzione myISR() per ricevere interruzioni sul ObstaclePin specificato.

Quando ObstaclePin cambia da alto a basso, significa che è stato rilevato un ostacolo. In questo momento, chiama 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 è INT_EDGE_FALLING, INT_EDGE_RISING, INT_EDGE_BOTH o INT_EDGE_SETUP. Se è INT_EDGE_SETUP, non verrà effettuata alcuna inizializzazione del pin - si presume che tu abbia già configurato il pin altrove (ad esempio con il programma gpio), ma se specifichi uno degli altri tipi, il pin verrà esportato e inizializzato come specificato.

Per maggiori informazioni, consulta: wiringPi-Functions (API).

Immagine del fenomeno

../_images/2.2.5IR.JPG