Le Librerie

Buon giorno a tutti,

ho un quesito da neofita , ma bisogna pur iniziare...

Quando uso una libreria non standard , dove trovo le istruzioni, le parole chiave , per gestire nella programmazione la libreria stessa.

Scusate la banalità della domanda ma .... :o :o :o :o :o

Grazie per l'att.ne

Di solito ogni libreria è accompagnata da esempi, da cui puoi trarre "ispirazione". Per avere un'idea dell'interfaccia completa, poi, puoi aprire il file .h della libreria, però devi avere un minimo di dimestichezza con il C++. Altrimenti c'è Google :).

Inanzitutto , grazie per

SukkoPera:
Di solito ogni libreria è accompagnata da esempi, da cui puoi trarre "ispirazione". Per avere un'idea dell'interfaccia completa, poi, puoi aprire il file .h della libreria, però devi avere un minimo di dimestichezza con il C++. Altrimenti c'è Google :).

Con questo SukkoPera, vuoi dirmi che stà al buon cuore di chi sviluppa la libreria dare informazioni dettagliate sui comandi.

In quanto se uno come me :confused: :confused: :confused: non è un profondo conoscitore di C , può ritrovarsi ..handicappato....

La seguente definizione è corretta : ...una libreria è una routine che semplifica la gestione di un determinato hardware...

Grazie comunque

La seguente definizione è corretta : ...una libreria è una routine che semplifica la gestione di un determinato hardware...

Una libreria é un insieme di funzioni che puoi usare. Queste funzioni Ti semplificano la vita perché qualcuno ha giá fatto un programma che fa qualchosa in modo semplice da gestire.
Non necessariamente deve interfacciare un hardware. Una libreria puó anche creare nuove funzioni software.

Con questo SukkoPera, vuoi dirmi che stà al buon cuore di chi sviluppa la libreria dare informazioni dettagliate sui comandi.

Sí un programmatore che vuole fare una libreria seria deve dare anche un aiuto nell' uso mettendo esempi, descrizioni e commenti.

Dover decifrare una libreria é un lavoro difficile ancor di piú se sei non troppo afferrato nel C/C++

Ciao Uwe

#include <FastSPI_LED.h>

#define NUM_LEDS 150

// Sometimes chipsets wire in a backwards sort of way
struct CRGB { unsigned char b; unsigned char r; unsigned char g; };
// struct CRGB { unsigned char r; unsigned char g; unsigned char b; };
struct CRGB *leds;

#define PIN 4

void setup()
{
  FastSPI_LED.setLeds(NUM_LEDS);
  FastSPI_LED.setChipset(CFastSPI_LED::SPI_SM16716);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_TM1809);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_LPD6803);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_HL1606);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_595);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_WS2801);

  FastSPI_LED.setPin(PIN);
  
  FastSPI_LED.init();
  FastSPI_LED.start();

  leds = (struct CRGB*)FastSPI_LED.getRGBData(); 
}

void loop() { 
  // one at a time
  for(int j = 0; j < 3; j++) { 
    for(int i = 0 ; i < NUM_LEDS; i++ ) {
      memset(leds, 0, NUM_LEDS * 3);
      switch(j) { 
        case 0: leds[i].r = 255; break;
        case 1: leds[i].g = 255; break;
        case 2: leds[i].b = 255; break;
      }
      FastSPI_LED.show();
      delay(10);
    }
  }

  // growing/receeding bars
  for(int j = 0; j < 3; j++) { 
    memset(leds, 0, NUM_LEDS * 3);
    for(int i = 0 ; i < NUM_LEDS; i++ ) {
      switch(j) { 
        case 0: leds[i].r = 255; break;
        case 1: leds[i].g = 255; break;
        case 2: leds[i].b = 255; break;
      }
      FastSPI_LED.show();
      delay(10);
    }
    for(int i = NUM_LEDS-1 ; i >= 0; i-- ) {
      switch(j) { 
        case 0: leds[i].r = 0; break;
        case 1: leds[i].g = 0; break;
        case 2: leds[i].b = 0; break;
      }
      FastSPI_LED.show();
      delay(1);
    }
  }
  
  // Fade in/fade out
  for(int j = 0; j < 3; j++ ) { 
    memset(leds, 0, NUM_LEDS * 3);
    for(int k = 0; k < 256; k++) { 
      for(int i = 0; i < NUM_LEDS; i++ ) {
        switch(j) { 
          case 0: leds[i].r = k; break;
          case 1: leds[i].g = k; break;
          case 2: leds[i].b = k; break;
        }
      }
      FastSPI_LED.show();
      delay(3);
    }
    for(int k = 255; k >= 0; k--) { 
      for(int i = 0; i < NUM_LEDS; i++ ) {
        switch(j) { 
          case 0: leds[i].r = k; break;
          case 1: leds[i].g = k; break;
          case 2: leds[i].b = k; break;
        }
      }
      FastSPI_LED.show();
      delay(3);
    }
  }
}

Buon giorno uwefed , mi permetto di chiederti un consiglio ...se posso.

Nello sketch sopra descritto non riesco a capire che funzione abbia il settaggio del pin4 come da listato:

#define PIN 4

void setup()
{
  FastSPI_LED.setLeds(NUM_LEDS);
  FastSPI_LED.setChipset(CFastSPI_LED::SPI_SM16716);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_TM1809);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_LPD6803);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_HL1606);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_595);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_WS2801);

  FastSPI_LED.setPin(PIN);

Forse tu lo conosci riesci a decifrare l'arcano.

Comunque grazie in ogni modo del Vs tempo

roberto 563

Il #define è una specie di Trova/Sostituisci: usato in quel modo, ovunque compare la parola "PIN" (maiuscola), è come se ci fosse scritto 4. Questo ti semplifica la vita un domani in cui invece del pin 4 vorrai usare il 5: invece di andarlo a sostituire in tutti i posti in cui compare, cambi solo la #define.

con FastSPI_LED.setPin(PIN);
definisci su quale Pin di Arduino colleghi l'entrata del controller LED.
Ciao Uwe