Advertisement
Guest User

Untitled

a guest
Jul 27th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3.  
  4. // pin setups
  5. int latchPin = 8;
  6. int clockPin = 12;
  7. int dataPin = 11;
  8. int tempPin = 7;
  9. char recMsg = '0';
  10.  
  11. // librraries for connecting to sensor
  12. OneWire oneWire(tempPin);
  13. DallasTemperature tempSens(&oneWire);
  14.  
  15. // characters for displaying on 7-seg display 0-9
  16. byte numberSet[10] = {
  17. B01111011, B01000001, B00110111, B01100111, // 0,1,2,3
  18. B01001101, B01101110, B01111110, B01000011, // 4,5,6,7
  19. B01111111, B01101111 // 8,9
  20. };
  21.  
  22.  
  23. void setup() {
  24. // init serial
  25. Serial.begin(9600);
  26. // init temp sensor
  27. tempSens.begin();
  28.  
  29. pinMode(latchPin, OUTPUT);
  30.  
  31. // set display to 00
  32. displayNumb(0, 0);
  33. }
  34.  
  35. void loop() {
  36.  
  37. while(Serial.available() > 0) {
  38. recMsg = Serial.read();
  39. }
  40.  
  41. if (recMsg!='0') {
  42. // request temp from sensor
  43. tempSens.requestTemperatures();
  44. float t = tempSens.getTempCByIndex(0);
  45.  
  46. // send temp to serial
  47. Serial.print(t);
  48.  
  49. // cast temp to float (only have 2 digits to use on display)
  50. int rT = (int)t;
  51.  
  52. // get units of temp
  53. int units = rT % 10;
  54.  
  55. // get tens value of temp
  56. rT = rT/10;
  57. int tens = rT % 10;
  58.  
  59. // display temp
  60. displayNumb(units, tens);
  61.  
  62. recMsg = '0';
  63. }
  64. }
  65.  
  66. void displayNumb(int a, int b) {
  67. // get the code for the numbers
  68. byte bitsA = numberSet[a];
  69. byte bitsB = numberSet[b];
  70.  
  71. // set ready to shift out
  72. digitalWrite(latchPin, LOW);
  73.  
  74. // shift units
  75. shiftOut(dataPin, clockPin, bitsA);
  76. // shift tens
  77. shiftOut(dataPin, clockPin, bitsB);
  78.  
  79. // shift out data
  80. digitalWrite(latchPin, HIGH);
  81. }
  82.  
  83. // shift the data out to the shift registors
  84. void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
  85. int i=0;
  86. int pinState;
  87.  
  88. // set pinmodes for shift
  89. pinMode(myClockPin, OUTPUT);
  90. pinMode(myDataPin, OUTPUT);
  91.  
  92. digitalWrite(myDataPin, 0);
  93. digitalWrite(myClockPin, 0);
  94.  
  95. // iterate over each bit in the myDataOut byte
  96. for (i=7; i>=0; i--) {
  97. digitalWrite(myClockPin, 0);
  98.  
  99. if ( myDataOut & (1<<i) ) {
  100. pinState= 1;
  101. }
  102. else {
  103. pinState= 0;
  104. }
  105.  
  106. digitalWrite(myDataPin, pinState);
  107. digitalWrite(myClockPin, 1);
  108. digitalWrite(myDataPin, 0);
  109. }
  110.  
  111. digitalWrite(myClockPin, 0);
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement