#---------Gesture_Control_v1.py-------------------------------------------
#---------ECE 5725 Final Project------------------------------------------
#---------Create Date:2016/11/15 21:31------------------------------------

import sys
import pygame
import os
import RPi.GPIO as GPIO
import time
from pygame.locals import *

#---------color setup---------------------------------------------------
WHITE = (255,255,255)
BLACK = (0,0,0)
RED = (255,0,0)

#---------pi screen setup-----------------------------------------------
#os.putenv('SDL_VIDEODRIVER','fbcon')
#os.putenv('SDL_FBDEV', '/dev/fb1')
#os.putenv('SDL_MOUSEDRV', 'TSLIB')
#os.putenv('SDL_MOUSEDEV', '/dev/input/touchscreen')

GPIO.setmode(GPIO.BCM) # Set for broadcom numbering not board numbers

GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 1 coloum 1
GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 1 coloum 2
GPIO.setup(20, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 1 coloum 3
GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 1 coloum 4
GPIO.setup(6 , GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 2 coloum 1
GPIO.setup(13, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 2 coloum 2
GPIO.setup(19, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 2 coloum 3
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 2 coloum 4
GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 3 coloum 1
GPIO.setup(5 , GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 3 coloum 2
GPIO.setup(25, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 3 coloum 3
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 3 coloum 4
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 4 coloum 1
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 4 coloum 2
GPIO.setup(4 , GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 4 coloum 3
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP) #row 4 coloum 4

GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP) #quit button on piTFT

#------------------mixer initial----------------------------------------------
musicarray = ['1.flac','2.flac','3.flac','4.flac','5.flac','6.flac']
n = 0

#n = 0
v = 0.5
#musicarray = ['1.mp3','2.mp3','3.mp3','4.mp3','5.mp3','6.mp3']

pygame.mixer.pre_init(44100, -16, 2, 2048)
pygame.mixer.init()
pygame.mixer.music.load(musicarray[n])
pygame.mixer.music.play(-1)
pygame.mixer.music.set_volume(v)
pygame.mixer.music.pause()

#unsuitable flag
pauseflag = 0

#------------------screen initial--------------------------------------------
pygame.init()
size = width, height = 640, 480
screen = pygame.display.set_mode(size)
pygame.mouse.set_visible(True)
font_big = pygame.font.Font(None,150)
font_small = pygame.font.Font(None,80)

pos_text = font_small.render("STATE", True, WHITE)
pos_rect = pos_text.get_rect(center=(160,350))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render("Pause", True, WHITE)
pos_rect = pos_text.get_rect(center=(200,440))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render("VOLUME", True, WHITE)
pos_rect = pos_text.get_rect(center=(450,350))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render(str(v), True, WHITE)
pos_rect = pos_text.get_rect(center=(450,440))
screen.blit(pos_text,pos_rect)

pos_text = font_big.render(musicarray[n], True, RED)
pos_rect = pos_text.get_rect(center=(320,140))
screen.blit(pos_text,pos_rect)

pygame.display.update()

#------------------mixer initial----------------------------------------------
#n = 0
#v = 0.5
#musicarray = ['1.mp3','2.mp3','3.mp3','4.mp3','5.mp3','6.mp3']

#pygame.mixer.pre_init(44100, -16, 2, 2048)
#pygame.mixer.init()
#pygame.mixer.music.load(musicarray[n])
#pygame.mixer.music.play()
#pygame.mixer.music.set_volume(v)
#pygame.mixer.music.pause()

 

scanresult = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] #scan results for the whole matrix

 

row1selected = [[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0],
[1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0],
[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0]]
row2selected = [[0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0],
[0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0],
[0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0]]
row3selected = [[0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0],
[0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0],
[0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0]]
row4selected = [[0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],
[0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1],
[0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1]]
row12selected = [[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0],
[1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0],
[0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0],
[1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0],
[0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0]]
row23selected = [[0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0],
[0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0],
[0,0,0,0,0,1,1,1,0,1,1,1,0,0,0,0],
[0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0],
[0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0]]
row123selected = [[1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0],
[1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0],
[0,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0],
[1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0],
[0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0]]
row1234selected = [[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0],
[0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1],
[1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0],
[0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1]]
row234selected = [[0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1],
[0,0,0,0,1,1,1,0,1,1,1,0,1,1,1,0],
[0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,1],
[0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0],
[0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1]]
row34selected = [[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1],
[0,0,0,0,0,0,0,0,1,1,1,0,1,1,1,0],
[0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1],
[0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0],
[0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1]]

col1selected = [[0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1],
[0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0],
[0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1],
[0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1],
[0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1]]
col2selected = [[0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0],
[0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0],
[0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0],
[0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0],
[0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0]]
col3selected = [[0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0],
[0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0],
[0,1,0,0,0,1,0,0,0,0,0,0,0,1,0,0],
[0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0]]
col4selected = [[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0],
[1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0],
[1,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0],
[1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0],
[0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]]
col12selected = [[0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1],
[0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0],
[0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,1],
[0,0,1,1,0,0,0,0,0,0,1,1,0,0,1,1],
[0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1]]
col123selected = [[0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1],
[0,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0],
[0,1,1,1,0,1,1,1,0,0,0,0,0,1,1,1],
[0,1,1,1,0,0,0,0,0,1,1,1,0,1,1,1],
[0,0,0,0,0,1,1,1,0,1,1,1,0,1,1,1]]
col1234selected = [[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,0],
[1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,0],
[1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0],
[1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,0]]
col234selected = [[1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0],
[1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0],
[1,1,1,0,1,1,1,0,0,0,0,0,1,1,1,0],
[1,1,1,0,0,0,0,0,1,1,1,0,1,1,1,0],
[0,0,0,0,1,1,1,0,1,1,1,0,1,1,1,0]]
col23selected = [[0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0],
[0,1,1,0,0,1,1,0,0,1,1,0,0,0,0,0],
[0,1,1,0,0,1,1,0,0,0,0,0,0,1,1,0],
[0,1,1,0,0,0,0,0,0,1,1,0,0,1,1,0],
[0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1]]
col34selected = [[1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0],
[1,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0],
[1,1,0,0,1,1,0,0,0,0,0,0,1,1,0,0],
[1,1,0,0,0,0,0,0,1,1,0,0,1,1,0,0],
[0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0]]

 

 

result = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]] #two dim array for sentence
num = 0 #array number for two dim array

loopcount = 0
readflag = 1
pauseflag = 1

def similiarity_check(arr0,arr1):
sim = 0
sim2 = 0
sim3 = 0
loopflag = 0

for i in range(5):
if(loopflag == 0):
for j in range(16):

if(arr0[j] == arr1[i][j]):
sim = sim + 1
if(sim >= 14):
sim2 = sim

sim = 0
loopflag = 1
if(j == 15):
sim = 0


# print sim2
if(sim2 >= 14):
#print "Check pass"
return True
else:
#print "Check fail"
return False

def gesture_sentence(result):
#Algorithm implements below -------------------------------------------------
print result[0]
print result[1]
print result[2]
print result[3]
print result[4]

global n
global v
global pauseflag

#-----------video playback forward-------------------------------------------
if(similiarity_check(result[0],col1selected) or similiarity_check(result[0],col12selected)):
print "Forward sentence 1 complete"
if(similiarity_check(result[1],col12selected) or similiarity_check(result[1],col123selected)):
print "Forward sentence 2 complete"
if(similiarity_check(result[2],col23selected) or similiarity_check(result[2],col123selected) or similiarity_check(result[2],col1234selected)):
print "Forward Sentence 3 complete"
print "Here is the forward"
screen.fill((0,0,0))

pos_text = font_small.render("STATE", True, WHITE)
pos_rect = pos_text.get_rect(center=(160,350))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render("Forward", True, WHITE)
pos_rect = pos_text.get_rect(center=(200,440))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render("VOLUME", True, WHITE)
pos_rect = pos_text.get_rect(center=(450,350))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render(str(v), True, WHITE)
pos_rect = pos_text.get_rect(center=(450,440))
screen.blit(pos_text,pos_rect)

if(n < 6):
pos_text = font_big.render(musicarray[n+1], True, RED)
pos_rect = pos_text.get_rect(center=(320,140))
screen.blit(pos_text,pos_rect)
pygame.mixer.music.load(musicarray[n+1])
pygame.mixer.music.play()
n = n + 1
else:
pos_text = font_big.render(musicarray[n], True, RED)
pos_rect = pos_text.get_rect(center=(320,140))
screen.blit(pos_text,pos_rect)

pygame.display.flip()
#break
else:
print "Forward check pass"

#-----------video playback backward------------------------------------------
if(similiarity_check(result[0],col4selected) or similiarity_check(result[0],col34selected)):
print "Backward sentence 1 complete"
if(similiarity_check(result[1],col34selected) or similiarity_check(result[1],col234selected)):
print "Backward sentence 2 complete"
if(similiarity_check(result[2],col23selected) or similiarity_check(result[2],col234selected) or similiarity_check(result[2],col1234selected)):
print "Backward Sentence 3 complete"
print "Here is the backward"
screen.fill((0,0,0))
pos_text = font_small.render("STATE", True, WHITE)
pos_rect = pos_text.get_rect(center=(160,350))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render("Backward", True, WHITE)
pos_rect = pos_text.get_rect(center=(200,440))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render("VOLUME", True, WHITE)
pos_rect = pos_text.get_rect(center=(450,350))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render(str(v), True, WHITE)
pos_rect = pos_text.get_rect(center=(450,440))
screen.blit(pos_text,pos_rect)

if(n < 6):
pos_text = font_big.render(musicarray[n-1], True, RED)
pos_rect = pos_text.get_rect(center=(320,140))
screen.blit(pos_text,pos_rect)
pygame.mixer.music.load(musicarray[n-1])
pygame.mixer.music.play()
n = n - 1
else:
pos_text = font_big.render(musicarray[n], True, RED)
pos_rect = pos_text.get_rect(center=(320,140))
screen.blit(pos_text,pos_rect)

pygame.display.flip()
#break
else:
print "Backward check pass"

#-----------video pause or start---------------------------------------------
if(similiarity_check(result[0],col1234selected)):
print "Pause sentence 1 complete"
if(similiarity_check(result[1],col1234selected)):
print "Pause sentence 2 complete"
if(similiarity_check(result[3],col1234selected)):
print "Pause sentence 3 complete"
if(similiarity_check(result[4],col1234selected)):
print "Pause sentence 4 complete"
if(similiarity_check(result[2],col1234selected)):
print "Pause sentence 5 complete"
print "This thing is now in pause or unpause"
screen.fill((0,0,0))

pos_text = font_small.render("STATE", True, WHITE)
pos_rect = pos_text.get_rect(center=(160,350))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render("VOLUME", True, WHITE)
pos_rect = pos_text.get_rect(center=(450,350))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render(str(v), True, WHITE)
pos_rect = pos_text.get_rect(center=(450,440))
screen.blit(pos_text,pos_rect)

pos_text = font_big.render(musicarray[n], True, RED)
pos_rect = pos_text.get_rect(center=(320,140))
screen.blit(pos_text,pos_rect)

if(pauseflag == 0):
pygame.mixer.music.pause()
pauseflag = 1
pos_text = font_small.render("Pause", True, WHITE)
pos_rect = pos_text.get_rect(center=(200,440))
screen.blit(pos_text,pos_rect)
else:
pygame.mixer.music.unpause()
pauseflag = 0
pos_text = font_small.render("Start", True, WHITE)
pos_rect = pos_text.get_rect(center=(200,440))
screen.blit(pos_text,pos_rect)
pygame.display.flip()
else:
print "Pause check pass"
#-----------video volume up--------------------------------------------------
if(similiarity_check(result[0],row4selected) or similiarity_check(result[0],row34selected)):
print "Volume down sentence 1 complete"
if(similiarity_check(result[1],row34selected) or similiarity_check(result[1],row234selected)):
print "Volume down sentence 2 complete"
if(similiarity_check(result[2],row23selected) or similiarity_check(result[2],row234selected) or similiarity_check(result[2],row1234selected)):
print "Volume down Sentence 3 complete"
print "Here is the volume down"
screen.fill((0,0,0))

pos_text = font_small.render("STATE", True, WHITE)
pos_rect = pos_text.get_rect(center=(160,350))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render("Play", True, WHITE)
pos_rect = pos_text.get_rect(center=(200,440))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render("VOLUME", True, WHITE)
pos_rect = pos_text.get_rect(center=(450,350))
screen.blit(pos_text,pos_rect)

pos_text = font_big.render(musicarray[n], True, RED)
pos_rect = pos_text.get_rect(center=(320,140))
screen.blit(pos_text,pos_rect)

if(v > 0.0):
v = v - 0.1
pos_text = font_small.render(str(v), True, WHITE)
pos_rect = pos_text.get_rect(center=(450,440))
screen.blit(pos_text,pos_rect)
pygame.mixer.music.set_volume(v)
else:
pos_text = font_small.render(str(v), True, WHITE)
pos_rect = pos_text.get_rect(center=(450,440))
screen.blit(pos_text,pos_rect)

pygame.display.flip()
#break
else:
print "Volume down check pass"

#-----------video volume down------------------------------------------------
if(similiarity_check(result[0],row1selected) or similiarity_check(result[0],row12selected)):
print "Volume up sentence 1 complete"
if(similiarity_check(result[1],row12selected) or similiarity_check(result[1],row123selected)):
print "Volume up sentence 2 complete"
if(similiarity_check(result[2],row23selected) or similiarity_check(result[2],row123selected) or similiarity_check(result[2],row1234selected)):
print "Volume up Sentence 3 complete"
print "Here is the volume up"
screen.fill((0,0,0))
pos_text = font_small.render("STATE", True, WHITE)
pos_rect = pos_text.get_rect(center=(160,350))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render("Play", True, WHITE)
pos_rect = pos_text.get_rect(center=(200,440))
screen.blit(pos_text,pos_rect)

pos_text = font_small.render("VOLUME", True, WHITE)
pos_rect = pos_text.get_rect(center=(450,350))
screen.blit(pos_text,pos_rect)

pos_text = font_big.render(musicarray[n], True, RED)
pos_rect = pos_text.get_rect(center=(320,140))
screen.blit(pos_text,pos_rect)

if(v < 1.0):
v = v + 0.1
pos_text = font_small.render(str(v), True, WHITE)
pos_rect = pos_text.get_rect(center=(450,440))
screen.blit(pos_text,pos_rect)
pygame.mixer.music.set_volume(v)
else:
pos_text = font_small.render(str(v), True, WHITE)
pos_rect = pos_text.get_rect(center=(450,440))
screen.blit(pos_text,pos_rect)

pygame.display.flip()
#break
else:
print "Volume up check pass"

#-----------Here is for flag reset-------------------------------------------

 

while True:
time.sleep(0.1)

if (not GPIO.input(22)):
exit(0)

#This sentences array receives all the photo detectors' output --------------
#and transmitted it into number arrays for further algorithm usage-----------
if ( not GPIO.input(12) ):
scanresult[0] = 1
if ( not GPIO.input(16) ):
scanresult[1] = 1
if ( not GPIO.input(20) ):
scanresult[2] = 1
if ( not GPIO.input(21) ):
scanresult[3] = 1
if ( not GPIO.input(6) ):
scanresult[4] = 1
if ( not GPIO.input(13) ):
scanresult[5] = 1
if ( not GPIO.input(19) ):
scanresult[6] = 1
if ( not GPIO.input(26) ):
scanresult[7] = 1
if ( not GPIO.input(27) ):
scanresult[8] = 1
if ( not GPIO.input(5) ):
scanresult[9] = 1
if ( not GPIO.input(25) ):
scanresult[10] = 1
if ( not GPIO.input(24) ):
scanresult[11] = 1
if ( not GPIO.input(18) ):
scanresult[12] = 1
if ( not GPIO.input(23) ):
scanresult[13] = 1
if ( not GPIO.input(4) ):
scanresult[14] = 1
if ( not GPIO.input(17) ):
scanresult[15] = 1

#--------------Store the scan result if there is signal received----------------------
#--------------And transmit it to gesture sentence function---------------------------
if(num == 5):
gesture_sentence(result)
readflag = 0
num = 0
#result = [[] for k in range(5)]
result = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]

#for i in range(len(scanresult)):
if(sum(scanresult) >= 3 and readflag == 1):
result[num] = scanresult
num = num + 1
#break



#--------------Reset all the number arrays in the ends--------------------------------
scanresult = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] #reset results for the whole matrix

scanrow1result = [0,0,0,0] #reset results for row 1
scanrow2result = [0,0,0,0] #reset results for row 2
scanrow3result = [0,0,0,0] #reset results for row 3
scanrow4result = [0,0,0,0] #reset results for row 4

scancol1result = [0,0,0,0] #reset results for col 1
scancol2result = [0,0,0,0] #reset results for col 2
scancol3result = [0,0,0,0] #reset results for col 3
scancol4result = [0,0,0,0] #reset results for col 4

readflag = 1

#print "LOOP: %d" % loopcount
#print loopcount
loopcount = loopcount + 1
GPIO.cleanup()