7
#include "C:\LASD\Saulo Lucena Vidal de Negreiros\projeto\PAINEL SOLAR imp\PS.h" #include "LCD_16x2_lib_Placa_velha.c" #include "math.h" //Definindo os pinos dos servos como pinos D1 e D2, respectivamente #define SERVO1_PIN PIN_D1 #define SERVO2_PIN PIN_D2 // Variáveis long ldr1=0,ldr2=0,ldr3=0,ldr4=0; // leitura dos fotoresistores long tensao; // leitura de tensão do painel fotovoltáico // Largura de pulsos para o "PWM" dos servos motores int16 largura_pulso1=1500,largura_pulso2=1500; // para começar na posição de 90º int i; int flag_tens; float tensvolt; #int_TIMER1 void TIMER1_isr(void) { } void main() { setup_adc_ports(AN0_AN1_AN2_AN3_AN4); // utilizou-se 5 canais adc

Código Projeto Lasd

  • Upload
    saulo

  • View
    2

  • Download
    0

Embed Size (px)

DESCRIPTION

Lasd

Citation preview

Page 1: Código Projeto Lasd

#include "C:\LASD\Saulo Lucena Vidal de Negreiros\projeto\PAINEL SOLAR imp\PS.h"

#include "LCD_16x2_lib_Placa_velha.c"

#include "math.h"

//Definindo os pinos dos servos como pinos D1 e D2, respectivamente

#define SERVO1_PIN PIN_D1

#define SERVO2_PIN PIN_D2

// Variáveis

long ldr1=0,ldr2=0,ldr3=0,ldr4=0; // leitura dos fotoresistores

long tensao; // leitura de tensão do painel fotovoltáico

// Largura de pulsos para o "PWM" dos servos motores

int16 largura_pulso1=1500,largura_pulso2=1500; // para começar na posição de 90º

int i;

int flag_tens;

float tensvolt;

#int_TIMER1

void TIMER1_isr(void)

{

}

void main()

{

setup_adc_ports(AN0_AN1_AN2_AN3_AN4); // utilizou-se 5 canais adc

setup_adc(ADC_CLOCK_INTERNAL);

setup_psp(PSP_DISABLED);

setup_spi(SPI_SS_DISABLED);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1);

Page 2: Código Projeto Lasd

setup_timer_2(T2_DISABLED,0,1);

setup_comparator(NC_NC_NC_NC);

setup_vref(FALSE);

enable_interrupts(INT_TIMER1);

enable_interrupts(GLOBAL);

ini_lcd_16x2();

delay_ms(100);

while(1)

{

//Leitura da tensão

set_adc_channel(4);

delay_us(20);

tensao=read_adc();

// Setando flag de funcionamento geral

// Caso a tensão esteja baixa, comece as leituras e movimento dos servos

if(tensao<=1000)

{

flag_tens=1;

}

else // fique parado até que a tensão baixe

{

flag_tens=0;

}

Page 3: Código Projeto Lasd

if(flag_tens==1)

{

//Leitura da tensão na divisão do fotoresistor com o resistor de 10kohms

set_adc_channel(0);

delay_us(20);

ldr2=read_adc();

set_adc_channel(1);

delay_us(20);

ldr1=read_adc();

set_adc_channel(2);

delay_us(20);

ldr3=read_adc();

set_adc_channel(3);

delay_us(20);

ldr4=read_adc();

/////Rotacionamento dos servos a cada 0,5 segundos cada um

for(i=1;i<=50;i++)

{

output_high(PIN_D1);

delay_us(largura_pulso1);

output_low(PIN_D1);

Page 4: Código Projeto Lasd

delay_ms(10);

}

for(i=1;i<=50;i++)

{

output_high(PIN_D2);

delay_us(largura_pulso2);

output_low(PIN_D2);

delay_ms(10);

}

///// comparação da luminosidade

// ROTAÇÃO DIÁRIA

if(ldr1>ldr2+10)

{

//virar na direção do ldr2

largura_pulso1=largura_pulso1+10;

//Limitação de rotação dos servos motores

if(largura_pulso1==1610)

{

largura_pulso1=1600;

}

}

if(ldr1==ldr2)

{

//ficar parado

largura_pulso1=largura_pulso1+0;

Page 5: Código Projeto Lasd

}

if(ldr1<ldr2-10)

{

//virar na direção do ldr1

largura_pulso1=largura_pulso1-10;

//Limitação de rotação dos servos motores

if(largura_pulso1==1390)

{

largura_pulso1=1400;

}

}

//// ROTAÇÃO REFERENTE AS ESTAÇÕES

if(ldr3>ldr4+10)

{

//virar na direção do ldr3

largura_pulso2=largura_pulso2+10;

if(largura_pulso2==1610)

{

largura_pulso2=1600;

}

}

if(ldr3==ldr4)

{

//ficar parado

largura_pulso2=largura_pulso2+0;;

}

if(ldr3<ldr4-10)

Page 6: Código Projeto Lasd

{

//virar na direção do ldr4

largura_pulso2=largura_pulso2-10;

if(largura_pulso2==1390)

{

largura_pulso2=1400;

}

}

}

else

{

largura_pulso1=largura_pulso1+0;

largura_pulso2=largura_pulso2+0;

}

//Usado para analisar as variações dos fotoresistores das primeiras montagens

//printf(exibe_lcd,"\fL1=%luL2=%lu\n",ldr1,ldr2);

//printf(exibe_lcd,"L3=%luL4=%lu",ldr3,ldr4);

//mostra tensão no LCD

printf(exibe_lcd,"\fTENSAO=%5.2f\n",tensao*5.0/1023.0);

delay_ms(100);

}

}