O Cérebro é um robô que capta estímulos externos e a partir destes estímulos ele irá gerar respostas visuais. O cérebro é dividido em quatro áreas, cada uma dessas áreas se resume a um sentido, que pode ser visão, tato, olfato, audição. Neste último encontro nós trabalhamos nas partes da visão e do tato.  


VISÃO

Na parte da visão nós testamos o LDR em função do fade, neste caso quanto mais luz captada pelo LDR maior o brilho dos LEDs. Nós usamos cinco LDRs e um LED, e programamos de forma que apenas o LDR que captasse a maior luminosidade controlasse o fade do LED.

Código Utilizado  

// Iniciamos declarando as variáveis do código

int ldr0=A0, ldr1=A1, ldr2=A2, ldr3=A3, ldr4=A4, ldrVal;

int LDRled = 11;

 void setup(){

// Em setup declaramos que o LDRled é OUTPUT, o arduino está enviando o sinal a ele, Serial.begin inicia a comunicação do sensor com o arduino

 Serial.begin(9600);    

 pinMode(LDRled, OUTPUT);

 }

 

 void loop(){

  // A função Serial.print vai imprimir os valores dos LDRs

   Serial.println(analogRead(ldr0));

   Serial.println(analogRead(ldr1));

   Serial.println(analogRead(ldr2));

   Serial.println(analogRead(ldr3));

   Serial.println(analogRead(ldr4));

  

 // A função max compara dois valores e retorna apenas o maior, desta forma apenas o maior LDR vai controlar o fade do LED

   ldrVal = max(analogRead(ldr0), analogRead(ldr1));

   ldrVal = max(ldrVal, analogRead(ldr2));

   ldrVal = max(ldrVal, analogRead(ldr3));

   ldrVal = max(ldrVal, analogRead(ldr4));

  

   Serial.println(ldrVal);

   // Em constrain reestabelecemos o valor mínimo e máximo de LdrVAL, agora é                                         de 200 a 900

   ldrVal = constrain(ldrVal, 200, 900);

   // Map cria uma proporção entre os limites iniciais(200, 900) e os limites        futuros(0, 255), logo o resultado desta função será um valor entre 0 e 255 em relação aos limites iniciais 200  e 900.

  ldrVal = map (ldrVal, 200, 900, 0, 255);

   // Escreve o valor de ldrVal em LDRled e imprimi na tela

   analogWrite(LDRled, ldrVal);

   Serial.print(ldrVal);

   Serial.println("modified");

   analogWrite(LDRled, ldrVal);

   delay(100);

 }

 

TATO

Na parte do tato realizamos o fade em função do sensor ultrassom, neste caso quanto menor a distância medida pelo ultrassom maior o brilho dos LEDs. Utilizamos dois Ultrassons e um LED, o fade do LED será controlado pelos dois ultrassons a partir de uma média entre os dois.  

Código utilizado

int ledultra = 9;  //Iniciamos declarando as variáveis do programa        

const int ultra1 = 7, ultra2 = 8;

 

void setup() {

  // Serial.begin inicia a comunicação do sensor com o arduino e em pinMode declaramos que                                ledultra é OUTPUT, ele irá receber informação do arduino

  Serial.begin(9600);

  pinMode(ledultra, OUTPUT);

}

 

void loop()

{

  long duration1, duration2, media, cm;

 

  //Calcula a distância captada de ultra1

  pinMode(ultra1, OUTPUT);

  digitalWrite(ultra1, LOW);

  delayMicroseconds(2);

  digitalWrite(ultra1, HIGH);

  delayMicroseconds(5);

  digitalWrite(ultra1, LOW);

  pinMode(ultra1, INPUT);

  duration1 = pulseIn(ultra1, HIGH);

 

 // Calcula a distância captada de ultra2

 pinMode(ultra2, OUTPUT);

  digitalWrite(ultra2, LOW);

  delayMicroseconds(2);

  digitalWrite(ultra2, HIGH);

  delayMicroseconds(5);

  digitalWrite(ultra2, LOW);

  pinMode(ultra2, INPUT);

  duration2 = pulseIn(ultra2, HIGH);

 

  // Declara o valor de media

  media = (duration1+duration2)/2;

 

  cm = microsecondsToCentimeters(media); // Converte tempo em distância

 

  Serial.print(cm); // Imprime o valor de cm

  Serial.print("cm");

  Serial.println();

 

  cm = constrain(cm, 0, 200);

  // Em constrain restabelecemos os limites de cm agora de 0 a 200

  cm = map(cm, 0, 200, 255, 0);

  //Em map criamos uma proporção entres os limites iniciais de cm(0, 200) e os novos limites(255, 0)  

  // Isto é feito em função do fade do LED que varia entre 0 e 255 desta forma quando um objeto estiver a dois metros do ultrassom o LED se manterá apagado,e quando a distância entre um objeto e o ultrassom for de 0 cm o LED brilhará o máximo

 

  // Imprime os valores calculados em cm

  analogWrite(ledultra, cm);

 

  Serial.print(cm);

  Serial.print("modified");

  Serial.println();

 

  delay(100);

}

 

// 29 microssegundos equivale a 1 cm, dividindo o valor captado pelo ultrassom por 29 estaremos convertendo em centímetros e no final dividimos por 2 porque queremos apenas a distância captada pelo sensor

long microsecondsToCentimeters(long microseconds)

{

  return microseconds / 29 / 2;

}


Atividades recentes