Hi there, I’m really struggling to migrate my project to Blynk IoT following the recent upgrade, and would appreciate any tips/help. The project (a basic smart lamp) had been running flawlessly for the 18 months prior, but I now can’t figure out how to get it back online.
I’m running a Teensy 3.2 with ESP8266 Wifi Shield and the code below. I’m sure there are many issues you could find in the code as I’m not a programmer, but it had been working fine.
All I’ve tried so far is to add the 3 new lines (with template ID etc) at the top, but no success connecting. The serial monitor suggests it still connects to my wifi, and the encoder reading interrupts and PWM outputs still work fine.
Any tips much appreciated as I miss my light! Thanks, Tom
// Template ID, Device Name and Auth Token are provided by the Blynk.Cloud
// See the Device Info tab, or Template settings
#define BLYNK_TEMPLATE_ID "TMPLjG9uGLrl"
#define BLYNK_DEVICE_NAME "ESP8266"
#define BLYNK_AUTH_TOKEN "********************"
// ------ Define Serial ports and Include Libraries --------------------------------------
#define BLYNK_PRINT Serial
#define EspSerial Serial1
#include <ESP8266_Lib.h>
#include <YmrBlynkSimpleShieldEsp8266.h> // NEW
#include <avr/wdt.h> // NEW
BlynkTimer timer;
// ------ Wifi password and Blynk Authorization code -------------------------------------
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "************";
char pass[] = "**********";
// ------ Define variables for Encoder Reading and PWM control ---------------------------
int mainLightPWM = 0;
int readLightPWM = 0;
bool encoderMchanB = 0;
bool encoderRchanB = 0;
static int delta = 10;
static int delta2 = 5;
static int mainLightMaxPWM = 255;
static int readLightMaxPWM = 80;
// ------ Define Pin Numbers -------------------------------------------------------------
static int MainEnc_A_Pin = 18;
static int MainEnc_B_Pin = 17;
static int ReadEnc_A_Pin = 19;
static int ReadEnc_B_Pin = 20;
static int MainPWMpin = 21;
static int ReadPWMpin = 22;
// ----- Initialize wifi over serial with ESP --------------------------------------------
ESP8266 wifi(&EspSerial);
// ----------- SETUP and initialize pins and connect to wifi -----------------------------
void setup () {
pinMode(MainEnc_B_Pin, INPUT);
pinMode(MainEnc_A_Pin, INPUT);
pinMode(ReadEnc_A_Pin, INPUT);
pinMode(ReadEnc_B_Pin, INPUT);
pinMode(MainPWMpin, OUTPUT);
pinMode(ReadPWMpin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(MainEnc_A_Pin), encoderMchanA, RISING);
attachInterrupt(digitalPinToInterrupt(ReadEnc_A_Pin), encoderRchanA, RISING);
timer.setInterval(6000L, checkBlynk);
EspSerial.begin(115200);
delay(10);
Blynk.begin(auth, wifi, ssid, pass);
}
//BLYNK_CONNECTED() {
// ----- Run this when V1 changes (virtual pin connected to main light) ------------------
BLYNK_WRITE(V1) {
int mainLightTargetPWM = 25*(param.asInt());
FadeMain(mainLightTargetPWM);
}
void FadeMain(int mainLightTargetPWM) {
if (mainLightTargetPWM > mainLightPWM) {
while (mainLightPWM < mainLightTargetPWM) {
mainLightPWM += delta2;
//Serial.println(mainLightPWM);
analogWrite(MainPWMpin, mainLightPWM);
delay(20);
}
}
else if (mainLightTargetPWM < mainLightPWM) {
while (mainLightPWM > mainLightTargetPWM) {
mainLightPWM -= delta2;
//Serial.println(mainLightPWM);
analogWrite(MainPWMpin, mainLightPWM);
delay(20);
}
}
}
// ------ Run this when V2 changes (virtual pin connected to reading light) -------------
BLYNK_WRITE(V2) {
int readLightTargetPWM = 8*(param.asInt());
FadeRead(readLightTargetPWM);
}
void FadeRead(int readLightTargetPWM) {
if (readLightTargetPWM > readLightPWM) {
while (readLightPWM < readLightTargetPWM) {
readLightPWM += delta2;
//Serial.println(mainLightPWM);
analogWrite(ReadPWMpin, readLightPWM);
delay(20);
}
}
else if (readLightTargetPWM < readLightPWM) {
while (readLightPWM > readLightTargetPWM) {
readLightPWM -= delta2;
//Serial.println(mainLightPWM);
analogWrite(ReadPWMpin, readLightPWM);
delay(20);
}
}
}
//}
// ------ Run Blynk code ----------------------------------------------------------------
void loop() {
Blynk.run();
timer.run();
}
// ------ MAIN LIGHT ENCODER READING ----------------------------------------------------
void encoderMchanA() {
encoderMchanB = digitalRead(MainEnc_B_Pin);
if (encoderMchanB > 0 && mainLightPWM > 0) {
mainLightPWM -= delta;
//Serial.println(mainLightPWM);
analogWrite(MainPWMpin, mainLightPWM);
}
else if (encoderMchanB < 1 && mainLightPWM < mainLightMaxPWM){
mainLightPWM += delta;
//Serial.println(mainLightPWM);
analogWrite(MainPWMpin, mainLightPWM);
}
}
// ------ READING LIGHT ENCODER READING ------------------------------------------------
void encoderRchanA() {
encoderRchanB = digitalRead(ReadEnc_B_Pin);
if (encoderRchanB > 0 && readLightPWM > 0) {
readLightPWM -= delta;
//Serial.println(readLightPWM);
analogWrite(ReadPWMpin, readLightPWM);
}
else if (encoderRchanB < 1 && readLightPWM < readLightMaxPWM){
readLightPWM += delta;
//Serial.println(readLightPWM);
analogWrite(ReadPWMpin, readLightPWM);
}
}
// ------- CHECK BLYNK ------------------------------------------------------------------
void checkBlynk(){
if(!Blynk.connected()){
Serial.println("Not connected to Blynk server");
wdt_enable(WDTO_1S);
}
Serial.println("connected to Blynk server");
}