Você está na página 1de 4

// PLACA - FÓRMULA-E UFPB

2020***********************************************************************************************
****************************************
// AUTORES:
// JOSÉ HÉLIO
// JUAN ALBURQUERQUE
// ÍTALO SIBALDO
// MARIA PAULA

// BIBLIOTECAS
#include <Adafruit_MLX90614.h> // SENSOR INFRARED
#include <Wire.h> // I2C
#include <SPI.h> // SPI
#include "mcp_can.h" // CAN

//DEFINIÇÃO DE MACROS
#define s_indutivo1 3 // SAÍDA DO SENSOR INDUTIVO 1
#define s_indutivo2 4 // SAÍDA DO SENSOR INDUTIVO 2

#define BS0 5 // BOARD SELECT 0


#define BS1 6 // BOARD SELECT 1

// OBJETOS SENSOR INFRERED


Adafruit_MLX90614 mlx_FD = Adafruit_MLX90614(0x7A);
Adafruit_MLX90614 mlx_FE = Adafruit_MLX90614(0x5C);
Adafruit_MLX90614 mlx_TD = Adafruit_MLX90614(0x5B);
Adafruit_MLX90614 mlx_TE = Adafruit_MLX90614(0x7B);

// CONFIGURAÇÃO DO PINO ESCRAVO PARA COMUNICAÇÃO SPI


const int SPI_CS_PIN = 9;
MCP_CAN CAN(SPI_CS_PIN);

// VARIÁVEIS GLOBAIS
const int CANid0 = 0x7FA; // IDENTIFICADOR PARA ROTAÇÃO DO PNEU TRASEIRO DIREITO
const int CANid1 = 0x7FB; // IDENTIFICADOR PARA ROTAÇÃO DO PNEU TRASEIRO ESQUERDO
const int CANid2 = 0x7FC; // IDENTIFICADOR PARA TEMPERATURA DO DISCO DE FREIO TRASEIRO ESQUERDO
const int CANid3 = 0x7FD; // IDENTIFICADOR PARA ROTAÇÃO DO PNEU DIANTEIRO DIREITO
const int CANid4 = 0x7FE; // IDENTIFICADOR PARA ROTAÇÃO DO PNEU DIANTEIRO ESQUERDO
const int CANid5 = 0x7FF; // IDENTIFICADOR TEMPERATURA DO DISCO DE FREIO DIANTEIRO DIREITO

float t_codigo; // TEMPO A PARTIR DO ACIONAMENTO DO ARDUINO


float t = t_codigo; // CONTADOR AUXILIAR DE "t_giro" <t = t_codigo>
float t_giro; // TEMPO EM QUE O PNEU COMPLETOU UMA VOLTA

// FUNÇÃO "zeroC" (COMPLETAR STRING COM ZEROS A ESQUERDA)


String zeroC(String texto, int L)
{
while (texto.length() < L)
{
texto = "0" + texto;
}
return (texto);
}

// FUNÇÃO "tempo"
void tempo()
{
t_codigo = micros();
t_giro = t_codigo - t;
t = t_codigo;
}

// FUNÇÃO "setup"
void setup()
{
while (CAN_OK != CAN.begin(CAN_500KBPS)) // INICIALIZANDO CAN COM 500KBPS DE BAUD RATE
{
//Serial.println("CAN BUS Shield init fail");
//Serial.println(" Init CAN BUS Shield again");
//delay(100);
}

pinMode(s_indutivo1, INPUT);
pinMode(s_indutivo2, INPUT);
pinMode(BS0, INPUT);
pinMode(BS1, INPUT);

// FUNÇÃO "loop"
void loop()
{
char dataCAN0[8]; // DADO REDE CAN - ROTAÇÃO DO PNEU TRASEIRO DIREITO
char dataCAN1[8]; // DADO REDE CAN - ROTAÇÃO DO PNEU TRASEIRO ESQUERDO
char dataCAN2[8]; // DADO REDE CAN - TEMPERATURA DO DISCO DE FREIO TRASEIRO ESQUERDO
char dataCAN3[8]; // DADO REDE CAN - ROTAÇÃO DO PNEU DIANTEIRO DIREITO
char dataCAN4[8]; // DADO REDE CAN - ROTAÇÃO DO PNEU DIANTEIRO ESQUERDO
char dataCAN5[8]; // DADO REDE CAN - TEMPERATURA DO DISCO DE FREIO DIANTEIRO DIREITO

String data0; // ROTAÇÃO DO PNEU TRASEIRO DIREITO


String data1; // ROTAÇÃO DO PNEU TRASEIRO ESQUERDO
String data2; // TEMPERATURA DO DISCO DE FREIO TRASEIRO ESQUERDO
String data3; // ROTAÇÃO DO PNEU DIANTEIRO DIREITO
String data4; // ROTAÇÃO DO PNEU DIANTEIRO ESQUERDO
String data5; // TEMPERATURA DO DISCO DE FREIO DIANTEIRO DIREITO

float RPDT; // ROTAÇÃO DO PNEU TRASEIRO DIREITO


float RPET; // ROTAÇÃO DO PNEU TRASEIRO ESQUERDO
float TDET; // TEMPERATURA DO DISCO DE FREIO TRASEIRO ESQUERDO
float RPDD; // ROTAÇÃO DO PNEU DIANTEIRO DIREITO
float RPED; // ROTAÇÃO DO PNEU DIANTEIRO ESQUERDO
float TDDD; // TEMPERATURA DO DISCO DE FREIO DIANTEIRO DIREITO
float TDED; // TEMPERATURA DO DISCO DE FREIO DIANTEIRO ESQUERDO
float TDDT; // TEMPERATURA DO DISCO DE FREIO TRASEIRO DIREITO

char bs0 = digitalRead(BS0);


char bs1 = digitalRead(BS1);

char BS; // SELETOR DE PLACA

if (!bs0 && !bs1) BS = 'A';


if (!bs0 && bs1) BS = 'B';
if (bs0 && !bs1) BS = 'C';

switch(BS)
{
case ('A'): // PLACA FRONTAL
----------------------------- INDUTIVO DIANTEIRO DIREITO---------------------------
if(digitalRead(s_indutivo1== HIGH) int b=1;
if(digitalRead(s_indutivo1== LOW & b==1){
int c++;
b=0;
}
if(c==13){
tempo();
RPDD=60/(t_giro/1000000);
c=1;
}
----------------------------- INDUTIVO DIANTEIRO ESQUERDO---------------------------
if(digitalRead(s_indutivo2== HIGH) b=1;
if(digitalRead(s_indutivo2== LOW & b==1){
c++;
b=0;
}
if(c==13){
tempo();
RPED=60/(t_giro/1000000);
c=1;
}

----------------------------- INFRAREDS---------------------------------------------
TDDD= mlx_FD.readObjectTempC(0x7A);
TDDD= mlx_FE.readObjectTempC(0x5C);
break;

case ('B'): // PLACA TRASEIRA DIREITA


----------------------------- INDUTIVO ---------------------------------------------
if(digitalRead(s_indutivo1== HIGH) int b=1;
if(digitalRead(s_indutivo1== LOW & b==1){
int c++;
b=0;
}
if(c==13){
tempo();
RPDT=60/(t_giro/1000000);
c=1;
}
----------------------------- INFRARED----------------------------------------------
TDDT= mlx_TD.readObjectTempC(0x5B);
break;

case ('C'): // PLACA TRASEIRA ESQUERDA


----------------------------- INDUTIVO ---------------------------------------------
if(digitalRead(s_indutivo1== HIGH) int b=1;
if(digitalRead(s_indutivo1== LOW & b==1){
int c++;
b=0;
}
if(c==13){
tempo();
RPDT=60/(t_giro/1000000);
c=1;
}
----------------------------- INFRARED----------------------------------------------
TDET= mlx_TE.readObjectTempC(0x7B);
break;
}
}

Você também pode gostar