Program pre Arduino

Sekcia určená pre Arduino nadšencov

Moderátor: Moderátori

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2697
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 28

Re: Program pre Arduino

Príspevok od používateľa maskrtnik01 » 25 Aug 2022, 09:19

Matematika je ešte ten lepší príklad (ak sa bavíme o +-*/). Vie tu niekto napísať v assembleri konverziu int/float na textovú reprezentáciu? Neviem ani či to chcem vidieť :D

Je to pravda, niektoré veci sa človek rýchlejšie dozvie na fóre. Na druhú stranu jedna zo základných zručností vývojára je aj vedieť si nájsť veci na internete - nikto nevie všetko.
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6368
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: Program pre Arduino

Príspevok od používateľa pocitujlasku » 25 Aug 2022, 10:42

nikto ti nezakazuje pisat if then else
ja som ale tvor lenivy a tak radsej pouzivam skrateny zapis (ak je to vhodne). sprehladnuje a skracuje to kod. To, ze existuje viac moznosti zapisu, mne to nevadi, ved o tom programovanie je. Roznymi moznostami dosiahnut ten isty vysledok. a ked na nieco nezname v cudzom kode narazim, tak si proste vyhladam co to je. A velakrat mi taketo finty dost pomohli.
ked ti vyhovuje asm, tak si programuj v nom. mne zas vyhovuje, ked mam na vyber.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 155
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 26 Aug 2022, 08:58

maskrtnik01 napísal:
25 Aug 2022, 09:19
Matematika je ešte ten lepší príklad (ak sa bavíme o +-*/). Vie tu niekto napísať v assembleri konverziu int/float na textovú reprezentáciu? Neviem ani či to chcem vidieť :D

Je to pravda, niektoré veci sa človek rýchlejšie dozvie na fóre. Na druhú stranu jedna zo základných zručností vývojára je aj vedieť si nájsť veci na internete - nikto nevie všetko.
ja som ale vývojar není.....som elektrikár aktuálne pracujem na meraní a regulacií kde sa dostávam aj k ochranám na VN,VVN zariadeniam. A kedže sa stále zdokonalujem a chcem vedieť viac tak som sa dal aj okrem toho a programovanie. Keď mám čas tak skúšam. Toto je taký moj projektík na doma detektor LPG a CO2. Neskor pojdem do niečoho viac.
0

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 155
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 05 Sep 2022, 09:34

takze zase sa vraciam k arduinu a bádam ako spravit funckiu return ked pri zmacknuti tlacidla chcem poslat program na zaciatok. Ide o to ze senzor pisti a chcem ho vyresetovat napriklad na 5 minut tlacidlom.
0

Používateľov profilový obrázok
Mek
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1319
Dátum registrácie: 15 Okt 2015, 20:49
Bydlisko: Žilina
Vek: 37
Kontaktovať používateľa:

Re: Program pre Arduino

Príspevok od používateľa Mek » 05 Sep 2022, 09:50

V loop() metode kde kontrolujes stav tlacidla, ak bolo stlacene, si odlozis do premennej momentalny cas cez funkciu millis().
V casti, kde ma byt vyvolane pipanie, das if, kde porovnas, ci ubehlo viac ako 5 minut od posledneho casu, ktory si si odlozil.
0
... byvaly spravca Hospudky u amplionu, Martinekk-ov brat. Nemam vystudovane elektro, je to len moje hobby. Povolanim som SW inzinier.
Moja databaza suciastok: ELPARTS
Moj velky elektro projekt: MEGA TRANSISTOR CLOCK

Používateľov profilový obrázok
misocko
Ultimate člen
Ultimate člen
Príspevky: 4464
Dátum registrácie: 14 Jún 2009, 00:00
Vek: 48

Re: Program pre Arduino

Príspevok od používateľa misocko » 05 Sep 2022, 10:12

McSmekac, reset tlacitko už arduino obsahuje. Navrat na zaciatok programu nieje riesenim toho co potrebujes. Mal by si si na zaciatok uvedomit ze program v arduine (to co je v loope) bezi stale dookola. Tam sa proste musis vysantit s casmy a ifmy a pomocnymi premennymi. Popis co presne ocakavas a niekto ti mozno poradi ako co najlahsie na to. Ciest bude urcite viacero ale urcite nie navrat na zaciatok programu.
0

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 155
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 05 Sep 2022, 10:25

Viem ze arduino ma reset tlacidlo ale ja chcem dalsie tlacidlo pretoze to bude ulozene v krabicke. Ocakavam od toho to ze LPG,CO2 senzor vyssie co je program ak sa aktivuje a bude pipat tak ked dobehnem a odstranim poruchu chcem aktivovanim tlacidla napriklad vratit program na zaciatok kde by bol cas poviem priklad 10 minut a po tich 10 minut by zase snimal zo senzorov.
0

Používateľov profilový obrázok
misocko
Ultimate člen
Ultimate člen
Príspevky: 4464
Dátum registrácie: 14 Jún 2009, 00:00
Vek: 48

Re: Program pre Arduino

Príspevok od používateľa misocko » 05 Sep 2022, 10:33

Kazdy tu prilozeny kod automaticky vypne hukanie ked senzor zaznamena nizsiu hodnotu -ked odstranis poruchu
Este raz, program beha stale dookola, ked zisti co2 huka, ked nie nehuka
0

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 155
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 05 Sep 2022, 12:46

to viem ale ja chcem napriklad po zatlaceni tlacidla aby nabehol cas cca 10 minut kedy ignoruje hukanie

skusil som to nejak takto

if (tlacidlo=digitalRead(2)){
noTone(buzzer);
delay(10000);
return 1;

}
else {
return 0;
0

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2697
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 28

Re: Program pre Arduino

Príspevok od používateľa maskrtnik01 » 05 Sep 2022, 13:14

Stará známa cesta do pekiel - delay.

Nie je to celé zle, ale treba si zvyknúť nepoužívať delay. Správny postup je používať millis, a premennú kde si zaznačím čas dôležitej udalosti - napríklad stlačenie tlačidla. Ak už ubehlo 10 minút, pozriem či je dôvod húkať, a prípadne húkam. Ak neubehlo, nehúkam.

Dôvod? Ak chceme od MCU jednu jedinú primitívnu vec, možno žiaden. Skoro vždy ale nakoniec chceme viacero vecí. A keď jedno vykonanie loop trvá vďaka delayom sekundy, alebo aj minúty. Tak sa stane, že potom človek nechápe, prečo to na stlačenie tlačidla reaguje iba vo veľmi špecifickom čase. Práve preto, že procesor zabíja čas v delayi, a nemôže riešiť zvyšok loop-u.
0

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 687
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 39

Re: Program pre Arduino

Príspevok od používateľa miso156 » 05 Sep 2022, 15:47

Tu je riesenie cez jeden pomocny flag sensor_run.
Hned na zaciatku v setupe zapnes senzor a takztiez si do sensor_run poznacis, ze si ho zapol.
Ak senzor zahlasi chybu (alebo aj nemusi) a ty stlacis tlacitko, vypne senzor, poznaci si do sensor_run=false, taktiez si poznaci aktualny cas do premnnej button_press_time a tym opusti if(digitalRead(2) == HIGH) zatvorky.

Hned potom, kedze si dal do senzor_run = false, program zacne neustale skakat do if(senzor_run == false) casti, a teda zacne kontrolovat rozdiel medzi akt. casom a casom ktory si si poznacil. Ak je viac nez 600000ms tak opat zapne senzor a taktiez si poznaci sensor_run = true (senzor beziaci).
Potom uz do if(senzor_run == false) program skakat nebude, teda kym znova nestlacis tlacitko.

Pozn: Funkciu zapni_senzor() a vypni_senzor() si musis spravit, alebo ju uz mas spravenu.
Pozn: Neskusal som to, ale pride mi to ciste riesenie.

Kód: Vybrať všetko


unsigned long button_press_time;
bool sensor_run;

setup() {
  zapni_senzor();
  sensor_run = true;  //nastav flag na senzor zapnuty
}

void loop() {
  
  if(digitalRead(2) == HIGH) {     // ak je tlacitko ON (LOW/HIGH zmen podla zapojenia tlacitka)
    noTone(buzzer);   
    vypni_senzor(); 
    sensor_run = false;     //zmen flag na senzor vypnuty
    button_press_time = millis();    //zapamataj si cas zatlacenia tlacitka
  } 

  if(senzor_run == false)  {  //kontroluj cas (10min interval) len ak je senzor vypnuty
    if( (millis() - button_press_time) > 600000)  {  //ak ubehlo 10min zapni znovu senzor
      zapni_senzor();
      sensor_run = true;  //nastav flag na senzor zapnuty
    } 
  }

}

0
"No pain, no gain." (KC238)

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6368
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: Program pre Arduino

Príspevok od používateľa pocitujlasku » 05 Sep 2022, 19:53

Kód: Vybrať všetko

unsigned long button_press_time=0;


void loop() {
// tu si mozes dat veci, ktore musia fungovat stale

  if (button_press_time<=millis() {
    continue;
  } 
  // ak je cas mensi ako v premenbej, tak konci a nic za tymto sa nevykona
  
  if(digitalRead(2) == LOW) { 
    noTone(buzzer);   
    button_press_time=millis()+pocet_sekund;
  } // toto mozes dat aj vyssie a kazdym stlacenim predlzis interval o pocet sekund
  
 // a tu si uz das svoj kod, ktory sa vykona az po tom urcenom case
 
pisem z mobilu, tak tam mozu byt nejake tie preklepy :-)
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 155
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 06 Dec 2022, 08:44

Zdar chalani vedel by mi niekto poradit ako dostanem program do aplikacie blynk? skúšam všetko a furt nejde. Ide o obyčajnú led zpnutím virtuálneho tlačidla.

#include <OneWire.h>
#include <BlynkSimpleEsp8266.h>
#include <dummy.h>

#define ONE_WIRE_BUS 2

#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPLTli-yrNP"
#define BLYNK_DEVICE_NAME "Ledka"
#define BLYNK_AUTH_TOKEN "GnZFgbsHDS-x1tuARO8birwyzpCmwzHl"

// You should get Auth Token in the Blynk App.

// Go to the Project Settings (nut icon).

char auth[] = "GnZFgbsHDS-x1tuARO8birwyzpCmwzHl";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "AP 2.4 G";
char pass[] = "A123B1234C";

void setup()
{
// Debug console
Serial.begin(9600);
pinMode(2, OUTPUT);
Blynk.begin(auth, ssid, pass);

}

void loop()
{
Blynk.run();

}

// This function will be called every time button Widget
// in Blynk app writes values to the Virtual Pin V3
BLYNK_WRITE(V5) {
int pinValue = param.asInt(); // Assigning incoming value from pin V3 to a variable
if (pinValue == 1) {
digitalWrite(2, HIGH); // Turn LED on.
} else {
digitalWrite(2, LOW); // Turn LED off.
}
}


a vipisuje mi toto

add if0
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 2
cnt

connected with AP 2.4 G, channel 11
dhcp client start...
ip:192.168.100.72,mask:255.255.255.0,gw:192.168.100.1
pm open,type:2 0
0

Používateľov profilový obrázok
balu
Pokročilý člen
Pokročilý člen
Príspevky: 613
Dátum registrácie: 21 Feb 2022, 12:06

Re: Program pre Arduino

Príspevok od používateľa balu » 07 Dec 2022, 08:47

1. vůbec by nebylo od věci kód vložit takhle :

Kód: Vybrať všetko

#include <OneWire.h>
#include <BlynkSimpleEsp8266.h>
#include <dummy.h>

#define ONE_WIRE_BUS 2

#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPLTli-yrNP"
#define BLYNK_DEVICE_NAME "Ledka"
#define BLYNK_AUTH_TOKEN "GnZFgbsHDS-x1tuARO8birwyzpCmwzHl"

// You should get Auth Token in the Blynk App.

// Go to the Project Settings (nut icon).

char auth[] = "GnZFgbsHDS-x1tuARO8birwyzpCmwzHl";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "AP 2.4 G";
char pass[] = "A123B1234C";

void setup()
{
// Debug console
Serial.begin(9600);
pinMode(2, OUTPUT);
Blynk.begin(auth, ssid, pass);

}

void loop()
{
Blynk.run();

}

// This function will be called every time button Widget
// in Blynk app writes values to the Virtual Pin V3
BLYNK_WRITE(V5) {
int pinValue = param.asInt(); // Assigning incoming value from pin V3 to a variable
if (pinValue == 1) {
digitalWrite(2, HIGH); // Turn LED on.
} else {
digitalWrite(2, LOW); // Turn LED off.
}
}
2. Ideálně nepsat kód jako prase a používat odsazení :

Kód: Vybrať všetko

#include <OneWire.h>
#include <BlynkSimpleEsp8266.h>
#include <dummy.h>

#define ONE_WIRE_BUS 2

#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPLTli-yrNP"
#define BLYNK_DEVICE_NAME "Ledka"
#define BLYNK_AUTH_TOKEN "GnZFgbsHDS-x1tuARO8birwyzpCmwzHl"

// You should get Auth Token in the Blynk App.

// Go to the Project Settings (nut icon).

char auth[] = "GnZFgbsHDS-x1tuARO8birwyzpCmwzHl";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "AP 2.4 G";
char pass[] = "A123B1234C";

void setup()
{
    // Debug console
    Serial.begin(9600);
    pinMode(2, OUTPUT);
    Blynk.begin(auth, ssid, pass);
}

void loop()
{
    Blynk.run();
}

// This function will be called every time button Widget
// in Blynk app writes values to the Virtual Pin V3
BLYNK_WRITE(V5) 
{
    int pinValue = param.asInt(); // Assigning incoming value from pin V3 to a variable
    if (pinValue == 1) 
    {
        digitalWrite(2, HIGH); // Turn LED on.
    }
    else
    {
        digitalWrite(2, LOW); // Turn LED off.
    }
}
Podle výpisu
McSmekac napísal: add if0
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 2
cnt

connected with AP 2.4 G, channel 11
dhcp client start...
ip:192.168.100.72,mask:255.255.255.0,gw:192.168.100.1
pm open,type:2 0
se program zapsal a funguje, protože konzole vypisuje, co má a BLYNK se k SSID připojil.

A teď důležité otázky :
  • kde se volá BLYNK_WRITE(V5) ?
  • Blynk neznám, ale nemáš náhodou renonc ve V3, V5 ?
1
Obrázok 1

Používateľov profilový obrázok
McSmekac
Stály člen
Stály člen
Príspevky: 155
Dátum registrácie: 16 Sep 2020, 20:10

Re: Program pre Arduino

Príspevok od používateľa McSmekac » 07 Dec 2022, 10:55

Ahoj blynk je platforma cez ktoru si dokážem zariadenie ako wemos d1 s čipom esp8266 napríklad merať teplotu cez telefón. https://blynk.io/
Ide o to že mám od kolegu aj iný program (meranie teploty) ktorý je na 100% overený a u neho funguje ale mne vipisuje to isté. V aplikácií blynk mi stále ukazuje offline.
Ešte to musím vyskúšať doma lebo neviem či v práci nemáme nejaký firewall na takéto zariadenia.
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok