Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "leOS.h" //include the OS
- #include <Wire.h> // libreria da utilizzare Il protocollo I2C
- leOS myOS; //create a new istance of the class leOS
- //variabiles to control the LEDs
- byte led1Status = 0;
- byte led2Status = 0;
- byte led3Status = 0;
- const byte LED1 = 7;
- const byte LED2 = 8;
- const byte LED3 = 9;
- byte counter = 10;
- char direction = -1;
- int lettura = 0; // memorizzare i dati provenienti dai sensori
- float temperatura = 0; // Memorizza la temperatura calcolata
- float temperatura2 = 0;
- //program setup
- void setup() {
- Serial.begin (9600); // start comunicazione seriale con PC
- Wire.begin(); // inizia la comunicazione TWI bus
- ///// Impostare la risoluzione di misura
- Wire.beginTransmission(B1001000); // si riferisce alla sensore
- Wire.write (0x01); // registro di stato 01
- Wire.write (0x60); // imposta la risoluzione 0,0625
- Wire.endTransmission(); // scollega
- ///// Scegliere di registrare la temperatura misurata
- Wire.beginTransmission(B1001000); // si riferisce al sensore
- Wire.write (0x00); // registro di stato 00
- Wire.endTransmission(); // scollega
- myOS.begin(); //initialize the scheduler
- pinMode(LED1, OUTPUT);
- pinMode(LED2, OUTPUT);
- pinMode(LED3, OUTPUT);
- //add the tasks at the scheduler
- myOS.addTask(flashLed1, 600);
- myOS.addTask(flashLed2, 350);
- //add the tasks at the scheduler
- myOS.addTask(letturaTemperatura, 900);
- }
- //main loop
- void loop() {
- digitalWrite(LED2, led2Status);
- led2Status ^= 1;
- delay(1000);
- //every 10 secs pause/restart the second task
- counter += direction;
- if (counter == 0) {
- myOS.pauseTask(flashLed1); //pause the task
- direction = 1;
- }
- if (counter == 10) {
- myOS.restartTask(flashLed1); //restart the task
- direction = -1;
- }
- if (counter == 2) {
- myOS.restartTask(letturaTemperatura);
- //letturaTemperatura();
- Serial.println (temperatura2, 3); // ogni valore è una nuova linea
- }
- }
- //first task
- void flashLed1() {
- led1Status^=1;
- digitalWrite(LED1, led1Status);
- }
- //second task
- void flashLed2() {
- led3Status^=1;
- digitalWrite(LED3, led3Status);
- }
- //third task
- void letturaTemperatura() {
- ////// Riceve i dati dal registro di temperatura e di processo
- Wire.requestFrom(B1001000, 2); // richiesta 2 byte dal sensore
- lettura = Wire.read(); // scrivere il primo byte ricevuti
- // Nella variabile intera ed
- lettura = lettura << 8; // spostamento a sinistra 8 posizioni
- lettura |= Wire.read(); // scrittura byte successivo a
- // Posizioni esente e si muove
- lettura = lettura >> 4; // tutti i bit di sinistra 4 posizioni
- ///// Calcolata dalla temperatura dati ottenuti
- temperatura = (float)lettura/16; // dividere i 16 ottenuti dopo
- // Manipolazione Valore
- temperatura2 = (float)lettura/16;
- ///// Display Monitor-temperatura e Serial
- Serial.println (temperatura, 3); // ogni valore è una nuova linea
- // 3 cifre dopo la virgola
- //delay(500); // 500ms attendere prima di ripetere il ciclo
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement