Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   366 / 366
(#) atus1981 válasza sirály12 hozzászólására (») Szo, 13:20 /
 
ESP-01-re mik a lehetőségek, hogy az ardu kimaradjon?
(#) RoliNyh hozzászólása Szo, 13:59 /
 
Os, köszi, kipróbálom mindkettőt. Remélem majd a HW -ben is működik...
De szerintem amásodik verzió lesz abefutó, abban nem kell használni +1 ideiglenes tárolót.
A hozzászólás módosítva: Szo, 14:00
(#) tbarath válasza atus1981 hozzászólására (») Szo, 14:08 /
 
Az ESP01-nél 8 lábad van: GND, VCC, chip-enable (amit VCC-re kell húznod), reset, soros RX és TX, és 2 digit pin.
Ha ez elég, akkor elég. Ha nem, akkor vagy használod soros wifi adapterként ahogy tervezted, vagy választasz más ESP eszközt.
(#) RoliNyh hozzászólása Szo, 14:34 /
 
Közben azon agyalok, hogy hiszen a másodikhoz is kell külön ideiglenes tároló a "tempertek" az.
(#) berkesandor válasza berkesandor hozzászólására (») Szo, 14:55 /
 
Működik az átváltás amit tbarath írt, csak figyelmetlen voltam szokás szerint.

Olyan kérdésem lenne: RTC -vel fel tudom ébreszteni az arduino-t egy adott időbe?
Akkumulátorról működő szerkezetet szeretnék csinálni, ami egy nap csak egyszer mér, minél hosszabb üzemidőt szeretnék egy feltöltéssel.
(#) RoliNyh hozzászólása Szo, 15:24 /
 
Következő kérdésem, ha a mester arduino küld egy kérdőjel karaktert a soros vonalon a szolgának:
  1. Serial.print("?");


Akkor a szolga a:
  1. if (Serial.available() = ?)
  2. {}
  3. else
  4. {}


Serial.available fügvénnyel tudja e azonnal vizsgálni, hogy kérdőjel jött e,
vagy az csak egy 0 -át vagy -1 -et ad vissza, és ez után még külön be kell olvasni és vizsgálni mi jött?

Szóval, ha jön egy kérdőjel megy az if ág, ha nem jön semmi, vagy más jön, megy az else ág?
(#) RoliNyh válasza szeg76 hozzászólására (») Szo, 16:36 /
 
Ok, de nekem ebből nem jött le, hogy milyen értéked ad vissza afüggvény.
Mindenesetre már megcsináltam a másik módszerrel akkor.
(#) RoliNyh hozzászólása Szo, 16:48 /
 
Viszont lenne egy új kérdés, egy logikai változó változásának eldöntéséhez is kell külön tároló?
Magyarul azt kellene eldönteni, hogy:

  1. boolean F_pin = LOW;


értéke megváltozott -e az előzőhöz képest? Tehát ha LOW volt, váltott -e HIGH -ba,
és fordítva, ha HIGH volt, váltott -e LOW -ra?
A hozzászólás módosítva: Szo, 16:49
(#) atus1981 válasza tbarath hozzászólására (») Szo, 17:22 /
 
2 digit pin elég, mert egy számlálót szeretnék, amihez az egyik a léptetés, a másik meg a nullázás lenne. Nagyon nem vágom ezt az esp dolgot, viszont az érdekelne, hogy mekkora sketch fér el benne?
(#) vargham válasza atus1981 hozzászólására (») Szo, 17:36 /
 
> mekkora sketch fér el benne?
A mellé rakott flash IC-től függ. 512 kB-tól felfele. (Egy UNO-ban 32 kB van fixen.)
(#) tbarath válasza berkesandor hozzászólására (») Szo, 17:54 /
 
Itt van olyan hogy setalarm: Bővebben: Link
A DS3231 nem drága, ezzel elvileg felébresztheted az arduino-t.

De még sose csináltam ilyet, csak 2 perc guglizás dobta ezt.
(#) atus1981 válasza vargham hozzászólására (») Szo, 18:00 /
 
Az nem is olyan rossz!
Azt hiszem jobban beleásom magam ebbe a dologba.
Rendeltem is egy ilyen készletet, remélem tudom flash-elni és programozni.
Köszi a segítséget.
(#) tbarath válasza RoliNyh hozzászólására (») Szo, 18:05 / 1
 
Idézet:
„Parameters

none

Returns

the number of bytes available to read”

Bővebben: Link

Más: C szintakszisban a = és a == nagyon más, az első az értékadás, a másik pedig az egyenlőséget vizsgáló operátor.
Szóval amit írtál:
  1. if (Serial.available() = ?)

Ez azt jelenti, hogy függvény visszatérési értékének próbál értéket adni, mégpedig egy kérdőjelet. Ami még csak nem is '?' vagy "?", szóval nem string vagy char, hanem jó eséllyel egy undefined valami. Hogy erre mit reagál a fordító azt nem tudom, jó eséllyel syntax error-t dob, de az is lehet hogy az értékadás sikerességétől függően ágazik el.
A fv. visszatérési értékének _szerintem_ nem tud értéket adni, főleg ha a típus se felel meg, de változónál egy ilyennek könnyen belefutsz a késbe: mindig true lesz, és még a változód értékét és felülcsapod.

Ezért célszerű inkább így vizsgálni:
  1. char ch = '5';
  2. if (5 == ch){
  3. // amit igaz esetén csinálsz
  4. }
  5. else{
  6. // amit false esetén csinálsz
  7. }
(#) tbarath válasza RoliNyh hozzászólására (») Szo, 18:09 /
 
Ha csak nem akarsz interrupt-ot tenni a változására, akkor kell.
  1. setup(){
  2. ...
  3. boolean F_pin = digitalRead(pinNumber);
  4. ...
  5. }
  6. loop(){
  7.    if (digitalRead(pinNumber) != F_pin){
  8.       F_pin = !F_pin;
  9.       //és amit itt csinálni akarsz.
  10.    }
  11. }
A hozzászólás módosítva: Szo, 18:10
(#) kapu48 válasza tbarath hozzászólására (») Szo, 18:28 /
 
Szerintem ezt akartad írni, 8. sorban:
  1. F_pin = F_pin;
A hozzászólás módosítva: Szo, 18:30
(#) RoliNyh válasza tbarath hozzászólására (») Szo, 18:55 /
 
Igazából most egyenlőre így van:

  1. char S_command = 0;    // Parancs változó definiálása és nullázása
  2. Programrész.:
  3.   if (Serial.available() > 0)    // Megvizsgáljuk érkezett -e a soros vonalon parancs
  4.     {
  5.     S_command = Serial.read();    // ha igen, beolvassuk a parancsot és tárolóba tesszük,
  6.     if (S_command = "?")    // ha kérdőjel érkezett, a következő feltételeket vizsgálunk:
  7.    
  8.       if ( Voltage > (Voltage_temp+5) ||  Voltage  < (Voltage_temp-5) )   
  9. // Ha a cellafeszültség az előző méréshez képest változott,
  10.         Serial.println(Voltage);    // akkor elküldjük az új adatot, egyébként nem küldünk semmit.
  11.  
  12.       if ( Temperature > (Temperature_temp+5) ||  Temperature  < (Temperature_temp-5) )   
  13. // Ha a cellahőmérséklet az előző méréshez képest változott,
  14.         Serial.println(Temperature);    // akkor elküldjük az új adatot, egyébként nem küldünk semmit.
  15.     }

Nem tudom, ez úgy menne -e ahogy gondolom...
Szóval a lényeg az lenne, hogyha a mester ardu küld egy kérdőjelet, akkor a szolga megvizsgálja,
változott -e a cellafeszültség és a cellahőmérséklet az előző méréshez képest.
Ha nem változott (a meghatározott értéken belül van), nem küld semmit vissza, ha változott, akkor elküldi az új értéket, de mindig csak azt, amelyík változott.

És ebben még a fet be vagy kikapcsolt állapot vizsgálata nincs benne...
A hozzászólás módosítva: Szo, 19:00
(#) tbarath válasza kapu48 hozzászólására (») Szo, 18:59 /
 
Nem, értéket akarok váltani, így lesz true-ból false és vice versa.
(#) tbarath válasza RoliNyh hozzászólására (») Szo, 19:08 /
 
Hát próbáld ki, nekem nincs kedvem most elővenni egy arduino-t.
Már ha lefordul, mert egy char-nak akarsz string értéket adni, igaz egy karakteres string-et, de akkor is. (invalid conversion from 'const char*' to 'char' [-fpermissive])
(#) RoliNyh válasza RoliNyh hozzászólására (») Szo, 19:08 /
 
Vagyis pontosabban így.:
  1. if (S_command == "?")
(#) RoliNyh válasza tbarath hozzászólására (») Szo, 19:10 /
 
Egyébként ellenőrzés elfogadja mind a két verziót, persze akkor egy egyenlőjellel nem lenne jó...
(#) RoliNyh válasza tbarath hozzászólására (») Szo, 19:34 /
 
Igazából az F_pin változóm nem lábról kerül beolvasásra, az ugyanis egy kimenet, az kapcsolja be a fetet a túlfeszültség elérésekor, és ki ha megfelelő a feszültség. Szóval magában a programban keletkezik a magas vagy alacsony szint. Azt kellene vizsgáli, hogy volt -e változás ebben a változóban. És a lényeg itt is az volna, hogy ha nincs változás, akkor ne küldje újra ugyanazt az értéket a szolga a mester felé, csak akkor hogyha volt változás.
(#) kissi válasza RoliNyh hozzászólására (») Szo, 21:03 /
 
Szia!
Idézet:
„Szóval magában a programban keletkezik a magas vagy alacsony szint. Azt kellene vizsgáli, hogy volt -e változás ebben a változóban. És a lényeg itt is az volna, hogy ha nincs változás, akkor ne küldje újra ugyanazt az értéket a szolga a mester felé, csak akkor hogyha volt változás.”

Akkor ezt te idézed elő a programban ? Ha igen, akkor csak akkor küld ki az értéket, ha változtattál ! Irányítsd úgy a programodat, hogy ha nincs részedről változtatás, akkor ne menjen a küldő sorra, hagyja ki !!
(#) tbarath válasza RoliNyh hozzászólására (») 1:25 /
 
Ha te állítod a szintet, akkor csinálj magadnak egy változót amit átírsz amikor változtatsz. A kiírató rutinban akkor elég ezt vizsgálni, és kiiratás után újra alaphelyzetbe hozni.
Vagy irasd ki állításkor, ahogy kissi is javasolta.
Következő: »»   366 / 366
Bejelentkezés

Belépés

Hirdetés
Frissek
2017. Júl, 23. Vas
8:35:07
Jelenleg 204 fő olvassa az oldalt
Online tagok:
Lapoda.hu     XDT.hu     HEStore.hu