Sterownik Arduino + Blynk według robert4you - kontynuacja

Teoria, praktyka, sprzęt, kolumna
Awatar użytkownika
robert4you
80%
80%
Posty: 432
Rejestracja: 2016-04-01, 10:24

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: robert4you » 2021-02-11, 19:38

Miło widzieć takie wpisy.

Wysłane z mojego SM-G950F przy użyciu Tapatalka

==================================================
Moja wersja sterownika forumowego - sterowanie kolumny telefonem:
http://www.bimber.info/forum/viewtopic.php?f=11&t=6419

UWAG: Potrzebujesz sterownika lub termometru , napisz PW !!!


andras
30%
30%
Posty: 48
Rejestracja: 2012-07-16, 20:17

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: andras » 2021-02-17, 19:05

Zojsan czy możesz pomóc z WifiManagerem w kodzie od Roberta ? Twój kod jest mocno rozbudowany nie na moje siły :)

Oto kod o który mi chodzi :


Kod: Zaznacz cały

/*
   ZAPISY DO BLYNK
V1 led1 OK
V2 zapamiętaj temperaturę dnia
V3 temperatura dnia
V4 grzałka 2
V5 grzałka 3

V11 led2 EZ
V12 led3 AWARIA
V13 led4 KONIEC

V20 SSR_time

V25 EZ_time

V30 praca

V50 zbiornik
V51 bufor
V52 10p
V53 OLM
V54 UFO
V55 woda




*/



 TaskHandle_t Task1;
//#define BLYNK_PRINT Serial
#include <DallasTemperature.h>
#include <OneWire.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>


#define EZPin 12 // EZ
#define RelayPin 14 // grzałka 1
#define RelayPin2 4 // grzałka 2
#define RelayPin3 25 // grzałka 3

#define ONE_WIRE_BUS 5 // temperatura
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);


int SSR_time=0;
int EZ_time=0;
int EZ_time2=0;
unsigned long windowStartTime=0;
unsigned long windowStartTime1=0;


char auth[] =zzzO";
char ssid[] = "zzz";
char pass[] = "zzzb";


WidgetLED led1(V1);//ok
WidgetLED led2(V11);// EZ
WidgetLED led3(V12);//awaria
WidgetLED led4(V13);//koniec

BlynkTimer timer;

float temp_zbiornik = 0;
float temp_bufor = 0;
float temp_10p = 0;
float temp_OLM = 0;
float temp_UFO = 0;
float temp_woda = 0;
float temp_dnia = 80;

int grzalka_2=0;
int grzalka_3=0;


int koniec=0;
int awaria=0;
int praca=0;
int x=0;
int skok=0; // skok na 10p
int EZ=0; // stan EZ
int EZstop;
int a=0;
int b=0;
int c=0;

//**************************************************
BLYNK_WRITE(V20) 
{
 SSR_time = param.asInt();
}
//***************************************************
BLYNK_WRITE(V25) 
{
 EZ_time = param.asInt();
}
//**************************************************
BLYNK_WRITE(V30) 
{
 praca = param.asInt();
}
//*******************************************************
BLYNK_WRITE(V2) 
{
 c = param.asInt();
 if (c==1){Blynk.setProperty(2,"color","#66ff33");Blynk.setProperty(2,"offLabel",temp_10p);temp_dnia=(temp_10p+0.125);}
}
//*******************************************************

BLYNK_WRITE(V4) 
{
 grzalka_2 = param.asInt();
}
//*******************************************************

BLYNK_WRITE(V5) 
{
 grzalka_3 = param.asInt();
}
//*******************************************************




void blinkLedWidget() //co 1 sek
{
     
    sensors.requestTemperatures();
    
    temp_zbiornik = sensors.getTempCByIndex(0);
    temp_bufor = sensors.getTempCByIndex(1);
    temp_10p = sensors.getTempCByIndex(2);
    temp_OLM = sensors.getTempCByIndex(3);
    temp_UFO = sensors.getTempCByIndex(4);
    temp_woda = sensors.getTempCByIndex(5); 

    
   
    Blynk.virtualWrite(50,temp_zbiornik);
    Blynk.virtualWrite(51,temp_bufor);
    Blynk.virtualWrite(52,temp_10p);
    Blynk.virtualWrite(53,temp_OLM);
    Blynk.virtualWrite(54,temp_UFO);
    Blynk.virtualWrite(55,temp_woda);

    Blynk.virtualWrite(26,SSR_time);
    Blynk.virtualWrite(11,EZ);
    Blynk.virtualWrite(30,praca);
    if(praca==0){Blynk.setProperty(30,"color","#D3435C");}
    if(praca==1){Blynk.setProperty(30,"color","#66ff33");}

//*******************Słabe chłodzenie****************************



if(temp_UFO>=60)
  {
  praca=0;
  led3.on();
  if(a<3)
   {
   Blynk.notify("AWARIA!UFO za gorące!!!STOP!");
   a++;
   }
  }
 

if(temp_woda>=60)
  {
  praca=0;
  led3.on();
  if(b<3)
   {
   Blynk.notify("AWARIA!Woda za gorąca!!! STOP!");
   b++;
   }
  }

 if(temp_UFO<58&&temp_woda<60&&awaria==0){led3.off();}
 if(temp_UFO<58){a=0;}
 if(temp_woda<58){b=0;}
//******************Błąd temperatury**************************************
    if
    (
    (temp_zbiornik<=0)||(temp_zbiornik>=110)
    ||(temp_bufor<=0)||(temp_bufor>=110)
    ||(temp_10p<=0)||(temp_10p>=110)
    ||(temp_OLM<=0)||(temp_OLM>=110)
    ||(temp_UFO<=0)||(temp_UFO>=110)
    ||(temp_woda<=0)||(temp_woda>=110)
    )
    {
     awaria=1;
     praca=0;
    }
    if(awaria==1&&x==0)
    {
     led3.on();
     Blynk.notify("AWARIA!  Błąd pomiaru temperatury!!!");
     x=1;
    }
   

   //****KONIEC PROCESU**************************************************************
   if((temp_zbiornik>=98)&&(temp_bufor>=96)&&(praca==1)&&(koniec==0))
    {
     koniec=1;
     praca=0;
     digitalWrite(RelayPin, LOW);Blynk.virtualWrite(10,0);led4.on();
     Blynk.notify("KONIEC! Temperatura bufora osiągnięta!!!"); 
    }

  if (led1.getValue())
  {
    led1.off();
    //Serial.println("LED on V1: off");
  } 
  else 
  {
    led1.on();
    //Serial.println("LED on V1: on");
  }
}


void setup()
{

  
  xTaskCreatePinnedToCore(Task1code,"Task1",10000,NULL,0,&Task1,0);

  Blynk.begin(auth, ssid, pass);
 
 
   pinMode(RelayPin, OUTPUT);
   pinMode(RelayPin2, OUTPUT);
   pinMode(RelayPin3, OUTPUT);
   pinMode(EZPin, OUTPUT);
   digitalWrite(RelayPin, LOW);
   digitalWrite(RelayPin2, LOW);
   digitalWrite(RelayPin3, LOW);  
   digitalWrite(EZPin, LOW);

  sensors.setResolution(12);
  sensors.begin();
 //sensors.setWaitForConversion(false);
  
  timer.setInterval(1000L, blinkLedWidget);
 
  windowStartTime = millis();
  windowStartTime1 = millis();

  led1.off();
  led2.off();
  led3.off();
  led4.off();
  Blynk.virtualWrite(30,0);
  Blynk.setProperty(30,"color","#D3435C");
  Blynk.virtualWrite(20,0);
  Blynk.virtualWrite(25,0);
  Blynk.virtualWrite(4,0);
  Blynk.virtualWrite(5,0);
  Blynk.setProperty(2,"offLabel","USTAW ALARM");
  
 
}

void loop()
{

  Blynk.run();
  timer.run();

 //**************skok na 10 półce*******************
  if(temp_10p>temp_dnia&&EZ_time>0&&EZstop==0){digitalWrite(EZPin, LOW); EZstop=1; Blynk.notify("10p skok temperatury!  Odbiór STOP!");}
  if(temp_10p<=(temp_dnia-0.1)&&EZstop==1){EZstop=0; EZ_time -=5;Blynk.notify("KOREKTA 5% ODBIÓR START!");Blynk.virtualWrite(25,EZ_time);}

  
 //*************sterowanie grzałek dodatkowych
  
   if(grzalka_2==1&&praca==1&&koniec==0&&awaria==0){digitalWrite(RelayPin2,HIGH);}
   else {digitalWrite(RelayPin2,LOW);}

   if(grzalka_3==1&&praca==1&&koniec==0&&awaria==0){digitalWrite(RelayPin3,HIGH);}
   else {digitalWrite(RelayPin3,LOW);}

}


void Task1code( void * pvParameters )
{
 // polecenia wykonywane jak w funkcji setup()
   pinMode(RelayPin, OUTPUT);
   pinMode(EZPin, OUTPUT);
   digitalWrite(RelayPin, LOW);  
   digitalWrite(EZPin, LOW);

   windowStartTime = millis();
   windowStartTime1 = millis();

  
  for(;;) 
    {
      // polecenia wykonywane jak w funkcji loop()
       //*****PWM*********************************


  if ((millis() - windowStartTime) >1000)
  { 
    windowStartTime += 1000;
  }
  
  if ((SSR_time*10) < (millis() - windowStartTime))
  {
    digitalWrite(RelayPin, LOW);
  }
  else 
  {
    if (koniec==0 && awaria==0 && praca==1)
    {
    digitalWrite(RelayPin, HIGH);
    }
  }

  //***************EZ**********************************


 if ((millis() - windowStartTime1) >5000)
  { 
    windowStartTime1 += 5000;
  }
  
  if ((EZ_time*50) < (millis() - windowStartTime1))
  {
    digitalWrite(EZPin, LOW);EZ=0;
  }
  else 
  {
   if (koniec==0 && awaria==0 && praca==1 && EZstop==0)
   {
    digitalWrite(EZPin, HIGH);EZ=255;
   }
  }
    }
}

Wysłane z mojego SM-G950F przy użyciu Tapatalka
[/quote]

zojsan
50%
50%
Posty: 136
Rejestracja: 2019-12-14, 09:06

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: zojsan » 2021-02-17, 19:10

Pewnie...
Podeślę ci...

rastro
40%
40%
Posty: 92
Rejestracja: 2013-02-15, 23:10
Lokalizacja: Polska

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: rastro » 2021-02-25, 16:13

andras pisze:
2021-02-17, 19:05
Zojsan czy możesz pomóc z WifiManagerem w kodzie od Roberta ? Twój kod jest mocno rozbudowany nie na moje siły :)

Oto kod o który mi chodzi :


Kod: Zaznacz cały

/*
   ZAPISY DO BLYNK
V1 led1 OK
V2 zapamiętaj temperaturę dnia
V3 temperatura dnia
V4 grzałka 2
V5 grzałka 3

V11 led2 EZ
V12 led3 AWARIA
V13 led4 KONIEC

V20 SSR_time

V25 EZ_time

V30 praca

V50 zbiornik
V51 bufor
V52 10p
V53 OLM
V54 UFO
V55 woda




*/



 TaskHandle_t Task1;
//#define BLYNK_PRINT Serial
#include <DallasTemperature.h>
#include <OneWire.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>


#define EZPin 12 // EZ
#define RelayPin 14 // grzałka 1
#define RelayPin2 4 // grzałka 2
#define RelayPin3 25 // grzałka 3

#define ONE_WIRE_BUS 5 // temperatura
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);


int SSR_time=0;
int EZ_time=0;
int EZ_time2=0;
unsigned long windowStartTime=0;
unsigned long windowStartTime1=0;


char auth[] =zzzO";
char ssid[] = "zzz";
char pass[] = "zzzb";


WidgetLED led1(V1);//ok
WidgetLED led2(V11);// EZ
WidgetLED led3(V12);//awaria
WidgetLED led4(V13);//koniec

BlynkTimer timer;

float temp_zbiornik = 0;
float temp_bufor = 0;
float temp_10p = 0;
float temp_OLM = 0;
float temp_UFO = 0;
float temp_woda = 0;
float temp_dnia = 80;

int grzalka_2=0;
int grzalka_3=0;


int koniec=0;
int awaria=0;
int praca=0;
int x=0;
int skok=0; // skok na 10p
int EZ=0; // stan EZ
int EZstop;
int a=0;
int b=0;
int c=0;

//**************************************************
BLYNK_WRITE(V20) 
{
 SSR_time = param.asInt();
}
//***************************************************
BLYNK_WRITE(V25) 
{
 EZ_time = param.asInt();
}
//**************************************************
BLYNK_WRITE(V30) 
{
 praca = param.asInt();
}
//*******************************************************
BLYNK_WRITE(V2) 
{
 c = param.asInt();
 if (c==1){Blynk.setProperty(2,"color","#66ff33");Blynk.setProperty(2,"offLabel",temp_10p);temp_dnia=(temp_10p+0.125);}
}
//*******************************************************

BLYNK_WRITE(V4) 
{
 grzalka_2 = param.asInt();
}
//*******************************************************

BLYNK_WRITE(V5) 
{
 grzalka_3 = param.asInt();
}
//*******************************************************




void blinkLedWidget() //co 1 sek
{
     
    sensors.requestTemperatures();
    
    temp_zbiornik = sensors.getTempCByIndex(0);
    temp_bufor = sensors.getTempCByIndex(1);
    temp_10p = sensors.getTempCByIndex(2);
    temp_OLM = sensors.getTempCByIndex(3);
    temp_UFO = sensors.getTempCByIndex(4);
    temp_woda = sensors.getTempCByIndex(5); 

    
   
    Blynk.virtualWrite(50,temp_zbiornik);
    Blynk.virtualWrite(51,temp_bufor);
    Blynk.virtualWrite(52,temp_10p);
    Blynk.virtualWrite(53,temp_OLM);
    Blynk.virtualWrite(54,temp_UFO);
    Blynk.virtualWrite(55,temp_woda);

    Blynk.virtualWrite(26,SSR_time);
    Blynk.virtualWrite(11,EZ);
    Blynk.virtualWrite(30,praca);
    if(praca==0){Blynk.setProperty(30,"color","#D3435C");}
    if(praca==1){Blynk.setProperty(30,"color","#66ff33");}

//*******************Słabe chłodzenie****************************



if(temp_UFO>=60)
  {
  praca=0;
  led3.on();
  if(a<3)
   {
   Blynk.notify("AWARIA!UFO za gorące!!!STOP!");
   a++;
   }
  }
 

if(temp_woda>=60)
  {
  praca=0;
  led3.on();
  if(b<3)
   {
   Blynk.notify("AWARIA!Woda za gorąca!!! STOP!");
   b++;
   }
  }

 if(temp_UFO<58&&temp_woda<60&&awaria==0){led3.off();}
 if(temp_UFO<58){a=0;}
 if(temp_woda<58){b=0;}
//******************Błąd temperatury**************************************
    if
    (
    (temp_zbiornik<=0)||(temp_zbiornik>=110)
    ||(temp_bufor<=0)||(temp_bufor>=110)
    ||(temp_10p<=0)||(temp_10p>=110)
    ||(temp_OLM<=0)||(temp_OLM>=110)
    ||(temp_UFO<=0)||(temp_UFO>=110)
    ||(temp_woda<=0)||(temp_woda>=110)
    )
    {
     awaria=1;
     praca=0;
    }
    if(awaria==1&&x==0)
    {
     led3.on();
     Blynk.notify("AWARIA!  Błąd pomiaru temperatury!!!");
     x=1;
    }
   

   //****KONIEC PROCESU**************************************************************
   if((temp_zbiornik>=98)&&(temp_bufor>=96)&&(praca==1)&&(koniec==0))
    {
     koniec=1;
     praca=0;
     digitalWrite(RelayPin, LOW);Blynk.virtualWrite(10,0);led4.on();
     Blynk.notify("KONIEC! Temperatura bufora osiągnięta!!!"); 
    }

  if (led1.getValue())
  {
    led1.off();
    //Serial.println("LED on V1: off");
  } 
  else 
  {
    led1.on();
    //Serial.println("LED on V1: on");
  }
}


void setup()
{

  
  xTaskCreatePinnedToCore(Task1code,"Task1",10000,NULL,0,&Task1,0);

  Blynk.begin(auth, ssid, pass);
 
 
   pinMode(RelayPin, OUTPUT);
   pinMode(RelayPin2, OUTPUT);
   pinMode(RelayPin3, OUTPUT);
   pinMode(EZPin, OUTPUT);
   digitalWrite(RelayPin, LOW);
   digitalWrite(RelayPin2, LOW);
   digitalWrite(RelayPin3, LOW);  
   digitalWrite(EZPin, LOW);

  sensors.setResolution(12);
  sensors.begin();
 //sensors.setWaitForConversion(false);
  
  timer.setInterval(1000L, blinkLedWidget);
 
  windowStartTime = millis();
  windowStartTime1 = millis();

  led1.off();
  led2.off();
  led3.off();
  led4.off();
  Blynk.virtualWrite(30,0);
  Blynk.setProperty(30,"color","#D3435C");
  Blynk.virtualWrite(20,0);
  Blynk.virtualWrite(25,0);
  Blynk.virtualWrite(4,0);
  Blynk.virtualWrite(5,0);
  Blynk.setProperty(2,"offLabel","USTAW ALARM");
  
 
}

void loop()
{

  Blynk.run();
  timer.run();

 //**************skok na 10 półce*******************
  if(temp_10p>temp_dnia&&EZ_time>0&&EZstop==0){digitalWrite(EZPin, LOW); EZstop=1; Blynk.notify("10p skok temperatury!  Odbiór STOP!");}
  if(temp_10p<=(temp_dnia-0.1)&&EZstop==1){EZstop=0; EZ_time -=5;Blynk.notify("KOREKTA 5% ODBIÓR START!");Blynk.virtualWrite(25,EZ_time);}

  
 //*************sterowanie grzałek dodatkowych
  
   if(grzalka_2==1&&praca==1&&koniec==0&&awaria==0){digitalWrite(RelayPin2,HIGH);}
   else {digitalWrite(RelayPin2,LOW);}

   if(grzalka_3==1&&praca==1&&koniec==0&&awaria==0){digitalWrite(RelayPin3,HIGH);}
   else {digitalWrite(RelayPin3,LOW);}

}


void Task1code( void * pvParameters )
{
 // polecenia wykonywane jak w funkcji setup()
   pinMode(RelayPin, OUTPUT);
   pinMode(EZPin, OUTPUT);
   digitalWrite(RelayPin, LOW);  
   digitalWrite(EZPin, LOW);

   windowStartTime = millis();
   windowStartTime1 = millis();

  
  for(;;) 
    {
      // polecenia wykonywane jak w funkcji loop()
       //*****PWM*********************************


  if ((millis() - windowStartTime) >1000)
  { 
    windowStartTime += 1000;
  }
  
  if ((SSR_time*10) < (millis() - windowStartTime))
  {
    digitalWrite(RelayPin, LOW);
  }
  else 
  {
    if (koniec==0 && awaria==0 && praca==1)
    {
    digitalWrite(RelayPin, HIGH);
    }
  }

  //***************EZ**********************************


 if ((millis() - windowStartTime1) >5000)
  { 
    windowStartTime1 += 5000;
  }
  
  if ((EZ_time*50) < (millis() - windowStartTime1))
  {
    digitalWrite(EZPin, LOW);EZ=0;
  }
  else 
  {
   if (koniec==0 && awaria==0 && praca==1 && EZstop==0)
   {
    digitalWrite(EZPin, HIGH);EZ=255;
   }
  }
    }
}

Wysłane z mojego SM-G950F przy użyciu Tapatalka

Łow... ktoś jaszcze nad tym panuje i wie co oznaczają te wszystkie liczby i if'y w głównej pętli? Zresztą nie tylko w niej, ale ona jest najlepszym przykładem jak nie pisać programów jaki kiedykolwiek widziałem ;)

pico
30%
30%
Posty: 39
Rejestracja: 2020-12-02, 15:55

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: pico » 2021-02-25, 20:00

Skoro wiesz jak nie pisać, to powinienieś wiedzieć jak pisać. A skoro nie rozumiesz co tam jest napisane, to...

zojsan
50%
50%
Posty: 136
Rejestracja: 2019-12-14, 09:06

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: zojsan » 2021-02-25, 20:58

rastro pisze:
2021-02-25, 16:13
Łow... ktoś jaszcze nad tym panuje i wie co oznaczają te wszystkie liczby i if'y w głównej pętli? Zresztą nie tylko w niej, ale ona jest najlepszym przykładem jak nie pisać programów jaki kiedykolwiek widziałem ;)
masz jakąś nową, inną metodę...?
podziel się prosze...
to forum jest po to aby się rozwijać w temacie....

rastro
40%
40%
Posty: 92
Rejestracja: 2013-02-15, 23:10
Lokalizacja: Polska

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: rastro » 2021-02-25, 21:02

@pico Nie wiem skąd wyciągnąłeś wniosek że nie rozumiem... ja tylko napisałem że to dobry przykład jak nie powinno się pisać kodu... Trochę jak ze spawaniem można to zrobić ładnie, a można narobić kalafiorów też będzie się trzymać nawet będzie szczelne szczelne i będzie działać ;).

Po przeformatowaniu cały kod ma tylko tysiąc dwieście linii... a podczas pobieżnej analizy co i jak trzeba skakać po pliku żeby się upewnić co właściwie znaczy zmienna xx, ax czy ks, a teraz wyobraź sobie że projekt jest większy i masz dziesięć tysięcy linii albo milion.
Ostatnio zmieniony 2021-02-25, 21:15 przez rastro, łącznie zmieniany 1 raz.

rastro
40%
40%
Posty: 92
Rejestracja: 2013-02-15, 23:10
Lokalizacja: Polska

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: rastro » 2021-02-25, 21:05

Ja bym zaczął od starej dobrej zasady... dziel i rządź + zmiana nazewnictwa zmiennych + zamiast tych wszędobylskich liczb jakieś makra ew. stałe ze znaczącymi nazwami. Do tego zastanowił bym się czy wszystkie zmienne naprawdę muszą być globalne.

zojsan
50%
50%
Posty: 136
Rejestracja: 2019-12-14, 09:06

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: zojsan » 2021-02-25, 21:41

To ciekawe co piszesz...naprawdę
na tym forum są raczej "bimbrownicy" a nie "programiści" i możesz mieć rację że nasz spaw jest jak kartoflisko.... :lol:
Może zechciałbyś troszkę uchylić rąbka programowania...
Na początek...
czy dla kodu ma znaczenie czy zmienna jest globalną czy nie...?
no i co masz na myśli mówiąc zmiana nazewnictwa zmiennych...
rozwiń proszę swoją myśl...

rastro
40%
40%
Posty: 92
Rejestracja: 2013-02-15, 23:10
Lokalizacja: Polska

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: rastro » 2021-02-25, 22:10

zojsan pisze:
2021-02-25, 21:41
czy dla kodu ma znaczenie czy zmienna jest globalną czy nie...?
Dla komputera to jest zwykle bez znaczenia taka zmienna to w zasadzie miejsce w pamięci gdzie będą jakieś dane. (aczkolwiek to spore uproszczenie bo jest jeszcze kwestia tzw. zasięgów i tego kiedy zmienna jest powoływana i gdzie w pamięci - parametry zwykle są umieszczane na stosie, reszta zwykle trafia na tzw. stertę, ale to już zalezy od kompilatora, jeszcze jest kwestia inicjalizacji globalne wystarczy zainicjować raz, a lokalne są zwykle inicjowane przy każdym wywołaniu bloku w którym zmienna jest zadeklarowana). Ma to znacznie większe znaczenie z punktu widzenia człowieka. Bo zobacz jak zmienna powiedzmy x jest globalna to można jej użyć w dosłownie każdej części kodu. Ciągle trzeba pamiętać że ona tam gdzieś na początku pliki została zadeklarowana i co ona właściwie oznacza. Do tego jak sam już pewnie zauważyłeś przy ponad setce zmiennych zaczyna pojawiać się kłopot jak je nazywać.. mamy więc x i xx a nawet ax.
zojsan pisze:
2021-02-25, 21:41
no i co masz na myśli mówiąc zmiana nazewnictwa zmiennych...
rozwiń proszę swoją myśl...
A no właśnie... bo co mówi nazwa x albo xx komuś kto ogląda kod po raz pierwszy... ano zwykle nic tutaj szczęśliwie jest chociaż jakiś komentarz przy deklaracji więc można się zorientować - tle że trzeba się jednak skakać do deklaracji. Gdyby zamiast x stało wyslanoAlert10p a zamiast ax alertSpadkuTemp to czytało by się to lepiej - ja wiem to jest upierdliwe do pisania, ale później jest łatwiej. To trochę wina ułomności ArduinoIDE. Szkoda że nie wpadli na pomysł żeby dorobić plugin do VS Code. Ale generalne nie trzeba się bać nieco dłuższych bardziej opisowych nazw dla zmiennych czy funkcji.

czytam
70%
70%
Posty: 340
Rejestracja: 2016-05-17, 22:00

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: czytam » 2021-02-25, 22:34

Dorobili

Awatar użytkownika
robert4you
80%
80%
Posty: 432
Rejestracja: 2016-04-01, 10:24

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: robert4you » 2021-02-25, 23:08

Na początku ten kod miał ze 100 linii tylko. I musi być tylko do mojego sterownika. A potem zaczął się rozrastać i jest jak jest.

Wysłane z mojego SM-A715F przy użyciu Tapatalka

==================================================
Moja wersja sterownika forumowego - sterowanie kolumny telefonem:
http://www.bimber.info/forum/viewtopic.php?f=11&t=6419

UWAG: Potrzebujesz sterownika lub termometru , napisz PW !!!

rastro
40%
40%
Posty: 92
Rejestracja: 2013-02-15, 23:10
Lokalizacja: Polska

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: rastro » 2021-02-26, 08:41

No tak Robercie, widziałem również i Twój kod, - w prawdzie linii było trochę więcej niż zeznajesz, ale całość była mniej skomplikowana i wciąż do opanowania. Taki już urok w tym fachu że całość lubi się coraz bardziej komplikować i w pewnym momencie trzeba przemyśleć jak to uprościć albo przynajmniej tak skonstrupwać żeby wciąż było czytelne.

marian929
30%
30%
Posty: 37
Rejestracja: 2018-12-27, 21:09

Re: Sterownik Arduino + Blynk według robert4you - kontynuacja

Post autor: marian929 » 2021-02-26, 08:48

rasto ale kod który zacytowałeś jest od roberta :D

Wysłane z mojego SM-G960F przy użyciu Tapatalka


ODPOWIEDZ

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 57 gości