top of page

PROJETO 08

Diagrama de Blocos

upg_Exerc08_.png

Figura MD33 - Protótipo de Circuito - LED RGB

exer_led_rgb.png

No projeto, estamos utilizando 3 resistores de 220ohms cada.

Código do Projeto LED RGB

#define RED 4

#define GREEN 5

#define BLUE 6

 

void setup() {

  // put your setup code here, to run once:

  pinMode(RED, OUTPUT);

  pinMode(BLUE, OUTPUT);

  pinMode(GREEN, OUTPUT); 

}

 

void loop() {

  // put your main code here, to run repeatedly:

 for (int a=0;a<=255;a++){

    for (int b=0;b<=255;b++){

      for (int c=0;c<=255;c++){         

             analogWrite(RED, a);

             analogWrite(GREEN, b);

             analogWrite(BLUE, c);

        }     

     }

   } 

}

Na internet podemos encontrar tabelas com as diversas combinações de cores para o LED RGB.

#define pinoR 3

#define pinoG 5

#define pinoB 6

 

//para led anodo comum, caso contrário comentar a linha abaixo e faça ajustes no programa

#define COMMON_ANODE

 

void setup(){ 

  pinMode(pinoR, OUTPUT);

  pinMode(pinoG, OUTPUT);

  pinMode(pinoB, OUTPUT);

}

 

void loop(){

  int Vermelho = 0;

  //ajuste cor para led ANODO (R,+,G,B) 

  #ifdef COMMON_ANODE //SE O LED RGB FOR ANODO COMUM

    int vR = 255;

    int vG = 255;

    int vB = 255;

  #endif

 

  // vermelho

  analogWrite(pinoR, vR-255);

  analogWrite(pinoG, vG-0);

  analogWrite(pinoB, vB-0);

  delay(1000);

  // verde

  analogWrite(pinoR, vR-0);

  analogWrite(pinoG, vG-255);

  analogWrite(pinoB, vB-0);

  delay(1000);

  //azul

  analogWrite(pinoR, vR-0);

  analogWrite(pinoG, vG-0);

  analogWrite(pinoB, vB-255);

  delay(1000);

  //amarelo

  analogWrite(pinoR, vR-255);

  analogWrite(pinoG, vG-255);

  analogWrite(pinoB, vB-0);

  delay(1000);

  //azul aqua

  analogWrite(pinoR, vR-0);

  analogWrite(pinoG, vG-255);

  analogWrite(pinoB, vB-255);

  delay(1000); 

}

Figura MD35 - Protótipo de Circuito - Projeto 08

exer08_servor_prox_rgb_bb.png

Código - Projeto 08

#include <Ultrasonic.h>

#include <Servo.h>

#define servo1 11

#define red 4

#define green 5

#define blue 6

//Define os pinos para o trigger e echo

Ultrasonic sensor1(8,7);

Ultrasonic sensor2(10,9);

Servo s1;

long distanciaSensor1, distanciaSensor2;

int pos1; //posicao do servo

 

void setup() {

  // put your setup code here, to run once:

  Serial.begin(9600);

  pinMode(red, OUTPUT);

  pinMode(blue, OUTPUT);

  pinMode(green, OUTPUT); 

  s1.attach(servo1);

  s1.write(0); // Iniciar servo 1 na posição zero

}

 

void loop() {

  // put your main code here, to run repeatedly:            

  digitalWrite(red, HIGH); 

  digitalWrite(green, LOW);

  digitalWrite(blue, LOW); 

  distanciaSensor1 = sensor1.Ranging(CM); //retorna em CM

  delay(20);  

  while (distanciaSensor1 < 20) {

        for (pos1 = 0; pos1 < 90; pos1++) {

            s1.write(pos1);

            delay(40);       

        }  

        distanciaSensor1 = sensor1.Ranging(CM);    

        distanciaSensor2 = sensor2.Ranging(CM);    

        while (distanciaSensor1 < 20 || distanciaSensor2 < 20) {    

           digitalWrite(red, LOW); 

           digitalWrite(GREEN, HIGH);

           digitalWrite(BLUE, LOW);        

           distanciaSensor1 = sensor1.Ranging(CM);    

           distanciaSensor2 = sensor2.Ranging(CM);    

        }

        digitalWrite(RED, HIGH); 

        digitalWrite(GREEN, LOW);

        digitalWrite(BLUE, LOW);

        for(pos1 = 90; pos1 > 0; pos1--)

        {

          s1.write(pos1);

          delay(40);      

        }   

  }

 

}

Código - Projeto 08 - 1 Sensor

// programa para 1 sensor
#include <Ultrasonic.h>
#include <Servo.h>
#define servo1 11 
#define red 3
#define green 5
#define blue 6
//Define os pinos para o trigger e echo
Ultrasonic sensor1(8,7);
Servo s1;
long distanciaSensor1;
int pos1; //posicao do servo

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(red, OUTPUT);
  pinMode(blue, OUTPUT);
  pinMode(green, OUTPUT);  
  s1.attach(servo1);
  s1.write(0); // Iniciar servo 1 na posição zero
}

void loop() {
  // put your main code here, to run repeatedly: 
  int valor = 255; // para rgb anodo            
  digitalWrite(red, valor-255);  
  digitalWrite(green, valor - 0);
  digitalWrite(blue, valor - 0);  
  distanciaSensor1 = sensor1.Ranging(CM); //retorna em CM 
  delay(20);   
  Serial.println(distanciaSensor1);             
  while (distanciaSensor1 < 20) {
        for (pos1 = 0; pos1 < 90; pos1++) {
            s1.write(pos1);
            delay(40);        
        }   
        distanciaSensor1 = sensor1.Ranging(CM);        
        while (distanciaSensor1 < 20 ) {     
           digitalWrite(red, valor-0);  
           digitalWrite(green, valor-255);
           digitalWrite(blue, valor-0);         
           distanciaSensor1 = sensor1.Ranging(CM);                
        }
        digitalWrite(red, valor-255);  
        digitalWrite(green, valor - 0);
        digitalWrite(blue, valor - 0);  
        for(pos1 = 90; pos1 > 0; pos1--)
        {
          s1.write(pos1);
          delay(40);       
        }    
  }

}

Exercício

Desenvolver um projeto utilizando potenciômetro e um LED RGB.

bottom of page