Placas solares
Por: Alexandre Neto • 10/12/2015 • Trabalho acadêmico • 347 Palavras (2 Páginas) • 379 Visualizações
Programa para placa solar com voltimetro
no arduino
#include <Servo.h> //incluindo biblioteca para controle do servomotor
int l1 = 0; //Pino analógico em que o LDR1 está conectado
int vl1 = 0; //Variável usada para ler o valor do LDR1
int l2 = 1; //Pino analógico em que o LDR2 está conectado
int vl2 = 1; //Variável usada para ler o valor do LDR2
int pos = 90; // Posição inicial para o servo começar
Servo motor; //Criando um objeto da classe Servo
float tensaoA5; //Tensão que chena na entrada do arduino depois que passa no divisor de tensão
float aRef=5; //Referência a entrada do arduino que vai de 0v ~ 5v
float relacaoA5=11; //Valor de multipliacação para tranformar a voltage de entrada do arduino para a voltagem real
#define AMOSTRAS 12 //Quantidade de amostra para tirar a media de voltagem correta
void setup() {
Serial.begin(9600); //Ativando o serial monitor
motor.attach(9); //Pino PWM onde o Servo está conectado
}
float lePorta(uint8_t portaAnalogica) { //Tirando a média de 12 amostras para gerar um valor real da voltagem
float total=0;
for (int i=0; i<AMOSTRAS; i++) {
total += 1.0 * analogRead(portaAnalogica);
delay(5);
}
return total / (float)AMOSTRAS;
}
void mostraTensoes() { //função para calcular e mostrar a voltagem
Serial.print("Tensao em A5: ");
Serial.print(tensaoA5 * relacaoA5);
Serial.println ("V");
}
void loop() {
int vl1 = analogRead(l1); //Lendo o valor do LDR1
int vl2 = analogRead(l2); //Lendo o valor do LDR2
motor.write(pos); //Execultando a posição da variável pos no servo
if( vl1 > vl2+200){ //Condição para o servo se movimentar 3º para direita
pos=pos +3;
}
if( vl2 > vl1+200){ //Condição para o servo se movimentar 3º para esquerda
pos=pos -3;
}
tensaoA5 = (lePorta(A5) *
...