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   850 / 850
(#) MATA válasza MATA hozzászólására (») Nov 1, 2024 /
 
Illetve nem jól írtam nem megváltoztattuk ezeket a sorokat hanem ezeket írtuk be a PWM illetve a PID értékek kijelzése helyett!
(#) MATA válasza MATA hozzászólására (») Nov 1, 2024 /
 
Az eredeti kijelzés így nézett ki:
(#) pipi válasza MATA hozzászólására (») Nov 1, 2024 / 1
 
Nem lehet hogy egy eløző kiírás eredménye maradt ott? Firi hogy aértékegység hol felül, hol az eredmény után van
(#) MATA válasza pipi hozzászólására (») Nov 1, 2024 /
 
Köszi erre már gondoltunk de nem találtunk erre utaló jelet.
(#) gaspa válasza gaspa hozzászólására (») Nov 1, 2024 / 1
 
Sikerült szóra bírni az SML II invertert,megvannak a napelem és az akku adatai.A hálózat adatait három JSY 194 adja,az inverter meg rs485-el.Az R fázison van a hibrid 14 kWh akkuval,az S,T fázisokon két EHE visszatáplálós inverter.A monitoron jól látható mi történik a hálózaton,a valós fogyasztás/MVM vételezés különbsége és a betáplálás.A hibrid alaposan csökkenti az MVM vételezést,de visszatáplálósoknál kis odafigyeléssel is eredményes.A szenzorok és rs485 kezelést a pincében az inverterek mellett egy Mega 2560 végzi,az adat feldolgozást három szinttel feljebb(30 m kábel után)ESP32 a monitorral.Az volt a cél,mennyi felesleges energiát lehet elvenni a napelemektől más hasznosításra,mint a visszatáplálás.A következő cél ennek megvalósítása lesz.
(#) sargarigo válasza MATA hozzászólására (») Nov 1, 2024 / 1
 
A mért érték amúgy jó lenne? Nem mindegy hogy csak a kijelzéssel van baj, vagy valami komolyabb a hiba. Elsőre én is valami maradékra gondolnék, de ennek azért vannak jelei is ha úgy van (bent maradt pixelek pl). Ha a kijelzett érték amúgy rendben van, én megpróbálnék egy nulla bájtot beírni a txt megfelelő pozíciójára. Elvileg ezzel jelzed hogy vége a szövegnek, ne írja tovább a képernyőre. Ha a kijelzett érték amúgy sincs rendben, akkor az is lehet hogy a számításkor keletkezik valami hiba, ami miatt nem jól működik a megjelenítés, mondjuk végtelen, vagy nullával való osztás vagy ilyesmit tudnék elképzelni. A számolt érték helyett szerintem első körben írj be egy fix értéket, mondjuk 5-öt. Ha ez jó, akkor 5.7-et. Az se baj ha a mért értéket kiírod a soros konzolra, és rögtön látod hogy legalább ugyanazt próbálja kiírni amit kell, vagy teljesen félre megy. Szerintem ebből a pár lépésből rögtön le lehet szűkíteni a hiba helyét.
(#) MATA válasza sargarigo hozzászólására (») Nov 1, 2024 /
 
A mért érték vagyis a teljesítmény és az ellenállás kiszámítása az jó csak annyi hogy sok számot jelenít meg.
De ezeket a javaslatokat megnézzük köszönöm!
(#) MATA válasza sargarigo hozzászólására (») Nov 2, 2024 / 1
 
Jó lett ám négy számjegyet engedéjeztünk majd 0-t írtunk be és most jó lett a kijelzés!
Köszönöm az ötletet!
A hozzászólás módosítva: Nov 2, 2024
(#) sargarigo válasza MATA hozzászólására (») Nov 2, 2024 /
 
Nagyon szívesen!
(#) nemgyuri hozzászólása Sze, 17:48 /
 

kód kérdés

Sziasztok! Egy egyszerű dolgon nem tudok továbblépni.
1 bájtos számot szeretnék kijeleztetni VFD-n. A szám 0-99-ig lehet, ezt a következő módszerrel próbáltam:
  1. byte sec;
  2. String str(3);
  3.          str=String(sec);
  4.          Serial.print("str[0]="); Serial.print(str[0]);Serial.print(" str[1]=");Serial.println(str[1]);

(a Serial.print... csak a teszthez kell.
Decimális 10-99 -ig rendben van, de 0-9-ig a szám nekem az str[0]-ban jelenik meg.
Nekem arra lenne szükségem, hogy az str[0]-ban "0" legyen és az str[1]-ben a szám. (Ilyenkor az str[1]-ben a string-lezáró hex0-van, ezért azt már nem tudom írni!
Valami használható megoldást keresek.
(#) KBal76 válasza nemgyuri hozzászólására (») Sze, 17:58 /
 
Zavaros ez a kód, és évek óta nem írtam arduinora, de hátha segít: elôször eldöntöd hogy 10 alatt vagy, akkor csinálsz egy feltételt erre, azaz
  1. if (sec<10) {
  2. sec=sec+10;
  3. utána kirakod hogy a tizes helyiérték kijelzôre nulla kerüljön (miközben valójában 1 kerülne a tízzel növeléstôl;
  4. utána kirakod az utolsó számjegyet ami 0-9-ig valami;
  5. //vagy esetleg eleve beteszed a stringbe a számot, és az tizes helyiértéket felülírod egy 0-val
  6. }
  7. else
  8. {
  9. itt kezeled le ha 10-99 közt van a számod.
  10. }
A hozzászólás módosítva: Sze, 18:00
(#) Panhard válasza nemgyuri hozzászólására (») Sze, 17:59 /
 
A String az egy karakter tömb. Nem kell létrehoznod hozzá egy másik tömböt, ki tudod közvetlenül is olvasni a bájtokat.
  1. Serial.print(String(sec)[0]);
(#) majkimester válasza nemgyuri hozzászólására (») Sze, 18:06 / 1
 
Erre rengeteg megoldás van, a esetedre a legegyszerűbb:

  1. byte sec = 12;
  2. char digit0 = '0' + sec % 10;
  3. char digit1 = '0' + sec / 10;
(#) nemgyuri válasza majkimester hozzászólására (») Sze, 19:50 /
 
Ez a megoldás szimpatikus volt, de:
  1. for (i=0; i<15; i++){
  2. sec=i;
  3.    char digit0= + sec%10;
  4.     char digit1='0' + sec/10;
  5.     Serial.print(" digit0=");Serial.print(digit0);Serial.print(" digit1="); Serial.println(digit1);
  6. }

Ezzel teszteltem és erre ezt írta ki:
digit0= digit1=0
digit0= digit1=0
digit0= digit1=0 <-- eddig "sec<dec10"
digit0= digit1=1
digit0= digit1=1 <-- innen "sec>dec10"
digit0= digit1=1
(#) nemgyuri válasza KBal76 hozzászólására (») Sze, 19:55 /
 
Ehhez hasonlóval próbálkoztam, de az szerintem túl hosszú volt. Több számot is szeretnék kiírni, ezért egy "alprogramba" képzeltem el a megoldást.
(#) Panhard válasza nemgyuri hozzászólására (») Sze, 20:50 /
 
És így:
  1. for (int i=0; i<20; i++){
  2.  
  3.       char digit0;    
  4.       char digit1;
  5.  
  6.       if(i<10){
  7.         digit0= '0';
  8.         digit1= String(i)[0];
  9.       }else{
  10.         digit0= String(i)[0];
  11.         digit1= String(i)[1];
  12.       }
  13.  
  14.       Serial.print("digit0= ");Serial.print(digit0);Serial.print(" digit1= "); Serial.println(digit1);
  15.  
  16.     }
(#) nemgyuri válasza Panhard hozzászólására (») Sze, 21:02 /
 
Köszönöm, ez már működik! Azt nem tudtam, hogy így is lehet: "digit1= String(i)[0];"
(Arduino "C" nem az én világom, assemblyvel elvagyok..)
Következő: »»   850 / 850
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem