Código em construção (C++)
/*
Código de leitura de um LDR em função da distância da fonte luminosa
conectado com o Excel via código VBA.
Escrito por Izac Martins da Silva
Endereço eletrônico: izacmsilva@gmail.com
*/
/*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx TODO O CODIGO ABAIXO FOI ANULADO PARA USAR UM TESTE XXXXXXXXXXXXXXXXXX
#include <rExcel.h> //biblioteca excel
long idx = 0; // Endereço
int outputTiming = 1000;
const int ledPin = 13; //o numero do pino referente a placa do arduino para o LED
const int ldrPin = A0; // o numero do pino referente a placa do arduino para o LDR
int cont = 1;
float ldrStatus = 0.000;
char valor[16];
rExcel meuExcel;
void setup () {
Serial.begin(9600);
pinMode(ledPin, OUTPUT); // inicialização do pino do LED como saida
pinMode(ldrPin, INPUT); // inicialização do pino do LDR como entrada
meuExcel.clearInput();
}
void loop () {
static unsigned long loopTime = 0;
static unsigned long time1 = 0;
int ret;
loopTime = millis();
ldrStatus = analogRead(ldrPin); //leitura do staus do valor do LDR
float voltLida = ldrStatus; //Setando as variáveis em 0 com 3 casas decimais (a var voltLida é a leitura no pino A0)
float voltagem = 0.000;
float resist = 0.000;
float corrente = 0.000;
float luz = 0.000;
float lux = 0.000;
float pot = 0.000;
float expo = 0.000;
luz = (voltLida / 1023) *100; //Conversão da leitura para percentual de luz
voltagem = (voltLida * 5) / 1023; //converte o valor lido no ldr de 0 a 1023 para volts de 0 a 5
resist = ((5 - voltagem) / voltagem) * 10000; //vem da eq: [i_1 = i_2] logo: [(V_in/(R_ldr+R_fixo)) = V_out/R_fixo] onde: [R_fixo = 10Kohm; V_in = 5V; V_out = voltagem]
corrente = (voltagem / resist) * 1000; //*1000 é para corrente ficar em mA que é a mesma coisa que
expo = (-1.505);
pot = pow((resist/1000),expo);
lux = 2980 * pot;
if ((loopTime - time1) >= outputTiming) {
time1 = loopTime;
meuExcel.write("Example", "K2", luz, 2); // Escreve o percentual de luz medido no pino A0 na célula K2 da planilha Exemplos, com 2 casas decimais
meuExcel.writeIndexed("Example", idx+4, 1,"%date%"); // Escreve %date% (data atual) para planilha 'Example' linha 'idx+11' coluna '1'
meuExcel.writeIndexed("Example", idx+4, 2,"%time%"); // Escreve %time% (hora atual) para planilha 'Example' linha 'idx+11' coluna '2'
meuExcel.writeIndexed("Example", idx+4, 3, idx+1); // Escreve idx para planilha 'Example' linha 'idx+11' coluna'3'
meuExcel.writeIndexed("Example", idx+4, 4, voltagem, 3); // Escreve o valor da tensão para planilha 'Example' linha 'idx+11' coluna '4' com 3 casas decimais
meuExcel.writeIndexed("Example", idx+4, 5, corrente, 3); // Escreve o valor da corrente para planilha 'Example' linha 'idx+11' coluna '5' com 3 casas decimais
meuExcel.writeIndexed("Example", idx+4, 15, idx+1); // Escreve idx para planilha 'Example' linha 'idx+11' coluna'15'
meuExcel.writeIndexed("Example", idx+4, 16, luz, 3); // Escreve o valor do percentual de luz para planilha 'Example' linha 'idx+11' coluna '16' com 3 casas decimais
meuExcel.writeIndexed("Example", idx+4, 17, resist/1000, 3);// Escreve o valor da resistência para planilha 'Example' linha 'idx+11' coluna '17' com 3 casas decimais
meuExcel.writeIndexed("Example", idx+4, 18, lux, 3); // Escreve o valor da luminosidade em Lux para planilha 'Example' linha 'idx+11' coluna '18' com 3 casas decimais
idx++;
}
if (idx > 63) {
meuExcel.clear("Example","A4:E63"); // Limpa todas as celulas na area A11:F70 da planilha 'Example'
meuExcel.clear("Example","O4:Q63");
meuExcel.clear("Example","k2:k2");
idx = 0;
}
if (ldrStatus <=450) { // checar se o status do LDR é <=300 se for, o LDR passa para HIGH
digitalWrite(ledPin, HIGH); //Ligar LED
}
else {
digitalWrite(ledPin, LOW); //Desligar LED
}
delay(1500);
}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*/
//#define pinEnableMotorA 5 //Porta Digital PWM~
#define pinSentido1MotorA 3
#define pinSentido2MotorA 2
int rot;
int cont;
unsigned long delayMudanca;
void setup() {
cont = 0;
rot = 0;
Serial.begin(9600);
//pinMode(pinEnableMotorA, OUTPUT);
pinMode(pinSentido1MotorA, OUTPUT);
pinMode(pinSentido2MotorA, OUTPUT);
}
void loop() {
if (cont <= 5 && rot == 0) {
//analogWrite(pinEnableMotorA, 255);
digitalWrite(pinSentido1MotorA, LOW);
digitalWrite(pinSentido2MotorA, HIGH);
Serial.println("rotação");
cont++;
delay(500);
if (cont == 5) {
rot = 1;
cont = 0;
}
}else if (cont <= 5 && rot == 1) {
//analogWrite(pinEnableMotorA, 255);
digitalWrite(pinSentido1MotorA, HIGH);
digitalWrite(pinSentido2MotorA, LOW);
Serial.print("outa rotação");
cont++;
delay(500);
}else { // desliga
Serial.print("parado");
//analogWrite(pinEnableMotorA, 0);
digitalWrite(pinSentido1MotorA, LOW);
digitalWrite(pinSentido2MotorA, LOW);
}
}