Guest User

Untitled

a guest
Jan 28th, 2020
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "Wire.h"
  2. #define DS3231_I2C_ADDRESS 0x68
  3. #define LATCH_DIO 4
  4. #define CLK_DIO 7
  5. #define DATA_DIO 8
  6.  
  7.  const byte kropka = B01111111;
  8. const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
  9. const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8};
  10. void setup()
  11. {
  12.   Wire.begin();
  13.   Serial.begin(9600);
  14.   pinMode(LATCH_DIO,OUTPUT);
  15.   pinMode(CLK_DIO,OUTPUT);
  16.   pinMode(DATA_DIO,OUTPUT);
  17. }
  18. void loop()
  19. {
  20.   //Serial.println(displayTemperature());
  21.  
  22.   WriteNumber3((displayTemperatureBin()>>6)*25);
  23.   WriteNumber2(displayTemperature());
  24.   writeLeterToSegment(B00000010,kropka);
  25.   //WriteNumber(displayTemperatureBin()>>6);
  26.  
  27. }
  28.  
  29.  
  30.  
  31. byte displayTemperature()
  32. {
  33.    byte data = 0xFF;
  34.  
  35.   Wire.beginTransmission(0x68);
  36.   Wire.write(0x11); // the integer portion
  37.   Wire.endTransmission();
  38.  
  39.   Wire.requestFrom(0x68,1 );
  40.    if (Wire.available()) { data = Wire.read();}
  41.    
  42.   return data;
  43. }
  44. byte displayTemperatureBin()
  45. {
  46.    byte data = 0xFF;
  47.  
  48.   Wire.beginTransmission(0x68);
  49.   Wire.write(0x12); // the integer portion
  50.   Wire.endTransmission();
  51.  
  52.   Wire.requestFrom(0x68,1 );
  53.    if (Wire.available()) { data = Wire.read();}
  54.    
  55.   return data;
  56. }
  57. void WriteNumber(int Number)
  58. {
  59.   WriteNumberToSegment(0 , Number / 1000);
  60.   WriteNumberToSegment(1 , (Number / 100) % 10);
  61.   WriteNumberToSegment(2 , (Number / 10) % 10);
  62.   WriteNumberToSegment(3 , Number % 10);
  63. }
  64. void WriteNumber2(int Number)
  65. {
  66.   WriteNumberToSegment(0 , (Number / 10) % 10);
  67.   WriteNumberToSegment(1 , Number % 10);
  68.  
  69. }
  70. void WriteNumber3(int Number)
  71. {
  72.   WriteNumberToSegment(2 , (Number / 10) % 10);
  73.   WriteNumberToSegment(3 , Number % 10);
  74.  
  75. }
  76. void WriteNumberToSegment(byte Segment, byte Value)
  77. {
  78.   digitalWrite(LATCH_DIO,LOW);
  79.   shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
  80.   shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
  81.   digitalWrite(LATCH_DIO,HIGH);    
  82. }
  83.  
  84. void writeLeterToSegment(byte Segment, byte Value)
  85. {
  86.   digitalWrite(LATCH_DIO,LOW);
  87.   shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, Value);
  88.   shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, Segment );
  89.   digitalWrite(LATCH_DIO,HIGH);    
  90. }
Advertisement
Add Comment
Please, Sign In to add comment