Advertisement
Guest User

Untitled

a guest
Sep 17th, 2012
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. #include "leOS.h" //include the OS
  2. #include <Wire.h> // libreria da utilizzare Il protocollo I2C
  3.  
  4. leOS myOS; //create a new istance of the class leOS
  5.  
  6. //variabiles to control the LEDs
  7. byte led1Status = 0;
  8. byte led2Status = 0;
  9. byte led3Status = 0;
  10. const byte LED1 = 7;
  11. const byte LED2 = 8;
  12. const byte LED3 = 9;
  13. byte counter = 10;
  14. char direction = -1;
  15.  
  16. int lettura = 0; // memorizzare i dati provenienti dai sensori
  17. float temperatura = 0; // Memorizza la temperatura calcolata
  18. float temperatura2 = 0;
  19. //program setup
  20. void setup() {
  21. Serial.begin (9600); // start comunicazione seriale con PC
  22. Wire.begin(); // inizia la comunicazione TWI bus
  23.  
  24. ///// Impostare la risoluzione di misura
  25. Wire.beginTransmission(B1001000); // si riferisce alla sensore
  26. Wire.write (0x01); // registro di stato 01
  27. Wire.write (0x60); // imposta la risoluzione 0,0625
  28. Wire.endTransmission(); // scollega
  29.  
  30. ///// Scegliere di registrare la temperatura misurata
  31. Wire.beginTransmission(B1001000); // si riferisce al sensore
  32. Wire.write (0x00); // registro di stato 00
  33. Wire.endTransmission(); // scollega
  34.  
  35. myOS.begin(); //initialize the scheduler
  36.  
  37. pinMode(LED1, OUTPUT);
  38. pinMode(LED2, OUTPUT);
  39. pinMode(LED3, OUTPUT);
  40.  
  41. //add the tasks at the scheduler
  42. myOS.addTask(flashLed1, 600);
  43. myOS.addTask(flashLed2, 350);
  44.  
  45. //add the tasks at the scheduler
  46. myOS.addTask(letturaTemperatura, 900);
  47.  
  48. }
  49.  
  50.  
  51. //main loop
  52. void loop() {
  53. digitalWrite(LED2, led2Status);
  54. led2Status ^= 1;
  55. delay(1000);
  56.  
  57. //every 10 secs pause/restart the second task
  58. counter += direction;
  59. if (counter == 0) {
  60. myOS.pauseTask(flashLed1); //pause the task
  61. direction = 1;
  62. }
  63. if (counter == 10) {
  64. myOS.restartTask(flashLed1); //restart the task
  65. direction = -1;
  66. }
  67.  
  68. if (counter == 2) {
  69. myOS.restartTask(letturaTemperatura);
  70. //letturaTemperatura();
  71. Serial.println (temperatura2, 3); // ogni valore รจ una nuova linea
  72. }
  73. }
  74.  
  75.  
  76. //first task
  77. void flashLed1() {
  78. led1Status^=1;
  79. digitalWrite(LED1, led1Status);
  80. }
  81.  
  82.  
  83. //second task
  84. void flashLed2() {
  85. led3Status^=1;
  86. digitalWrite(LED3, led3Status);
  87. }
  88.  
  89.  
  90. //third task
  91. void letturaTemperatura() {
  92.  
  93. ////// Riceve i dati dal registro di temperatura e di processo
  94. Wire.requestFrom(B1001000, 2); // richiesta 2 byte dal sensore
  95. lettura = Wire.read(); // scrivere il primo byte ricevuti
  96. // Nella variabile intera ed
  97. lettura = lettura << 8; // spostamento a sinistra 8 posizioni
  98. lettura |= Wire.read(); // scrittura byte successivo a
  99. // Posizioni esente e si muove
  100. lettura = lettura >> 4; // tutti i bit di sinistra 4 posizioni
  101.  
  102. ///// Calcolata dalla temperatura dati ottenuti
  103. temperatura = (float)lettura/16; // dividere i 16 ottenuti dopo
  104. // Manipolazione Valore
  105. temperatura2 = (float)lettura/16;
  106. ///// Display Monitor-temperatura e Serial
  107. Serial.println (temperatura, 3); // ogni valore รจ una nuova linea
  108. // 3 cifre dopo la virgola
  109. //delay(500); // โ€‹โ€‹500ms attendere prima di ripetere il ciclo
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement