Pages: 1 2 3 [4] 5   Go Down
Author Topic: led strip addressable  (Read 3621 times)
0 Members and 1 Guest are viewing this topic.
Milan
Offline Offline
Sr. Member
****
Karma: 0
Posts: 375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Uwe sin dall'inizio io ho parlato di ws2801, poi tu mi hai chiesto che libreria uso e io ho copiato il link e l'esempio da loro prodotto cosi come.
<Sotto per evitare fraintendimenti ho scritto infatti che io avendo il ws2801   ho sistemato il codice, mi sembra una procedura corretta.

Il prodotto è questo
http://www.ebay.com/itm/111044008934?item=111044008934&viewitem=&sspagename=ADME:X:AAQ:MOTORS:1123&vxp=mtr

Ma oltre a questo 5m ws2801 led digital strip,32pcs IC and 32pcs 5050 SMD RGB each meter, non dicono niente.

N
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 249
Posts: 21181
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se guardi la foto vedi che vicino ai contatti, dove puoi tagliare la striscia é scritto OUT e IN. Devi collegare il lato IN al Arduino.



La foto l' ho presa dalla descrizione dell'offerta che hai linkata anche se mi resta un piccolo dubbio Se la Foto corrisponde al prodotto a Te fornito visto che avevi scritto che é scritto
5V
ck
sI o s1
GND
e sulla foto vedo
5V
CK
SD
GND

Sí avevi scritto che hai modificato la riga del WS2801 ma cosa costava mettere lo sketch modificato con cui piloti la striscia?

Se usi striscie corte basta aliemntare da una delle due parti, é piú semplice usare la aprte IN perché devi collegarci comunque i 2 fili del pilotaggio. Se hai striscie piú lunghe é meglio mettere l' alimentazione ad entrambi i lato; lil pilotaggio sempre sul lato IN.

Ciao Uwe
Logged

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5483
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Cosa succede ad Arduino se cerco di accenderne troppi e collego l'alimentazione al 5V di Arduino?

N
Se sei collegato al PC non hai alcun tipo di protezione su arduino quindi se ce l'hai dentro il pc bene sennò, se superi la corrente di 200mA i danni che possono verificarsi potrebbero essere molteplici anche se a me non è mai successo nulla....
se alimenti esternamente arduino hai il limite degli 800mA dati dal regolatore e dal termofusibile, superati questi lo vedi spegnersi lentamente come se fosse in corto fino a non dar più segni di vita, quando scolleghi il carico poi si riaccende... occhio però.. il regolatore regge 800mA, io ho una 2009 e a mio avviso la pista sottostante è sottodimensionata come dissipatore ergo scalda come un fornetto, se hai la UNO non so dirti però in quanto non ne ho mai avuta una tra le mani smiley

ratto93 stai facendo un po di confusione.
La USB é linitata a 500mA da un fusibile autoripristinante su Arduino e dal da un circuito di protezione sul PC che limita pure lui a 500mA.
Sul conettore di alimentazione non c'é nessun fusibile. C'é un diodo che regge 1A per evitare che la polaritá sbagliata rovini l'arduino.

Il regolatore puó reggere tale corrente ma devi fare i conti con la potenza che deve dissipare per abbassare la tensione di alimentazione a 5V. Non rischierei di prendere piú di 200mA dallo stabilizzatore.

Ciao Uwe
Mannaggia, hai ragione, come sempre, scusate l'intervento errato  smiley-sweat
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Milan
Offline Offline
Sr. Member
****
Karma: 0
Posts: 375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Esatto Uwe.
Sulla mia striscia non c'è scritto ne IN ne OUT però è uguale.

E quindi dove dovrei attaccare secondo te sI e Ck?
Io ho provato a collegare sI al PIN 4 dato che nel codice si parla di PIN4 e il clock a 11 e poi a 13 ma non da segni di vita.

Io ho una Arduino Uno ver 2.0 potrebbe essere li il problema?

ratto93 non ho capito il tuo post?

N
Logged

Tuscany
Offline Offline
Edison Member
*
Karma: 64
Posts: 1935
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

nella documentazione della fastSpi leggo questo

Quote
The other two connections are for data control, the Serial Programming Interface SPI. There should be one for the SCK (clock) which has to be connected to the clock pin for SPI, usually pin 13 on recent arduinos.
Then you need to connect the data input to the pin for master - to - slave data (MOSI), usually pin 11.


Logged

Milan
Offline Offline
Sr. Member
****
Karma: 0
Posts: 375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Infatti quyello l'ho letto, ma nel codice si setta anche un PIN 4 che non capisco cosa serva allora.
Logged

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1740
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset


Cosa succede ad Arduino se cerco di accenderne troppi e collego l'alimentazione al 5V di Arduino?

N
Se sei collegato al PC non hai alcun tipo di protezione su arduino quindi se ce l'hai dentro il pc bene sennò, se superi la corrente di 200mA i danni che possono verificarsi potrebbero essere molteplici anche se a me non è mai successo nulla....
se alimenti esternamente arduino hai il limite degli 800mA dati dal regolatore e dal termofusibile, superati questi lo vedi spegnersi lentamente come se fosse in corto fino a non dar più segni di vita, quando scolleghi il carico poi si riaccende... occhio però.. il regolatore regge 800mA, io ho una 2009 e a mio avviso la pista sottostante è sottodimensionata come dissipatore ergo scalda come un fornetto, se hai la UNO non so dirti però in quanto non ne ho mai avuta una tra le mani smiley

ratto93 stai facendo un po di confusione.
La USB é linitata a 500mA da un fusibile autoripristinante su Arduino e dal da un circuito di protezione sul PC che limita pure lui a 500mA.
Sul conettore di alimentazione non c'é nessun fusibile. C'é un diodo che regge 1A per evitare che la polaritá sbagliata rovini l'arduino.

Il regolatore puó reggere tale corrente ma devi fare i conti con la potenza che deve dissipare per abbassare la tensione di alimentazione a 5V. Non rischierei di prendere piú di 200mA dallo stabilizzatore.

Ciao Uwe
Mannaggia, hai ragione, come sempre, scusate l'intervento errato  smiley-sweat
(Scusa Leo72 ma devo per forza quotare sennò non capisco nulla)
La USB ha in output un massimo di 100mA prima di ricevere il comando dal dispositivo di attivare la High Current (500mA) e penso che arduino non lo faccia, quindi hai a disposizione solo 100mA da USB
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

BZ (I)
Online Online
Brattain Member
*****
Karma: 249
Posts: 21181
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

cece, puoi fare riassunti nelle citazioni  smiley-wink smiley-wink smiley-wink

Hai ragione che nello standart della USB senza richiesta un apparecchio collegato potrebbe consumare al massimo 500mA.
Non so se Arduino faccia questo negoziamento per poter consumare fino a 500mA ma so di certo che viene trasmesso un ID che specifica il dispositivo USB come Arduino del  e un numeri univoco  (per questo trovi 2 Arduini su diverse COM).

So anche che lo standart per la corrente massima sulla USB senza negoziamenti non viene visto in modo cosí rigido dal PC senó tante cose non sarebbero possibili come caricare apparecchi dalla USB.

Ciao Uwe
Logged

Milan
Offline Offline
Sr. Member
****
Karma: 0
Posts: 375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Provato con una striscia tagliata di 10 òòed.
Pin 11 dati, 13 clock.
Remmata la riga del PIN 4, ma non va.
Idee?

N
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 249
Posts: 21181
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Provato con una striscia tagliata di 10 òòed.
Pin 11 dati, 13 clock.
Remmata la riga del PIN 4, ma non va.
Idee?

N
Prego lo sketch (ma veramente quello) che hai usato per fare le prove sopraelencate.
Ciao Uwe
Logged

Milan
Offline Offline
Sr. Member
****
Karma: 0
Posts: 375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho aggiunto adesso
Quote
//MODIFICATO DA ME
davanti alle righe che ho tolto con un rem e dietro a quelle valide (non remmate)  per aiutarti a trovare i punti in cui ho cambiato il codice di test

Code:
#include <FastSPI_LED.h>

#define NUM_LEDS 10 //MODIFICATO DA ME

// 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);
  //MODIFICATO DA ME 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); //MODIFICATO DA ME

  //MODIFICATO DA ME  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);
    }
  }
}
Logged

Milan
Offline Offline
Sr. Member
****
Karma: 0
Posts: 375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nessuna sa aiutarmi?

Ho fatto questo
Code:
memset(leds, 0, NUM_LEDS * 3);
      leds[1].r = 255;
      leds[1].r = 255
       leds[1].r = 255
   
      FastSPI_LED.show();

Non dovrebbe accendersi il secondo bianco?
Beh si accende il secondo ma blu
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 249
Posts: 21181
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non devi scrivere r g b?
Code:
memset(leds, 0, NUM_LEDS * 3);
      leds[1].r = 255;
      leds[1].g = 255;
       leds[1].b = 255;
   
      FastSPI_LED.show();
Logged

Milan
Offline Offline
Sr. Member
****
Karma: 0
Posts: 375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Non devi scrivere r g b?

Non ho capito la tua domanda.
Cosa intendi?

Io ho preso un esempio del codice della libreria tolta tutta la parte per farli accendere in serie, fade in e out ecc e concentrato su una singola cosa, accendere un led.
leds è un array di una struttura che indirizza il singolo  led dei 3 che compongono quello rgb in cui vado a pilotare i singoli canali r,g,b e li setto al massimo che dovrebbe darmi luce bianca.

N
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 111
Posts: 5875
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

... intende che tu hai riportato :

Code:
   memset(leds, 0, NUM_LEDS * 3);
   leds[1].r = 255;
   leds[1].r = 255
   leds[1].r = 255
   
   FastSPI_LED.show();

... ed in questo codice, come vedi, metti a 255 SEMPRE E SOLO la componente "R" e non le altre due.

Ora, o hai sbagliato a riportare qui nel tuo post il codice, oppure, se hai veramente scritto così, il codice è sbagliato visto che non server a nulla ripetere 3 volte la stessa istruzione e che, probabilmente, volevevi mettere a 255 le anche le componenti "G" e "B" da cui ... la correzione che ti è stata indicata smiley-wink

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Pages: 1 2 3 [4] 5   Go Up
Jump to: