hello, could you tell me why I lose the connection to blynk after 15 seconds,
I use arduino nano 33 IOT
cpp
#include <WiFiNINA.h>
#include <BlynkSimpleWiFiNINA.h>
#define BLYNK_PRINT Serial
#include <OneWire.h>
// Code blynk + WIFI
char auth[]= "XXXXXX-XXXXX";
char ssid[] = "XXXXX";
char pass[]= "XXXXX";
// Branché sur pin de l4 rduino :
const int relais1 = 3;
const int btnPin1 = 5;
const int relais2 = 4;
const int btnPin2 = 6;
const int ledV = 7;
const int ledR = 8;
const int BROCHE_ONEWIRE =2;
BlynkTimer timer;
void checkPhysicalButton1();
void checkPhysicalButton2();
int relais1State = LOW;
int btnState1 = HIGH;
int relais2State = LOW;
int btnState2 = HIGH;
// blink
BLYNK_CONNECTED() {
// synchronisation des pin Virtuel
Blynk.syncVirtual(V2);
Blynk.syncVirtual(V3);
}
// quand le boutton de application est appuye
BLYNK_WRITE(V2) {
relais1State = param.asInt();
digitalWrite(relais1, relais1State);
}
BLYNK_WRITE(V3) {
relais2State = param.asInt();
digitalWrite(relais2, relais2State);
}
void checkPhysicalButton1()
{
if (digitalRead(btnPin1) == LOW) {
if (btnState1 != LOW) {
// position relais
relais1State = !relais1State;
digitalWrite(relais1, relais1State);
// mise a jour du boutton sur application
Blynk.virtualWrite(V2, relais1State);
}
btnState1 = LOW;
} else {
btnState1 = HIGH;
}
}
void checkPhysicalButton2()
{
if (digitalRead(btnPin2) == LOW) {
if (btnState2 != LOW) {
// position relais
relais2State = !relais2State;
digitalWrite(relais2, relais2State);
digitalWrite(ledV, HIGH);digitalWrite(ledR, LOW);
// mise a jour du boutton sur application
Blynk.virtualWrite(V3, relais2State);
}
btnState2 = LOW;
} else {
btnState2 = HIGH;
digitalWrite(ledR, HIGH);digitalWrite(ledV, LOW);
}
}
// ******************************temperature
unsigned long periode_lecture_temp = 0;
/* Code de retour de la fonction getTemperature() */
enum DS18B20_RCODES
{
READ_OK,
NO_SENSOR_FOUND,
INVALID_ADDRESS,
INVALID_SENSOR
};
/* Création de l'objet OneWire pour manipuler le bus 1-Wire */
OneWire ds(BROCHE_ONEWIRE);
byte getTemperature(float *temperature, byte reset_search)
{
byte data[9], addr[8];
// data[] : Données lues depuis le scratchpad
// addr[] : Adresse du module 1-Wire détecté
/* Reset le bus 1-Wire ci nécessaire (requis pour la lecture du premier capteur) */
if (reset_search) {
ds.reset_search();
}
/* Recherche le prochain capteur 1-Wire disponible */
if (!ds.search(addr)) {
// Pas de capteur
return NO_SENSOR_FOUND;
}
/* Vérifie que l'adresse a été correctement reçue */
if (OneWire::crc8(addr, 7) != addr[7]) {Serial.println("mauvaise adresse ");
// Adresse invalide
return INVALID_ADDRESS;
}
/* Vérifie qu'il s'agit bien d'un DS18B20 */
if (addr[0] != 0x28) {
// Mauvais type de capteur
return INVALID_SENSOR;
}
/* Reset le bus 1-Wire et sélectionne le capteur */
ds.reset();
ds.select(addr);
/* Lance une prise de mesure de température et attend la fin de la mesure */
ds.write(0x44, 1);
//delay(800);
/* Reset le bus 1-Wire, sélectionne le capteur et envoie une demande de lecture du scratchpad */
ds.reset();
ds.select(addr);
ds.write(0xBE);
/* Lecture du scratchpad */
for (byte i = 0; i < 9; i++) {
data[i] = ds.read();
}
/* Calcul de la température en degré Celsius */
*temperature = (int16_t) ((data[1] << 8) | data[0]) * 0.0625;
return READ_OK;
}
void setup()
{
// Debug console
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
pinMode(relais1, OUTPUT);
pinMode(btnPin1, INPUT_PULLUP);
digitalWrite(relais1, relais1State);
pinMode(relais2, OUTPUT);
pinMode(btnPin2, INPUT_PULLUP);
digitalWrite(relais2, relais2State);
pinMode(ledV, OUTPUT);
pinMode(ledR, OUTPUT);
// Setup a function to be called every 100 ms
timer.setInterval(100L, checkPhysicalButton1);
timer.setInterval(100L, checkPhysicalButton2);
}
void loop()
{
Blynk.run();
timer.run();
SM_temperature ();
}
void SM_temperature ()
{
float temperature[3];
if (getTemperature(&temperature[0], true) != READ_OK)
{
Serial.println(F("Erreur de lecture du capteur 1"));
return;
}
if (getTemperature(&temperature[1], false) != READ_OK)
{
Serial.println(F("Erreur de lecture du capteur 2"));
return;
}
if (getTemperature(&temperature[2], false) != READ_OK)
{
Serial.println(F("Erreur de lecture du capteur 3"));
return;
}
/* Affiche les températures */
Serial.print(F("Temperatures : "));
Serial.print(temperature[0], 2);
Blynk.virtualWrite(V4, temperature[0], 2);
Serial.print(temperature[1], 2);
Blynk.virtualWrite(V5, temperature[1], 2);
Serial.print(temperature[2], 2);
Blynk.virtualWrite(V6, temperature[2], 2);
}
``
Blockquote
`