Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

UART Problem in PIC16F877A. String not matching

Status
Not open for further replies.
Joined
Jul 25, 2012
Messages
1,192
Helped
170
Reputation
340
Reaction score
161
Trophy points
1,343
Activity points
0
I am using PIC16F877A and Hi Tech C. I want to store the received characters from uart to a

string like myString[4] and then compare if for some string and do action depending upon it.

The code is like this

Code:
if(uart_receive_flag == 1) {
			
	uart_receive_flag = 0;
			
	myString[count] = RCREG;
	count++;
	if(count == 3) {
		count = 0;
	}
}

myString[3] = '\0';
My UART receive interrupt routine is like this

Code:
void interrupt ISR(void)
{
	if(RCIF)  //If UART Rx Interrupt
	{
		if(OERR) //if over run error, then reset the receiver
		{
			CREN = 0;
			CREN = 1;
		}
		
		RCIF = 0;
		uart_receive_flag = 1;
		
	}
}

My initializations are like this

Code:
unsigned int count, uart_receive_flag;
unsigned char myString[4];

TRISA=0x00;					      //One side of Motor
TRISB=0x00;						  //LCD and Buzzer
TRISD=0x00;						  //LCD display
TRISE=0x00;						  //One side of Motor
PORTA=0;						  //Switch
PORTB=0;
PORTD=0;
PORTE=0;
TRISC=0xFF;						  //Switch
PORTC=0;						  //Switch
	
ADCON1 = 0b10000111;
CMCON = 0b00000111;
CVROE = 0;
	
//Configure UART
SPBRG=129;            //set baud rate as 9600 baud
BRGH=1;                //baud rate high speed option
TXEN=0;                //disable transmission
TX9 =0;                //8-bit transmission
RX9 =0;                //8-bit reception   
CREN=1;                //enable reception
SPEN=1;                //enable serial port
SYNC = 0;
SPEN = 1;
RX9 = 0;
//SREN = 0;
CREN = 1;
ADDEN = 0;
FERR = 0;
OERR = 0;

TXIE = 0;
RCIE = 1;
TXEN = 1;
	
//Include these settings
GIE  = 1;  		//Enable global interrupts
PEIE = 1;  		//Enable Peripheral Interrupts

void main() {

	while(1) {
		if(myString == "LU") {
			PORTBbits.RB4 = 1;
		}
	}
}
Is this method right? For me it is not working.


OK. I changed the method to

Code:
 if((myString[0] == 'L') && (myString[1] == 'U'))
but still it is not working.
 
Last edited:

betwixt

Super Moderator
Staff member
Joined
Jul 4, 2009
Messages
14,567
Helped
4,776
Reputation
9,569
Reaction score
4,557
Trophy points
1,393
Location
Aberdyfi, West Wales, UK
Activity points
124,187
Basically it looks OK although I do not have the same compiler to check it.

I would note that you set the "uart_receive_flag" every time a character arrives, regardless of whether it caused an overrrun error or not. If the UART is not configured properly it may still receive data and you correctly reset it to clear the error but you still accept the data later in your program. You should consider changing he ISR code so it only sets your flag if an error did not occur.

Brian.
 

Joined
Jul 25, 2012
Messages
1,192
Helped
170
Reputation
340
Reaction score
161
Trophy points
1,343
Activity points
0
Thanks btwixt

The problem is solved. Here is the new code. The problem was I had defined the variables count, myString[], and uart_receive_flsg globally and also in the main function.

I changed the variable to make it global variables.

Code:
// ===== SMART GROUP ======
// ===== LIM KIA YING T18157 =====
// LCD display with the motor 
// LCD display is to show the direction of the motor
// PORT B and PORT C is for motor 
// PORT D is for LCD display
#include <pic.h>
#include <string.h>
#include <htc.h>
__CONFIG(0x3f32); //3FFB

//=========== define of the motor ports ============
/*
#define L293D_E 	RA0         //Enable of L293D
#define L293D_A 	RA1         //Positive of motor
#define L293D_B 	RA2         //Negative of motor
#define L293D_C 	RA3			//Positive of motor
#define L293D_D 	RA4			//Negative of motor
#define L293D_G		RA5		    //Positive of motor
#define L293D_H 	RE0			//Negative of motor
#define L293D_J		RE1			//Positive of motor
#define L293D_K 	RE2			//Negative of motor
*/
#define L293D_E 	RA0         //Enable of L293D
#define L293D_A 	RB1         //Positive of motor
#define L293D_B 	RA2         //Negative of motor
#define L293D_C 	RA3			//Positive of motor
#define L293D_D 	RB2			//Negative of motor
#define L293D_G		RA5		    //Positive of motor
#define L293D_H 	RE0			//Negative of motor
#define L293D_J		RE1			//Positive of motor
#define L293D_K 	RE2			//Negative of motor


//=========== define the LCD ports =================
#define	rs			RB7				//RS pin of the LCD display
#define	e			RB6				//E pin of the LCD display
#define	lcd_data	PORTD			//LCD 8-bit data PORT

//=========== define LED Signal Light =============
#define signal_left  RB5			//Left side LED
#define signal_right RB4			//Right side LED

//=========== define Buzzer ================
#define buzzer		 RB3				//Buzzer

//=========== define switch ===============
#define	switch1		RC0 		//Switch 1 for LENG KABIAN
#define	switch2		RC1 		//Switch 2 for LENG KABIAN
#define	switch3		RC2 		//Switch 3 for LENG KABIAN
#define	switch4		RC3 		//Switch 4 for LENG KABIAN
#define	switch5		RC4 		//Switch 5 for LENG KABIAN
#define	switch6		RC5 		//Switch 6 for LENG KABIAN
#define	switch7		RC6 		//Switch 7 for LENG KABIAN
#define	switch8		RC7 		//Switch 8 for LENG KABIAN

//========== Motor Function Prototypes ===================
void rotate_forward_LCD_1(void);       	  	//Forward run function
void rotate_backward_LCD_1(void);         	//Backward run function
void rotate_leftside_LCD_1(void);	  	  	//Leftside run function
void rotate_rightside_LCD_1(void);    	  	//Rightside run function 
void rotate_forward_LCD_2(void);		  	//Forward run function
void rotate_backward_LCD_2(void);		  	//Backward run function
void rotate_leftside_LCD_2(void);		  	//Leftside run function
void rotate_rightside_LCD_2(void);		  	//Rightside run function
void breaks_1(void);        		  		//Motor stop function
void breaks_2(void);  		 		  		//Motor stop function
void breaks_3(void);        		  		//Motor stop function
void breaks_4(void);  				  		//Motor stop function
void delay_motor(void);            		  	//Some delay (Motor)
void delay_led(void);						//Some delay (LED)
void delay_buzzer(void);					//Some delay (Buzzer)
void command_error(void);					//Command error

//======== LCD Function Prototypes =========							
void delay_lcd(unsigned long data);			
void send_config(unsigned char data);
void send_char(unsigned char data);
void lcd_goto(unsigned char data);
void lcd_clr(void);
void send_string(const char *s);

// ======= UART Function Prototypes =======
void uart_send(unsigned char data);
unsigned char UART_Receive_Char(void);            //receive uart value
unsigned char UART_Receive_String(void);
void uart_str(const char *s);



//======= LED Signal LED ==========
void led_off_l(void);
void led_off_r(void);
void led_signal_left(void);
void led_signal_right(void);
void led_signal_sos(void);
void led_sos_off(void);

//========== Buzzer Function Prototypes ======
void buzzer_stop(void);

// ========== Program Start ==============

unsigned int count = 0, count1 = 0, uart_receive_flag, cmp_;
unsigned char myString[4], myString2[4];

void interrupt ISR(void)
{
	
	if(RCIF)  //If UART Rx Interrupt
	{
		/*	
		if(OERR) //if over run error, then reset the receiver
		{
			CREN = 0;
			CREN = 1;
		}
		*/
		myString[count] = RCREG;
		myString2[count1] = RCREG;
		count = count + 1;
		count1 = count1 + 1;
		//myString[0] = RCREG;
		if(count == 2) count = 0;
		if(count1 == 3) count1 = 0;
		RCIF = 0;
		uart_receive_flag = 1;
					
	}
}

				           				   		
// ===========  MOTOR CODING ============

void rotate_forward_LCD_1(){
        L293D_A = 1;             				//Make positive of motor 1
        L293D_B = 0;             				//Make negative of motor 0
        L293D_E = 1;             				//Enable L293D
		unsigned long delay_time=5000;
		//setup ADC
		//ADCON1 = 0b00000110;					//set ADx pin digital I/O
		//configure lcd
		send_config(0b00000001);				//clear display at lcd
		send_config(0b00000010);				//lcd return to home 
		send_config(0b00000110);				//entry mode-cursor increase 1
		send_config(0b00001100);				//display on, cursor off and cursor blink off
		send_config(0b00111000);				//function set
		//display startup message	
		lcd_clr();								//clear lcd
		lcd_goto(5);							//set the lcd cursor to location 0
		send_string("PSM.L");					//display "Cytron Tech."
		lcd_goto(27);							//set the lcd cursor to location 20
		send_string("UP");						//display "SK40C"
}

void rotate_backward_LCD_1(){
        L293D_A = 0;            				//Make positive of motor 0
        L293D_B = 1;             				//Make negative of motor 1
        L293D_E = 1;             				//Enable L293D
		unsigned long delay_time=5000;
		//setup ADC
		//ADCON1 = 0b00000110;					//set ADx pin digital I/O
		//configure lcd
		send_config(0b00000001);				//clear display at lcd
		send_config(0b00000010);				//lcd return to home 
		send_config(0b00000110);				//entry mode-cursor increase 1
		send_config(0b00001100);				//display on, cursor off and cursor blink off
		send_config(0b00111000);				//function set
		//display startup message	
		lcd_clr();								//clear lcd
		lcd_goto(5);							//set the lcd cursor to location 0
		send_string("PSM.L");					//display "Cytron Tech."
		lcd_goto(25);							//set the lcd cursor to location 20
		send_string("DOWN");					//display "SK40C"
}
void rotate_leftside_LCD_1(){
        L293D_C = 1;             				//Make positive of motor 1
        L293D_D = 0;             				//Make negative of motor 0
        L293D_E = 1;             				//Enable L293D
		unsigned long delay_time=5000;
		//setup ADC
		ADCON1 = 0b00000110;					//set ADx pin digital I/O
		//configure lcd
		send_config(0b00000001);				//clear display at lcd
		send_config(0b00000010);				//lcd return to home 
		send_config(0b00000110);				//entry mode-cursor increase 1
		send_config(0b00001100);				//display on, cursor off and cursor blink off
		send_config(0b00111000);				//function set
		//display startup message	
		lcd_clr();								//clear lcd
		lcd_goto(5);							//set the lcd cursor to location 0
		send_string("PSM.L");					//display "Cytron Tech."
		lcd_goto(25);							//set the lcd cursor to location 20
		send_string("LEFT");					//display "SK40C"
}
void rotate_rightside_LCD_1(){
        L293D_C = 0;             				//Make positive of motor 0
        L293D_D = 1;             				//Make negative of motor 1
        L293D_E = 1;             				//Enable L293D
		unsigned long delay_time=5000;
		//setup ADC
		ADCON1 = 0b00000110;					//set ADx pin digital I/O
		//configure lcd
		send_config(0b00000001);				//clear display at lcd
		send_config(0b00000010);				//lcd return to home 
		send_config(0b00000110);				//entry mode-cursor increase 1
		send_config(0b00001100);				//display on, cursor off and cursor blink off
		send_config(0b00111000);				//function set
		//display startup message	
		lcd_clr();								//clear lcd
		lcd_goto(5);							//set the lcd cursor to location 0
		send_string("PSM.L");					//display "Cytron Tech."
		lcd_goto(25);							//set the lcd cursor to location 20
		send_string("RIGHT");					//display "SK40C"
}
void rotate_forward_LCD_2(){
        L293D_G = 1;             			//Make positive of motor 1
        L293D_H = 0;             			//Make negative of motor 0
        L293D_E = 1;             			//Enable L293D
		unsigned long delay_time=5000;
		//setup ADC
		ADCON1 = 0b00000110;				//set ADx pin digital I/O
		//configure lcd
		send_config(0b00000001);			//clear display at lcd
		send_config(0b00000010);			//lcd return to home 
		send_config(0b00000110);			//entry mode-cursor increase 1
		send_config(0b00001100);			//display on, cursor off and cursor blink off
		send_config(0b00111000);			//function set
		//display startup message	
		lcd_clr();							//clear lcd
		lcd_goto(5);						//set the lcd cursor to location 0
		send_string("PSM.R");				//display "Cytron Tech."
		lcd_goto(27);						//set the lcd cursor to location 20
		send_string("UP");					//display "SK40C"
}
void rotate_backward_LCD_2(){
        L293D_G = 0;             			//Make positive of motor 0
        L293D_H = 1;             			//Make negative of motor 1
        L293D_E = 1;             			//Enable L293D
		unsigned long delay_time=5000;
		//setup ADC
		ADCON1 = 0b00000110;				//set ADx pin digital I/O
		//configure lcd
		send_config(0b00000001);			//clear display at lcd
		send_config(0b00000010);			//lcd return to home 
		send_config(0b00000110);			//entry mode-cursor increase 1
		send_config(0b00001100);			//display on, cursor off and cursor blink off
		send_config(0b00111000);			//function set
		//display startup message	
		lcd_clr();							//clear lcd
		lcd_goto(5);						//set the lcd cursor to location 0
		send_string("PSM.R");				//display "Cytron Tech."
		lcd_goto(25);						//set the lcd cursor to location 20
		send_string("DOWN");				//display "SK40C"
}
void rotate_leftside_LCD_2(){
        L293D_J = 1;             			//Make positive of motor 1
        L293D_K = 0;             			//Make negative of motor 0
        L293D_E = 1;             			//Enable L293D
		unsigned long delay_time=5000;
		//setup ADC
		ADCON1 = 0b00000110;				//set ADx pin digital I/O
		//configure lcd
		send_config(0b00000001);			//clear display at lcd
		send_config(0b00000010);			//lcd return to home 
		send_config(0b00000110);			//entry mode-cursor increase 1
		send_config(0b00001100);			//display on, cursor off and cursor blink off
		send_config(0b00111000);			//function set
		//display startup message	
		lcd_clr();							//clear lcd
		lcd_goto(5);						//set the lcd cursor to location 0
		send_string("PSM.R");				//display "Cytron Tech."
		lcd_goto(25);						//set the lcd cursor to location 20
		send_string("LEFT");				//display "SK40C"
}
void rotate_rightside_LCD_2(){
        L293D_J = 0;             			//Make positive of motor 0
        L293D_K = 1;             			//Make negative of motor 1
        L293D_E = 1;             			//Enable L293D
		unsigned long delay_time=5000;
		//setup ADC
		ADCON1 = 0b00000110;				//set ADx pin digital I/O
		//configure lcd
		send_config(0b00000001);			//clear display at lcd
		send_config(0b00000010);			//lcd return to home 
		send_config(0b00000110);			//entry mode-cursor increase 1
		send_config(0b00001100);			//display on, cursor off and cursor blink off
		send_config(0b00111000);			//function set
		//display startup message	
		lcd_clr();							//clear lcd
		lcd_goto(5);						//set the lcd cursor to location 0
		send_string("PSM.R");				//display "Cytron Tech."
		lcd_goto(25);						//set the lcd cursor to location 20
		send_string("RIGHT");				//display "SK40C"
}

void command_error(){

		buzzer=1;
		unsigned long delay_time=5000;
		//setup ADC
		ADCON1 = 0b00000110;				//set ADx pin digital I/O
		//configure lcd
		send_config(0b00000001);			//clear display at lcd
		send_config(0b00000010);			//lcd return to home 
		send_config(0b00000110);			//entry mode-cursor increase 1
		send_config(0b00001100);			//display on, cursor off and cursor blink off
		send_config(0b00111000);			//function set
		//display startup message	
		lcd_clr();							//clear lcd
		lcd_goto(5);						//set the lcd cursor to location 0
		send_string("COMMAND");				//display "Cytron Tech."
		lcd_goto(25);						//set the lcd cursor to location 20
		send_string("ERROR");				//display "SK40C"
		
}
 	
void breaks_1(){

        L293D_A = 0;             //Make positive of motor 0
        L293D_B = 0;             //Make negative of motor 0
        L293D_E = 0;             //Disable L293D

}
void breaks_2(){
        L293D_C = 0;            //Make positive of motor 0
        L293D_D = 0;             //Make negative of motor 0
        L293D_E = 0;             //Disable L293D
}
void breaks_3(){
        L293D_G = 0;             //Make positive of motor 0
        L293D_H = 0;             //Make negative of motor 0
        L293D_E = 0;             //Disable L293D
}
void breaks_4(){
        L293D_J = 0;             //Make positive of motor 0
        L293D_K = 0;             //Make negative of motor 0
        L293D_E = 0;             //Disable L293D
}
void buzzer_stop(){
		buzzer=0;
}
// ========== LCD CODING ========
void delay_lcd(unsigned long data)			//delay function, the delay time
{											//depend on the given value
	for( ;data>0;data--);
}

void send_config(unsigned char data)		//send lcd configuration 
{
	rs=0;									//set lcd to configuration mode
	lcd_data=data;							//lcd data port = data
	e=1;									//pulse e to confirm the data
	delay_lcd(50);
	e=0;
	delay_lcd(50);
}

void send_char(unsigned char data)			//send lcd character
{
 	rs=1;									//set lcd to display mode
	lcd_data=data;							//lcd data port = data
	e=1;									//pulse e to confirm the data
	delay_lcd(10);
	e=0;
	delay_lcd(10);
}

void lcd_goto(unsigned char data)			//set the location of the lcd cursor
{											//if the given value is (0-15) the 
 	if(data<16)								//cursor will be at the upper line
	{										//if the given value is (20-35) the 
	 	send_config(0x80+data);				//cursor will be at the lower line
	}										//location of the lcd cursor(2X16):
	else									// -----------------------------------------------------
	{										// | |00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15| |
	 	data=data-20;						// | |20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35| |
		send_config(0xc0+data);				// -----------------------------------------------------	
	}
}

void lcd_clr(void)							//clear the lcd
{
 	send_config(0x01);
	delay_lcd(600);
	
}

void send_string(const char *s)				//send a string to display in the lcd
{          
  	while (s && *s)send_char (*s++);
}


// ======== LED Signal Light ==========
void led_signal_left()
{
		signal_left=1;
		unsigned long delay_time=5000;
		//setup ADC
		ADCON1 = 0b00000110;					//set ADx pin digital I/O
		//configure lcd
		send_config(0b00000001);				//clear display at lcd
		send_config(0b00000010);				//lcd return to home 
		send_config(0b00000110);				//entry mode-cursor increase 1
		send_config(0b00001100);				//display on, cursor off and cursor blink off
		send_config(0b00111000);				//function set
		//display startup message	
		lcd_clr();								//clear lcd
		lcd_goto(5);							//set the lcd cursor to location 0
		send_string("SIGNAL");					//display "Cytron Tech."
		lcd_goto(25);							//set the lcd cursor to location 20
		send_string("LEFT");					//display "SK40C"
	
}

void led_signal_right()
{
	signal_right=1;
	unsigned long delay_time=5000;
	//setup ADC
	ADCON1 = 0b00000110;					//set ADx pin digital I/O
	//configure lcd
	send_config(0b00000001);				//clear display at lcd
	send_config(0b00000010);				//lcd return to home 
	send_config(0b00000110);				//entry mode-cursor increase 1
	send_config(0b00001100);				//display on, cursor off and cursor blink off
	send_config(0b00111000);				//function set
	//display startup message	
	lcd_clr();								//clear lcd
	lcd_goto(5);							//set the lcd cursor to location 0
	send_string("SIGNAL");					//display "Cytron Tech."
	lcd_goto(25);							//set the lcd cursor to location 20
	send_string("RIGHT");					//display "SK40C"
}
void led_signal_sos()
{	
	signal_right=1;
	signal_left=1;
	unsigned long delay_time=5000;
	//setup ADC
	ADCON1 = 0b00000110;					//set ADx pin digital I/O
	//configure lcd
	send_config(0b00000001);				//clear display at lcd
	send_config(0b00000010);				//lcd return to home 
	send_config(0b00000110);				//entry mode-cursor increase 1
	send_config(0b00001100);				//display on, cursor off and cursor blink off
	send_config(0b00111000);				//function set
	//display startup message	
	lcd_clr();								//clear lcd
	lcd_goto(3);							//set the lcd cursor to location 0
	send_string("EMERGENCY");					//display "Cytron Tech."
	lcd_goto(23);							//set the lcd cursor to location 20
	send_string("EMERGENCY");					//display "SK40C"
}
void led_off_l()
{
	signal_left=0;
}
void led_off_r()
{
	signal_right=0;
}
void led_sos_off()
{
	signal_left=0;
	signal_right=0;
}
// ========= TIME DELAY ============
void delay_motor(){                			//delay for motor
    unsigned char i,j,k;
    for(i=0;i<0x20;i++)
        for(j=0;j<100;j++)
                for(k=0;k<100;k++);
}

void delay_led(){
    unsigned char i,j,k;
    for(i=0;i<0x20;i++)
        for(j=0;j<255;j++)
                for(k=0;k<255;k++);
}
void delay_buzzer(){
    unsigned char i,j,k;
    for(i=0;i<0x20;i++)
        for(j=0;j<150;j++)
                for(k=0;k<150;k++);
}

void main(){                 		  //Our main function

	//unsigned int count, uart_receive_flag, cmp_;
	//unsigned char myString[4];
		
	TRISA=0x00;					      //One side of Motor
	TRISB=0x00;						  //LCD and Buzzer
	TRISD=0x00;						  //LCD display
	TRISE=0x00;						  //One side of Motor
	PORTA=0;						  //Switch
	PORTB=0;
	PORTD=0;
	PORTE=0;
	TRISC=0xFF;						  //Switch
	PORTC=0;						  //Switch
	
	ADCON1 = 0b10000111;
	CMCON = 0b00000111;
	CVROE = 0;
	
	//Configure UART
    SPBRG=129;            //set baud rate as 9600 baud
    BRGH=1;                //baud rate high speed option
    TXEN=0;                //disable transmission
    TX9 =0;                //8-bit transmission
    RX9 =0;                //8-bit reception   
    CREN=1;                //enable reception
    SPEN=1;                //enable serial port
	SYNC = 0;
	
	SPEN = 1;
	RX9 = 0;
	//SREN = 0;
	CREN = 1;
	//ADDEN = 0;
	FERR = 0;
	OERR = 0;

	TXIE = 0;
	RCIE = 1;
	TXEN = 1;
		
	//Include these settings
	GIE  = 1;  		//Enable global interrupts
	PEIE = 1;  		//Enable Peripheral Interrupts

	//configure lcd
	send_config(0b00000001);				//clear display at lcd
	send_config(0b00000010);				//lcd return to home 
	send_config(0b00000110);				//entry mode-cursor increase 1
	send_config(0b00001100);				//display on, cursor off and cursor blink off
	send_config(0b00111000);				//function set
	//display startup message
	lcd_clr();							//clear lcd
	lcd_goto(3);						//set the lcd cursor to location 0
	send_string("Cytron Tech");				//display "Cytron Tech."
	count = 0;

	while(1) {									//Do this infinitely
		
		
		if(uart_receive_flag == 1) {
			
			uart_receive_flag = 0;
				/*	
				myString[count] = RCREG;
				count++;
				if(count == 3) {
					count = 0;
				}
				myString[3] = '\0';
				*/
		}

		//myString[0] = RCREG;
					
	
		//myString[0] = RCREG;
			
		//cmp_ = strcmp(myString, "LU");		
		if((myString[0] == 'L') && (myString[1] == 'U'))
		//if(RCREG == 'L')
		//if(myString[0] == 'L')  
		{
		//PORTBbits.RB4 = 1;
		rotate_forward_LCD_1();       	    	//Run forward
        delay_motor();             		  		//Some delay
		lcd_clr();								//clear lcd
        breaks_1();                   			//Stop
        delay_motor();                      	//Some delay
		}
		else if((myString[0] == 'L') && (myString[1] == 'D'))						//if data received, turn left mirror down
        {
		rotate_backward_LCD_1();      	     	//Run Backwards
        delay_motor();                  	    //Some delay
		lcd_clr();								//clear lcd
        breaks_1();                   			//Stop
        delay_motor();                     	    //Some delay	
		}
		else if((myString[0] == 'L') && (myString[1] == 'L'))						//if data received, turn left mirror left 
		{
		rotate_leftside_LCD_1();    	  		//Run left
		delay_motor();     	              		//Some delay
        lcd_clr();								//clear lcd
		breaks_2();         		  			//Stop
        delay_motor();             		  		//Some delay
		}
		else if((myString[0] == 'L') && (myString[1] == 'R'))						//if data received, turn left mirror right
		{
		rotate_rightside_LCD_1();		  		//Run right
		delay_motor();           			    //Some delay
		lcd_clr();								//clear lcd
        breaks_2();         		 			//Stop
        delay_motor();                      	//Some delay
		}
		else if((myString[0] == 'R') && (myString[1] == 'U'))						//if data received, turn right mirror up
		{
		rotate_forward_LCD_2();           		//Run forward
        delay_motor();           			  	//Some delay
		lcd_clr();								//clear lcd
        breaks_3();         		   			//Stop
        delay_motor();             		  		//Some delay
		}
		else if((myString[0] == 'R') && (myString[1] == 'D'))						//if data received, turn right mirror down
		{
        rotate_backward_LCD_2();          		//Run Backwards
        delay_motor();            		  		//Some delay
		lcd_clr();								//clear lcd
        breaks_3();       			  			//Stop
        delay_motor();         		  	    	//Some delay
		}
		else if ((myString[0] == 'R') && (myString[1] == 'L'))						//if data received, turn right mirror left
		{
		rotate_leftside_LCD_2();	      		//Run left
		delay_motor();   			          	//Some delay
		lcd_clr();								//clear lcd
        breaks_4();        	  		 	 		//Stop
        delay_motor();                      	//Some delay
		}
		else if((myString[0] == 'R') && (myString[1] == 'R'))						//if data received, turn right mirror right
		{
		rotate_rightside_LCD_2();	      		//Run right
		delay_motor();             		  		//Some delay
		lcd_clr();								//clear lcd
        breaks_4();         		  			//Stop
        delay_motor();             		  		//Some delay
		}
		else if ((myString[0] == 'L') && (myString[1] == 'S'))						//if data received, left signal is lighted up
		{
		led_signal_left();	      				//LED Signal light turn left
		delay_led();             		  		//Some delay
		lcd_clr();								//clear lcd
		led_off_l();							//LED Signal light off
        delay_motor();             		  		//Some delay
		}
		else if((myString[0] == 'R') && (myString[1] == 'S'))						//if data received, right signal is lighted up
		{
		led_signal_right();	      				//LED Signal light turn right
		delay_led();             		  		//Some delay
		lcd_clr();								//clear lcd
		led_off_r();							//LED Signal light off
        delay_motor();             		  		//Some delay
		}
		else if((myString2[0] == 'S') && (myString2[1] == 'O') && (myString2[2] == 'S'))			//if data received, emergency signal light will be lighted up
		{
		led_signal_sos();						//Emergency light on
		delay_led();             		  		//Some delay
		lcd_clr();								//clear lcd
		led_sos_off();							//Emergency light off
        delay_motor();             		  		//Some delay
		}
		else
		{
		//command_error();						//Command error
		//delay_buzzer();             		  		//Some delay
		//lcd_clr();								//clear lcd
        //buzzer_stop();							//
        //delay_motor();             		  		//Some delay
		}
	}
}
 

Status
Not open for further replies.
Toggle Sidebar

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top