Advertisement
noam76

My project

Aug 13th, 2015
571
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.36 KB | None | 0 0
  1. /* the master read temp,desirable temp and damper status from the slave
  2. * turn on/off damper status from the slave.
  3. * view on TFT (serial monitor) the temp,desirable temp and damper status
  4. * room[x].room_temperature
  5. * room[x].user_temperature
  6. * room[x].motor_damper_status
  7. * room[x].thermostat_power_status
  8. * x - number of room
  9. */
  10.  
  11. #include <TFT_ILI9341.h>
  12. #include <SPI.h>
  13. #define TFT_GREY 0x5AEB
  14. TFT_ILI9341 tft = TFT_ILI9341(); // Invoke custom library
  15.  
  16. #include "thermostat.h" /* include class for each room thermostat
  17. thermostat room[4]; /* define 5 room thermostat from [0] to [4], customize class in thermostat.h
  18.  
  19. // convert room number to words for facilities
  20. #define one 0
  21. #define two 1
  22. #define three 2
  23. #define four 3
  24. #define five 4
  25.  
  26. /* define I2C port for each room thermostat
  27. each one is a standalone ATMEGA328P connected by I2C
  28. #define room1 2
  29. #define room2 3
  30. #define room3 4
  31. #define room4 5
  32. #define room5 6
  33.  
  34. #include "Wire.h"
  35. #include <AnalogMatrixKeypad.h> // keypad library
  36. #define analogPin 0 // keypad read,input pin
  37. AnalogMatrixKeypad AnMatrixKeypad(analogPin); //define the keypad
  38.  
  39. #include "dampermotor.h" // add custom library to open or close room damper
  40. #define motor_timeout 1500 // timeout for turning on or off the damper room for 3 sec
  41.  
  42. // define motor pins to driving for each rooms with the timeout
  43. dampermotor motor_room1(2,3,motor_timeout);
  44. dampermotor motor_room2(4,5,motor_timeout);
  45. dampermotor motor_room3(6,7,motor_timeout);
  46. dampermotor motor_room4(8,9,motor_timeout);
  47. dampermotor motor_room5(10,11,motor_timeout);
  48. dampermotor motor_bypass(12,13,motor_timeout);
  49.  
  50. #include "new_RTC.h" //add RTC code to display on the TFT
  51. #include "check_keypad1.h" //add keypad code to check keypad choice with switch,case
  52. #include "open_close_room_damper_by_temp1.h" //add damper code to open or close room's damper by room temperature
  53.  
  54. // define pins for TFT screen
  55. #define sclk 52 // Don't change
  56. #define mosi 51 // Don't change
  57. #define miso 50
  58. #define cs 9
  59. #define dc 8
  60. #define rst 7 // you can also connect this to the Arduino reset
  61.  
  62. // read from keypad
  63. void presskeypad()
  64. {
  65. Key = AnMatrixKeypad.readKey();
  66. if(Key != KEY_NOT_PRESSED)
  67. {
  68. Serial.println(Key); // send pressed key to serial monitor
  69. }
  70. }
  71.  
  72. // Master write to Slave, send data to Slave
  73. void write_to_slave(int slave_number, int desirable_temp, boolean mode)
  74. {
  75. Wire.beginTransmission(slave_number); // start data transmission to device #slave_number
  76. Wire.write(desirable_temp); // send one byte
  77. Wire.write(mode); // send one byte
  78. Wire.endTransmission(); // stop transmitting
  79. }
  80.  
  81. // Master reade form Slave device <number>, from room[number][i]
  82. void reader_form_slave(int device,int room_number)
  83. {
  84. Wire.requestFrom(device,4); //request 4 bytes from device <number>
  85. while(Wire.available()) // slave may send less than requested
  86. {
  87. for(int i=0;i<4;i++)
  88. {
  89. int t;
  90. t = Wire.read(); // receive a byte as character
  91. room[room_number].room_temperature=t;
  92. t = Wire.read();
  93. room[room_number].user_temperature=t;
  94. t = Wire.read();
  95. room[room_number].motor_damper_status=t;
  96. t = Wire.read();
  97. room[room_number].thermostat_power_status=t;
  98. }
  99. }
  100. }
  101.  
  102. // Delay for 5min.
  103. void standby()
  104. {
  105. while(end_mode_timer - start_mode_timer <= 1000) // 300000 millis for 5min standby before changing mode
  106. {
  107. end_mode_timer=millis();
  108. }
  109. }
  110.  
  111. void setup()
  112. {
  113. Wire.begin();
  114. Serial.begin(9600);
  115. // start the TFT screen
  116. tft.init();
  117. tft.setRotation(3);
  118. tft.fillScreen(TFT_BLACK);
  119. }
  120.  
  121. void loop()
  122. {
  123. //motor_room1.damper_motor_driver();
  124. //motor_room2.damper_motor_driver();
  125. //motor_room3.damper_motor_driver();
  126. //motor_room4.damper_motor_driver();
  127. //motor_room5.damper_motor_driver();
  128. //motor_bypass.damper_motor_driver();
  129. //reader_form_slave(room1,one); //receive data from room1
  130. //reader_form_slave(room2,two); //receive data from room2
  131. //reader_form_slave(room3,three); //receive data from room3
  132. //reader_form_slave(room4,four); //receive data from device room4
  133. //reader_form_slave(room5,five); //receive data from device room5
  134. presskeypad(); //read from keypad
  135. checkeypad(); // check the key pressed and do something
  136. displayTime(); //read and display from RTC
  137. //open_close_room_damper_by_temp(); // open or close room's damper by room's thermostat temperature
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement