system
#1
o codigo abaixo alterna as cores de led usando sistema RGB sao usados leds verm,azul,verde
Estou com duvida em um trecho:
float rgb1[3],rgb2[3],inc[3];
int red,green,blue;
int redpin=11,greenpin=10,bluepin=9;
void setup()
{
randomSeed(analogRead(0));
rgb1[0]=0;
rgb1[1]=0;
rgb1[2]=0;
rgb2[0]=random(256);
rgb2[1]=random(256);
rgb2[2]=random(256); }
void loop()
{
randomSeed(analogRead(0));
for(int x=0;x<3;x++) //aqui ele subtrai 0 de um numero aleatorio ,mas nao entendo a necessidade
{ // da divisao /256
inc[x]=(rgb1[x]-rgb2[x])/256; }
for(int x=0;x<256;x++)
{
red=int(rgb1[0]);
green=int(rgb1[1]);
blue=int(rgb1[2]);
analogWrite(redpin,red);
analogWrite(greenpin,green);
analogWrite(bluepin,blue);
delay(100);
rgb1[0]-=inc[0];
rgb1[1]-=inc[1];
rgb1[2]-=inc[2];
}
for(int x=0;x<3;x++)
{
rgb2[x]=random(556)-300;
rgb2[x]=constrain(rgb2[x],0,255);
delay(1000);
}
}
system
#2
Não é que ele subtrai 0.
0 é um dos valores que pode estar dentro das variáveis que utiliza x.
Se você olhar no for(), há um comando que diz para ele somar +1 ao x (x++);
Esse valor irá de 0 até 3, mas a condição de verificação para execução da função é de 0 até 2 (x < 3).
Isto sana suas dúvidas ou ainda está?
A divisão por 256 serve para que a var. inc fique com valores entre 0 e 1 (ou entre 0 e -1).
system
#4
luisilva entendi grato.
gscndelari
GSCANDELARI:
Não é que ele subtrai 0.
0 é um dos valores que pode estar dentro das variáveis que utiliza x.
Se você olhar no for(), há um comando que diz para ele somar +1 ao x (x++);
Esse valor irá de 0 até 3, mas a condição de verificação para execução da função é de 0 até 2 (x < 3).
Isto sana suas dúvidas ou ainda está?
mas o vetor rgb está preenchido por zeros.
Não é o vector rgb que está preenchido por zeros, mas sim o vector rgb1. Como o vector rgb2 tem valores aleatórios, ao fazer a operação:
inc[x]=(rgb1[x]-rgb2[x])/256
supondo que o valor aleatório de rgb2 é 198, o cálculo que estaria a ser executado seria:
inc[x] = (0 - 198) / 256
isto daria -0,7734.
Este valor servirá, no 'for' seguinte para fazer o passo (ou incremento) que é dado ao valor do LED.
Sendo assim, como disse anteriormente, o cálculo serve para achar um valor aleatório entre 0 e 1 (ou como o resultado é negativo, entre 0 e -1).
system
#6
Ok luis eu entendia assim mesmo o que nao entendo é pra que colocar o vetor rgb1? se ele zero bastaria deixar o rgb2 ser divido por 256!!!