/********************************************************************/
//  FILE        BlueTooth (HC-06)															
//  DATE        :Tue, Jan 10, 2025                                  								
//  DESCRIPTION :HC-05はスイッチを押しながら電源投入で				
//							ATモードに入ります												
//               HC-06は電源投入と同時にATモードに入ります。           		
//               デフォルトのボーレートは HC-05(34800bps)            			
//               HC-06(9600bps)となっています。                      					
//               HC-05は[NL+CR]、HC-06は[改行なし]で					
//			コマンドを送信																		
//  CPU TYPE    : Arduino UNO                                       							
//                                                    		by Chiyabo     		
//  This file is generated by Renesas Project Generator.            					
/*******************************************************************/
#include < SoftwareSerial.h >                                         								
#include < LiquidCrystal_I2C.h >         // ライブラリのインクルード    	
                                                                    													
LiquidCrystal_I2C lcd( 0x27, 16 , 2 ) ;// 0x27のアドレス,16列2行のLCDを使用
                                                             														
// Bluetoothモジュールとはソフトウェアシリアルで通信。                  	
// RXD-(Arduino)D7 TXD-(Arduino)D8,に接続。                          			
// ArduinoからのTXは分圧してBluetoothモジュールのRXDに接続。      
                                                                    													
SoftwareSerial mySerial( 8, 7 ) ;  // RX,TX                        							
#define CR '\x0d'                                                   										
#define LF '\x0a'                                                   										
//#define NULL'\0'                                                  									
char Position = 0 ;                                                 										
char RxData[ 20 ] ;                                                 										
 char Start = false ;
                                                                    													
void setup( ){														                         			
  //Serial.begin( 9600 ) ;                                          									
  //Serial.println( "BlueTooth HC-06" ) ;                           						
  mySerial.begin( 9600 ) ;                                          									
  lcd.init( ) ;                       // LCDの初期化                	 							/
  lcd.backlight( ) ;                  // LCDバックライトの点灯        					
  lcd.setCursor( 0, 0 ) ;             // カーソルの位置を指定         					
  lcd.print( "BlueTooth HC-06" ) ;         // カスタムコード(HEX)  	
  // HC-05のデフォルトでのボーレートは38400bps                         			
  // HC-06のデフォルトのボーレートは9600bps                            			
    //BTserial.begin( 38400 ) ;                                     								
}                                                                   												
                                                                    													
void loop( ){														                            			
  //シリアル通信ポートから何バイトのデータが読み取れるかを返す       
  //戻り値 シリアルバッファにあるデータのバイト数。0の場合はデータなし
  if( mySerial.available( ) ){                                     									
    if( Start == false ){
      lcd.println( "                " ) ;     
      lcd.setCursor( 0, 1 ) ;      // カーソルの位置を指定 
      Start = true ;
    }
    RxData[ Position ] = mySerial.read( ) ;                         							 
    lcd.print( RxData[ Position ] ) ; 
    if( ( RxData[ Position ] != LF ) && ( RxData[ Position ] != CR ) ){		
      ++Position ;                                                  											
    }                                                               												
    else{                                                           												
      //Serial.println( "LF & CR" ) ;                               								
      LcdDisp( ) ;                                                  											
    }                                                              											 		
  }                                                                 												
  else if(  Position != 0 ){                                       									
  	lcd.setCursor( 0, 1 ) ;      // カーソルの位置を指定
    Start = false ; 
    Position = 0 ; 
  }                                                              												
}                                                                   												
                                                                    													
void LcdDisp( void ){                                               									
  lcd.setCursor( 0, 1 ) ;      // カーソルの位置を指定                 					
  lcd.println( "                " ) ;                               											
  RxData[ Position ] = '\0' ;                                       									 
  //Serial.println( RxData ) ;                                      									
  lcd.setCursor( 0, 1 ) ;      // カーソルの位置を指定                					
  lcd.print( RxData ) ;                                             										 
  Start = false ;                           
  Position = 0 ;                                                    											
}