Salve a tutti, ultimamente sto avendo un problema che mi sta dando abbastanza sui nervi. Non riesco minimamente a capire il motivo per il quale il mio programma non ha la minima intenzione di far connettere l'arduino al mio computer locale con un web server installato.
Vi spiego meglio e poi riporto il programma:
- Io non possiedo arduino originale, ma una variante migliorata chiamata "ChipKit Max32" prodotta dalla Digilenc e che si programma esattamente come Arduino, con connesso, ovviamente, il relativo Network Shield sempre della Digilenc
- Il programma funziona egregiamente in tutto e, per quanto sia estremamente semplice, fa il suo dovere, tranne quello di connettersi al server
- utilizzo alimentazione tramite presa USB perchè non ho l'alimentatore 5V, prima o poi dovrò comprarlo
- quando connetto l'RJ45 nella porta J1 del Network Shield (Ethernet) non si accende nemmeno il Link Led e non pinga: non da proprio segni di vita
- Riporto delle foto ed il programma di seguito
const int analogInPin = A0; // Input analogico dove è collegato il sensore/potenziometro
const int analogOutPin = 9; // Output analogico LED
int sensorValue = 0; // Valore letto dal sensore/potenziometro
int outputValue = 0; // Valore di output analogico
#include <LiquidCrystal.h>
#include <SPI.h>
#include <Ethernet.h>
// LCD
#define rs 8
#define enable 6
#define d4 5
#define d5 4
#define d6 3
#define d7 2
#define ROW 4
#define COL 20
int i=0;
byte mac[] = { 0xBE,0xAC,0xBD,0xFF,0xAE,0xDF }; // inserire l'indirizzo di mac
byte ip[] = { 192,168,1,106 }; // Inserire l'indirizzo IP
byte gateway[] = { 192,168,1,1 }; // Inserire l'indirizzo IP del Gateway
byte subnet[] = { 255,255,255,0 }; // Inserire la subnet relativa alla classe di rete utilizzata
byte server[] = { 192,168,1,105 }; // Inserire l'IP del server al quale inviare i dati (PC in locale con WebServer XAMPP o altri)
Client client(server, 80); // Inserire la porta attraverso la quale ci si vuole connettere
LiquidCrystal lcd(rs, enable, d4, d5, d6, d7); // Imposta i pins dello schermo LCD 20x4
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
lcd.begin(COL, ROW); // LCD 20 colonne 4 righe
pinMode(11, OUTPUT);
Ethernet.begin(mac, ip, gateway, subnet);
lcd.clear();
lcd.setCursor(0,0);
while(i<=50) { // Cicla per far blinkare il led velocemente mentre l'arduino tenta la connessione
i++;
digitalWrite(11, HIGH); // accente il led
delay(20); // attende 20 ms
digitalWrite(11, LOW); // spegne il led
delay(20);
lcd.clear();
lcd.print("Connessione in corso");
delay(10);
}
// se la connessione è disponibile scrive "connesso"
if (client.connect()) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Connesso!");
// Esegue la richiesta HTTP
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
digitalWrite(11, HIGH);
}
else {
// se la connessione non è disponibile scrive "Connessione Fallita"
lcd.clear(); // Pulisce il display
lcd.setCursor(0,0); //Setta il cursore del display a Colonna=0 e Riga=0
lcd.print("Connessione Fallita");
digitalWrite(11, LOW);
delay(2000);
}
}
void loop() {
// Se il server invia dati li cattura e li scrive sullo schermo in via sepeciale
if (client.available()) {
char c = client.read();
lcd.clear();
lcd.setCursor(0,0);
lcd.print(c);
}
// Se il server si disconnette, scrive "Disconnesso" sulla terza riga del display (non cancellando il valore analogico di input) e spegne il led
if (!client.connected()) {
lcd.clear();
lcd.setCursor(0,2);
lcd.print("Disconnesso");
client.stop();
digitalWrite(11, LOW);
}
// Legge il valore analogico da "A0"
sensorValue = analogRead(analogInPin);
// Mappa il valore trasformandolo in numero
outputValue = map(sensorValue, 0, 1023, 0, 1023);
// Cambia il valore di output dell'analogico
analogWrite(analogOutPin, outputValue);
if(sensorValue>0){
lcd.setCursor(0,0);
lcd.clear();
lcd.print("Valore = " );
lcd.setCursor(9,0);
lcd.print(sensorValue);
// ---------------------------------------------------------------------------------------- //
if (client.connect()) {
lcd.setCursor(0,2);
lcd.print("Connesso! ");
// Make a HTTP request:
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
digitalWrite(11, HIGH);
}
if (!client.connected()) {
lcd.setCursor(0,2);
lcd.print("Disconnesso");
client.stop();
digitalWrite(11, HIGH);
delay(100);
digitalWrite(11, LOW);
delay(100);
}
// --------------------------------------------------------------------------------------------- //
}
else{
lcd.setCursor(0,0);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Spento" );
digitalWrite(11, LOW);
// --------------------------------------------------------------------------------------------- //
if (client.connect()) {
lcd.setCursor(0,2);
lcd.print("Connesso! ");
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
digitalWrite(11, HIGH);
}
if (!client.connected()) {
lcd.setCursor(0,2);
lcd.print("Disconnesso");
client.stop();
digitalWrite(11, LOW);
}
// --------------------------------------------------------------------------------------------- //
}
delay(500);
}

