Buonasera a tutti, mi trovo a chiedervi un consiglio su come risolvere un problema, a mio avviso, incomprensibile. Ho fatto uno sketch che gira bene su arduino UNO con una ethernet shield, preò, se inserisco la riga Udp.begin(localPort) il programma si blocca. Vi posto il codice fino al suddetto comando.
Ringrazio chiunque possa aiutarmi.
Alessandro.
#include <SunLight.h>
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
#include <BlynkSimpleEthernet.h>
#include <TimeLib.h>
#include <WidgetRTC.h>
#define BLYNK_GREEN "#23C48E"
#define BLYNK_BLUE "#04C0F8"
#define BLYNK_YELLOW "#ED9D00"
#define BLYNK_RED "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"
SunLight mySun; // Declaration of the object
float myLatitude = 45.9;
float myLongitude = 12.6;
//----------------- Comunicazione UDP (User Datagram Protocol) ---------------------
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //DE:AD:BE:EF:FE:ED
IPAddress ip(192,168,1,40);// arduino luci
unsigned int localPort = 7880; // arduino luci
char DatiRX[20];
EthernetUDP Udp;
IPAddress IP_Remote(192,168,1,41); //citofono
unsigned int Port_Remote = 7878; //citofono
EthernetClient client;
char server[] = { 64, 233, 187, 99 }; //"www.google.com";
//----------------- TIME ---------------------
WidgetRTC rtc;
BLYNK_CONNECTED() { rtc.begin(); }// Synchronize time on connection
int oraPrecedente = 0;
//--------------------------------------
#define BLYNK_PRINT Serial
char auth[] = "xxxxxxxxxxxxxxxxxxxxxx";
//passw: alebl //
int BttBlynkLuci = LOW;
int BttBlinkAntifurto = LOW;
int BttBlinkDisattivaSensore = LOW;
int BttBlinkflash = LOW;
int ValueUltimaVisita = 0;
bool SensorePresenzaDisattivato = false;
bool presenzaAttivata = false;
bool contaSecondiLuceAccesaTemporaneaTimer = false;
String tutto = "";
BlynkTimer timer;
void checkPhysicalButton();
void checkPhysicalButton(){}
BLYNK_WRITE(V0) {BttBlynkLuci = param.asInt();}
BLYNK_WRITE(V1) {BttBlinkAntifurto = param.asInt();}
BLYNK_WRITE(V2) {BttBlinkflash = param.asInt();}
BLYNK_WRITE(V3) {ValueUltimaVisita = param.asInt();}
BLYNK_WRITE(V4) {BttBlinkDisattivaSensore = param.asInt();}
//BLYNK_READ(V2) {Blynk.
bool luceRossaAttivata = false;
bool luceGiallaAttivata = false;
bool luceVerdeAttivata = false;
WidgetLED ledWrosso(V11);
WidgetLED ledWgiallo(V12);
WidgetLED ledWverde(V13);
//Uscite:
#define LedSemaforoRosso 7
#define LedSemaforoGiallo 6
#define LedSemaforoVerde 5
#define ComandoRele 4
//Ingressi:
#define ConsensoPLC 3
#define SensorePresenza 2
bool StatoLuceManualePLC = false;
bool StatoLuceManualeBlynk = false;
int Presenza = LOW; //SensorePresenza
int Consenso = LOW; //ConsensoPLC
int contaSecondiLuceAccesa = 10000;
int contaSecondiPresenzaRilevata = 15000;
int contaSecondiLuceAccesaMax = 10000;
int contaSecondiLuceAccesaTemporanea = 10000;
void AzzeraSemaforo()
{
digitalWrite(LedSemaforoRosso, LOW);
digitalWrite(LedSemaforoGiallo, LOW);
digitalWrite(LedSemaforoVerde, HIGH);
ledWrosso.off();
ledWgiallo.off();
ledWverde.on();
luceRossaAttivata = false;
luceGiallaAttivata = false;
luceVerdeAttivata = true;
}
void lampeggio(int numeroLampeggi)
{
for (int i=0; i <= numeroLampeggi; i++)
{
digitalWrite(ComandoRele, LOW); //Low = ON
delay(200);
digitalWrite(ComandoRele, HIGH); //Low = OFF
delay(200);
}
}
void clockDisplay() //ogni 10 secondi
{
Serial.println("-- 10 sec. --------------------");
if (contaSecondiLuceAccesa <10000) {contaSecondiLuceAccesa += 10;}
if (contaSecondiPresenzaRilevata <15000) {contaSecondiPresenzaRilevata += 10;}
if (contaSecondiLuceAccesaMax <10000) {contaSecondiLuceAccesaMax += 10;}
Blynk.virtualWrite(V3, contaSecondiPresenzaRilevata/60);
}
void setup()
{
Blynk.begin(auth);
Serial.begin(9600);
Serial.println( "Inizia SETUP");
// ----------- ATTIVA ETHERNET E VERIFICA LA CONNESSIONE ---------------
if (Ethernet.begin(mac) == 0)
{
Serial.println("Failed to configure Ethernet using DHCP");
Ethernet.begin(mac, ip);
}
// give the Ethernet shield a second to initialize:
delay(1000);
Serial.println("connecting...");
// if you get a connection, report back via serial:
if (client.connect(server, 80))
{
Serial.println("connected");
client.println("GET /search?q=arduino HTTP/1.1");// Make a HTTP request:
client.println("Host: www.google.com");
client.println("Connection: close");
client.println();
}
else
{
Serial.println("connection failed"); // if you didn't get a connection to the server:
}
//------------- UDP ------------------
Udp.begin(localPort);