O céu não é o limite

“De onde viemos? Aonde vamos? Viajemos e compreendamos nosso destino (…) Na era dos computadores, temos mais idéias e sonhos. Agora estamos diante do desafio do amanhã. Com o aumento do conhecimento e da tecnologia, nós mudamos nossas vidas e nossos mundos.
Dos confins do espaço às profundezas do mar, nós construímos numa vasta rede eletrônica (…)”

Pierre Badin, teórico

terça-feira, 29 de novembro de 2011

Solar Seeker - Código Arduino

#include // Inclui a biblioteca com as funções de servo motor
Servo ServoV; // cria o objeto ServoV para controlar o servo
int a1 = 0; // Atribui a porta analógica A0 à variável a1
int a2 = 1; // Atribui a porta analógica A1 à variável a2
int a3 = 2; // Atribui a porta analógica A2 à variável a3
int a4 = 3; // Atribui a porta analógica A3 à variável a4

int sensor1, sensor2, sensor3, sensor4, cima, baixo; // Crias as variáveis do tipo inteiro sensor1, sensor2, sensor3, sensor4, cima e baixo.

int i=90; // Cria a variável inteira "i" e atribui a ela o valor de 90. Essa será a posição inicial do servo.

void setup() // Esta função só inicia no começo do programa
{
ServoV.attach(9); // Atribui o pino 9 ao objeto ServoV, isso significa que o pino de controle do servo deverá ser conectato à porta 9 do Arduino.
Serial.begin(9600); // Começa a comunicação serial com 9600 bps de velocidade. É usada para verificar se os valores dos sensores estão corretos
}
void loop() // Essa função é executada infinitamente
{
sensor1 = analogRead(a1)/2; // sensor1 vale o a metade do valor captado pelo Sensor 1 da placa
sensor2 = analogRead(a2)/2; // sensor2 vale o a metade do valor captado pelo Sensor 2 da placa
sensor3 = analogRead(a3)/2; // sensor3 vale o a metade do valor captado pelo Sensor 3 da placa
sensor4 = analogRead(a4)/2; // sensor4 vale o a metade do valor captado pelo Sensor 4 da placa
cima = (sensor1+sensor2)/2; // Variável cima é a média dos sensores 1 e 2 (parte de cima da placa)
baixo = (sensor3+sensor4)/2; // Variável baixo é a média dos sensores 3 e 4 (parte de baixo da placa)
// Aqui começa a lógica do sistema
if (cima > baixo) // Se a luz incidir mais nos sensores de cima do que de baixo
{
i--; // i diminui em 1 grau
ServoV.write(i); // O servo gira para cima 1 grau
delay(100); // Espera 0,1 segundo
if(i<=10) // Se o ângulo for igual ou menor que 10 graus
{
i=10; // Limita o ângulo sempre em 10 graus
}
}
else if (cima < baixo) // Se a luz incidir mais nos sensores de baixo do que de cima
{
i++; // i aumenta em 1 grau
ServoV.write(i); // O servo gira para baixo 1 grau
delay(100); // Espera 0,1 segundo
if(i>=170) // Se o ângulo for igual ou maior que 170 graus
{
i=170; // Limita o ângulo sempre em 170 graus
}
}
else // Caso contrário não faz nada
{
}
Serial.println("Baixo: "); // Escreve "Baixo: " na tela serial
Serial.print(baixo); // Escreve o valor da variável baixo na tela serial
Serial.println("Cima: "); // Escreve "Cima: " na tela serial
Serial.print(cima); // Escreve o valor da variável baixo na tela serial
}

Código Arduino - Solar Seeker