Ciao a tutti! Come da titolo sto facendo un progetto con Arduino, premetto che non mi soddisfa per niente come aggeggio e vabbè, detto questo ho un problema che sinceramente è talmente "a caso" che non sò nemmeno se riuscirò a spiegare, ma ci provo...praticamente nel mio progetto Arduino è un server, che appena riceve una "GET HTTP" da un client invia come risposta una semplicissima pagina web in HTML; fin qui tutto bene, se non fosse che per varie necessità ho bisogno di utilizzare il protocollo I2C e quindi la libreria predefinita in arduino, ovveri "Wire.h"...Ora vi posto due immagini per farvi vedere il PRIMA e il DOPO aver importato tale libreria e l'effetto che ha!
Se qualcuno ha idea di quale possa essere il motivo glie ne sarei veramente grato se me lo spiegasse! Grazie in anticipo!
Codice del main loop:
#include "MyEthernet.h"
#include "TempUm.h"
#include "Detector.h"
#include <virtuabotixRTC.h>
#include <Ethernet.h>
#include <SPI.h>
#include <Arduino.h>
#include <dht11.h>
#include <Wire.h>
#define ALLARM 3000
Detector* detector;
MyEthernet* ethernet;
TempUm* tempUm;
EthernetServer* arduinoServer;
Buzzer* buzzer;
unsigned long precTime;
void setup() {
arduinoServer = new EthernetServer(80);
buzzer = new Buzzer(9);
tempUm = new TempUm(8);
ethernet = new MyEthernet(arduinoServer);
ethernet->connect();
detector = new Detector(2);
attachInterrupt(0, detect, RISING);
Serial.begin(9600);
}
void loop(){
if (detector->isOn()) { // Se da pagina web lo tengo attivo
if (!detector->getState() && (millis() - precTime) > ALLARM) { // Se non rileva piu niente e sono passati 3sec dall'ultimo rilev.
buzzer->setState(false);
attachInterrupt(0, detect, RISING);
}
} else if (!detector->isOn() && buzzer->getState()) { // Se da pagina web decido di disattivarlo
buzzer->setState(false);
attachInterrupt(0, detect, RISING);
}
ethernet->sendPage(tempUm, detector, buzzer);
}
void detect() {
if (detector->isOn()) {
Serial.println("Interrupt");
precTime = millis();
buzzer->setState(true);
detachInterrupt(0);
}
}
Allegati: