Wireless Communication Project, Bluetooth Door Lock System, Seneca College January 2017

Dependencies:   Adafruit-GFX-Library TFT_ILI9163C mbed

main.cpp

Committer:
Ozmos
Date:
2017-04-09
Revision:
0:67d120b65790

File content as of revision 0:67d120b65790:

#include "mbed.h"
#include <string>

#include <Adafruit_GFX.h>
#include <TFT_ILI9163C.h>
#define __MOSI D11
#define __MISO NC
#define __SCLK D13
#define __CS D10
#define __DC D15
#define __RST D12

// Color definitions
#define BLACK           0x0000
#define BLUE            0x001F
#define RED             0xF800
#define GREEN           0x07E0
#define CYAN            0x07FF
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0
#define WHITE           0xFFFF
#define TRANSPARENT     -1
/******************************************************state machine decleration**********/
#define initial 1
#define pair 2
#define checkpin 3
#define disconnected 4
//******************************************************************************************//
#define SPI_BITRATE     50000000L
 int color[8] = {0x001F, 0xF800,0x07E0,0x07FF,0xF81F,0xFFE0,0xFFFF,0x001F};
TFT_ILI9163C tft(__MOSI, __MISO, __SCLK, __CS, __DC, __RST);

Serial blue(D1,D0); 
//*****************************************function declerations************************/
void intial_screen(void);
void connectedBlue(void);
void disconnectedBlue(void);
bool passwordType(void);
void CorrectPassword(void);
void Incorrect(void);
/***************************************************************************************/
char blueInput;
char passwordGlobal[3];
unsigned char stage = initial;
int look =1;
int check =0;
int main()
{   
    tft.begin();
    tft.setBitrate(50000000);
    tft.setRotation(0);
   blueInput =  '\0';
    blue.printf("*P*            ");
    while (true) {
                                 
                
      
      switch(stage){
        
          case initial : if(look^check) // prints only ones a time in for loop by xOR 
                                        {
                            intial_screen();
                            check = 1;
                                        }
                        
                            
                                
                                 if (blueInput=='F')  
                                 {
                                
                                    stage = disconnected;
                                    check = 0;
                                       }  
                          
                            if(blueInput == 'N'){
                                 
                                 if(look^check){
                                    connectedBlue();
                                    check =1;
                                                }
                                 stage = pair;
                                 check = 0;     
                                            }
                             blueInput = blue.getc(); // waits for input char
                            
          
          case pair :               if(look^check){
                                    connectedBlue();
                                    check =1;
                                                }
                                    stage = checkpin;
                                    check =0;
                                     
       
         case checkpin:     if(passwordType()) {
                                if(look^check){
                                CorrectPassword();
                                check=1;
                                    }
                               stage = initial; 
                               check =0;
                                }
                            else{
                                if(look^check){
                                Incorrect();
                                check=1;
                                    }
                               stage = initial; 
                               check =0;}
           
          
           case    disconnected :        if(look^check){
                                  disconnectedBlue();
                                  check = 1;
                                }   
                                 
                                  stage  = initial; 
                                  check = 0;           
          
          }//switch
    }//forloop
}//main

void intial_screen(void){
 
  
    tft.clearScreen();
    tft.fillScreen(BLACK);
    tft.setTextColor(GREEN);
    tft.setTextSize(2);
    tft.setCursor(1, 1);
    tft.printf("Bluetooth");
    tft.setCursor(1,30);
    tft.printf("Pairing");
    tft.setCursor(1,60);
    tft.printf("Required");
    
    
    }

void connectedBlue(void){
                    tft.clearScreen();
                    tft.fillScreen(BLACK);
                     tft.setTextColor(GREEN);
                     tft.setTextSize(2);
                     tft.setCursor(1, 1);
                     tft.printf("connected");
                     tft.setCursor(1,30);
                     tft.printf("Type");
                     tft.setCursor(1,60);
                     tft.printf("Password");
    
    }
    
void disconnectedBlue(void){
                     tft.clearScreen();
                     blue.printf("*P*            ");
                     tft.fillScreen(BLACK);
                     tft.setTextColor(GREEN);
                     tft.setTextSize(2);
                     tft.setCursor(1,1);
                     tft.printf("Connection");
                     tft.setCursor(1,30);
                     tft.printf("Lost");
                    
                     wait_ms(2000);
                    
}

bool passwordType(void){
    int i = 0;
    char password[3];
    int b =32;
    string c;
    blue.printf("*P*            ");
  
          
       
      
   
  for(i=0;i<3;i++){
        password[i] = blue.getc();
        if (blueInput=='F')  
                                 {
                                
        stage = disconnected;
         check = 0;
                                   }  
        tft.setCursor(b,90);
        tft.printf("*");
        c = password;
        blue.printf("*P%s*",c);
        b+=20;
        } 
        
        if(c == "123") return 1;
        
        else return 0; 
      
    }//function
    
    
    void CorrectPassword(void){
                     tft.clearScreen();
                     tft.setCursor(1, 1);
                     tft.printf("Correct");
                     tft.setCursor(1,30);
                     tft.printf("Password");
                     tft.setCursor(1,60);
                     tft.printf("Door");
                     tft.setCursor(1,90);
                     tft.printf("Open 5 sec");
                     wait_ms(5000);
           
        
        }
        
    void Incorrect(void){
                 tft.clearScreen();
                   tft.setCursor(1, 1);
                     tft.printf("Wrong");
                     tft.setCursor(1,30);
                     tft.printf("Password");
                     tft.setCursor(1,60);
                     wait_ms(2000);
    
        }