Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**********************************
- * Bez Luftu 1.0 proto
- *
- * copyleft Jakub Klawiter 02.2016
- *
- **********************************/
- #include <OneWire.h>
- /* ---------- CONFIG -------------------------------------------------------- */
- #define SET_TEMP 64
- /* -------------------------------------------------------------------------- */
- #define TRIGGER SET_TEMP * 16
- /* ---------- DS18B20 1-wire commands --------------------------------------- */
- // ROM function Commands
- #define READ_ROM 0x33
- #define MATCH_ROM 0x55
- #define SKIP_ROM 0xCC
- #define SEARCH_ROM 0xF0
- #define ALARM_SEARCH 0xEC
- // MEMORY command functions
- #define WRITE_SCRATCHPAD 0x4E
- #define READ_SCRATCHPAD 0xBE
- #define COPY_SCRATCHPAD 0x48
- #define CONVERT_T 0x44
- #define RECALL_E2 0xB8
- #define READ_POWER_SUPPLY 0xB4
- /* ---------- Arduinno I/O -------------------------------------------------- */
- OneWire ds( 10 ); // termometr na pin 10
- #define LED 13
- #define RELAY 12
- void setup() {
- Serial.begin( 9600 );
- Serial.flush();
- delay( 5000 );
- pinMode( LED, OUTPUT ); // LED
- pinMode( RELAY, OUTPUT ); // Relay
- digitalWrite( RELAY, HIGH );
- Serial.println( "set, temp, state, trigger" );
- }
- void loop() {
- uint16_t RAW_temperature;
- int16_t trigger;
- uint8_t state = 0;
- while ( 1 )
- {
- OneWire_Convert();
- delay( 1000 );
- RAW_temperature = OneWire_ReadScratchpad();
- if ( RAW_temperature == 0xDEAD )
- return;
- trigger = RAW_temperature - TRIGGER;
- // if ( ( state == 0 && trigger <= -8 ) ||
- // ( state == 1 && trigger >= -4 ) )
- // state = !state;
- state = ( state == 1 && trigger <= -4 ) ||
- ( state == 0 && trigger <= -8 );
- digitalWrite( LED, state );
- digitalWrite( RELAY, !state );
- Serial.print( SET_TEMP );
- Serial.print( ", " );
- Serial.print( RAW_temperature / 16.0, 4 );
- Serial.print( ", " );
- Serial.print( state );
- Serial.print( ", " );
- Serial.print( trigger );
- //Serial.print( ", " );
- //Serial.print( RAW_temperature, BIN );
- Serial.println( "" );
- }
- }
- void OneWire_Convert()
- {
- ds.reset();
- ds.write( SKIP_ROM );
- ds.write( CONVERT_T, 1 );
- return;
- }
- uint16_t OneWire_ReadScratchpad()
- {
- byte data[12];
- uint16_t temp = 0;
- ds.reset();
- ds.write( SKIP_ROM );
- ds.write( READ_SCRATCHPAD );
- for ( byte i=0; i < 9; i++ )
- {
- data[i] = ds.read();
- //Serial.print( data[i], HEX );
- //Serial.print( " " );
- }
- //Serial.println();
- if ( data[8] != OneWire::crc8( data,8 ) )
- {
- Serial.println( "CRC not valid!" );
- return 0xDEAD;
- }
- temp = ( data[1] << 8 ) | data [0];
- return temp;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement