Menu  Menu
Notizie
Attivitą
Tabella attivitą
Rassegne
Spettacoli
Scritti
Notizie dall'interno
Guide
Software/Hardware libero
Miei progetti
Mappa sito
Foto
Download
Mio curriculum
Dove siamo

Vedi anche  Vedi anche
 Alimentatore led high power 3W
 Maschere della commedia dell'arte in carta e cartone
 PyWiiMote
 Palla a led
 Scritta con striscia a led
 Penna a infrarossi
 Nuova penna a infrarossi
 Papercraft
 Arduino
 Relazione 2012
 RepRap e Openscad
 Disegni con Openscad
 Torre di Tesla
 Lampada portatile
 Lampada portatile RGBW
 Misuratore allungamento molla con lo wiimote
 Deviata a led
 Lampada magica
 Chimica
 Cubo a led 8x8x8
 Basic
 LedRGB_IR
 Termometro igrometro digitale con Arduino
 Pannello elettrico
 Quadricottero open
 Pannello a led RGB
 Supporto rocchetto RepRap
 Lampada magica versione due
 The Folding Arduino Lab
 Orologio a led con Arduino
 Taglierina laser
 Scritta RGB con Arduino
 Taglierina per polistirolo

Miei progetti » Scritta RGB con Arduino

Scritta RGB a 10 lettere (BUONE FESTE) con Arduino
Le lettere si possono colorare autonomamente e accendere in qualsiasi sequenza

 
Componenti:
2 circuiti integrati TLC5940
30 transistor BC640
30 resistenze 100 ohm 1/4 W
2 resistenze 2,2 Kohm 1/4 W
2 resistenze 10 Kohm 1/4 W
2 condensatori poliestere 100nF
1 connettore maschio da 2 pin passo 2.54 mm
1 connettore maschio da 7 pin passo 2.54 mm
10 connettori maschio da 4 pin passo 2.54 mm
Schema elettrico
 
 
 
Circuito stampato doppia faccia. In alto il lato componenti.
 
 
 
 
I collegamenti dall'Arduino Uno alla scheda. L'alimentatore per la scritta è da 12V 10A.
 
La scritta:
La scritta è realizzata usando come supporto della rete di protezione in plastica con maglie da 1 x 1 cm fissata con delle viti su una cornice in legno.
 
 Le lettere sono composte da vari pezzi di striscia a led RGB tagliati e fissati con delle fascette alla rete.
Tra una striscia e l'altra di ogni singola lettera sono stati fatti dei collegamenti in modo da portare tutte le alimentazioni +,G,R,B a tutti i pezzi.
 
Le 10 piattine da 4 conduttori partenti dalle singole lettere sono state saldate ai 10 connettori da 4 pin.
 
 
Il programma per l'Arduino:
 
#include "Tlc5940.h"
// cambiare il primo valore della matrice scena (26) in base al numero delle righe inserite
// nelle righe il primo valore indica il tempo in decimi di secondo (10 imposta un secondo) di dissolvenza dalla scena precedente
// il secondo valore indica il tempo di permanenza della scena in decimi di secondo (20 imposta 2 secondi) 
// i valori dal terzo al 32esimo impostano il livello di uscita del canale da 2 a 31 (B"B",R"B",G"B",B"U",R"U",G"U"...B"T",R"T",G"T",B"E",R"E"G"E"),con un valore da 0 a 4095 (12 bit), i canali 0 e 1 non vengono usati. 
// per creare una continuità del programma la prima e l'ultima riga devono essere uguali, infatti il programma viene eseguito a partire dalla seconda riga
int scena[26][32] =
{
    {10,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
    {10,20,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0},
    {10,20,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0},
    {10,20,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095},
    {10,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
    {0,5,4095,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
    {0,5,4095,0,0,4095,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,0,0,0,0,0,0,0,0,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,0,0,0,0,0,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,0,0,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,0,4095,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,0,4095,0,0,4095,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,0,4095,0,0,4095,0,0,4095,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,4095,0,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0},
    {0,5,4095,0,0,4095,0,0,4095,0,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0},
    {0,5,4095,0,0,4095,0,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0},
    {0,5,4095,0,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0},
    {0,5,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0,0,4095,0},
    {10,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
};
float provvisorio;
float provvisorio1; // varibili a virgola mobile per il calcolo del valore di step
int stepvalue[32]; // matrice degli step di variazione dei canali durante la dissolvenza
// per comodità definita a 32 come scena ma i primi due volori non vengono usati
int fade; // il tempo di dissolvenza
int durata; // il tempo di permanenza
int colore; // livello di uscita
 
void setup()
{
  Tlc.init();
}
 
void loop()
 
{
    for (int j=1; j < 26; j++)
    { // j è il  numero delle scene e varia da 1 a j, la scena 0 (la prima riga) serve solo per il fade
      // il numero 26 va modificato in base al numero di righe inserite all'inizio per la matrice scena
      fade = scena[j][0]; // prende il valore fade dalla scena corrente
      durata = scena[j][1]; // prende il valore durata dalla scena corrente
      for (int i = 2; i < 32; i++)
      { // i è il numero del canale e varia da 2 a 31
        provvisorio1 = (scena[j][i] - scena[j-1][i]); // fa la differenza fra il valore del canale i della scena corrente (j) e quella precendente (j-1)
        provvisorio = provvisorio1/256; // divide il valore precedente per 256
        stepvalue[i] = ceil(provvisorio); // arrotonda per eccesso all'intero e lo memorizza in stepvalue[i]
        if (provvisorio > 0)
        {
          stepvalue[i] = ceil(provvisorio); // se provvisorio è maggiore di 0 arrotonda per eccesso 
        }
        else
        {
          stepvalue[i] = floor(provvisorio); // se provvisorio è maggiore di 0 arrotonda per difetto
        }
     }
     for (int n = 0; n < 257; n++)
      { // ripete 256 volte
        for (int i = 2; i < 32; i++)
        {
          if (stepvalue[i] == 0)
          {
            colore = scena[j][i];
          }
          else
          {
            colore = scena[j-1][i] + stepvalue[i] * n; // partendo dal valore della scena precendente (j-1),
                                                       // aumenta o diminuisce (se stepvalue è negativo) di uno step il valore di uscita del canale i
                                                       // fino a portarlo al valore della scena corrente (j)
            if (stepvalue[i] > 0 && colore > scena[j][i])
            {
              colore = scena[j][i]; // se il valore di step è maggiore di zero impedisce che il valore del canale i superi il valore finale
            }
            if (stepvalue[i] < 0 && colore < scena[j][i])
            {
              colore = scena[j][i]; // se il valore di step è minore di zero impedisce che il valore del canale i diventi minore del valore finale
            }
          }
          Tlc.set(i, colore); // setta il valore in uscita del canale i
        }
        Tlc.update(); // aggiorna tutti i 30 canali in uscita dei TLC5940
        delay(fade); // ferma il programma di fade millisicondi per rallentare la dissolvenza
      }
     delay(durata*100); // ferma il programma per durata*100 millisecondi
    }
    
}
 
print
Calendario  Calendario
Agosto 2017
L M M G V S D
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

Data: 20/08/2017
Ora: 11:34
Accadde Oggi:
* 1804 - Spedizione Lewis e Clark: i "Corpi di scoperta", il cui scopo era di esplorare la Louisiana Purchase, subiscono la loro prima e ultima perdita, quando il sergente Charles Floyd muore, apparentemente per un'appendicite acuta.

Santi Cattolici:
* San Samuele, giudice e profeta d'Israele

Meteo  Meteo
Meteo Vigolo