Show Posts
Pages: 1 [2] 3 4 ... 53
16  Using Arduino / Programming Questions / FastPWM newbie on: August 28, 2013, 07:30:41 am
Hi all!! I'm trying to dimmer some leds with fast pwm,
for Green&Blue i'm using this code:
Code:
 pinMode(6  , OUTPUT);//Rosso
  pinMode(3, OUTPUT);//Verde
  pinMode(11, OUTPUT);//BLU

  TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
  TCCR2B = _BV(CS22);
  
  OCR2A = 0;//BLU  PWM from 0-255     pin 3
  OCR2B = 0;//GREEN PWM from 0-255  pin 11

For the RED i'm using this one... but it dosn't work!! It always stays lightned!
Code:
 TCCR0A |= (1<<COM0A1 )|(1<<WGM01)|(1<<WGM00);
  TCCR0B |= (1<<WGM02)|(1<<CS00);
  OCR0B = 0;//RED WM from 0-255  pin 6


Thankyou for your time!
17  International / Software / Re: Multiplexare dei LED... sfarfallio!! on: August 28, 2013, 07:28:38 am
Ciao ragazzi... sto ancora sbattendo la testa con le porte ma ci sto arrivando in fondo...
Mi sapete dire quale registro è sbagliato nella prima riga??
Code:
  TCCR0A |= (1<<COM0A1 )|(1<<WGM01)|(1<<WGM00);
  TCCR0B |= (1<<WGM02)|(1<<CS00);
  OCR0B = 0;//ROSSO

Anche settando OCR0B a 0 rimane ugualmente acceso!!
18  International / Software / Re: Multiplexare dei LED... sfarfallio!! on: August 27, 2013, 09:33:10 am
Ciao Leo, pilotando le strip led senza multiplexarle sui 490Hz non ho problemi...
Invece se le utilizzo accendendole una per volta per cambiare il colore molto velocemente non funziona! Ho dovuto impostare gli Hz massimi a 31250 altrimenti sfarfallava tutto...

Al momento anche se con un lieve sfarfallio funziona tutto tranne la libreria VirtualWire!!
Come provo a modificare i registri OCR per impostare il PWM questa smette di funzionare!!
idee?

Il codice è questo se può servire!!

Grazie mille per l'aiuto!

Code:
#include <VirtualWire.h>
#define BINARY(a,b,c,d,e,f,g,h)  (a<<7|b<<6|c<<5|d<<4|e<<3|f<<2|g<<1|h)

boolean SettingMinTime = false;
int mintimeon = 100;
void setup()
{
  TCCR1A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
  TCCR1B = _BV(CS22);

  TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
  TCCR2B = _BV(CS22);

  TCCR1A = TCCR1A & 0b11111000 | 0x01;//3
  TCCR2A = TCCR1A & 0b11111000 | 0x01;//4
  TCCR1B = TCCR1B & 0b11111000 | 0x01;//3
 
  Serial.begin(115200); // Debugging only
  Serial.println("setup");
 

  // Controllo Spezzoni 
  pinMode(A3, OUTPUT);
  pinMode(A2, OUTPUT);
  pinMode(A1, OUTPUT);
  pinMode(A0, OUTPUT);
  // RGB
  pinMode(9, OUTPUT);//Verde
  pinMode(10, OUTPUT);//Rosso
  pinMode(11, OUTPUT);//Blu
  pinMode(12, OUTPUT);//Relè
  pinMode(13, OUTPUT);//Debug
  pinMode(A5, INPUT);//Sensore FLash
  digitalWrite(A3, 0);
  digitalWrite(A2, 0);
  digitalWrite(A1, 0);
  digitalWrite(A0, 0);
 
 
  vw_set_ptt_inverted(true); // Required for DR3100
  vw_setup(2000); // Bits per sec
  vw_set_rx_pin(7);
  vw_set_tx_pin(8);
  vw_rx_start();       // Start the receiver PLL running
}

int r[4] = {
  1, 1, 1, 1};
int g[4] = {
  1, 1, 1, 1};
int b[4] = {
  1, 1, 1, 1};

unsigned long timer = 0;
unsigned long timer1 = 0;
int strip = 14;// 14, 15, 16, 17
int wait = 5000;


void loop()
{
 
 
  if ((micros()-timer) > wait){
    //PORTC = 0x00;// Spegne tutti gli analog
    PORTB = BINARY(0,0,0,0,b[(17-strip)],r[(17-strip)],g[(17-strip)],0);//Accende e spegne i pin dell'rgb
    //OCR1B = r[(17-strip)];// 10 rosso   Usando queste 3 funzioni non va la virtualwire!
    //OCR1A = g[(17-strip)];// 9 verde
    //OCR2A = b[(17-strip)];// 11 blu
    PORTC = 1 << (strip-14);//spegne tutti gli analog accendendo solo il pin desiderato

    timer = micros();
    strip++;
    if (strip>17){
      strip = 14;
    }
  }
///*** Gestione dati in ingresso con VW ***/
}
19  International / Software / Re: Multiplexare dei LED... sfarfallio!! on: August 27, 2013, 05:48:33 am
Ciao Leo! Sto facendo qualche prova con i timer del PWM, a quanto mi consigli di mettere la frequenza? E' meglio alta o bassa per il lavoro che devo fare io?
Ad esempio ho provato a mettere il divisore a 1, ottenendo 31250hz e l'alimentatore fischiava come se non ci fosse un domani!

Grazie mille per l'aiuto
20  International / Software / Re: Multiplexare dei LED... sfarfallio!! on: August 27, 2013, 05:05:09 am
Ho provato a mettere un delay(1) fra i due analogWrite.. in effetti funziona... il problema è che le funzione è troppo lenta e come provo a collegare tutte e 4 le strisce flickera un casino... e poi con tutti quei delay si illuminano meno...

Al momento ho risolto così
Code:
#define BINARY(a,b,c,d,e,f,g,h)  (a<<7|b<<6|c<<5|d<<4|e<<3|f<<2|g<<1|h)

void setup() {        
 /** Blabla */
}

// Struttura Array:

////           S1       S2    S3    S4
/// Rosso
/// Verde
/// Blu

int r[4] = {
  1, 0, 1, 1};
int g[4] = {
  1, 1, 0, 0};
int b[4] = {
  0, 1, 0, 1};

unsigned long timer = 0;
int strip = 14;// i positivi sono sui pin 14, 15, 16, 17
int wait = 4000;

void loop() {
  if ((micros()-timer) > wait){
    //    PORTC = 0x00;// Spegne tutti gli analog
    PORTC = 1 << (strip-14);//spegne tutti gli analog accendendo solo il pin desiderato
    PORTB = BINARY(0,0,0,0,b[(17-strip)],r[(17-strip)],g[(17-strip)],0);//Accende e spegne i pin dell'rgb
    timer = micros();
    strip++;
    if (strip>17){
      strip = 14;
    }
  }
}


Il codice funziona... solo che come vedete non posso usare l'rgb... si riesce ad implementare il PWM così via software agendo sulle porte?
21  International / Software / Re: Multiplexare dei LED... sfarfallio!! on: August 26, 2013, 11:35:26 am
Sto provando a velocizzare tutto usando le PORT... ma sto modificando dei tutorial su internet con scarsi risultati!! Addirittura molti degli esempi proposti se caricati non funzionano >.<

Ad esempio con questo codice:
PORTB &= ~( ( 1 << 1 ) | ( 1 << 2 ) );
Non dovrebbe portare il pin 1 e 2 della PORTB (quindi pin 9-10) ad high?

Grazie mille Leo per la risposta!
22  International / Software / Multiplexare dei LED... sfarfallio!! on: August 26, 2013, 10:16:16 am
Ciao ragazzi, ho 4 pezzi di striscia led che volevo pilotare mediante l'arduino...
I 4 spezzoni hanno i pin R,G,B in comune, quindi le multiplexo alimentanto singolarmente ogni striscia

Il problema è che ho un odioso sfarfallio quando le comando in PWM!!
Se utilizzo questo codice NON ho problemi:
Quote
void loop() {

  digitalWrite(A2, LOW);// Tolgo il positivo alla striscia 1
 digitalWrite(9, 0);// Spengo il Verde
  digitalWrite(10, 1);// Accendo il Rosso

  digitalWrite(A0, HIGH);// Collego il positivo della striscia 0

  delay(4);
  
  digitalWrite(A0, LOW);//  Tolgo il positivo alla striscia 0  
 digitalWrite(10, 0);// Spengo il rosso
  digitalWrite(9, 1); //Accendo il verde

  digitalWrite(A2, HIGH);//  Collego il positivo della striscia 1
  delay(4);
}



Se al posto del "digitalWrite(pin, 1)" metto "analogWrite(pin, 255)" ottengo ugualmente il flicker!!


Quote
void loop() {

  digitalWrite(A2, LOW);// Tolgo il positivo alla striscia 1
 analogWrite(9, 0);// Spengo il Verde
  analogWrite(10, 255);// Accendo il Rosso

  digitalWrite(A0, HIGH);// Collego il positivo della striscia 0

  delay(4);
  
  digitalWrite(A0, LOW);//  Tolgo il positivo alla striscia 0  
 analogWrite(10, 0);// Spengo il rosso
  analogWrite(9, 255); //Accendo il verde

  digitalWrite(A2, HIGH);//  Collego il positivo della striscia 1
  delay(4);
}

Com'è possibile!?

Le strip led sono collegate così: http://imageshack.com/scaled/medium/692/li4t.jpg
23  International / Hardware / Re: Consiglio Progetto Motore 24V e Arduino on: August 25, 2013, 09:28:31 am
Ciao!! Io stavo pensando erroneamente ad un pin settato a "LOW", in questo caso il mio ragionamento era giusto no? Grazie per il chiarimento
24  International / Hardware / Re: Resistenza per Transistor on: August 23, 2013, 03:50:55 pm
Adesso inizia ad essermi più chiaro!!!
Quindi direi che mi semplifico la vita buttandomi su un FET!!
25  International / Hardware / Re: Resistenza per Transistor on: August 23, 2013, 11:22:00 am
Ciao!! Si mi son confuso con il complementare... Il mio é l'NPN!
Come tensione per la resistenza ho calcolato 4.3.. Cioé ho tolto la caduta di 0.7 del transistor... Ho sbagliato?
26  International / Hardware / Re: Consiglio Progetto Motore 24V e Arduino on: August 23, 2013, 08:58:03 am
Anche se il secondo motore fosse a 5v un pin non può "ciucciarsi" tutti quei mA in ingresso... rischia ad ogni modo di romperlo
27  International / Hardware / Resistenza per Transistor on: August 23, 2013, 08:44:08 am
Ciao! Ho un transistor PNP BD243 con cui devo pilotare un carico da circa 1.5A..
Ho fatto il calcolo della resistenza con l'hfe che ho trovato sul datasheet (hfe=30) e mi viene una resistenza neanche da 100ohm!!!

R=4.3/(1.5/30)

Dove sbaglio? Ho provato con una resistenza da 3.3k e sembra funzionare tutto anche se il transistor un po' scalda... è colpa della resistenza sbagliata?
28  Community / Bar Sport / Re: [OT ITA] Lo spamm bar on: August 17, 2013, 05:07:04 am
Nè vps.arduino.cc nè vps2/3.arduino.cc rispondono a quell'ip...
La pagina che restituisce è quella di un webserver a cui viene passato un "host" che per lui non punta a nessun sito (in questo caso il suo ip)
29  International / Hardware / Re: Arduino Segway on: August 17, 2013, 05:03:27 am
L'accelerometro ti restituisce l'accelerazione in g con cui ti stai muovendo sugli assi.
Il giroscopio ti restituisce la velocità angolare, cioè (immagina una circonferenza) angolo al centro percorso fratto tempo
Quindi si chiama angolare ma non è un angolo!!!
30  International / Hardware / Re: RF 433 Mhz... on: August 16, 2013, 03:21:29 pm
Come diceva ratto devi usare la pulseIn() di arduino
Pages: 1 [2] 3 4 ... 53