Hello,
I met a problem when I use particle photon. Each time when the photon run the “selectE()” function, it will disconnect the cloud. Once it disconnects the cloud, it can’t connect to the cloud anymore, even through I added some code like this"
if (Particle.connected() == false) {
Particle.connect();
}
This is my code, I really hope someone can help me solve this issue.
// This #include statement was automatically added by the Particle IDE.
#include "Adafruit_SSD1306.h"
// This #include statement was automatically added by the Particle IDE.
#include "Adafruit_GFX.h"
#define OLED_RESET D4
Adafruit_SSD1306 display(OLED_RESET);
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 0
#define DELTAY 1
int gsr = A3, pot = A2, motor = D3;
int gsrV, gsrT, potV;
int led = D7;
String emotionV;
boolean flag = false;
unsigned long previousMillis = 0;
unsigned long interval = 5*60*1000;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
display.clearDisplay();
pinMode(pot,INPUT);
pinMode(gsr, INPUT);
pinMode(motor, OUTPUT);
pinMode(led,OUTPUT);
display.setTextSize(2); // from 1-9 sensible actually can be bigger but useless
display.setTextColor(WHITE,BLACK); // 'inverted' text
display.setCursor(0,30); // 128,64 pixels
display.clearDisplay();
display.println("Hello");
display.display();
delay(3000);
display.clearDisplay();
}
void selectE(){
if (Particle.connected() == false) {
Particle.connect();
}
Particle.publish("input section start","start");
display.setTextColor(WHITE,BLACK);
display.clearDisplay();
for(int i=0; i<50; i++){
//Particle.publish("potV", String(potV));
potV = analogRead(pot);
if(potV<=1820){
//display.clearDisplay();
if(potV<=455){
display.fillCircle(3,5,3,WHITE);
display.setTextSize(2);
display.setCursor(8,0);
display.println("Enjoyment");
display.setTextSize(1);
display.setCursor(60,20);
display.println("Frustrated");
display.setCursor(60,32);
display.println("Relax");
display.setCursor(60,45);
display.println("Bored");
display.setCursor(60,60);
display.println("Nothing");
emotionV = "Enjoyment";
} else if(potV>455 && potV<=910){
display.fillCircle(3,15,3,WHITE);
display.setTextSize(1);
display.setCursor(60,0);
display.println("Enjoyment");
display.setTextSize(2);
display.setCursor(8,12);
display.println("Frustrated");
display.setTextSize(1);
display.setCursor(60,30);
display.println("Relax");
display.setCursor(60,45);
display.println("Bored");
display.setCursor(60,60);
display.println("Nothing");
emotionV = "Frustrated";
} else if(potV>910 && potV<=1365){
display.fillCircle(3,30,3,WHITE);
display.setTextSize(1);
display.setCursor(60,0);
display.println("Enjoyment");
display.setCursor(60,15);
display.println("Frustrated");
display.setTextSize(2);
display.setCursor(8,25);
display.println("Relax");
display.setTextSize(1);
display.setCursor(60,45);
display.println("Bored");
display.setCursor(60,60);
display.println("Nothing");
emotionV = "Relax";
} else if(potV>1365 && potV<=1820){
display.fillCircle(3,45,3,WHITE);
display.setTextSize(1);
display.setCursor(60,0);
display.println("Enjoyment");
display.setCursor(60,13);
display.println("Frustrated");
display.setCursor(60,25);
display.println("Relax");
display.setTextSize(2);
display.setCursor(8,40);
display.println("Bored");
display.setTextSize(1);
display.setCursor(60,60);
display.println("Nothing");
emotionV = "Bored";
}
display.display();
} else if(potV>1820 && potV<=3640){
display.clearDisplay();
if(potV>1820 && potV<=2275){
display.fillCircle(3,5,3,WHITE);
display.setTextSize(2);
display.setCursor(8,0);
display.println("Nothing");
display.setTextSize(1);
display.setCursor(60,20);
display.println("Pride");
display.setCursor(60,32);
display.println("Anxiety");
display.setCursor(60,45);
display.println("Content");
display.setCursor(60,60);
display.println("Hopeless");
emotionV = "Nothing";
} else if(potV>2275 && potV<=2730){
display.fillCircle(3,15,3,WHITE);
display.setTextSize(1);
display.setCursor(60,0);
display.println("Nothing");
display.setTextSize(2);
display.setCursor(8,12);
display.println("Pride");
display.setTextSize(1);
display.setCursor(60,30);
display.println("Anxiety");
display.setCursor(60,45);
display.println("Content");
display.setCursor(60,60);
display.println("Hopeless");
emotionV = "Pride";
emotionN= 3;
} else if(potV>2730 && potV<=3185){
display.fillCircle(3,30,3,WHITE);
display.setTextSize(1);
display.setCursor(60,0);
display.println("Nothing");
display.setCursor(60,15);
display.println("Pride");
display.setTextSize(2);
display.setCursor(8,25);
display.println("Anxiety");
display.setTextSize(1);
display.setCursor(60,45);
display.println("Content");
display.setCursor(60,60);
display.println("Hopeless");
emotionV = "Anxiety";
} else if(potV>3185 && potV<=3640){
display.fillCircle(3,45,3,WHITE);
display.setTextSize(1);
display.setCursor(60,0);
display.println("Nothing");
display.setCursor(60,13);
display.println("Pride");
display.setCursor(60,25);
display.println("Anxiety");
display.setTextSize(2);
display.setCursor(8,40);
display.println("Content");
display.setTextSize(1);
display.setCursor(60,60);
display.println("Hopeless");
emotionV = "Content";
}
display.display();
} else {
display.clearDisplay();
display.setTextSize(2);
display.setCursor(8,0);
display.println("Hopeless");
display.fillCircle(3,5,3,WHITE);
emotionV = "Hopeless";
display.display();
}
delay(10);
}
display.clearDisplay();
display.setCursor(20,20);
display.setTextColor(BLACK,WHITE);
display.println("end");
display.display();
Particle.publish("emotion", String(emotionV));
Particle.publish("input section end", "end");
}
void loop() {
display.clearDisplay();
display.display();
gsrV = analogRead(gsr);
//Particle.publish("emotion_gsr", String(gsrV));
delay(1000);
gsrT = analogRead(gsr);
int temp = abs(gsrV - gsrT);
Particle.publish("temp",String(temp));
if(abs(gsrV - gsrT)>30){
flag = true;
} else {
flag = false;
}
unsigned long currentMillis = millis();
if(currentMillis - previousMillis < interval){
if(flag){
analogWrite(motor,80);
delay(1000);
analogWrite(motor,0);
delay(1000);
selectE();
flag = false;
display.clearDisplay();
} else {
flag = false;
}
}
if(currentMillis - previousMillis >= interval){
if(flag == false){
analogWrite(motor,80);
delay(1000);
analogWrite(motor,0);
delay(1000);
selectE();
display.clearDisplay();
previousMillis = currentMillis;
} else {
previousMillis = currentMillis;
}
}
// Particle.publish("thingSpeakWrite_All", "{ \"1\": \"" + String(gsrV) + "\"," +
// "\"2\": \"" + String(emotionN) + "\"," +
// "\"k\": \"" + key + "\" }", 60, PRIVATE);
}