getAccel.py 3.18 KB
import CoDrone
import math

ac_x = 0
ac_y = 0
ac_z = 0
shock_level = 0
deltha_x = [0,0,0]
deltha_y = [0,0,0]
deltha_z = [0,0,0]
Emergency_value = 300
State_Parameter = False
shock_sum = 0

def map(x,input_min,input_max,output_min,output_max):
    return (x-input_min)*(output_max-output_min)/(input_max-input_min)+output_min

def Emergency_state_():
    print("Shock level : ", shock_level, "x : ", deltha_x[0], "y : ", deltha_y[0], "z : ", deltha_z[0], "vib : ", int(map(int(shock_level), 0, 15000, 0, 255)))
    

    

def main():
    global State_Parameter
    global shock_sum
    global shock_level
    drone = CoDrone.CoDrone()
    drone.pair()

    # print the acceleration of drone
    while drone.isConnected():
        normal_x = 0 
        normal_y = 0 
        normal_z = 0
  
        for i in range(3):
            deltha_x[i] = 0
            deltha_y[i] = 0 
            deltha_z[i] = 0 
       
        



        State_Parameter = False
        shock_level = 0        
        for i in range(4):
            acceleration = drone.get_accelerometer()
            normal_x = 0 
            normal_y = 0 
            normal_z = 0
            ac_x = acceleration.X
            ac_y = acceleration.Y
            ac_z = acceleration.Z

            normal_x = map(int(ac_x), -16384, 16383, -5000, 5000)
            normal_y = map(int(ac_y), -16384, 16383, -5000, 5000)
            normal_z = map(int(ac_z), -16384, 16383, -5000, 5000)

            
            deltha_x[1] = deltha_x[1]+(normal_x)
            deltha_y[1] = deltha_y[1]+(normal_y) 
            deltha_z[1] = deltha_z[1]+(normal_z)
        
        deltha_x[1] = int(deltha_x[1]/4)
        deltha_y[1] = int(deltha_y[1]/4) 
        deltha_z[1] = int(deltha_z[1]/4)



        for i in range(4):
            acceleration = drone.get_accelerometer()
            normal_x = 0 
            normal_y = 0 
            normal_z = 0
            ac_x = acceleration.X
            ac_y = acceleration.Y
            ac_z = acceleration.Z

            normal_x = map(int(ac_x), -16384, 16383, -5000, 5000)
            normal_y = map(int(ac_y), -16384, 16383, -5000, 5000)
            normal_z = map(int(ac_z), -16384, 16383, -5000, 5000)

            
            deltha_x[2] = deltha_x[2]+(normal_x)
            deltha_y[2] = deltha_y[2]+(normal_y) 
            deltha_z[2] = deltha_z[2]+(normal_z)

        deltha_x[2] = int(deltha_x[2]/4)
        deltha_y[2] = int(deltha_y[2]/4) 
        deltha_z[2] = int(deltha_z[2]/4)

        deltha_x[0] = abs(deltha_x[1]-deltha_x[2]) 
        deltha_y[0] = abs(deltha_y[1]-deltha_y[2]) 
        deltha_z[0] = abs(deltha_z[1]-deltha_z[2])
        deltha = deltha_x[0] + deltha_y[0] + deltha_z[0]
        if deltha > Emergency_value:
            State_Parameter = True

        shock_level = deltha







        if State_Parameter == True:
            Emergency_state_()
        else:
            print("no emergency\n")
            
        if State_Parameter == True:
            shock_sum += deltha
        if State_Parameter == False & shock_sum != 0:
            print("누적 충격값 : ", shock_sum)
            shock_level = shock_sum
            shock_sum = 0;
        
    
    drone.close()        
if __name__ == '__main__':
    main()