Advertisement
Guest User

Codici Arduino

a guest
Jul 24th, 2023
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.85 KB | None | 0 0
  1. Codici: (non ho idea se sono corretti)
  2.  
  3. Arduino 1 (con Display, Sensore SHT31 e Ricevitore RCRX3-434) Temperatura e umidità Interna e Esterna visualizzata sul Display
  4.  
  5. #include <Wire.h>
  6. #include <Adafruit_SHT31.h>
  7. #include <LiquidCrystal_I2C.h>
  8. #include <RCSwitch.h>
  9.  
  10. #define RECEIVER_DATA_PIN 2
  11.  
  12. Adafruit_SHT31 sht31_internal;
  13. LiquidCrystal_I2C lcd(0x27, 16, 2);
  14. RCSwitch mySwitch;
  15.  
  16. void setup() {
  17. lcd.begin(16, 2);
  18. lcd.print("Temp Int: ");
  19. lcd.setCursor(0, 1);
  20. lcd.print("Umid Int: ");
  21.  
  22. lcd.setCursor(0, 2);
  23. lcd.print("Temp Ext: ");
  24. lcd.setCursor(0, 3);
  25. lcd.print("Umid Ext: ");
  26.  
  27. Serial.begin(9600);
  28. if (!sht31_internal.begin(0x44)) {
  29. Serial.println("Impossibile trovare il sensore SHT31 interno");
  30. while (1) delay(1);
  31. }
  32.  
  33. mySwitch.enableReceive(RECEIVER_DATA_PIN);
  34. }
  35.  
  36. void loop() {
  37. float temp_internal = sht31_internal.readTemperature();
  38. float humidity_internal = sht31_internal.readHumidity();
  39.  
  40. lcd.setCursor(10, 0);
  41. lcd.print(temp_internal, 1);
  42. lcd.print(" C ");
  43.  
  44. lcd.setCursor(10, 1);
  45. lcd.print(humidity_internal, 1);
  46. lcd.print(" %");
  47.  
  48. float temp_external = 0.0;
  49. float humidity_external = 0.0;
  50.  
  51. if (mySwitch.available()) {
  52. int value = mySwitch.getReceivedValue();
  53. if (value != 0) {
  54. temp_external = value / 10.0;
  55. humidity_external = value % 10 / 10.0;
  56. }
  57. mySwitch.resetAvailable();
  58. }
  59.  
  60. lcd.setCursor(10, 2);
  61. lcd.print(temp_external, 1);
  62. lcd.print(" C ");
  63.  
  64. lcd.setCursor(10, 3);
  65. lcd.print(humidity_external, 1);
  66. lcd.print(" %");
  67.  
  68. Serial.print("Temp Int: ");
  69. Serial.print(temp_internal);
  70. Serial.print(" C | Umid Int: ");
  71. Serial.print(humidity_internal);
  72. Serial.print(" % | Temp Ext: ");
  73. Serial.print(temp_external);
  74. Serial.print(" C | Umid Ext: ");
  75. Serial.print(humidity_external);
  76. Serial.println(" %");
  77.  
  78. delay(2000);
  79. }
  80.  
  81.  
  82. Arduino 2 (con Sensore SHT31 e Trasmettitore RC-TX1-434):
  83.  
  84. #include <Wire.h>
  85. #include <Adafruit_SHT31.h>
  86. #include <RCSwitch.h>
  87.  
  88. #define TRANSMITTER_DATA_PIN 10
  89.  
  90. Adafruit_SHT31 sht31_external;
  91. RCSwitch mySwitch;
  92.  
  93. void setup() {
  94. Serial.begin(9600);
  95. if (!sht31_external.begin(0x45)) {
  96. Serial.println("Impossibile trovare il sensore SHT31 esterno");
  97. while (1) delay(1);
  98. }
  99. mySwitch.enableTransmit(TRANSMITTER_DATA_PIN);
  100. }
  101.  
  102. void loop() {
  103. float temp_external = sht31_external.readTemperature();
  104. float humidity_external = sht31_external.readHumidity();
  105.  
  106. Serial.print("Temperature: ");
  107. Serial.print(temp_external);
  108. Serial.print(" C, Humidity: ");
  109. Serial.print(humidity_external);
  110. Serial.println(" %");
  111.  
  112. int valueToSend = int(temp_external * 10) + int(humidity_external * 10); // Combina temperatura e umidità in un unico valore intero
  113. mySwitch.send(valueToSend, 32);
  114. delay(1000);
  115. }
  116.  
  117.  
  118.  
  119. Codice del Arduino 1 (con Display, Sensore SHT31) senza ricevitore RCRX3-434
  120.  
  121. #include <Wire.h>
  122. #include <Adafruit_SHT31.h>
  123. #include <LiquidCrystal_I2C.h>
  124.  
  125. Adafruit_SHT31 sht31 = Adafruit_SHT31();
  126. LiquidCrystal_I2C lcd(0x27, 16, 2);
  127.  
  128. void setup() {
  129. lcd.begin(16, 2);
  130. lcd.print("Temperatura: ");
  131. lcd.setCursor(0, 1);
  132. lcd.print("Umidità: ");
  133.  
  134. Serial.begin(9600);
  135. if (!sht31.begin(0x44)) {
  136. Serial.println("Couldn't find SHT31");
  137. while (1) delay(1);
  138. }
  139. }
  140.  
  141. void loop() {
  142. float temperatura = sht31.readTemperature();
  143. float umidita = sht31.readHumidity();
  144.  
  145. lcd.setCursor(13, 0);
  146. lcd.print(temperatura);
  147. lcd.print(" C");
  148.  
  149. lcd.setCursor(10, 1);
  150. lcd.print(umidita);
  151. lcd.print(" %");
  152.  
  153. delay(2000); // Aggiungi un ritardo per non aggiornare troppo velocemente il display
  154. }
  155.  
  156.  
  157. Se si vuole escludere il ricevitore e trasmettitore mantenendo i codici credo che funzioni anche disattivandoli commentando la parte di codice relativa ai modul RCRX3-434, RC-TX1-434 :
  158.  
  159. Arduino 1 (con Display, Sensore SHT31 e Ricevitore RCRX3-434):
  160.  
  161. //#include <RCSwitch.h>
  162. //RCSwitch mySwitch = RCSwitch();
  163. //mySwitch.enableReceive(RECEIVER_DATA_PIN);
  164.  
  165. Arduino 2 (con Sensore SHT31 e Trasmettitore RC-TX1-434):
  166.  
  167. //#include <RCSwitch.h>
  168. //RCSwitch mySwitch = RCSwitch();
  169. //mySwitch.enableTransmit(TRANSMITTER_DATA_PIN);
  170.  
  171.  
  172. Eseguire la scansione I2C e trovare gli indirizzi dei dispositivi
  173.  
  174.  
  175.  
  176. Per eseguire la scansione I2C e trovare gli indirizzi dei dispositivi collegati, possiamo utilizzare una libreria di terze parti chiamata "I2C Scanner". Segui questi passaggi per eseguire la scansione I2C con la libreria "I2C Scanner":
  177.  
  178. Apri l'IDE di Arduino sul tuo computer.
  179.  
  180. Collega il tuo Arduino al computer tramite un cavo USB e seleziona la porta corretta del dispositivo dall'IDE di Arduino, se non è già selezionata. Puoi farlo dal menu "Strumenti" (Tools) > "Porta".
  181.  
  182. Assicurati di avere installato la libreria "I2C Scanner" nell'IDE di Arduino. Per farlo, vai su "Sketch" > "Includi Libreria" > "Gestisci Librerie". Nella finestra che si apre, cerca "I2C Scanner" e installa la libreria se non è già installata.
  183.  
  184. Crea un nuovo sketch andando su "File" > "Nuovo" nell'IDE di Arduino.
  185.  
  186. Copia e incolla il seguente codice nel nuovo sketch:
  187.  
  188. #include <Wire.h>
  189.  
  190. void setup() {
  191. Wire.begin();
  192.  
  193. Serial.begin(9600);
  194. while (!Serial);
  195. Serial.println("\nI2C Scanner");
  196. }
  197.  
  198. void loop() {
  199. byte error, address;
  200. int nDevices;
  201.  
  202. Serial.println("Scanning...");
  203.  
  204. nDevices = 0;
  205. for (address = 1; address < 127; address++) {
  206. Wire.beginTransmission(address);
  207. error = Wire.endTransmission();
  208.  
  209. if (error == 0) {
  210. Serial.print("I2C device found at address 0x");
  211. if (address < 16) Serial.print("0");
  212. Serial.print(address, HEX);
  213. Serial.println(" !");
  214. nDevices++;
  215. } else if (error == 4) {
  216. Serial.print("Unknown error at address 0x");
  217. if (address < 16) Serial.print("0");
  218. Serial.println(address, HEX);
  219. }
  220. }
  221. if (nDevices == 0) Serial.println("No I2C devices found\n");
  222.  
  223. delay(5000); // Wait 5 seconds for the next scan
  224. }
  225.  
  226. Caricare l'esempio sull'Arduino facendo clic sull'icona di caricamento (una freccia verso destra) nella barra degli strumenti dell'IDE di Arduino.
  227.  
  228. Dopo aver caricato il codice, aprire il monitor seriale facendo clic sull'icona dell'occhio nella barra degli strumenti dell'IDE di Arduino. Assicurarsi che il monitor seriale sia impostato alla stessa velocità di comunicazione seriale del codice (nel codice è impostato a 9600 bps).
  229.  
  230. Premere il pulsante di reset sull'Arduino (se disponibile) per avviare la scansione I2C. Se non è presente un pulsante di reset, è possibile semplicemente caricare nuovamente il codice premendo l'icona di caricamento.
  231.  
  232. Osservare i risultati della scansione I2C nel monitor seriale. Dovresti vedere una lista di indirizzi I2C rilevati.
  233.  
  234. Cercare gli indirizzi corrispondenti al tuo sensore SHT31 e al display LCD I2C nella lista. Prendere nota di questi indirizzi e utilizzali nel progetto.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement