.. note::
Ciao, benvenuto nella Community su Facebook per gli appassionati di SunFounder Raspberry Pi, Arduino e ESP32! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
**Perché unirti a noi?**
- **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 consigli e tutorial per migliorare le tue competenze.
- **Anteprime Esclusive**: Ottieni accesso anticipato agli annunci dei nuovi prodotti e anteprime esclusive.
- **Sconti Speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
- **Promozioni e Giveaway Festivi**: Partecipa a concorsi e promozioni in occasione delle festività.
👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso!
3.1.2 Benvenuto
==================
Introduzione
--------------
In questo progetto, utilizzeremo un sensore PIR per rilevare il movimento
dei passanti e useremo servomotori, LED e un cicalino per simulare il
funzionamento della porta automatica di un negozio. Quando un pedone entra
nel raggio di rilevamento del PIR, si accenderà la luce di indicazione, la
porta si aprirà e il cicalino suonerà il campanello di apertura.
Componenti
------------
.. image:: img/list_Welcome.png
:align: center
Schema di Collegamento
-------------------------
============ ======== ======== ===
T-Board Name physical wiringPi BCM
GPIO18 Pin 12 1 18
GPIO17 Pin 11 0 17
GPIO27 Pin 13 2 27
GPIO22 Pin 15 3 22
============ ======== ======== ===
.. image:: img/Schematic_three_one2.png
:align: center
Procedure Sperimentali
-------------------------
**Passo 1:** Costruisci il circuito.
.. image:: img/image239.png
:width: 800
:align: center
**Passo 2:** Cambia directory.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/c/3.1.2/
**Passo 3:** Compila.
.. raw:: html
.. code-block::
gcc 3.1.2_Welcome.c -lwiringPi
**Passo 4:** Esegui.
.. raw:: html
.. code-block::
sudo ./a.out
Dopo l’esecuzione del codice, se il sensore PIR rileva il passaggio
di qualcuno, la porta si aprirà automaticamente (simulata dal servo),
si accenderà la luce di indicazione e suonerà la musica del campanello.
Dopo la riproduzione della musica, il sistema chiuderà automaticamente
la porta e spegnerà la luce di indicazione, in attesa del passaggio successivo.
Sul modulo PIR sono presenti due potenziometri: uno per regolare la
sensibilità e l'altro per regolare la distanza di rilevamento. Per
migliorare le prestazioni del modulo PIR, è necessario ruotare entrambi
in senso antiorario fino alla fine.
.. note::
Se non funziona dopo l'esecuzione o compare un messaggio di errore: \"wiringPi.h: No such file or directory\", consulta :ref:`faq_c_nowork`.
**Spiegazione del Codice**
.. code-block:: c
void setAngle(int pin, int angle){ //Crea una funzione per controllare l'angolo del servomotore.
if(angle < 0)
angle = 0;
if(angle > 180)
angle = 180;
softPwmWrite(pin, Map(angle, 0, 180, 5, 25));
}
Crea la funzione setAngle per impostare l'angolo nel servomotore da
0 a 180 gradi.
.. code-block:: c
void doorbell(){
for(int i=0;i-1;i--){ //fa ruotare il servo dall'angolo massimo all'angolo minimo
setAngle(servoPin, i);
delay(1);
}
}
Crea la funzione closedoor per simulare la chiusura della porta, spegnere
il LED e fare ruotare il servo da 180 a 0 gradi.
.. code-block:: c
void opendoor(){
digitalWrite(ledPin, HIGH); //accende il LED
for(int i=0;i<181;i++){ //fa ruotare il servo dall'angolo minimo all'angolo massimo
setAngle(servoPin, i);
delay(1);
}
doorbell();
closedoor();
}
La funzione opendoor() comprende varie azioni: accendere la luce di
indicazione, ruotare il servo (simulando l'apertura della porta),
suonare il campanello del negozio e chiamare la funzione closedoor()
dopo la riproduzione della musica.
.. code-block:: c
int main(void)
{
if(wiringPiSetup() == -1){ //se l'inizializzazione di wiring fallisce, stampa un messaggio a schermo
printf("setup wiringPi failed !");
return 1;
}
if(softToneCreate(BuzPin) == -1){
printf("setup softTone failed !");
return 1;
}
......
Nella funzione main(), inizializza la libreria wiringPi e configura softTone,
quindi imposta ledPin come uscita e pirPin come ingresso. Se il sensore PIR
rileva il passaggio di qualcuno, verrà chiamata la funzione opendoor per
simulare l'apertura della porta.