/* * Codigo para testar led RGB * Ativa as cores principais dos leds em sua intensidade maxima e as misturas entre elas * Baseado no exemplo constante no site do Arduino * Jeronimo Avelar Filho <jeronimo@blogdoje.com.br> */ // Saida int greenPin = 6; // conectado ao led verde no pino 09 int bluePin = 9; // conectado ao led azul no pino 10 int redPin = 5; // conectado ao led vermelho no pino // Variaveis do Programa int wait = 500; // 500 ms menor valor = transicoes rapidas int i ; void setup() { pinMode(redPin, OUTPUT); // configura os pinos como saida pinMode(greenPin, OUTPUT); // não é necessario no Arduino007 pinMode(bluePin, OUTPUT); i = 1 ; } // Main program void loop() { switch (i) { // case 1: // Vermelho ativaRgb(255,0,0) ; break; case 2: // Verde ativaRgb(0,255,0) ; break; case 3: // Azul ativaRgb(0,0,255) ; break; case 4: // Amarelo ativaRgb(255,255,0); break; case 5: // Cyano ativaRgb(0,255,255) ; break; case 6: // Magenta ativaRgb(255,0,255) ; break; case 7: // Branco ( todos os leds acessos) ativaRgb(255,255,255); break; } delay(wait) ; i=i+1 ; if( i > 7) i= 1 ; } void ativaRgb(int redVal,int greenVal, int blueVal) { 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 } |
int state = 1;
int redVal = 0;
int greenVal = 0;
int blueVal = 0;
unsigned long previousMillis = millis();
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:
................
case 7:
{
if(redVal < 255){
redVal++;
blueVal++;
}else state = 8;
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
}
void setup(){
int state = 1;
case 1: // Vermelho
int redVal = 255;
int greenVal = 0;
int blueVal = 0;
break;
case 2: // Verde
int redVal = 0;
int greenVal = 255;
int blueVal = 0;
break;
case 3: // Azul
int redVal = 0;
int greenVal = 0;
int blueVal = 255;
break;
case 4: // Amarelo
int redVal = 255 ;
int greenVal = 255;
int blueVal = 0;
break;
case 5: // Cyano
int redVal = 0;
int greenVal = 255;
int blueVal = 255;
break;
case 6: // Magenta
int redVal = 255;
int greenVal = 0;
int blueVal = 255;
break;
case 7: // Branco ( todos os leds acessos)
int redVal = 255;
int greenVal = 255;
int blueVal = 255;
break;
}
void loop(){
unsigned long previousMillis = millis();
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 7:
{
if(redVal < 255){
redVal++;
blueVal++;
}else state = 8;
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
}
Eu não estou a perceber onde é que vou indicar os estados
void setup(){
int state = 1;
}
void loop(){
unsigned long previousMillis = millis();
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
}
Passo o int state = 1; Para o inicio de tudo. Mas continua com erros :(Errado.
unsigned long previousMillis = millis();
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
#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
}
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.
#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
}
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
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
}
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
}
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
}
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
}
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
}
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
}
case 7:
{
if(redVal < 255){redVal++;blueVal++; greenVal++;}
else state = 1;
}
}
}
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
}
#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(){
Serial.begin(9600);
}
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
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(redVal == 255){ redVal--; }
if(redVal == 0){ redVal = 0; }
if(redVal < 20){ greenVal++; }
if(greenVal == 250){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
Serial.print("vermelho");
Serial.print(redVal);
Serial.print("/t verde");
Serial.print(greenVal);
Serial.print("/t azul");
Serial.print(blueVal);
}
#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(){
Serial.begin(9600);
}
void loop(){
unsigned long currentMillis;
currentMillis = millis();
//LED LED LED SOLTO **************************************************************
if(currentMillis - previousMillis > 10) { // Se quiseres fazer o update a cada 500ms
previousMillis = currentMillis; // salvas o novo valor de tempo
switch(state){
case 1:
if(blueVal >0) {blueVal--;}
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(redVal < 30){ greenVal++; }
if(redVal > 0){ redVal--; }
else state = 3;
break;
case 3:
if(greenVal < 255){ greenVal++; }
else state = 4;
break;
case 4:
if(greenVal < 30){ blueVal++; }
if(greenVal > 0){ greenVal--; }
else state = 5;
break;
case 5:
if(blueVal < 255) {blueVal++;}
else state = 6;
break;
case 6:
if(blueVal < 30) {greenVal++;}
if(blueVal < 30) {redVal++;}
if(blueVal > 0){ blueVal--; }
else state = 7;
break;
case 7:
if(redVal < 255) {redVal++;}
if(greenVal < 255) {greenVal++; }
else state = 8;
break;
case 8:
if(greenVal >30){greenVal--;}
if(redVal < 30) {blueVal++;}
if(redVal > 0) {redVal--;}
else state = 9;
break;
case 9:
if(blueVal < 255) {blueVal++;}
if(greenVal < 255) {greenVal++; }
else state = 10;
break;
case 10:
if(blueVal > 30) {blueVal--;}
if(greenVal < 30) {redVal++;}
if(greenVal > 0) {greenVal--;}
else state = 11;
break;
case 11:
if(redVal < 255) {redVal++;}
if(blueVal < 255) {blueVal++;}
else state = 12;
break;
case 12:
if(redVal >0) {redVal--;}
if(blueVal >0) {blueVal--;}
if(redVal<30) {state=1;}
break;
}
}
analogWrite(redPin, redVal);
analogWrite(greenPin, greenVal);
analogWrite(bluePin, blueVal);
Serial.print("vermelho= ");
Serial.print(redVal);
Serial.print("\t verde = ");
Serial.println(greenVal);
Serial.print("\t azul = ");
Serial.println(blueVal);
}
int RedVal=1;
int BlueVal=1;
int GreenVal=1;
int redPin=9;
int bluePin=11;
int greenPin=10;
int i=1;
void setup() {
//Serial.begin(9600);
}
void loop() {
analogWrite(redPin,RedVal);
analogWrite(bluePin,BlueVal);
analogWrite(greenPin,GreenVal);
RedVal =((i<255)*i)+((i>=255)*255)+((i>511)*(512-i))+((i>766)*(i-766))+((i>=1276)*(i-1276))+((i>1530)*(1530-i))+((i>1786)*(1786-i));
GreenVal =(i<256)*(1)+(i>255)*(i-255)+(i>510)*(510-i)+(i>1020)*(1020-i)+(i>1274)*(i-1274)+(i>1530)*(i-1531)+(i>1785)*(3571-(2*i));
BlueVal =(i<764)*(1)+(i>765)*(i-765)+(i>1020)*(1020-i)+(i>1786)*(1786-i);
if(i>2040){
i = 1;
}
i++;
delay(30);
}