.. note:: Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci l'esplorazione del Raspberry Pi, Arduino ed ESP32 con altri appassionati. **Perché unirti a noi?** - **Supporto esperto**: Risolvi i problemi post-vendita e le sfide tecniche con l'aiuto della nostra comunità e del nostro team. - **Impara e condividi**: Scambia consigli e tutorial per migliorare le tue competenze. - **Anteprime esclusive**: Accedi in anteprima agli annunci di nuovi prodotti e alle anticipazioni esclusive. - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni e omaggi festivi**: Partecipa a omaggi e promozioni speciali durante le festività. 👉 Sei pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso! .. _3.1.1_py: 3.1.1 Modulo Fotografico ============================= Introduzione ------------------- In questo kit, dotato di un modulo fotocamera, proveremo a scattare una foto con il Raspberry Pi. Componenti necessari -------------------------------- In questo progetto avremo bisogno dei seguenti componenti. .. image:: ../img/photo1.png :width: 800 È 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 AI COMPONENTI - LINK PER L'ACQUISTO * - :ref:`cpn_camera_module` - |link_camera_buy| Procedura sperimentale ------------------------------ **Passo 1:** Accedi al desktop del Raspberry Pi. Potresti aver bisogno di uno schermo per un'esperienza migliore, fai riferimento a: `Collega il tuo Raspberry Pi `_. Oppure accedi al desktop del Raspberry Pi da remoto, per un tutorial dettagliato fai riferimento a :ref:`remote_desktop`. **Passo 2:** Apri un terminale e accedi alla cartella del codice. .. code-block:: cd ~/raphael-kit/python/ **Passo 3:** Esegui il codice. .. code-block:: sudo python3 3.1.1_PhotographModule.py Dopo che il codice è stato eseguito, la fotocamera scatterà una foto. Ora puoi vedere la foto chiamata ``my_photo.jpg`` nella directory ``~``. .. note:: Puoi anche aprire ``3.1.1_PhotographModule.py`` nel percorso ``~/raphael-kit/python/`` con un IDE Python, clicca sul pulsante Run per eseguire e sul pulsante Stop per fermare il codice. Se desideri scaricare la foto sul tuo PC, fai riferimento a :ref:`filezilla`. **Codice** .. code-block:: python #!/usr/bin/env python3 from picamera2 import Picamera2, Preview import os # Get the current user's login name user = os.getlogin() # Get the path to the user's home directory user_home = os.path.expanduser(f'~{user}') # Create a Picamera2 instance camera = Picamera2() # Retrieve the default preview configuration preview_config = camera.preview_configuration try: # Set preview size and format preview_config.size = (800, 600) preview_config.format = 'XRGB8888' # Start the camera preview in QTGL mode camera.start_preview(Preview.QTGL) # Start the camera camera.start() # Capture and save a photo to the user's home directory camera.capture_file(f'{user_home}/my_photo.jpg') except KeyboardInterrupt: # Stop the camera preview if a KeyboardInterrupt (e.g., Ctrl+C) occurs camera.stop_preview() pass **Spiegazione del Codice** #. Importa le classi ``Picamera2`` e ``Preview`` dalla libreria picamera2, e il modulo ``os`` per le interazioni con il sistema operativo. .. code-block:: python #!/usr/bin/env python3 from picamera2 import Picamera2, Preview import os #. Recupera il nome dell’utente corrente e il percorso della sua directory home. .. code-block:: python # Ottieni il nome utente corrente user = os.getlogin() # Ottieni il percorso della directory home dell'utente user_home = os.path.expanduser(f'~{user}') #. Crea un'istanza della classe ``Picamera2`` e recupera la configurazione predefinita dell’anteprima. .. code-block:: python # Crea un'istanza di Picamera2 camera = Picamera2() # Recupera la configurazione di anteprima predefinita preview_config = camera.preview_configuration #. Imposta la dimensione e il formato dell’anteprima della fotocamera. La dimensione è impostata a 800x600 pixel e il formato ``XRGB8888``. .. code-block:: python try: # Imposta dimensioni e formato dell’anteprima preview_config.size = (800, 600) preview_config.format = 'XRGB8888' ... #. Avvia l’anteprima della fotocamera in modalità QTGL, un metodo per visualizzare l’anteprima, e quindi avvia la fotocamera. .. code-block:: python try: ... # Avvia l’anteprima della fotocamera in modalità QTGL camera.start_preview(Preview.QTGL) # Avvia la fotocamera camera.start() ... #. Cattura un'immagine dalla fotocamera, salvandola nella directory ``~/`` dell’utente. .. code-block:: python try: ... # Cattura e salva una foto nella directory home dell'utente camera.capture_file(f'{user_home}/my_photo.jpg') .. note:: Puoi utilizzare la funzione ``camera.capture()`` insieme a un ciclo ``for`` per realizzare scatti continui. Usa la funzione ``delay`` per regolare l’intervallo tra gli scatti. .. code-block:: python for i in 5: camera.capture(f'{user_home}/my_photo%s.jpg' % i) #. Questo blocco di codice gestisce un'interruzione da tastiera (come Ctrl+C) interrompendo l’anteprima della fotocamera. L’istruzione ``pass`` viene utilizzata per gestire l’eccezione senza altre azioni. .. code-block:: python except KeyboardInterrupt: # Ferma l’anteprima della fotocamera se avviene un'interruzione (es. Ctrl+C) camera.stop_preview() pass