Hi
When i don't have my Serial port monitor turned on arduino only sends information for few seconds and after a while it restarts but when I turn on the Serial port monitor it runs until i close the port monitor.
Do you know how to solve this?
Thanks in advance.
You have given us nothing to go on to start troubleshooting unfortunately..
-
Start by providing your current, compiling code (wrapped in CODE tags please!)
-
How do you know your Arduino is sending/doing ANYTHING if the serial monitor window is NOT open? (ie: how do you know 'something' is no longer sending after a few seconds?)
-
FYI:
When opening and closing the serial monitor, it resets the Arduino. (You need to add a hack/fix to stop the resetting if desired)
This is my code:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display = Adafruit_SSD1306();
#define LED 13
#define gora 3 //10
#define luz 5 //11
#define dol 6 //12
int bieg ;
int bieg1 = 1;
int ThermistorPin = 0;
int Vo;
float R1 = 10000;
float logR2, R2, T;
float c1 = 1.009249522e-03, c2 = 2.378405444e-04, c3 = 2.019202697e-07;
int n = 0;
int q = 0;
int tempSilnika;
int czujnik;
void setup() {
delay(2000);
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.drawBitmap(0,0,vara,128,20,WHITE);
display.display();
delay(2000);
pinMode(dol,INPUT_PULLUP);
pinMode(luz,INPUT_PULLUP);
pinMode(gora,INPUT_PULLUP);
display.clearDisplay();
}
void loop() {
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,0);
firstPage();
temperature();
gears();
engineTemp();
display.display();
Serial.println(n);
delay(100);
}
void firstPage ()
{
display.clearDisplay();
display.drawBitmap(0,0,temp,35,35,WHITE);
}
void temperature(){
Vo = analogRead(ThermistorPin);
R2 = R1 * (1023 / (float)Vo - 1);
logR2 = log(R2);
T = (1 / (c1 + c2*logR2 + c3*logR2*logR2*logR2));
T = T - 273;
n = T;
if (n < -20){
display.setTextSize(3);
display.setCursor(0,40);
display.print("--");
}
if (n >= -20){
display.setTextColor(WHITE); //** Wyświetla temperature na ekranie
display.setTextSize(3);
display.setCursor(0,40);
display.print(n); //**
}
}
void gears(){
if (digitalRead(luz) == LOW){ //LUZ
display.drawBitmap(22,0,neutral,80,64,WHITE);
bieg = 0;
bieg1 = 1;
}
if (digitalRead(dol) == LOW && bieg1 == 1){ //1
bieg = 1;
while (digitalRead(dol) == LOW && bieg1 == 1);
}
if (bieg == 1 && bieg1 < 2){
display.setTextSize(9);
display.setCursor(38,0);
display.print("1");
}
if (digitalRead(gora) == LOW && bieg1 < 5){ //zmiana biegĂłw
bieg1++;
while (digitalRead(gora) == LOW);
}
if (bieg > 5){
bieg = 5;
}
if (digitalRead(dol) == LOW && bieg1 >=1 ){
bieg1--;
while (digitalRead(dol) == LOW);
}
display.setTextSize(9);
display.setCursor(38,0);
switch(bieg1){
case 2:
display.print("2");
break;
case 3:
display.print("3");
break;
case 4:
display.print("4");
break;
case 5:
display.print("5");
break;
} //koniec zmiany biegĂłw
}
void engineTemp(){
display.drawBitmap(89,0,tempsilnik,35,35,WHITE);
czujnik = analogRead(A3);
tempSilnika = map(czujnik,1,1021,0,130);
display.setTextColor(WHITE);
display.setTextSize(3);
display.setCursor(89,40);
display.print(tempSilnika);
}
I can see the arduino's TX led flashing and from what i know it lits up when it sends something. And after few seconds it stops flashing. When i open Serial monitor it works annd flashes all the time.