Go Down

Topic: malfunzionamento display lcd (Read 15213 times) previous topic - next topic

Tia38

No nessuno errore di compilazione, solo in fase di esecuzione, lo sketch è questo

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>
#include <WString.h>
#include <LiquidCrystal.h>
#include <Wire.h>
#include <RTClib.h>

LiquidCrystal lcd(9, 7, 5, 4, 3, 2);

#define LA3 440
const short buzzer=3;

RTC_DS1307 RTC;

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xB2, 0x27 }; // MAC address

EthernetClient client;

void setup() {
Serial.begin(9600);
  Wire.begin();
  RTC.begin();
  lcd.begin (16,2);
  lcd.clear();
     Wire.begin();
     RTC.begin();
     RTC.sqw(1);
          if (! RTC.isrunning()) {
          RTC.adjust(DateTime(__DATE__, __TIME__));
    }
  if(Ethernet.begin(mac) == 0)
  {
    Serial.println("Errore nel configurare Ethernet usando DHCP");
    while(true)
    ;
  }

  delay(1000);

  Serial.print("Indirizzo IP: ");
  IPAddress myIPAddress = Ethernet.localIP();
  Serial.println(myIPAddress);
 

}

void loop () {
byte i = 0;
byte val = 0;
byte code[6];
byte checksum = 0;
byte bytesread = 0;
byte tempbyte = 0;
char aaa[2];
if(Serial.available() > 0) {
   if((val = Serial.read()) == 2) {               
     bytesread = 0;
     while (bytesread < 12) {                     
       if( Serial.available() > 0) {
         val = Serial.read();
         if((val == 0x0D)||(val == 0x0A)||(val == 0x03)||(val == 0x02)) {
           break;                                   
         }

         if ((val >= '0') && (val <= '9')) {
           val = val - '0';
         } else if ((val >= 'A') && (val <= 'F')) {
           val = 10 + val - 'A';
         }

       
         if (bytesread & 1 == 1) {
         
           code[bytesread >> 1] = (val | (tempbyte << 4));

           if (bytesread >> 1 != 5) {               
             checksum ^= code[bytesread >> 1];       
           };
         } else {
           tempbyte = val;                         
         };

         bytesread++;                           
       }
     }


     if (bytesread == 12) {                         
       String pippo ="";
       Serial.print("5-byte code: ");
       for (i=0; i<5; i++) {
         if (code[i] < 16) Serial.print("0");
         Serial.print(code[i], HEX);
         sprintf(aaa, "%02X" , code[i]);
         pippo = pippo + aaa;
         
       }
          {tone(buzzer, LA3);
  delay(300); //Suona il la per 300 millisecondi
  noTone(buzzer);
       lcd.clear();
 
       }
       Serial.println();
       Serial.println("Pippo:" + pippo);
       Serial.print("Checksum: ");
       Serial.print(code[5], HEX);
       Serial.println(code[5] == checksum ? " -- passed." : " -- error.");
       Serial.println();
       google_send(pippo);
     }

     bytesread = 0;
   }
}
}

void google_send(String tagcode){
  char c;
  char buffer[10];
  int i;
  String submit = "&submit=Submit";
  String data = "tagcode=";
  IPAddress ip(192,168,2,50);
  unsigned int u;
  u=80; 


  if (client.connect(ip, u)) {
    data = "tagcode=" + tagcode;
    Serial.print ("--");
    Serial.print (data);
    Serial.print ("--");

    client.println("POST /arduino/read.aspx HTTP/1.1");
    Serial.println("POST /arduino/read.aspx HTTP/1.1");
    client.println("Host: 192.168.2.50");
    Serial.println("Host: 192.168.2.50");
    client.println("Content-Type: application/x-www-form-urlencoded");
    Serial.println("Content-Type: application/x-www-form-urlencoded");
    client.println("Connection: close");
    Serial.println("Connection: close");
    client.println("User-Agent: Arduino/1.0");
    Serial.println("User-Agent: Arduino/1.0");
    client.print("Content-Length: ");
    Serial.print("Content-Length: ");
    client.println(data.length());
    Serial.println(data.length());
    client.println();
     
    client.println(data);
    Serial.println(data);
    Serial.println();
   
     String risposta = "";
     String RESULT = "";
     String TAGID = "";
     String FULLNAME = "";
     String TIMESTAMP = "";
     
     for (i=0; i<2000; i++) {
         char c = client.read();
         
         int abc= (int)c;
         if (abc == -1)
            break;
         risposta = risposta + c;
     
         }
         Serial.print ("--");
         Serial.print(risposta);
          Serial.print ("--");
         Serial.println ("");
         
         int index = risposta.indexOf('>');
         risposta = risposta.substring(index + 1);
         
         RESULT = risposta.substring(0, risposta.indexOf('<'));
         
         index = risposta.indexOf('>');
         risposta = risposta.substring(index + 1);
         index = risposta.indexOf('>');
         risposta = risposta.substring(index + 1);
         
         TAGID = risposta.substring(0, risposta.indexOf ('<'));
         
         index = risposta.indexOf('>');
         risposta = risposta.substring(index + 1);
         index = risposta.indexOf('>');
         risposta = risposta.substring(index + 1);
         FULLNAME = risposta.substring (0, risposta.indexOf ('<'));
         
         index = risposta.indexOf('>');
         risposta = risposta.substring(index + 1);
         index = risposta.indexOf('>');
         risposta = risposta.substring(index + 1);
         TIMESTAMP = risposta.substring (0, risposta.indexOf ('<'));
     
         Serial.println("Result = " + RESULT);
         Serial.println("Tagid = " + TAGID);
         Serial.println ("Fullname = " + FULLNAME);
         Serial.println ("Timestamp = " + TIMESTAMP);
         
         
             DateTime now = RTC.now();
                lcd.clear();
                sprintf(buffer,  "%02d/%02d/%d", now.day(), now.month(), now.year());
                lcd.setCursor(0,1);
                lcd.print( buffer );
                Serial.println ( buffer );
                char buffer[10] = "";
                sprintf(buffer,  "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
                lcd.setCursor(11,1);
                lcd.print( buffer );
                Serial.println ( buffer );
                delay(1000);
  //                                Serial.print("Ram: ");
  //                                Serial.println(freeRam());
         const int ledPin =  6;
         const int ledPin1 =  8;
         
         pinMode(ledPin, OUTPUT); 
         pinMode(ledPin1, OUTPUT);       
         
           if (RESULT == "OK")
           
            {
              digitalWrite(ledPin, LOW);
              digitalWrite(ledPin1, HIGH);
              delay (500);
              digitalWrite(ledPin1, LOW);
              delay (200);
              digitalWrite(ledPin1, HIGH);
              delay (200);
              digitalWrite(ledPin1, LOW);
              delay (200);
              digitalWrite(ledPin1, HIGH);
              delay (20);
              digitalWrite(ledPin1,LOW);
             
           
            lcd.setCursor (0,0); 
//            lcd.print ("N: ");
            lcd.print (FULLNAME);
         //   lcd.setCursor (0,1);
//            lcd.print ("T: ");
         //   lcd.print (TIMESTAMP);
           // Serial.print("Ram: ");
           // Serial.println(freeRam());
          }
           
           else
             
            {
               digitalWrite(ledPin1, LOW);
              digitalWrite(ledPin, HIGH);
              delay (500);
              digitalWrite(ledPin, LOW);
              delay (200);
              digitalWrite(ledPin, HIGH);
              delay (200);
              digitalWrite(ledPin, LOW);
              delay (200);
              digitalWrite(ledPin, HIGH);
              delay (200);
              digitalWrite(ledPin,LOW);           
           
            }
           
   
     } else {
    Serial.println("connection failed");
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print ("Scheda assente");
  }
  delay(100);
  client.stop();
}

PaoloP

A me lo sketch sembra a posto.
Non ho le componenti necessarie per poterlo testare in esecuzione quindi trovo moto difficile aiutarti.  :smiley-sweat:

Tia38

Eh infatti é quello che mi sembra molto strano, anche a me sembra ok, grazie mille comunque:)

Go Up