Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
unsigned char ch;
unsigned int adc_rd;
unsigned char *text, *text1,*text2, *text3, *text4, *text5, *text6;
void Drive_Motor(unsigned int);
void ADC_CH0();
void ADC_CH1();
void ADC_CH2();
void Delay(unsigned int );
void main()
{
unsigned int i;
unsigned int a,b,c;
INTCON = 0; // disable all interrupts
TRISC = 0; // PORTC is output
TRISD = 0;
TRISA=0;
TRISB=0;
text = "SOLAR TRACKING"; // assign text to string
text1 = " SYSTEM "; // assign text to string
text2= " EAST"; //" ADC Channel 0";
text3= " MIDDLE"; //" ADC Channel 1";
text4= " WEST"; //" ADC Channel 2";
text5= " NO LIGHT";
text6= "PROPER LIGHT";
Lcd_Custom_Config(&PORTD,7,6,5,4,&PORTC,0,1,2); // Initialize LCD on PORTB
Lcd_Custom_Cmd(Lcd_CURSOR_OFF); // Turn off cursor
LCD_Custom_Out(1,1,text); // print string a on LCD, 1st row, 1st column
LCD_Custom_Out(2,1,text1); // print string a on LCD, 2nd row, 1st column
Delay_ms(1500);
PORTB.F3 = 0;
PORTB.F2 = 0;
Lcd_Custom_Cmd(Lcd_Clear);
ADCON1 = 0x82; // configure VDD as Vref, and analog channels
TRISA = 0xFF; // designate PORTA as input
while (1)
{
Lcd_Custom_Cmd(Lcd_Clear);
LCD_Custom_Out(1,1,text2);
ADC_CH0();
Delay(200);
Lcd_Custom_Cmd(Lcd_Clear);
LCD_Custom_Out(1,1,text3);
ADC_CH1();
Delay(200);
Lcd_Custom_Cmd(Lcd_Clear);
LCD_Custom_Out(1,1,text4);
ADC_CH2();
Delay(200);
}
}
void Drive_Motor(unsigned data)
{
PORTB=data;
}
void Delay(unsigned int t)
{
unsigned int i, j;
for(i=0; i<t; i++)
for(j=0; j<1275; j++);
}
void ADC_CH0()
{
unsigned int X,Y,Z1,Z2,Z3,LDR;
adc_rd = ADC_read(0); // get ADC value from 2nd channel
X=0;
Y=0;
Z1=0;
Z2=0;
Z3=0; // print string a on LCD, 2nd row, 1st column
X=adc_rd;
Y=X/10;
Z1=X%10;
Z2=Y%10;
Z3=Y/10;
if(X>150)
{
LCD_Custom_Out(2,1,text5);
Delay_ms(500);
}
else
{
LCD_Custom_Out(2,1,text6);
Delay_ms(500);
PORTB.F3 = 1;
PORTB.F2 = 0;
Delay_ms(1000);
PORTB.F3 = 0;
PORTB.F2 = 0;
Delay_ms(10000);
}
}
void ADC_CH1()
{
unsigned int X,Y,Z1,Z2,Z3,LDR;
adc_rd = ADC_read(1); // get ADC value from 2nd channel
X=0;
Y=0;
Z1=0;
Z2=0;
Z3=0; // print string a on LCD, 2nd row, 1st column
X=adc_rd;
Y=X/10;
Z1=X%10;
Z2=Y%10;
Z3=Y/10;
if(X>150)
{
LCD_Custom_Out(2,1,text5);
Delay_ms(500);
}
else
{
LCD_Custom_Out(2,1,text6);
Delay_ms(500);
PORTB.F3 = 0;
PORTB.F2 = 1;
Delay_ms(1000);
PORTB.F3 = 0;
PORTB.F2 = 0;
Delay_ms(10000);
}
}
void ADC_CH2()
{
unsigned int X,Y,Z1,Z2,Z3,LDR;
adc_rd = ADC_read(2); // get ADC value from 2nd channel
X=0;
Y=0;
Z1=0;
Z2=0;
Z3=0; // print string a on LCD, 2nd row, 1st column
X=adc_rd;
Y=X/10;
Z1=X%10;
Z2=Y%10;
Z3=Y/10;
if(X>150)
{
LCD_Custom_Out(2,1,text5);
Delay_ms(500);
}
else
{
LCD_Custom_Out(2,1,text6);
Delay_ms(500);
PORTB.F3 = 0;
PORTB.F2 = 1;
Delay_ms(1000);
PORTB.F3 = 0;
PORTB.F2 = 0;
Delay_ms(10000);
PORTB.F3 = 1;
PORTB.F2 = 0;
Delay_ms(1000);
PORTB.F3 = 0;
PORTB.F2 = 0;
}
}