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.
È sicuramente conveniente acquistare un kit completo, ecco il link:
Nome |
COMPONENTI IN QUESTO KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Puoi anche acquistarli separatamente dai link seguenti.
INTRODUZIONE AI COMPONENTI |
LINK PER L’ACQUISTO |
|---|---|
Schema Elettrico
Procedure Sperimentali
Passo 1: Costruisci il circuito.
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).