Advertisement
AverageMan

Bar Graph Temperature Monitor

Jan 25th, 2016
941
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.32 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. ##### IMPORTS #####
  4.  
  5. import RPi.GPIO as GPIO
  6. import time
  7. import glob
  8. import os
  9.  
  10. ##### SETUP #####
  11.  
  12. # SET GPIO MODE
  13. GPIO.setmode(GPIO.BCM)
  14.  
  15. # GPIO PIN ALLOCATION
  16. seg1 = 18
  17. seg2 = 23
  18. seg3 = 24
  19. seg4 = 25
  20. seg5 = 8
  21. seg6 = 7
  22. seg7 = 5
  23. seg8 = 6
  24. seg9 = 13
  25. seg10 = 19
  26.  
  27. led1 = 21
  28. led2 = 14
  29.  
  30. #GPIO SETUP
  31.  
  32. GPIO.setup(seg1, GPIO.OUT)
  33. GPIO.setup(seg2, GPIO.OUT)
  34. GPIO.setup(seg3, GPIO.OUT)
  35. GPIO.setup(seg4, GPIO.OUT)
  36. GPIO.setup(seg5, GPIO.OUT)
  37. GPIO.setup(seg6, GPIO.OUT)
  38. GPIO.setup(seg7, GPIO.OUT)
  39. GPIO.setup(seg8, GPIO.OUT)
  40. GPIO.setup(seg9, GPIO.OUT)
  41. GPIO.setup(seg10, GPIO.OUT)
  42.  
  43. GPIO.setup(led1, GPIO.OUT)
  44. GPIO.setup(led2, GPIO.OUT)
  45.  
  46. # Turn them off
  47. GPIO.output(seg1, 0)
  48. GPIO.output(seg2, 0)
  49. GPIO.output(seg3, 0)
  50. GPIO.output(seg4, 0)
  51. GPIO.output(seg5, 0)
  52. GPIO.output(seg6, 0)
  53. GPIO.output(seg7, 0)
  54. GPIO.output(seg8, 0)
  55. GPIO.output(seg9, 0)
  56. GPIO.output(seg10, 0)
  57. GPIO.output(led1, 0)
  58. GPIO.output(led2, 0)
  59.  
  60. # Initialize the GPIO Pins
  61. os.system('modprobe w1-gpio') # Turns on the GPIO module
  62. os.system('modprobe w1-therm') # Turns on the Temperature module
  63.  
  64. # Finds the correct device file that holds the temperature data
  65. base_dir = '/sys/bus/w1/devices/'
  66. device_folder = glob.glob(base_dir + '28*')[0]
  67. device_file = device_folder + '/w1_slave'
  68.  
  69. reading = ""
  70. lastreading = ""
  71.  
  72. try:
  73.     def clearsegs():
  74.         GPIO.output(seg1, 0)
  75.         GPIO.output(seg2, 0)
  76.         GPIO.output(seg3, 0)
  77.         GPIO.output(seg4, 0)
  78.         GPIO.output(seg5, 0)
  79.         GPIO.output(seg6, 0)
  80.         GPIO.output(seg7, 0)
  81.         GPIO.output(seg8, 0)
  82.         GPIO.output(seg9, 0)
  83.         GPIO.output(seg10, 0)
  84.        
  85.     def clearled():
  86.         GPIO.output(led1, 0)
  87.         GPIO.output(led2, 0)
  88.  
  89.     def read_temp_raw():
  90.         f = open(device_file, 'r') # Opens the temperature device file
  91.         lines = f.readlines() # Returns the text
  92.         f.close()
  93.         return lines
  94.        
  95.     def read_temp():
  96.         global reading
  97.         lines = read_temp_raw() # Read the temperature 'device file'
  98.         # While the first line does not contain 'YES', wait for 0.2s
  99.         # and then read the device file again.
  100.         while lines[0].strip()[-3:] != 'YES':
  101.             time.sleep(0.2)
  102.             lines = read_temp_raw()
  103.            # Look for the position of the '=' in the second line of the
  104.            # device file.
  105.         equals_pos = lines[1].find('t=')
  106.         # If the '=' is found, convert the rest of the line after the
  107.         # '=' into degrees Celsius, then degrees Fahrenheit
  108.         if equals_pos != -1:
  109.             temp_string = lines[1][equals_pos+2:]
  110.             temp_c = float(temp_string) / 1000.0
  111.             temp_f = temp_c * 9.0 / 5.0 + 32.0
  112.             reading = int(temp_c)
  113.  
  114.     while True:
  115.         print "while started"
  116.        
  117.         #might need to delay after each led on instead of below
  118.        
  119.         read_temp()
  120.        
  121.         # Wait before repeating loop
  122.         time.sleep(1)
  123.  
  124.         # Print out results
  125.         print reading
  126.        
  127.         if reading <= 20:
  128.             clearsegs()
  129.             print "Less than 20, no lights"
  130.             if lastreading <= 20:
  131.                 clearled()
  132.                 GPIO.output(led1, 0)
  133.                 lastreading = reading
  134.             elif lastreading > 20:
  135.                 clearled()
  136.                 GPIO.output(led2, 1)
  137.                 lastreading = 20
  138.                
  139.         elif reading == 21:
  140.             clearsegs()
  141.             GPIO.output(seg1, 1)
  142.             if lastreading < 21:
  143.                 clearled()
  144.                 GPIO.output(led1, 1)
  145.                 lastreading = 21
  146.             elif lastreading > 21:
  147.                 clearled()
  148.                 GPIO.output(led2, 1)
  149.                 lastreading = 21
  150.            
  151.         elif reading == 22:
  152.             clearsegs()
  153.             GPIO.output(seg1, 1)
  154.             GPIO.output(seg2, 1)
  155.             if lastreading < 22:
  156.                 clearled()
  157.                 GPIO.output(led1, 1)
  158.                 lastreading = 22
  159.             elif lastreading > 22:
  160.                 clearled()
  161.                 GPIO.output(led2, 1)
  162.                 lastreading = 22
  163.            
  164.         elif reading == 23:
  165.             clearsegs()
  166.             GPIO.output(seg1, 1)
  167.             GPIO.output(seg2, 1)
  168.             GPIO.output(seg3, 1)
  169.             if lastreading < 23:
  170.                 clearled()
  171.                 GPIO.output(led1, 1)
  172.                 lastreading = 23
  173.             elif lastreading > 23:
  174.                 clearled()
  175.                 GPIO.output(led2, 1)
  176.                 lastreading = 23
  177.            
  178.         elif reading == 24:
  179.             clearsegs()
  180.             GPIO.output(seg1, 1)
  181.             GPIO.output(seg2, 1)
  182.             GPIO.output(seg3, 1)
  183.             GPIO.output(seg4, 1)
  184.             if lastreading < 24:
  185.                 clearled()
  186.                 GPIO.output(led1, 1)
  187.                 lastreading = 24
  188.             elif lastreading > 24:
  189.                 clearled()
  190.                 GPIO.output(led2, 1)
  191.                 lastreading = 24
  192.            
  193.         elif reading == 25:
  194.             clearsegs()
  195.             GPIO.output(seg1, 1)
  196.             GPIO.output(seg2, 1)
  197.             GPIO.output(seg3, 1)
  198.             GPIO.output(seg4, 1)
  199.             GPIO.output(seg5, 1)
  200.             if lastreading < 25:
  201.                 clearled()
  202.                 GPIO.output(led1, 1)
  203.                 lastreading = 25
  204.             elif lastreading > 25:
  205.                 clearled()
  206.                 GPIO.output(led2, 1)
  207.                 lastreading = 25
  208.                
  209.         elif reading == 26:
  210.             clearsegs()
  211.             GPIO.output(seg1, 1)
  212.             GPIO.output(seg2, 1)
  213.             GPIO.output(seg3, 1)
  214.             GPIO.output(seg4, 1)
  215.             GPIO.output(seg5, 1)
  216.             GPIO.output(seg6, 1)
  217.             if lastreading < 26:
  218.                 clearled()
  219.                 GPIO.output(led1, 1)
  220.                 lastreading = 26
  221.             elif lastreading > 26:
  222.                 clearled()
  223.                 GPIO.output(led2, 1)
  224.                 lastreading = 26
  225.            
  226.         elif reading == 27:
  227.             clearsegs()
  228.             GPIO.output(seg1, 1)
  229.             GPIO.output(seg2, 1)
  230.             GPIO.output(seg3, 1)
  231.             GPIO.output(seg4, 1)
  232.             GPIO.output(seg5, 1)
  233.             GPIO.output(seg6, 1)
  234.             GPIO.output(seg7, 1)
  235.             if lastreading < 27:
  236.                 clearled()
  237.                 GPIO.output(led1, 1)
  238.                 lastreading = 27
  239.             elif lastreading > 27:
  240.                 clearled()
  241.                 GPIO.output(led2, 1)
  242.                 lastreading = 27
  243.                
  244.         elif reading == 28:
  245.             clearsegs()
  246.             GPIO.output(seg1, 1)
  247.             GPIO.output(seg2, 1)
  248.             GPIO.output(seg3, 1)
  249.             GPIO.output(seg4, 1)
  250.             GPIO.output(seg5, 1)
  251.             GPIO.output(seg6, 1)
  252.             GPIO.output(seg7, 1)
  253.             GPIO.output(seg8, 1)
  254.             if lastreading < 28:
  255.                 clearled()
  256.                 GPIO.output(led1, 1)
  257.                 lastreading = 28
  258.             elif lastreading > 28:
  259.                 clearled()
  260.                 GPIO.output(led2, 1)
  261.                 lastreading = 28
  262.            
  263.         elif reading == 29:
  264.             clearsegs()
  265.             GPIO.output(seg1, 1)
  266.             GPIO.output(seg2, 1)
  267.             GPIO.output(seg3, 1)
  268.             GPIO.output(seg4, 1)
  269.             GPIO.output(seg5, 1)
  270.             GPIO.output(seg6, 1)
  271.             GPIO.output(seg7, 1)
  272.             GPIO.output(seg8, 1)
  273.             GPIO.output(seg9, 1)
  274.             if lastreading < 29:
  275.                 clearled()
  276.                 GPIO.output(led1, 1)
  277.                 lastreading = 29
  278.             elif lastreading > 29:
  279.                 clearled()
  280.                 GPIO.output(led2, 1)
  281.                 lastreading = 29
  282.            
  283.         elif reading == 30:
  284.             clearsegs()
  285.             GPIO.output(seg1, 1)
  286.             GPIO.output(seg2, 1)
  287.             GPIO.output(seg3, 1)
  288.             GPIO.output(seg4, 1)
  289.             GPIO.output(seg5, 1)
  290.             GPIO.output(seg6, 1)
  291.             GPIO.output(seg7, 1)
  292.             GPIO.output(seg8, 1)
  293.             GPIO.output(seg9, 1)
  294.             GPIO.output(seg10, 1)
  295.             if lastreading < 30:
  296.                 clearled()
  297.                 GPIO.output(led1, 1)
  298.                 lastreading = 30
  299.             elif lastreading > 30:
  300.                 clearled()
  301.                 GPIO.output(led2, 1)
  302.                 lastreading = 30
  303.                
  304.         elif reading > 30:
  305.             clearsegs()
  306.             print "Greater than 30, no lights"
  307.             if lastreading < 30:
  308.                 clearled()
  309.                 GPIO.output(led1, 1)
  310.                 lastreading = reading
  311.             elif lastreading > 30:
  312.                 clearled()
  313.                 GPIO.output(led2, 0)
  314.                 lastreading = reading
  315.            
  316.         else:
  317.             print "out of range"
  318.            
  319.  
  320. finally: # USE THIS OPTION FOR DEBUGGING
  321.  
  322.     print "EXIT SCRIPT"
  323.     time.sleep(0.5)
  324.    
  325.     # Clean up GPIOs
  326.     print "PERFORMING GPIO CLEANUP"
  327.     time.sleep(0.5)
  328.     GPIO.cleanup() # Clean up the gpio pins ready for the next project.
  329.    
  330.     # Exit program
  331.     print "--- EXIT NOW ---"
  332.     time.sleep(0.5)
  333.     quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement