Muslija Adnan Kiselica Aldin

Dependencies:   N5110 mbed

main.cpp

Committer:
tim008
Date:
2014-05-05
Revision:
0:3279bf1609c1

File content as of revision 0:3279bf1609c1:

#include "mbed.h"
#include "N5110.h"

N5110 lcd(dp4,dp24,dp23,dp25,dp2,dp6,dp18);

AnalogIn VRx(dp11);
AnalogIn VRy(dp10);
InterruptIn SW(dp9);

int xmin=0,xmax=0;
int ymin=0,ymax=0;

Timer press;
Ticker ticker;
bool set=true;

int first[2]={0,0};
int second[2]={0,0};
int point[2]={0,0};

bool crosshair[4]={false};

void setX()
{   
    if(first[0]<second[0])
    {
        xmin=first[0];
        xmax=second[0];
    }
    else
    {
        xmin=second[0];
        xmax=first[0];
    }
}

void setY()
{
    
    if(first[1]<second[1])
    {
        ymin=first[1];
        ymax=second[1];
    }
    else
    {
        ymin=second[1];
        ymax=first[1];
    }
}



    
void readX()
{  
    if(VRx<1.0/3.3)
        point[0]--;
    if(VRx>2.0/3.3)
        point[0]++;
        
}
void readY()
{
   if(VRy<1.0/3.3)
        point[1]--;
    if(VRy>2.0/3.3)
        point[1]++;
        
}

 

void displayCrosshair()
{
  int points[4]={point[0]-1,point[0]+1,point[1]-1,point[1]+1};
  if(points[0]>0&&lcd.getPixel(points[0],point[1])==0)
  {
     lcd.setPixel(points[0],point[1]);
     crosshair[0]=true;
  }
  if(points[1]<83&&lcd.getPixel(points[1],point[1])==0)
  {
    lcd.setPixel(points[1],point[1]);
    crosshair[1]=true;
  }
  if(points[2]>0&&lcd.getPixel(point[0],points[2])==0)
  {
    lcd.setPixel(point[0],points[2]);
    crosshair[2]=true;
  }
  if(points[3]<43&&lcd.getPixel(point[0],points[3])==0)
  {
    lcd.setPixel(point[0],points[3]);
    crosshair[3]=true;
  }      
}

void hideCrosshair()
{
    int points[4]={point[0]-1,point[0]+1,point[1]-1,point[1]+1};
    if(points[0]>0&&crosshair[0])
    {
        lcd.clearPixel(points[0],point[1]);
        crosshair[0]=false;
    }
    if(points[1]<83&&crosshair[1])
    {
        lcd.clearPixel(points[1],point[1]);
        crosshair[1]=false;
    }
    if(points[2]>0&&crosshair[2])
    {
        lcd.clearPixel(point[0],points[2]);
        crosshair[2]=false;
    }
    if(points[3]<43&&crosshair[3])
    {
        lcd.clearPixel(point[0],points[3]);
        crosshair[3]=false;
    }
            
}

void displayPoint()
{
    hideCrosshair();
    lcd.refresh();
   
    readX();
    readY();
    
    displayCrosshair();
    lcd.refresh();
}     


void paint()
{
    setX();
    setY();  
    
    for(int i=xmin;i<=xmax;i++)
    {
        for(int j=ymin;j<ymax;j++)
        {
            lcd.setPixel(i,j);
        }
    }
    lcd.refresh();           
}


void buttonPress()
{
    if(set)
    {
        if(press.read_ms()>200)
        {
            set=!set;
            first[0]=point[0];
            first[1]=point[1];
            lcd.setPixel(first[0],first[1]);
            lcd.refresh();
            press.reset();
        }
    }
    else if(!set)
    {
        if(press.read_ms()>200&&press.read_ms()<500)
        {
            lcd.clear();
            point[0]=15;
            point[1]=15;
            displayPoint();
            press.reset();
            set=!set;
            }
     
       else if(press.read_ms()>200)
        {    second[0]=point[0];
            second[1]=point[1];
            lcd.setPixel(second[0],second[1]);
            paint();
            first[0]=0;
            first[1]=0;
            second[0]=0;
            second[1]=0;
            press.reset();
            set=!set;
         }   
        
        lcd.refresh();
       
        }
     
}

int main() {
    lcd.init();
    lcd.setXYAddress(0,0);
    point[0]=15;
    point[1]=15;
    press.start();
    SW.mode(PullUp);
    SW.rise(buttonPress);
    ticker.attach(displayPoint,0.25);
    while(1) {

    }
}