Advertisement
wariat

BezLuftu proto 1.0

Feb 28th, 2016
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.83 KB | None | 0 0
  1. /**********************************
  2.  * Bez Luftu 1.0 proto
  3.  *
  4.  * copyleft Jakub Klawiter 02.2016
  5.  *
  6.  **********************************/
  7.  
  8.  
  9. #include <OneWire.h>
  10.  
  11. /* ---------- CONFIG -------------------------------------------------------- */
  12. #define SET_TEMP          64
  13. /* -------------------------------------------------------------------------- */
  14. #define TRIGGER           SET_TEMP * 16
  15.  
  16.  
  17.  
  18.  
  19. /* ---------- DS18B20 1-wire commands --------------------------------------- */
  20. // ROM function Commands
  21. #define READ_ROM          0x33
  22. #define MATCH_ROM         0x55
  23. #define SKIP_ROM          0xCC
  24. #define SEARCH_ROM        0xF0
  25. #define ALARM_SEARCH      0xEC
  26.  
  27. // MEMORY command functions
  28. #define WRITE_SCRATCHPAD  0x4E
  29. #define READ_SCRATCHPAD   0xBE
  30. #define COPY_SCRATCHPAD   0x48
  31. #define CONVERT_T         0x44
  32. #define RECALL_E2         0xB8
  33. #define READ_POWER_SUPPLY 0xB4
  34.  
  35. /* ---------- Arduinno I/O -------------------------------------------------- */
  36. OneWire ds( 10 ); // termometr na pin 10
  37. #define LED               13
  38. #define RELAY             12
  39.  
  40.  
  41. void setup() {
  42.   Serial.begin( 9600 );
  43.   Serial.flush();
  44.   delay( 5000 );
  45.  
  46.   pinMode( LED, OUTPUT ); // LED
  47.   pinMode( RELAY, OUTPUT ); // Relay
  48.  
  49.   digitalWrite( RELAY, HIGH );
  50.  
  51.   Serial.println( "set, temp, state, trigger" );
  52. }
  53.  
  54.  
  55.  
  56.  
  57. void loop() {
  58.  
  59.   uint16_t RAW_temperature;
  60.   int16_t  trigger;
  61.   uint8_t  state = 0;
  62.  
  63.   while ( 1 )
  64.   {
  65.     OneWire_Convert();
  66.  
  67.     delay( 1000 );
  68.  
  69.     RAW_temperature = OneWire_ReadScratchpad();
  70.  
  71.     if ( RAW_temperature == 0xDEAD )
  72.       return;
  73.  
  74.     trigger = RAW_temperature - TRIGGER;
  75.  
  76. //    if ( ( state == 0 && trigger <= -8 ) ||
  77. //         ( state == 1 && trigger >= -4 ) )
  78. //      state = !state;
  79.  
  80.     state = ( state == 1 && trigger <= -4 ) ||
  81.             ( state == 0 && trigger <= -8 );
  82.  
  83.  
  84.     digitalWrite( LED, state );
  85.     digitalWrite( RELAY, !state );
  86.    
  87.     Serial.print( SET_TEMP );
  88.     Serial.print( ", " );
  89.     Serial.print( RAW_temperature / 16.0, 4 );
  90.     Serial.print( ", " );
  91.     Serial.print( state );
  92.     Serial.print( ", " );
  93.     Serial.print( trigger );
  94.     //Serial.print( ", " );
  95.     //Serial.print( RAW_temperature, BIN );
  96.     Serial.println( "" );
  97.   }
  98. }
  99.  
  100. void OneWire_Convert()
  101. {
  102.   ds.reset();
  103.   ds.write( SKIP_ROM );
  104.   ds.write( CONVERT_T, 1 );
  105.  
  106.   return;
  107. }
  108.  
  109. uint16_t OneWire_ReadScratchpad()
  110. {
  111.   byte     data[12];
  112.   uint16_t temp = 0;
  113.  
  114.   ds.reset();
  115.   ds.write( SKIP_ROM );
  116.   ds.write( READ_SCRATCHPAD );
  117.  
  118.   for ( byte i=0; i < 9; i++ )
  119.   {
  120.     data[i] = ds.read();
  121.     //Serial.print( data[i], HEX );
  122.     //Serial.print( " " );
  123.   }
  124.   //Serial.println();
  125.  
  126.   if ( data[8] != OneWire::crc8( data,8 ) )
  127.   {
  128.     Serial.println( "CRC not valid!" );
  129.     return 0xDEAD;
  130.   }
  131.  
  132.   temp = ( data[1] << 8 ) | data [0];
  133.  
  134.   return temp;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement