Nota

Ciao, benvenuto nella community SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Esplora più a fondo Raspberry Pi, Arduino ed ESP32 con altri appassionati.

Perché unirti?

  • Supporto Esperti: 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 abilità.

  • Anteprime Esclusive: Ottieni l’accesso anticipato agli annunci di nuovi prodotti e anticipazioni.

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

  • Promozioni e Giveaway Festivi: Partecipa a concorsi e promozioni per le festività.

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

1.1.2 LED RGB

Introduzione

In questo progetto, controlleremo un LED RGB per farlo lampeggiare in vari colori.

Componenti Necessari

In questo progetto, ci servono i seguenti componenti.

../_images/list_rgb_led.png

È decisamente comodo acquistare un kit completo, ecco il link:

Nome

COMPONENTI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK D’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED RGB

ACQUISTA

Schema Circuitale

Dopo aver collegato i pin di R, G e B a una resistenza limitatrice di corrente, collegali rispettivamente ai GPIO17, GPIO18 e GPIO27. Il pin più lungo (GND) del LED si collega al GND del Raspberry Pi. Quando ai tre pin vengono assegnati diversi valori PWM, il LED RGB visualizzerà colori diversi.

T-Board Name

physical

wiringPi

BCM

GPIO17

Pin 11

0

17

GPIO18

Pin 12

1

18

GPIO27

Pin 13

2

27

../_images/rgb_led_schematic.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/image61.png

Passo 2: Vai nella cartella del codice.

cd ~/raphael-kit/c/1.1.2/

Passo 3: Compila il codice.

gcc 1.1.2_rgbLed.c -lwiringPi

Nota

Quando il comando gcc viene eseguito, se non viene utilizzato -o, allora il file eseguibile sarà denominato a.out.

Passo 4: Esegui il file eseguibile.

sudo ./a.out

Dopo aver eseguito il codice, vedrai che l’RGB mostra rosso, verde, blu, giallo, rosa e ciano.

Nota

Se non funziona dopo l’esecuzione, o compare un errore: "wiringPi.h: Nessun file o directory", fai riferimento a Installa e Controlla wiringPi.

Codice

#include <wiringPi.h>
#include <softPwm.h>
#include <stdio.h>
#define uchar unsigned char
#define LedPinRed    0
#define LedPinGreen  1
#define LedPinBlue   2

void ledInit(void){
    softPwmCreate(LedPinRed,  0, 100);
    softPwmCreate(LedPinGreen,0, 100);
    softPwmCreate(LedPinBlue, 0, 100);
}

void ledColorSet(uchar r_val, uchar g_val, uchar b_val){
    softPwmWrite(LedPinRed,   r_val);
    softPwmWrite(LedPinGreen, g_val);
    softPwmWrite(LedPinBlue,  b_val);
}

int main(void){

    if(wiringPiSetup() == -1){ //se l'inizializzazione di wiring fallisce, stampa il messaggio sullo schermo
        printf("setup wiringPi failed !");
        return 1;
    }

    ledInit();
    while(1){
        printf("Red\n");
        ledColorSet(0xff,0x00,0x00);   //rosso
        delay(500);
        printf("Green\n");
        ledColorSet(0x00,0xff,0x00);   //verde
        delay(500);
        printf("Blue\n");
        ledColorSet(0x00,0x00,0xff);   //blu
        delay(500);
        printf("Yellow\n");
        ledColorSet(0xff,0xff,0x00);   //giallo
        delay(500);
        printf("Purple\n");
        ledColorSet(0xff,0x00,0xff);   //viola
        delay(500);
        printf("Cyan\n");
        ledColorSet(0xc0,0xff,0x3e);   //ciano
        delay(500);
    }
    return 0;
}

Spiegazione del Codice

#include <softPwm.h>

Libreria utilizzata per realizzare la funzione PWM software.

void ledInit(void){
    softPwmCreate(LedPinRed,  0, 100);
    softPwmCreate(LedPinGreen,0, 100);
    softPwmCreate(LedPinBlue, 0, 100);
}

La funzione serve per creare un pin PWM software e impostare il suo periodo tra 0x100us-100x100us.

Il prototipo della funzione softPwmCreate(LedPinRed, 0, 100) è il seguente:

int softPwmCreate(int pin,int initialValue,int pwmRange);
  • Parametro pin: Qualsiasi pin GPIO del Raspberry Pi può essere impostato come pin PWM.

  • Parametro initialValue: La larghezza dell’impulso iniziale è il valore di initialValue moltiplicato per 100us.

  • Parametro pwmRange: Il periodo di PWM è pwmRange moltiplicato per 100us.

void ledColorSet(uchar r_val, uchar g_val, uchar b_val){
    softPwmWrite(LedPinRed,   r_val);
    softPwmWrite(LedPinGreen, g_val);
    softPwmWrite(LedPinBlue,  b_val);
}

Questa funzione serve per impostare i colori del LED. Utilizzando RGB, il parametro formale r_val rappresenta la luminosità del colore rosso, g_val del verde, b_val del blu.

Il prototipo della funzione softPwmWrite(LedPinBlue, b_val) è il seguente:

void softPwmWrite (int pin, int value) ;
  • Parametro pin: Qualsiasi pin GPIO del Raspberry Pi può essere impostato come pin PWM.

  • Parametro Value: La larghezza dell’impulso di PWM è il valore moltiplicato per 100us. Nota che il valore può essere solo inferiore a pwmRange definito in precedenza, se è maggiore di pwmRange, al valore verrà assegnato un valore fisso, pwmRange.

ledColorSet(0xff,0x00,0x00);

Richiama la funzione definita in precedenza. Scrivi 0xff in LedPinRed e 0x00 in LedPinGreen e LedPinBlue. Solo il LED rosso si accenderà dopo l’esecuzione di questo codice. Se desideri accendere i LED in altri colori, basta modificare i parametri.

Immagine del Fenomeno

../_images/image62.jpeg