Advertisement
pippero

Untitled

Sep 30th, 2023
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3. #include <SoftwareSerial.h>
  4.  
  5. #define ONE_WIRE_BUS 2
  6. OneWire oneWire(ONE_WIRE_BUS);
  7. DallasTemperature sensors(&oneWire);
  8. SoftwareSerial mySerial(10, 11); // RX, TX
  9.  
  10. unsigned long t1, dt;
  11. int stato = 0;
  12.  
  13. struct mydata {
  14. char cmd;
  15. int count;
  16. float temp;
  17. char str[20];
  18. int st_size ;
  19. };
  20.  
  21. mydata dato = {'x', 0, 18.0f, "hello world!",0};
  22.  
  23. void setup() {
  24. pinMode(13, OUTPUT);
  25. pinMode(12, OUTPUT);
  26. Serial.println("trasmettitore");
  27. Serial.begin(9600);
  28. mySerial.begin(9600);
  29. digitalWrite(13, LOW);
  30. sensors.begin();
  31. }
  32.  
  33. void loop() {
  34. Serial.print(".");
  35. sensors.requestTemperatures();
  36. dato.temp = sensors.getTempCByIndex(0);
  37. //Serial.println (sensors.getTempCByIndex(0));
  38.  
  39. switch (stato) {
  40. case 0:
  41. tx();
  42. break;
  43. case 1:
  44. ack();
  45. break;
  46. case 2:
  47. timeout();
  48. break;
  49. }
  50. }
  51. void tx() {
  52. dato.st_size = sizeof(struct mydata);
  53. Serial.print("millis "); Serial.println(millis()/100 );
  54. Serial.println("TX");
  55. mySerial.write((byte)'\n');
  56. mySerial.write((const uint8_t *)&dato, sizeof(struct mydata));
  57.  
  58. dato.count++;
  59. digitalWrite(13, HIGH);
  60. stato = 1;
  61. t1 = millis();
  62. }
  63. bool FIRST = true;
  64.  
  65. void ack() {
  66. if (FIRST) {
  67. Serial.println("RX...");
  68. FIRST = false;
  69. }
  70. if (mySerial.available()) {
  71. byte c = mySerial.read();
  72. if (c == 'k') {
  73. Serial.println("ACK");
  74. mySerial.flush();
  75. digitalWrite(13, LOW);
  76. delay(500);
  77. stato = 0;
  78. }
  79. }
  80. dt = millis() - t1;
  81. if (dt > 5000) {
  82. //timeout!
  83. Serial.println("timeout");
  84. stato = 2;
  85. }
  86. }
  87. void timeout() {
  88. digitalWrite(13, LOW);
  89. digitalWrite(12, HIGH);
  90. stato = 0;
  91. delay(3000);
  92. digitalWrite(12, LOW);
  93. }
  94. //sensors.requestTemperatures();
  95. //dato.temp = sensors.getTempCByIndex(0);
  96. //Serial.println (sensors.getTempCByIndex(0));
  97. //mySerial.write((const uint8_t *)&dato, sizeof(struct mydata));
  98. //mySerial.write((byte)'\n');
  99. //dato.count++;
  100. //delay(1000);
  101. //}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement