import Adafruit_ADS1x15 import math import time #from kivy.core.window import Window from time import sleep import smbus class Main: #calculate average total_sum = 0.0 average_counter = 0 average = 0.0 #led = LED(17) adc = Adafruit_ADS1x15.ADS1115(address=0x4b) GAIN = 1 adc.start_adc(0, gain=GAIN) formaldehyde_error_counter = 0 error_msg = "" def config_lmp91000(self): bus = smbus.SMBus(1) device_addr = 0x48 ready_reg_addr = 0x00 lock_reg_addr = 0x01 tiacn_reg_addr = 0x10 refcn_reg_addr = 0x11 modecn_reg_addr = 0x12 while(not bus.read_byte_data(device_addr,ready_reg_addr)): pass bus.write_byte_data(device_addr,lock_reg_addr,0x00) if not bus.read_byte_data(device_addr,lock_reg_addr): bus.write_byte_data(device_addr,tiacn_reg_addr,0x0c) bus.write_byte_data(device_addr,refcn_reg_addr,0xc0) bus.write_byte_data(device_addr,modecn_reg_addr,0x03) print("Read Reg vales") print hex(bus.read_byte_data(device_addr,refcn_reg_addr)) print hex(bus.read_byte_data(device_addr,tiacn_reg_addr)) print hex(bus.read_byte_data(device_addr,modecn_reg_addr)) def formaldehyde_thread(self): start = time.time() adc_avg = 0.0 adc_sum = 0 counter = 0 while 1: try: adc_value = self.adc.get_last_result() except IOError as e: adc_value = None print 'IO Error in formaldehyde thread' sleep(1) except: print 'Not IO Error' if adc_value is not None: counter += 1 adc_sum += adc_value adc_avg = adc_sum/counter #print 'start', start #print 'diff', time.time()-start if((time.time() - start) >= 2): voltage = round((adc_avg * (0.000125)), 7) * 1000 print 'voltage :', voltage #base voltage:1.230 if (voltage <= 1614): ppm_value = 0 else: ppm_value =round((((voltage - 1614.0))/6),2) print 'PPM :',ppm_value #self.update_formaldehyde(ppm_value) self.total_sum += ppm_value self.average_counter += 1 self.average = self.total_sum/self.average_counter adc_avg = adc_sum = 0.0 counter = 0 start = time.time() if self.formaldehyde_error_counter > 0: self.formaldehyde_error_counter = 0 self.error_msg = "" #sleep(.1) else: self.formaldehyde_error_counter += 1 if( self.formaldehyde_error_counter == 3): if not self.error_msg: self.error_msg = "Error: " self.error_msg = self.error_msg + "check adc, formaldehyde sensor " if __name__ == '__main__': obj = Main() obj.config_lmp91000() obj.formaldehyde_thread()