Salve come da titolo ho un problema sulla seriale 1 del mega 2560.Mi spiego meglio se collego il mega alla porta usb funziona tutto perfettamente ,nel momento che passo ad alimentarlo dall'esterno,o sul jack o sul pin vin o direttamente sui 5volt smette di funzionare ,è forse un problema hardware?Allego lo scheck che utilizzo.Dimenticavo il display che utlizzo è un nextion 7pollici
//-------Librerie---------
#include <EmonLib.h>//lettore potenza
#include <Nextion.h> //
//--------------
int CurrentPage = 0; // Crea una variabile per memorizzare quale pagina è attualmente caricata
//--lettore tensione e corrente-------------
EnergyMonitor emon1;
//Inserire la tensione della vostra rete elettrica
int rete = 230.0; // Italia 230V
//Pin del sensore SCT
int pin_sct = A0;
int Wa;//variabile calcolo potenza
NexPage page0 = NexPage(0, 0, "page0"); // Page added as a touch event
NexPage page1 = NexPage(1, 0, "page1"); // Page added as a touch event
NexPage page2 = NexPage(2, 0, "page2"); // Page added as a touch event
// End of declaring objects
char buffer[100] = {0};
NexTouch *nex_listen_list[] =
{
&page0, // Page added as a touch event
&page1, // Page added as a touch event
&page2, // Page added as a touch event
NULL // String terminata
}; // Elenco degli eventi di fine tocco
// Page change event:
void page0PushCallback(void *ptr) // If page 0 is loaded on the display, the following is going to execute:
{
CurrentPage = 0; // Set variable as 0 so from now on arduino knows page 0 is loaded on the display
Serial.print("pagina0");
}
void page1PushCallback(void *ptr) // If page 1 is loaded on the display, the following is going to execute:
{
CurrentPage = 1; // Set variable as 1 so from now on arduino knows page 1 is loaded on the display
Serial.print("pagina1");
}
void page2PushCallback(void *ptr) // If page 2 is loaded on the display, the following is going to execute:
{
CurrentPage = 2; // Set variable as 2 so from now on arduino knows page 2 is loaded on the display
Serial.print("pagina2");
}
void setup() { // Put your setup code here, to run once:
//Pin, calibrazione - Corrente Const= Ratio/Res. Burder. 1800/62 = 29.
emon1.current(pin_sct, 29);
//-------------
Serial.begin(9600); // Start Serial comunication at baud=9600
Serial1.begin(9600);
pinMode(A0, INPUT);
pinMode(13, OUTPUT);
} // End of setup
void loop() {
double Irms = emon1.calcIrms(1480) ;
Wa = (Irms * rete); //calcolo la Potenza
//------invio al display----------------
Serial1.print("n7.val="); // Questo viene inviato al display di nextion per impostare quale nome dell'oggetto (prima del punto) e quale attributo (dopo il punto) si sta per cambiare.
Serial1.print(Wa); // Questo è il valore che vuoi inviare a quell'oggetto e attributo menzionato prima.
Serial1.write(0xff); // Dobbiamo sempre inviare queste tre righe dopo ogni comando inviato al display di nextion...
Serial1.write(0xff);
Serial1.write(0xff);
//--------------
if (Wa < 10) {
Serial1.print("t1.pco="); // Questo viene inviato al display di nextion per impostare quale nome dell'oggetto (prima del punto) e quale attributo (dopo il punto) si sta per cambiare..
Serial1.print(34784); // Codice colore verde
Serial1.write(0xff); //Dobbiamo sempre inviare queste tre righe dopo ogni comando inviato al display di nextion..
Serial1.write(0xff);
Serial1.write(0xff);
}
if (Wa > 15) {
Serial1.print("t1.pco=");
Serial1.print(63488); // Codice colore rosso
Serial1.write(0xff); //Dobbiamo sempre inviare queste tre righe dopo ogni comando inviato al display di nextion..
Serial1.write(0xff);
Serial1.write(0xff);
}
nexLoop(nex_listen_list); // Check for any touch event
} // End of loop