collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Alternar leds fazendo um fade entre eles  (Lida 12017 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline joaobernardino

  • Mini Robot
  • *
  • Mensagens: 59
Re: Alternar leds fazendo um fade entre eles
« Responder #15 em: 27 de Outubro de 2010, 23:31 »

 
unsigned long previousMillis = millis();
int redVal = 0;
int greenVal = 0;
int blueVal = 0;

void setup(){
int state = 1;
 
}

void loop(){

unsigned long currentMillis;

currentMillis = millis();
 
if(currentMillis - previousMillis > 500) { // Se quiseres fazer o update a cada 500ms
  previousMillis = currentMillis;  // salvas o novo valor de tempo

  // fazes o que queres de acordo com o estado
  switch(state){
    case 1:
    int redVal = 255;
    int greenVal = 0;
    int blueVal = 0;
    {
      if(redVal < 255) redVal++; // se ainda nao chegámos aos 255, aumenta o valor de redVal
      else state = 2; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 2:
    int redVal = 0;
    int greenVal = 255;
    int blueVal = 0;
    {if(greenVal < 255) greenVal++; // se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 3; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 3:
    int redVal = 0;
int greenVal = 0;
int blueVal = 255;
    {if(blueVal < 255) blueVal++; // se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 3; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 4:
    int redVal = 255;
int greenVal = 255;
int blueVal = 0;
    {if(greenVal < 255) greenVal++; redVal++;// se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 3; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 5:
    int redVal = 0;
int greenVal = 255;
int blueVal = 255;
    {if(greenVal < 255) greenVal++; blueVal++;// se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 3; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 6:
    int redVal = 255;
int greenVal = 0;
int blueVal = 255;
    {if(redVal < 255) redVal++; blueVal++;// se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 3; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
       
  case 7:
  int redVal = 255;
int greenVal = 255;
int blueVal = 255;
    {
      if(redVal < 255){
        redVal++;
        blueVal++;
        greenVal++;
      }else state = 1;
      break;
    }
  }
 
  // Actualizas os valores nos LEDs, independentemente do estado
  analogWrite(redPin, redVal); // Escreve o valor do PWM do led vermelho
  analogWrite(greenPin, greenVal); // Escreve o valor do PWM do led verde
  analogWrite(bluePin, blueVal); // Escreve o valor do PWM do led azul
}

Offline joaobernardino

  • Mini Robot
  • *
  • Mensagens: 59
Re: Alternar leds fazendo um fade entre eles
« Responder #16 em: 27 de Outubro de 2010, 23:32 »
Bem já mereces um prémio. xD O que falta agora?

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Alternar leds fazendo um fade entre eles
« Responder #17 em: 27 de Outubro de 2010, 23:36 »
Lol... Agora falta tirar aquelas declarações a seguir a cada case...

Offline joaobernardino

  • Mini Robot
  • *
  • Mensagens: 59
Re: Alternar leds fazendo um fade entre eles
« Responder #18 em: 27 de Outubro de 2010, 23:38 »
ok, continua com erros

Código: [Seleccione]
#define redPin 5;
#define grennPin 6;
#define blue pin 9;
 
unsigned long previousMillis = millis();
int redVal = 0;
int greenVal = 0;
int blueVal = 0;

void setup(){
int state = 1;
 
}

void loop(){

unsigned long currentMillis;

currentMillis = millis();
 
if(currentMillis - previousMillis > 500) { // Se quiseres fazer o update a cada 500ms
  previousMillis = currentMillis;  // salvas o novo valor de tempo

  // fazes o que queres de acordo com o estado
  switch(state){
    case 1:
 
    {
      if(redVal < 255) redVal++; // se ainda nao chegámos aos 255, aumenta o valor de redVal
      else state = 2; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 2:
   
    {if(greenVal < 255) greenVal++; // se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 3; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 3:

    {if(blueVal < 255) blueVal++; // se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 3; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 4:

    {if(greenVal < 255) greenVal++; redVal++;// se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 3; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 5:

    {if(greenVal < 255) greenVal++; blueVal++;// se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 3; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 6:

    {if(redVal < 255) redVal++; blueVal++;// se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 3; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
       
  case 7:
 
    {
      if(redVal < 255){
        redVal++;
        blueVal++;
        greenVal++;
      }else state = 1;
      break;
    }
  }
 
  // Actualizas os valores nos LEDs, independentemente do estado
  analogWrite(redPin, redVal); // Escreve o valor do PWM do led vermelho
  analogWrite(greenPin, greenVal); // Escreve o valor do PWM do led verde
  analogWrite(bluePin, blueVal); // Escreve o valor do PWM do led azul
}

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Alternar leds fazendo um fade entre eles
« Responder #19 em: 27 de Outubro de 2010, 23:41 »
Já tentaste ler o erro?  ;D
Eu vejo mais um erro sintático. Vejo outros, mas isso tem a ver com o resultado que vais obter...  :)

Offline joaobernardino

  • Mini Robot
  • *
  • Mensagens: 59
Re: Alternar leds fazendo um fade entre eles
« Responder #20 em: 27 de Outubro de 2010, 23:42 »
O programa menciona que o erro está aqui switch(state){ ????

Offline joaobernardino

  • Mini Robot
  • *
  • Mensagens: 59
Re: Alternar leds fazendo um fade entre eles
« Responder #21 em: 27 de Outubro de 2010, 23:45 »
Já resolvi esse. Falta um

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Alternar leds fazendo um fade entre eles
« Responder #22 em: 27 de Outubro de 2010, 23:45 »
Será que dentro da função loop() ele sabe o que é a variável "state"?

Lembra-te do que disse atrás... Se a declarares dentro de uma função, ela só está disponível dentro dessa função.
Mais concretamente, se declarares o state no setup(), só tens essa variável disponível no setup(). Quando a função acaba, essa variável é apagada da memória.

Seguindo a mesma lógica, vais ter de mudar a declaração para um nível mais acima (fora das funções)

Offline joaobernardino

  • Mini Robot
  • *
  • Mensagens: 59
Re: Alternar leds fazendo um fade entre eles
« Responder #23 em: 27 de Outubro de 2010, 23:47 »
Já está resolvido, mas falta outra coisa que não chego lá

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Alternar leds fazendo um fade entre eles
« Responder #24 em: 27 de Outubro de 2010, 23:49 »
Já está resolvido, mas falta outra coisa que não chego lá
Agora também não estou a ver... Amigo, se não me disseres qual é o erro que aparece, não te consigo ajudar.

Offline joaobernardino

  • Mini Robot
  • *
  • Mensagens: 59
Re: Alternar leds fazendo um fade entre eles
« Responder #25 em: 27 de Outubro de 2010, 23:51 »
codigo_led.cpp: In function 'void loop()':
codigo_led:77: error: expected `)' before ';' token
codigo_led:77: error: expected primary-expression before ',' token
codigo_led:77: error: expected `;' before ')' token
codigo_led:78: error: 'greenPin' was not declared in this scope
codigo_led:79: error: 'bluePin' was not declared in this scope
codigo_led:80: error: expected `}' at end of input

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Alternar leds fazendo um fade entre eles
« Responder #26 em: 27 de Outubro de 2010, 23:55 »
Tens um erro nos defines (nos 3)... descobre ;)

Depois, precisas de incluír chavetas - {} - quando tens mais do que uma instrução dentro de um if (já agora, isto aplica-se a if's, for's, while's, etc...)

Offline joaobernardino

  • Mini Robot
  • *
  • Mensagens: 59
Re: Alternar leds fazendo um fade entre eles
« Responder #27 em: 27 de Outubro de 2010, 23:57 »
no define já tinha reparado. agora está assim e continua a dar erro.

erro

codigo_led.cpp: In function 'void loop()':
codigo_led:77: error: expected `)' before ';' token
codigo_led:77: error: expected primary-expression before ',' token
codigo_led:77: error: expected `;' before ')' token
codigo_led:78: error: expected `)' before ';' token
codigo_led:78: error: expected primary-expression before ',' token
codigo_led:78: error: expected `;' before ')' token
codigo_led:79: error: expected `)' before ';' token
codigo_led:79: error: expected primary-expression before ',' token
codigo_led:79: error: expected `;' before ')' token


Código: [Seleccione]
#define redPin 5;
#define greenPin 6;
#define bluePin 9;
 
unsigned long previousMillis = millis();
int redVal = 0;
int greenVal = 0;
int blueVal = 0;
int state = 1;

void setup(){

 
}

void loop(){

unsigned long currentMillis;

currentMillis = millis();
 
if(currentMillis - previousMillis > 500)  // Se quiseres fazer o update a cada 500ms
  previousMillis = currentMillis;  // salvas o novo valor de tempo

  // fazes o que queres de acordo com o estado
  switch(state){
    case 1:
 
    {
      if(redVal < 255){ redVal++; }// se ainda nao chegámos aos 255, aumenta o valor de redVal
      else state = 2; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 2:
   
    {if(greenVal < 255){ greenVal++; }// se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 3; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 3:

    {if(blueVal < 255) {blueVal++;} // se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 4; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 4:

    {if(greenVal < 255) {greenVal++; redVal++;}// se ainda nao chegámos aos 255, aumenta o valor de greenVal
    else state = 5; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 5:

    {if(greenVal < 255) {greenVal++; blueVal++;}// se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 6; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
    case 6:

    {if(redVal < 255) {redVal++; blueVal++;}// se ainda nao chegámos aos 255, aumenta o valor de greenVal
      else state = 7; // se atingiste os 255, mudas para o proximo estado, onde vais decrementar o valor do vermelho
      break;
    }
       
  case 7:
 
    {
      if(redVal < 255){
        redVal++;
        blueVal++;
        greenVal++;
      }else state = 1;
      break;
    }
  }
 
 
  analogWrite(redPin, redVal); // Escreve o valor do PWM do led vermelho
  analogWrite(greenPin, greenVal); // Escreve o valor do PWM do led verde
  analogWrite(bluePin, blueVal); // Escreve o valor do PWM do led azul
}

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Alternar leds fazendo um fade entre eles
« Responder #28 em: 28 de Outubro de 2010, 00:03 »
Continuas a ter erro nos defines
http://www.arduino.cc/en/Reference/Define

Offline joaobernardino

  • Mini Robot
  • *
  • Mensagens: 59
Re: Alternar leds fazendo um fade entre eles
« Responder #29 em: 28 de Outubro de 2010, 00:06 »
Já corrigi já programei e apenas acende o led com 3 cores fracas e não passa dai