Códigos Arduíno

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);

}

}