Keresés

Részletes keresés

spiler0078 Creative Commons License 2016.12.01 0 0 2534

Az előbb lemaradt...Ugyanez a lib-em van nekem is.

 

Az kimaradt, hogy igazából már az nbeall.valt figyelem, mert a nextion csináltam meg az érték növelést...

 

Múltkor nagyon leegyszerűsítettem, de erre kapom a -1-et:

 

idox = myNextion.getComponentValue("page8.nbeall");
Serial.println(idox); -> -1

 

Köszi

 

 

Előzmény: spiler0078 (2533)
spiler0078 Creative Commons License 2016.12.01 0 0 2533

Szia!

 

Ki van pipálva. Az a helyzet, hogy nem egyesével léptetném, hanem tízesével, és ha a plussz gombot nyomom akkor is -1 és ha a minuszt akkor is.

Ez a kód van még a

touch press event-be a plussz jelnél

 

nbeall.val=nbeall.val+10
nhatra.val=nhatra.val+10

 

mínusz jelnél:

nbeall.val=nbeall.val-10

nhatra.val=nhatra.val-10

 

Ezzel vezérelném a szellőztetőmet. Arra gondoltam, hogy a plusz - mínusz gombokkal lehetne beállítani az időt, hogy honnan számoljon vissza (nbeall.val=50), majd ugyanezt az értéket adnám egy másik objektnek is (nhatra.val=50), majd az nhatra.val értékét csökkenteném az arduinoban futó kóddal percenként, és ha nhatra.val==0 akkor nullázom nbeall.val-t is és kikapcsolom a relét...

Így leállnak a ventik.

 

Esetleg privben átküldhetném a teljes (arduino) kódot, ránéznél?

 

Köszi!

Spiler

 

Előzmény: Sploc (2529)
Prof Creative Commons License 2016.12.01 0 0 2532

Hali!

Nekem egyszerű shift register + 7 szegmenses kijelző viszonylatában volt ilyen nehézségem.

Nem biztos, hogy nálad jól működik és elég számításigényes, de hátha.

Egyrészt, a beolvasott értéket ne float-ban, hanem int-ben tárold, mégpedig a beolvasott érték tíz (vagy száz) szorosaként. Előbbi egy, utóbbi két tizedes jegy pontos lesz.

Írj egy függvényt, aminek a bemenete a beolvasott int, kimenete pedig három (ha szükséges, négy) int (vagy byte), négy átmeneti változóban (vagy elegánsabban egy mátrixban), a következőképp:

veszed az int-et, a 10-es maradékát beírod az első byte-ba, aztán osztod tízzel, ennek a 10-es maradékát beírod a második byte-ba és így tovább négy számjegyig (ha több kell, annyival több, de valószerűtlennek tartok egy 100 foknál melegebb akváriumot). A kiírás is szivatós lesz, mert az összes karakterre kell egy switch / case vizsgálat, ami az adott byte adata alapján írja ki az annak megfelelő szöveget.

Most egy kicsit agyhalott vagyok, de nincs kizárva, hogy ennél azért van elegánsabb megoldás is.

Előzmény: nagyharcos (2530)
Prof Creative Commons License 2016.12.01 0 0 2531

Hali!

Akkor a való élet ismét nem úgy működik, mint a modell. Vagy fordítva... :-)

A megoldás mindenesetre érdekes, "elraktam".  :-)

Előzmény: Vargham (2528)
nagyharcos Creative Commons License 2016.12.01 0 0 2530

Sziasztok!

Nextion HMI-vel küzdök. Tanulgatom esténként a programozást....

A hőmérő adatait akaorm kiíratni a kijelzőre, ami alapból float. Szeretném a tizedes jegyeket is megjeleníteni, de az eszköz csak egész számokat ismer (szövegként nem tudom küldeni, ahogy sploc javasolta, mivel nextion 7.0 libet használok, és ebben már nem engedi a foat-ot szövegként küldeni sajna). Szóval ügyeskedtem, szétvágtam és két részletben küldöm át, de nem valami elegáns a dolog. Tud valaki egyszerűbb és kevesebb számítással járó megoldást? Vagy összefűzni a két buffer-t hogy úgy tudjam egyben küldeni? Én ezt alkottam (működik):

 

homerseklet_akva = sensors1.getTempCByIndex(0);
     number1 = ((float)homerseklet_akva/60)*180+30;
     z0.setValue(number1);                     // mutató érték küldése
     int ho1 = homerseklet_akva;
     itoa(ho1, buffer1, 10);
     int ho11 = homerseklet_akva*100;
     itoa(ho11, buffer2, 10);
     memset(buffer2,' ',2), ho11 = atoi(buffer2);
     itoa(ho11, buffer2, 10);
     t_akva.setText(buffer1);  t_akva0.setText(buffer2);    // hőmérséklet küldése egész és tört részként 
     

Illetve még egy kérdés: hogy tudok a kijelzőn létrehozott változónak az közvetlenül az arduinoról értéket adni? Erre nincs példa és a google sem volt a barátom

Köszönettel: Adrián

Sploc Creative Commons License 2016.12.01 0 1 2529

Szia bocsi a késői válaszért... próbáld meg ezzel a library-val : https://github.com/bborncr/nextion

De amúgy jó, hogy ha -1-et kapsz, ha nincs kipipálva a "send component ID" . Létrehoztál egy belső változót aminek a kezdeti értéke 0. ha megnyomod a - gombot, (és persze -1-ként van deklarálva a gombnyomás a nextionban) akkor 0-1 eredmény: -1; ha mégegyszer megnyomod akkor -1 -1 = -2. innentől arduinóban bármit kezdhetsz vele, de én számként deklarálnám, mivel idő. int idox = 0 ; Ha percenként akarod léptetni, akkor ido_min = idox * 60 ;
 Ha ezt akarod megjeleníteni, akkor myNextion.setComponentText("ido_min",String (ido));

Persze a pontos dolgokhoz látni kellene az egészet...

Előbb próbáld meg átírni amit javasoltam, ha nem megy, csak akkor cseréld le a lib-et.

Előzmény: spiler0078 (2523)
Vargham Creative Commons License 2016.11.28 0 0 2528

> Táp: ha nem limitálod, akkor mit csinál (a konkrét áramfelvétel és annak lefutása érdekelne)?

Már nem tudom megnézni, mert nincs nálam. Használják élesben.

  1. Labortápról nem CC (Constant Current), hanem OCP (Over Current Protection) módban tápláltam, vagyis ha átlépte volna a korlátot, akkor lekapcsolta volna a kimenetet.
  2. A megépített áramkörben nem 7805, hanem kapcsolóüzemű DC-DC van.
  3. A szimulátorban van egy kitörölhetetlen ellenállás a 7805 bemenete és a föld között. Csak a kapcsolási rajzon látszik, breadboard nézetben nem. Nem tudom, hogy beleszámolja-e.

 

> Koncepció: szóval a postahajókra is akarsz bootloader-gyárat telepíteni? :-D

Neeem. :-)

Egyelőre tényleg csak bootloader, de később SD kártyáról bootloader + teljes firmware programozás kis-közepes sorozat gyártásakor. Aztán még később automatizált gyártósori teszt is kerülhet bele.

Előzmény: Prof (2527)
Prof Creative Commons License 2016.11.28 0 0 2527

Szia,

Érdekes, megnézem...

Táp: ha nem limitálod, akkor mit csinál (a konkrét áramfelvétel és annak lefutása érdekelne)?

Koncepció: szóval a postahajókra is akarsz bootloader-gyárat telepíteni? :-D

Előzmény: Vargham (2526)
Vargham Creative Commons License 2016.11.28 0 0 2526

> A két MOS-ra és az NPN-re valami javaslat?

Raktam be egy plusz ellenállást, és beírtam a tranzisztorok típusait.

N-FET: AO3400

P-FET: AO3401

NPN: BC817

Diódák: 1N4001

 

> bekapcsolás után a P-MOS source 1,5 A áramot húz néhány másodpercig

Szerintem ez a szimuláció hibája. Élőben, labortápról 50 mA-es limittel is elindul.

> Ha a táp az MCU-t táplálja, akkor minek is kell érzékelnie, hogy a tápot bekapcsolták?

Nem a táp bekapcsolását érzékeli, annak tényleg nem lenne semmi értelme. :-)

Az veszi észre, ha újra megnyomták a gombot.

Egy gomb van az eszközön, és kész.

A gomb megnyomására:

Ha ki van kapcsolva az eszköz, akkor bekapcsol, és végrehajtja a programot. 10 sec elteltével az MCU lekapcsolja a tápot.

Ha be van kapcsolva az eszköz (már lefutott egyszer a program), akkor újra elindítja a programot.

A konkrét eszköz:

Standalone ISP programmer MCU alapú eszközök sorozatgyártásához, vagyis felprogramozásához.

ATmega2560 van benne, jó nagy a flash, sok másik eszköz firmware-je elfér benne. (Szükség esetén SD kártyával bővíthető.)

Ezt vettem alapul:

http://www.gammon.com.au/bootloader

Számítógéptől függetlenül, 9 Voltos elemről megy. Egy db ISP csatlakozó lóg ki belőle.

Egy gomb és három LED van rajta. Piros LED a bekapcsolt állapotot jelzi, simán a tápon lóg, nem az MCU kezeli.

A gomb megnyomására bekapcsol, és keresni kezdi az ISP-n a cél eszközt. Eközben villog a sárga LED. Ha 10 sec alatt nincs meg, akkor kikapcsol. Ha megtalálja, akkor folyamatosan világít a sárga LED. Felismeri, hogy melyik cél MCU-ról van szó (32u4, 328, 2560, stb), és feltölti a megfelelő firmware-t. Közben villog a zöld LED. Sikeres flash írás esetén folyamatosan világít, hiba esetén kialszik.

Gombnyomásra jöhet a következő, vagy 10 sec inaktivitás után kikapcsolja magát.

Előzmény: Prof (2524)
Vargham Creative Commons License 2016.11.27 0 0 2525

Összeraktam, működik.

Holnap írok részleteket.

Előzmény: Prof (2524)
Prof Creative Commons License 2016.11.27 0 0 2524

Hali,

 

IRL biztos más, nem építettem most meg, mert 6 óra forrasztás után ehhez most nem nagyon van kedvem. Amit a szimuláció mutatott, az az, hogy bekapcsolás után a P-MOS source 1,5 A áramot húz néhány másodpercig (a szimuláció időmérője alapján ez kb. 0,3 mp). A Flash erősen lassú nálam, így meg sem próbáltam megmérni, hogy pontosan micsoda (nem a fogyasztók), és miért (kondi nincs, az LM7805 meg ilyet nem csinál.

Ha a táp az MCU-t táplálja, akkor minek is kell érzékelnie, hogy a tápot bekapcsolták? Mert ugye ha ki van kapcsolva, nincs tápellátása, tehát nem tud figyelni, ha van táp, akkor meg... (Remélem érted.)

A két MOS-ra és az NPN-re valami javaslat?

Előzmény: Vargham (2522)
spiler0078 Creative Commons License 2016.11.27 0 0 2523

Hali!

 

Kiírattam a nextion-tól kapott értéket a soros portra. "-1" -et kapok értéknek

   ...

   int  idox=0;

   ...

 

   idox = myNextion.getComponentValue("page8.nbeall");

   Serial.println(idox);

 

Most vagy a nextion library-m a hibás, vagy rosszul deklarálok valamit, vagy az arduino verzóm nem illeszkedik valamihez???? 1.5.6-r2.

 

Viszont ezzel simán kiírja az értéket a nextion...

  myNextion.setComponentText("t28",String (paratartalom)); 

 

Most hogy ezt leírtam... Nem lehet hogy az arduino TX portommal van valami?

 

 

Köszi előre is Sploc.

(persze mindenki másnak is aki hozzászólt)

 

Spiler

Előzmény: Sploc (2517)
Vargham Creative Commons License 2016.11.27 0 0 2522

Követelmények:

-9 Volt bemenet, 5 Volt kimenet Atmega MCU-nak.

-Az MCU kapcsolja ki a tápot x inaktív idő után.

-Kikapcsolt állapotban ne legyen áramfelvétel.

-A bekapcsoló gomb újbóli megnyomását detektálja az MCU. (Egy gombos user interface.)

 

Így oldottam meg:

https://circuits.io/circuits/3352039-soft-power-3

 

Megjegyzések:

-A 7805 helyett DC-DC modul van.

-Az ON nyomógombbal lehet bekapcsolni.

-Az MCU az OFF nyomógomb helyett húzza az N-FET gate-et földre kikapcsoláskor.

-Az MCU az MCU button nevű feszültségmérő helyén érzékeli az ON gomb ismételt lenyomását.

 

Most lehet ütni a tervet. :-)

Ha beválik, akkor pedig lehet vinni, és használni.

Prof Creative Commons License 2016.11.26 0 0 2521

Hali,

A mai nap is ékesen bizonyította, mennyivel egyszerűbb a fejlesztés néhány fázisa oszcilloszkóppal. Időzítés mikroszekundum alatti tartományban megoldva 5 perc alatt.

Kafa ez a tudomány.

 

Prof Creative Commons License 2016.11.26 0 1 2520

USB-ről nem illik relét hajtani, pláne úgy, hogy az Arduino is arról megy.
Mérj rá a lábra, amit a relé optocsatolóját hajtja, hogy van-e rajta változás, amikor a gombot nyomogatod. Ha van, akkor vagy az optocsatoló, vagy a relé rossz és/vagy nem jó a táp neki. Ha a relé kapcsolásakor esik a tápfeszültség, akkor a táp gyenge (ez elég valószerű, azok a relé breakout boardok, amik nálam jártak, rendre bőven 50 mA feletti áramot szedtek behúzott állapotban.

Előzmény: spiler0078 (2514)
Sploc Creative Commons License 2016.11.26 0 0 2519

Nem vitte fel a képet...

Előzmény: Sploc (2518)
Sploc Creative Commons License 2016.11.26 0 1 2518

Hogy változzon bármi is a Nextion-on ahhoz meg kell mondani mit csináljon. Itt vannak a használt parancsok: https://www.itead.cc/wiki/Nextion_Instruction_Set

Ha hosszútávra tervezel, mindenképpen külön táp kell neki, mert nagyon érzékeny rá. Eleinte én is boardról fejlesztgettem jobb híján, de nem ajánlatos.

A reléket meg mindenképpen optocsatolva külön tápra, tapasztalat, rengeteget szenvedtem...

Előzmény: spiler0078 (2515)
Sploc Creative Commons License 2016.11.26 0 1 2517

Szia!

 

Egy relé kapcsolásának egyszerűnek kellene lennie. Ha minden jól van deklarálva, és ha jó lib-et használsz, akkor mennie kell.

 

String message = myNextion.listen(); //check for message
       
            if (message == "65 0 d 1 ffff ffff ffff"){
              digitalWrite(rele5, LOW);                   // Relé5 (Elszívó) On/Off
            }

 
           if (message == "65 0 c 1 ffff ffff ffff"){
 digitalWrite(rele5, HIGH);
           }

 

Emlkszem, hogy a Serial2-höz valamit át kellett írni a library-ben, és én is sokat szenvedtem vele.

Az általam használt programban, én nem string ként használom a változót, amit állítani akarok, mivel felvetődött bennem, hogy ha valami oknál fogva nem menne át az adat, a kijelzőn már növelt értéket látnék, de a programban hibás adattal számolna. Ezért a Nextion-on egy helyi változót deklaráltam va0-néven, ami a + gomb érintésére hozzáad egyet, - ra kivon belőle. Aztán csak kiíratom a visszaérkezett adatot, tehát biztos, hogy az van a kijelzőn amivel számolok.

 

Mondjuk elméletileg működnie kellene text-el is.

 

 int value = myNextion.getComponentValue("va0");
  cel = value * 50;
  cel_old=cel;

 

 

 

Én azzal kezdeném, hogy teleraknám a programot Serial.print-el és a message-t is kiíratnám. Ha nem jön semmi gombnyomásra akkor a kommunikációban van a hiba. Ha megnyomod a gombot villan az Rx led?

Előzmény: spiler0078 (2515)
Tomiali Creative Commons License 2016.11.26 0 0 2516

Köszönöm a segítséget ki próbálom.

Előzmény: Prof (2507)
spiler0078 Creative Commons License 2016.11.25 0 0 2515

Ja, és a szöveget sem írja át a gombnyomásra a nextion kijelzőjén.

 

Előzmény: spiler0078 (2514)
spiler0078 Creative Commons License 2016.11.25 0 0 2514

Hali!

 

A progi ezek szerint jónak néz ki?

Nem kapcsol a relé.  Olyan mint ha a gombnyomást nem érzékelné, vagy lehet hogy gyenge a tápom?

 

6 db ds18b20, no meg egy esp8266 müxik egy 600mA-es tápról,

és a MEGA 2560 pedig az USB-ről hajtja magát és a relét.

 

spiler

Előzmény: Vargham (2512)
Prof Creative Commons License 2016.11.25 0 0 2513

Vargham hozzászólásához csatlakoznék: Mi a hiba?

A 16-17 pin a Serial2, nem a Serial3. Ez alapjában sokat lendíthet a dolgon.

 

A többi kb. jónak tűnik így kb. 2 perces kutakodás után.

Előzmény: spiler0078 (2509)
Vargham Creative Commons License 2016.11.25 0 0 2512

> nem akar működni...

Mi a hiba?

Előzmény: spiler0078 (2509)
spiler0078 Creative Commons License 2016.11.25 0 0 2511

A setup deklarációban mág a másik soros port maradt benne...

A helyes -elvileg- Serial2.begin(9600);

Előzmény: spiler0078 (2509)
spiler0078 Creative Commons License 2016.11.25 0 0 2510

Az előző mintához a kép lemaradt...

spiler0078 Creative Commons License 2016.11.25 0 0 2509

Sziasztok!

 

Szeretnék egy kis segítséget kérni.

Átnéztem már egy csomó példát, és már 2 napja szívok vele, hogy megoldjam, de nem akar működni...

 

Szóval van egy 2.4" os Nextion HMI-m, amit egy arduino MEGA2560-al kötöttem össze a 16,17 es porton.

Puffer és kazán hőmérsékleteket mértem vele eddig, de most szeretnék relét is vezérelni vele.

Erre a Nextion HMI érintőképernyőjét használnám, egyelőre csak "+" feliratos gombra kapcsolja be a relét, "-"feliratosra pedig ki...

 

Bemásolok egy részét a proginak, megköszönném, ha valaki megmondaná, hogy mit rontok el.

 

#include <SoftwareSerial.h>
#include <Nextion.h>


SoftwareSerial nextion(16, 17);
Nextion myNextion(nextion, 9600); 


int ertek=50;

 

void setup(){
    setTime(now()); 
    dht.setup(22); // data pin 22

    pinMode(relPin0, OUTPUT); //49
    pinMode(relPin1, OUTPUT); //51
    digitalWrite(relPin0, HIGH);
    digitalWrite(relPin1, HIGH);
    sensors.begin();

 

    Serial3.begin(9600);
    myNextion.init();
}

 

void loop(){
sensors.requestTemperatures();

if((second()==0) or (second()==10) or (second()==20) or (second()==30) or (second()==40) or (second()==50)) {
   krp();
   //relay();
   paratart(); //páratartalom blokk
}
// delay(4000);

 

String message = myNextion.listen(); //check for message

if (message == "65 8 5 1 ffff ffff ffff") {
   myNextion.setComponentText("textbeall", String(ertek));
   digitalWrite(relPin0, HIGH);
   digitalWrite(relPin1, HIGH);
}

if (message == "65 8 4 1 ffff ffff ffff") {
   myNextion.setComponentText("textbeall", String(ertek));
   digitalWrite(relPin0, LOW);
   digitalWrite(relPin1, LOW);
}

}

 

spiler0078 Creative Commons License 2016.11.25 0 0 2508

Hali!

 

Azért szerettem volna nagyobb tápot, mert azzal akartam meghajtani a 4-es relé panelt és egy esp8266-ot is a MEGA2560 mellett. De valószínű, hogy a MEGA és a wifi megkapja a az általad linkelt tápot vagy annak egy erősebb 1,5-2A -es verzióját, a relének pedig veszek egy 5V 6A 30W os tápot http://www.ebay.com/itm/371514993202

 

A relék meghajtásához elvileg jónak kell lennie...  

 

Köszi mindenkinek a hozzászólást

 

Spiler

Előzmény: BuNnY (2488)
Prof Creative Commons License 2016.11.25 0 0 2507

Végtelenül leegyszerűsítve, igen. Gyakorlatilag egy nagyon széles sávú nagyteljesítményű erősítőfokozat kell a végére.

Előzmény: Tomiali (2506)
Tomiali Creative Commons License 2016.11.25 0 0 2506

Teszek utána egy fetet? Bocsi a sok kérdésért nem vagyok nagy műszerész. :)

 

Előzmény: Prof (2505)
Prof Creative Commons License 2016.11.25 0 0 2505

Jó lehet, de ezzel nem fogsz tudni 10 A-t meghajtani, a végére ugyanúgy kell valamilyen erősítőfokozat.

 

Frekvenciamérésre:

http://interface.khm.de/index.php/lab/interfaces-advanced/arduino-frequency-counter-library/

 

Előzmény: Tomiali (2504)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!