.. note::
Ciao, benvenuto nella community 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 [|link_sf_facebook|] e unisciti oggi stesso!
.. _3.1.1_c_pi5:
3.1.1 Dispositivo Contatore
==============================
Introduzione
-----------------
Qui creeremo un sistema contatore visualizzatore di numeri, composto da un
sensore PIR e un display a 4 cifre. Quando il sensore PIR rileva il passaggio
di una persona, il numero sul display a 4 cifre aumenterà di 1. Puoi utilizzare
questo contatore per contare il numero di persone che attraversano il passaggio.
Componenti necessari
-------------------------
In questo progetto, abbiamo bisogno dei seguenti componenti.
.. image:: ../img/list_Counting_Device1.png
:align: center
.. image:: ../img/list_Counting_Device2.png
:align: center
È sicuramente conveniente acquistare un kit completo, ecco il link:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nome
- ELEMENTI IN QUESTO KIT
- LINK
* - Kit Raphael
- 337
- |link_Raphael_kit|
Puoi anche acquistarli separatamente dai link sottostanti.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUZIONE COMPONENTE
- LINK PER L'ACQUISTO
* - :ref:`cpn_gpio_extension_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_resistor`
- |link_resistor_buy|
* - :ref:`cpn_4_digit`
- \-
* - :ref:`cpn_74hc595`
- |link_74hc595_buy|
* - :ref:`cpn_pir`
- \-
Schema elettrico
----------------------
============ ======== ======== ===
T-Board Name physical wiringPi BCM
GPIO17 Pin 11 0 17
GPIO27 Pin 13 2 27
GPIO22 Pin 15 3 22
SPIMOSI Pin 19 12 10
GPIO18 Pin 12 1 18
GPIO23 Pin 16 4 23
GPIO24 Pin 18 5 24
GPIO26 Pin 37 25 26
============ ======== ======== ===
.. image:: ../img/Schematic_three_one1.png
:align: center
Procedure sperimentali
---------------------------
**Passo 1:** Costruisci il circuito.
.. image:: ../img/image235.png
**Passo 2:** Vai alla cartella del codice.
.. raw:: html
.. code-block::
cd ~/raphael-kit/c/3.1.1/
**Passo 3:** Compila il codice.
.. raw:: html
.. code-block::
gcc 3.1.1_CountingDevice.c -lwiringPi
**Passo 4:** Esegui il file eseguibile.
.. raw:: html
.. code-block::
sudo ./a.out
Una volta eseguito il codice, quando il sensore PIR rileva il passaggio
di una persona, il numero sul display a 4 cifre aumenterà di 1.
Ci sono due potenziometri sul modulo PIR: uno per regolare la sensibilità e
l'altro per regolare la distanza di rilevamento. Per far funzionare al meglio
il modulo PIR, è necessario ruotarli entrambi in senso antiorario fino alla fine.
.. image:: ../img/PIR_TTE.png
:width: 400
:align: center
.. note::
Se non funziona dopo l'esecuzione o compare un messaggio di errore: \"wiringPi.h: No such file or directory\", consulta :ref:`install_wiringpi_pi5`.
**Spiegazione del Codice**
.. code-block:: c
void display()
{
clearDisplay();
pickDigit(0);
hc595_shift(number[counter % 10]);
clearDisplay();
pickDigit(1);
hc595_shift(number[counter % 100 / 10]);
clearDisplay();
pickDigit(2);
hc595_shift(number[counter % 1000 / 100]);
clearDisplay();
pickDigit(3);
hc595_shift(number[counter % 10000 / 1000]);
}
Per prima cosa, avvia il quarto segmento del display e scrivi il numero singolo.
Poi avvia il terzo segmento del display e inserisci la cifra delle decine; dopo
di ciò, avvia rispettivamente il secondo e il primo segmento del display e scrivi
le centinaia e le migliaia. Grazie alla velocità di aggiornamento molto rapida,
vediamo un display completo a quattro cifre.
.. code-block:: c
void loop(){
int currentState =0;
int lastState=0;
while(1){
display();
currentState=digitalRead(sensorPin);
if((currentState==0)&&(lastState==1)){
counter +=1;
}
lastState=currentState;
}
}
Questa è la funzione principale: mostra il numero sul display a 4 cifre e leggi
il valore del PIR. Quando il sensore PIR rileva il passaggio di una persona, il
numero sul display a 4 cifre aumenterà di 1.
Immagine del Fenomeno
-------------------------
.. image:: ../img/image236.jpeg
:align: center