Arduino e Comunicazione Seriale

di il
3 risposte

Arduino e Comunicazione Seriale

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:
Questa è la GET DOPO aver importato la libreria Wire.h! Praticamente arduino legge solo la "G"
Questa è la GET DOPO aver importato la libreria Wire.h! Praticamente arduino legge solo la "G"

Questa è la GET inviata dal client, praticamente completa al 100% PRIMA di importare Wire.h
Questa è la GET inviata dal client, praticamente completa al 100% PRIMA di importare Wire.h

3 Risposte

  • Re: Arduino e Comunicazione Seriale

    Per il I2C vengono utilizzati determinati pin (diversi in base al modello della scheda Arduino, vedi qui ), non è che li stai già utilizzando per fare altro e si crea confusione?
  • Re: Arduino e Comunicazione Seriale

    tuixte ha scritto:


    Per il I2C vengono utilizzati determinati pin (diversi in base al modello della scheda Arduino, vedi qui ), non è che li stai già utilizzando per fare altro e si crea confusione?
    Ciao! Si ho visto che per I2C vengono utilizzati pin specifici, ma il problema è piu a monte, ovvero, solo con la semplice importazione della libreria "Wire.h" che serve, appunto, per utilizzare I2C ho questo tipo di anomalia!!! Non sono ancora arrivato a fare nessun collegamento ...Appena importo semplicemente la libreria succede quella cosa strana, come se il buffer di ricezione della GET HTTP o la memoria di arduino, non so, fosse piena e non riuscisse piu a scrivere la GET completa ricevuta dal Browser!
  • Re: Arduino e Comunicazione Seriale

    Dato che quelle funzionalità prevedono l'allocazione di memoria per un buffer aggiuntivo (credo di 512 byte), sei sicuro di non essere a corto di memoria ?
Devi accedere o registrarti per scrivere nel forum
3 risposte