/ Data_Logging_with_Feather_and_CircuitPython / code.py
code.py
1 # SPDX-FileCopyrightText: 2018 Kattni Rembor for Adafruit Industries 2 # 3 # SPDX-License-Identifier: MIT 4 5 import time 6 7 import analogio 8 import board 9 import storage 10 import adafruit_am2320 11 12 vbat_voltage = analogio.AnalogIn(board.D9) 13 14 i2c = board.I2C() # uses board.SCL and board.SDA 15 am2320 = adafruit_am2320.AM2320(i2c) 16 17 SD_CS = board.D10 18 spi = board.SPI() 19 20 try: 21 import sdcardio 22 23 sd_card = sdcardio.SDCard(spi, SD_CS) 24 except ImportError: 25 import adafruit_sdcard 26 import digitalio 27 28 cs = digitalio.DigitalInOut(SD_CS) 29 sd_card = adafruit_sdcard.SDCard(spi, cs) 30 31 vfs = storage.VfsFat(sd_card) 32 storage.mount(vfs, "/sd_card") 33 34 35 def get_voltage(pin): 36 return (pin.value * 3.3) / 65536 * 2 37 38 39 print("Logging temperature and humidity to log file") 40 41 initial_time = time.monotonic() 42 43 while True: 44 try: 45 with open("/sd_card/log.txt", "a") as sdc: 46 temperature = am2320.temperature 47 humidity = am2320.relative_humidity 48 battery_voltage = get_voltage(vbat_voltage) 49 current_time = time.monotonic() 50 time_stamp = current_time - initial_time 51 print("Seconds since current data log started:", int(time_stamp)) 52 print("Temperature:", temperature) 53 print("Humidity:", humidity) 54 print("VBat voltage: {:.2f}".format(battery_voltage)) 55 print() 56 sdc.write( 57 "{}, {}, {}, {:.2f}\n".format( 58 int(time_stamp), temperature, humidity, battery_voltage 59 ) 60 ) 61 time.sleep(3) 62 except OSError: 63 pass 64 except RuntimeError: 65 pass