hx711.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:HX711 作者: gandalf15 项目源码 文件源码
def get_raw_data_mean(self, times=1):
        backup_channel = self._current_channel      # do backup of current channel befor reading for later use
        backup_gain = self._gain_channel_A      # backup of gain channel A
        if times > 0 and times < 100:       # check if times is in required range 
            data_list = []          # create empty list
            for i in range(times):      # for number of times read and add up all readings.
                data_list.append(self._read())  # append every read value to the list
            if times > 2 and self._pstdev_filter:           # if times is > 2 filter the data
                data_pstdev = stat.pstdev(data_list)    # calculate population standard deviation from the data
                data_mean = stat.mean(data_list)    # calculate mean from the collected data
                max_num = data_mean + data_pstdev   # calculate max number which is within pstdev
                min_num = data_mean - data_pstdev   # calculate min number which is within pstdev
                filtered_data = []          # create new list for filtered data

                if data_pstdev <=100:           # is pstdev is less than 100 it is ok
                    self._save_last_raw_data(backup_channel, backup_gain, data_mean)    # save last data
                    return data_mean        # just return the calculated mean

                for index,num in enumerate(data_list):  # now I know that pstdev is greater then iterate through the list
                    if (num > min_num and num < max_num):   # check if the number is within pstdev
                        filtered_data.append(num)   # then append to the filtered data list
                if self._debug_mode:
                    print('data_list: ' + str(data_list))
                    print('filtered_data lsit: ' + str(filtered_data))
                    print('pstdev data: ' + str(data_pstdev))
                    print('pstdev filtered data: ' + str(stat.pstdev(filtered_data)))
                    print('mean data_list: ' + str(stat.mean(data_list)))
                    print('mean filtered_data: ' + str(stat.mean(filtered_data)))
                f_data_mean = stat.mean(filtered_data)      # calculate mean from filtered data
                self._save_last_raw_data(backup_channel, backup_gain, f_data_mean)  # save last data
                return f_data_mean      # return mean from filtered data
            else: 
                data_mean = stat.mean(data_list)        # calculate mean from the list
                self._save_last_raw_data(backup_channel, backup_gain, data_mean)    # save last data
                return data_mean        # times was 2 or less just return mean
        else:
            raise ValueError('function "get_raw_data_mean" parameter "times" has to be in range 1 up to 99.\n I have got: '\
                        + str(times))

    ############################################################
    # get_data_mean returns average value of readings minus    #
    # offset for the particular channel which was read.    #
    # If return False something is wrong. Try debug mode.      #
    # INPUTS: times # how many times to read data. Default 1   #
    # OUTPUTS: INT | BOOL                      #
    ############################################################
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号