# Problema com código

**URL:** <https://forum.fazedores.com/t/problema-com-codigo/7688>\
**Category:** Arduino\
**Created:** [Setembro 28, 2020, 2:07am UTC](https://forum.fazedores.com/t/problema-com-codigo/7688 "2020-09-28T02:07:47Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![oliveira\_walber](https://avatars.discourse-cdn.com/v4/letter/o/3da27b/32.png) [@oliveira\_walber](https://forum.fazedores.com/u/oliveira_walber)\
**Post date:** [Setembro 28, 2020, 2:07am UTC](https://forum.fazedores.com/t/problema-com-codigo/7688/1 "2020-09-28T02:07:47Z")

</div>

Boa noite,  
Baixei este código porém ele não está funcionando direito.  
Ele usa um sensor ultrasônico HC-SR04, mas quando ligo os LEDs ligam e o sensor não funciona.  
A minha intenção é de fazer um abjur RGB para colocar no quarto da minha filha, ela fica me cobrando e eu fico dando desculpas para ela porque eu não entendo nada sobre arduino.  
Tem um fórum em outro site que está parado sobre este mesmo problema.

> **[Problema com o código](http://labdegaragem.com/forum/topics/problema-com-o-c-digo)**
>
> Boa noite
> 
> Baixei este código deste post aqui do fórum  http://labdegaragem.com/forum/topics/adaptar-codigo
> este e o código LED\_RGB2.ino
> Porém quando eu carreg…

Este é o código  
#include \<Ultrasonic.h\> //Carrega a biblioteca do sensor ultrassonico

#define pino\_trigger 4 //Define os pinos para o trigger  
#define pino\_echo 5 //Define os pinos para o echo  
#define ledRed 11 //led vermelho  
#define ledGreen 10 //led verde  
#define ledBlue 9 //led azul

float RGB1[3]; //vetor RGB1  
float RGB2[3]; //vetor RGB2  
float INC[3]; //vetor de incremento  
int red, green, blue; //armazena o respectivo valor RGB  
unsigned long tempoON = 0; // Tempo ligado  
unsigned long tempoOFF = 600000; // Tempo desligado  
bool flag = false; // Controle de liberacao  
Ultrasonic ultrasonic(pino\_trigger, pino\_echo); //Inicializa o sensor nos pinos definidos acima

//------------------------------------------------  
void setup()  
{  
Serial.begin(115200);  
randomSeed(analogRead(0)); //gera números aleatórios a partir da semente lida em A0 (ruído analógico)  
RGB1[0] = 0; //Valores RGB iniciam em zero  
RGB1[1] = 0;  
RGB1[2] = 0;  
RGB2[0] = random(256); //Valores RGB aleatórios entre 0 e 255 (transição de cor que o abajur fará)  
RGB2[1] = random(256);  
RGB2[2] = random(256);  
}  
//------------------------------------------------  
void loop()  
{  
float cmMsec; // Resultado de medida  
long microsec = ultrasonic.timing(); // Variavel de calculo  
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); // Le sensor ultrasson em cm  
Serial.print("Distancia em cm: "); // Imprimi  
Serial.println(cmMsec); // Imprimi  
if (millis() - tempoOFF \> 600000) // Se passaram 10 minutos (10 x 60 x 1000)  
{  
Serial.println("Libera para comparar distancias: "); //Debug  
flag = true; // Libera para acender  
}  
if (flag == true) // Se acender esta liberado  
{  
if (cmMsec \< 100) // Se a distancia e menor que 100 cm  
{  
Serial.println("Libera para carga de tirmers: "); //Debug  
tempoON = millis(); // Recarrega tempo ligado  
tempoOFF = millis(); // Recarrega tempo desligado  
}  
if (millis() - tempoON \< 120000) // Se ainda nao passaram 2 minutos (2 x 60 x 1000)  
{  
Serial.println("Acende: "); //Debug  
acende(); // Acende LEDS  
}  
}  
if (millis() - tempoON \> 120000) // Se ainda nao passaram 2 minutos (2 x 60 x 1000)  
{  
Serial.println("Apaga: "); //Debug  
RGB1[0] = 0; // Apaga LEDS Valores RGB iniciam em zero  
RGB1[1] = 0;  
RGB1[2] = 0;  
analogWrite(ledRed, 0); // Apaga LEDS  
analogWrite(ledGreen, 0);  
analogWrite(ledBlue, 0);  
flag = false;  
}  
}  
//------------------------------------------------  
void acende() // Rotina para controlar os LEDs  
{  
randomSeed(analogRead(0)); //obtém um valor aleatório  
for (int x = 0; x \< 3; x++) //Consulta os valores RGB do início ao fim, e avalia o incremento a ser feito  
{  
INC = (RGB1 - RGB2) / 256;  
}  
for (int x = 0; x \< 256; x++)  
{  
red = int(RGB1[0]); //obtém os valores de vermelho, verde e azul  
green = int(RGB1[1]);  
blue = int(RGB1[2]);  
analogWrite(ledRed, red); //gera o PWM no respectivo pino  
analogWrite(ledGreen, green);  
analogWrite(ledBlue, blue);  
delay(10); //tempo entre as transições  
RGB1[0] -= INC[0]; //subtrai o valor do incremento  
RGB1[1] -= INC[1];  
RGB1[2] -= INC[2];  
}  
for (int x = 0; x \< 3; x++) // gera novos valores aleatórios para a próxima transição  
{  
RGB2 = random(556) - 300; // força a ocorrência das cores primárias  
RGB2 = constrain(RGB2, 0, 255); //mantém RGB2 na faixa entre 0 e 255  
delay(1000);  
}  
}

/\*  
TABELA DE COMBINAÇÃO DE CORES

```
 Vermelho Verde Azul | Cor Resultante
 -------------------------------------------
    255 0 0 | Vermelho
     0 255 0 | Verde
     0 0 255 | Azul
    255 255 0 | Amarelo
     0 255 255 | Ciano
    255 0 255 | Magenta
    255 255 255 | Branco

```

\*/
