Hi, i am currently using arduino yun for my project and i am implementing sleep mode into the code. However, after waking up my yun using interrupt, the serial monitor stops displaying although the loop is still running. Anyone here knows what is wrong? Thank you. The code below is my sleep and waking up code
void sleepNow()
{
sleep_enable();
attachInterrupt(0, wakeUpNow, LOW);
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
digitalWrite(13, LOW);
sleep_mode();
digitalWrite(13, HIGH);
}
void wakeUpNow()
{
sleep_disable();
Serial.begin(115200);
count = 0;
detachInterrupt(1);
}
//From loop
count++;
Serial.println(count);
if(count > 30)
{
Serial.println("Arduino sleeping");
delay(1000);
sleepNow();
}
system
April 3, 2017, 10:05am
2
The code below is my sleep and waking up code
Not a snowball's chance in hell of getting help with those snippets. Post ALL of your code.
Hi, below is my full code.
#include <Bridge.h>
#include <BridgeServer.h>
#include <BridgeClient.h>
#include <SimpleTimer.h>
#include <SPI.h>
#include <avr/sleep.h>
#include "Adafruit_MAX31855.h"
#define MAXDO 3
#define MAXCS 4
#define MAXCLK 5
#define MAXDO1 6
#define MAXCS1 7
#define MAXCLK1 8
#define PORT 6666
BridgeServer server(PORT);
SimpleTimer timer;
BridgeClient client;
int oneStimer1, fiveStimer1, tenStimer1, oneStimer2, fiveStimer2, tenStimer2;
Adafruit_MAX31855 thermocouple(MAXCLK, MAXCS, MAXDO);
Adafruit_MAX31855 thermocouple1(MAXCLK1,MAXCS1,MAXDO1);
int count = 0;
int wakePin = 2;
void setup() {
Serial.begin(115200);
pinMode(13, OUTPUT);
pinMode(wakePin, INPUT);
digitalWrite(wakePin, HIGH);
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
Bridge.begin();
Serial.println("MAX31855 Initialized!");
// wait for MAX chip to stabilize
server.noListenOnLocalhost();
server.begin();
delay(500);
}
void loop() {
client = server.accept();
if (client.connected())
{
Serial.println("CLIENT CONNECTED!");
digitalWrite(13, HIGH);
while (client.connected())
{
timer.run();
process(client);
}
doStop();
client.stop();
count = 0;
}
else
{
Serial.println("no client connected, retrying");
digitalWrite(13, LOW);
}
delay(1000);
count++;
Serial.println(count);
if(count > 600)
{
Serial.println("Arduino sleeping");
delay(1000);
sleepNow();
}
}
void process(BridgeClient client)
{
String string = client.readStringUntil('/'); //Get the first element of the string.;
if (string.length() > 0)
{
char received = client.read();
int val = atoi(&string[0]);
Serial.println(val);
if (val == 10)
{
timer.disable(tenStimer1);
timer.disable(fiveStimer1);
timer.disable(tenStimer2);
timer.disable(fiveStimer2);
Serial.println("Channel 1 timer for 1 second is On");
Serial.println("Channel 2 timer for 1 second is On");
oneStimer1 = timer.setInterval(1000L, temperatureReading1);
oneStimer2 = timer.setInterval(1000L, temperatureReading2);
string = "";
}
if (val == 100)
{
timer.disable(tenStimer1);
timer.disable(oneStimer1);
timer.disable(tenStimer2);
timer.disable(oneStimer2);
Serial.println("Channel 1 timer for 3 second is On");
Serial.println("Channel 2 timer for 3 second is On");
fiveStimer1 = timer.setInterval(3000L, temperatureReading1);
fiveStimer2 = timer.setInterval(3000L, temperatureReading2);
string = "";
}
if (val == 200)
{
timer.disable(oneStimer1);
timer.disable(fiveStimer1);
timer.disable(oneStimer2);
timer.disable(fiveStimer2);
Serial.println("Channel 1 timer for 5 second is On");
Serial.println("Channel 2 timer for 5 second is On");
tenStimer1 = timer.setInterval(5000L, temperatureReading1);
tenStimer2 = timer.setInterval(5000L, temperatureReading2);
string = "";
}
if(val == -10)
{
timer.disable(oneStimer1);
timer.disable(tenStimer1);
timer.disable(fiveStimer1);
timer.disable(oneStimer2);
timer.disable(tenStimer2);
timer.disable(fiveStimer2);
Serial.println("Timer is off");
}
}
}
void temperatureReading1()
{
double temp = thermocouple.readCelsius();
client.print(temp);
client.print("C");
// Serial.print("Internal Temp = ");
// Serial.println(thermocouple.readInternal());
Serial.print("Channel 1 Temperature is ");
Serial.print(temp);
Serial.println("C");
}
void temperatureReading2()
{
double temp1 = thermocouple1.readCelsius();
client.print(temp1);
client.println("C");
Serial.print("Channel 2 Temperature is ");
Serial.print(temp1);
Serial.println("C");
}
void doStop()
{
timer.disable(oneStimer1);
timer.disable(fiveStimer1);
timer.disable(tenStimer1);
timer.disable(oneStimer2);
timer.disable(fiveStimer2);
timer.disable(tenStimer2);
Serial.println("Application closed");
}
void wakeUpNow()
{
sleep_disable();
Serial.begin(115200);
count = 0;
detachInterrupt(1);
}
void sleepNow()
{
Serial.end();
sleep_enable();
attachInterrupt(1, wakeUpNow, LOW);
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
digitalWrite(10, LOW);
sleep_cpu();
delay(100);
Serial.println("Arduino awake");
digitalWrite(10, HIGH);
}