Fórum témák

» Több friss téma
Lapozás: OK   136 / 138
(#) KoblogPerGyok válasza pipi hozzászólására (») Okt 11, 2023 /
 
Üzenet:

cannot convert 'float*' to 'long int*' in assignment
ptr = (float*)malloc(2 * Ciklus_max * sizeof(float));
^

exit status 1

Compilation error: cannot convert 'float*' to 'long int*' in assignment

Kód:
ptr = (float*)malloc(2 * Ciklus_max * sizeof(float));

if (ptr == NULL) {
Serial.println("Memory not allocated.\n");
}
else
{
Serial.println("Memory allocated.\n");
}

Így gondoltad? Már totál belezavarodtam mindenbe. Ezt is kipróbáltam. A pointer meg nem lehet float, kipróbáltam azt is, hogy a otr is float, és a fenti kódban is ahogy mondtad.

Meg ezt is:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. float PI_=3.141592653;
  6.  
  7. const long Mintaszam=32768/2; //32768
  8. long Ciklus_max=32768/2;
  9. float Re[Mintaszam];
  10. float Im[Mintaszam];
  11. float Adatok[Mintaszam];
  12.  
  13.  
  14.  
  15. //malloc-hoz kell
  16. //long* ptr;
  17.  
  18.  
  19. void setup() {
  20.   long i;
  21.  
  22.   Serial.begin(115200);
  23.   Serial.println ("Eddig megy...");
  24.  
  25. // Dynamically allocate memory using malloc()
  26. //https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/
  27. //  ptr = (float*)malloc(2 * Ciklus_max * sizeof(float));
  28.  
  29. //    if (ptr == NULL) {
  30. //        Serial.println("Memory not allocated.\n");
  31. //    }
  32. //    else
  33. //    {
  34. //      Serial.println("Memory allocated.\n");
  35.  //   }
  36.  
  37.  
  38.  
  39. //******************************************************
  40.  
  41.   for (i=0; i<Ciklus_max; i++)
  42.     {
  43.       Re[i]=1.1*i;
  44.     }
  45.   for (i=0; i<Ciklus_max; i++)
  46.     {
  47.       Im[i]=10.1*i;
  48.     }
  49.   for (i=0; i<Ciklus_max;i++)
  50.     {
  51.      Adatok[i]=456.1*i;
  52.     }
  53.   Serial.println ("Ciklusok után...");
  54. }


Hiba. Írtam, hogy ezzel kezdtem, mert az az eleje mindennek. Elvileg mennie kellene, de ezek szerint másik memória területekbe kellene pakolnom, vagy ilyesmi, de nem értem.

Kell valami módszer, ami az egyiket az egyik memória szegmensbe teszi, a másikat másikba és így tovább. A DSPIC-ben van ilyesmi, de az ESP-t nem ismerem.
(#) vargham válasza KoblogPerGyok hozzászólására (») Okt 11, 2023 /
 
(#) pipi válasza KoblogPerGyok hozzászólására (») Okt 11, 2023 /
 
long* ptr; -be akarsz float*-ot tenni... (ptr = (float*)...)
A deklarációknak egyezni kell, nem véletlen fúj az ordító
(#) KoblogPerGyok válasza vargham hozzászólására (») Okt 11, 2023 /
 
Meglesz, de abban bíztam lesz példakód erre itt!

Páldául elsőnek kiíratom a méreteket, típusokat stb. Utána még meló rajta, de a több száz oldalnyi PIC doc, meg egyéb elektronika doc olvasásától mát szédülök!
(#) KoblogPerGyok válasza pipi hozzászólására (») Okt 11, 2023 /
 
De ha mindegyik float, akkor sem jó. Azaz a pointer nem long, hanem float, meg a kódban a malloc-nál is, akkor hiba van. Példát mutatnál, ha tudnál, mert már kisült a kis agyam is. Sokszor szerintem már a próbálkozásokkor is hibázok.
Köszi!
(#) pipi válasza KoblogPerGyok hozzászólására (») Okt 11, 2023 /
 
A float-ot mindig kerülöm mint a tüzet, mindig egészet használok, ha kell a tizedes/százados akkor az érték 10-100 szorosát teszem az egész változóba...
Most nézem a nagy táblázatomat, melléírtam megjegyzésbe: max címezhető 32K(int16) tömb, szóval maradj 64K-n belül, ha jól csalódom akkor ezekből csinálhatsz többet...
  1. #define TEMPLittleFSSIZE 32000  //max címezhető 32K(int16), de 2 táblázat befér...
  2. int16_t temptblLittleFS[TEMPLittleFSSIZE + 1]; //6mp-es mérések, 100*érték(mivel 1 százados), max 53óra hossz
  3. ...
  4. temptblLittleFS[tempptrLittleFS] = tempfloat * 100;   //itt teszem el a hőmérsékletet "század" pontosan
  5. itt meg vissza:  
  6.            tempfloat = ((float)temptblLittleFS[ptr]) / 100;
(#) KoblogPerGyok válasza pipi hozzászólására (») Okt 11, 2023 / 1
 
FFT-t kell végrehajtanom. Bár fix pontú aritmetikát már csináltam DSPIC-ben, mert jelentős időkülönbség lépett fel, de itt nem szerettem volna.

vargham:

Elolvastam, és nem tetszik amit ott láttam... Nem fog menni, ennyit nem tudok lefoglalni, no meg az Arduino IDE jelentős egyszerűsítéseket végez, nem mindenhez férek úgy hozzá, mint kellene.

Idézet:
„There is 520 KB of available SRAM (320 KB of DRAM and 200 KB of IRAM) on the ESP32. However, due to a technical limitation, the maximum statically allocated DRAM usage is 160 KB. The remaining 160 KB (for a total of 320 KB of DRAM) can only be allocated at runtime as heap.”


160KB Dram(Data ram) ami mehet. IRAM-ba esetleg még mehetne, de az meg az Instrucion Ram. A 64KByte is már egy limitált, de az még jó lenne. DFFT-hez 2 hatványaival megegyező méret miatt kellene.

Ez van, lehet félre értem, de nem elég az 500KByte osztott SRAM. Nagyobb kell. Hát, kicsit csalódtam, mert sokminden nincs az ESP-ben, éppen ez miatt és a könnyű kód feltöltés miatt akartam tesztelésekhez, de ez sem megy könnyen. VAGY rákötöm a 256KByte SPI RAM-ot! Ez most jutott eszembe!

Van itthon dsPIC33FJ128MC802-m. 128KByte csak, de gyors is, de kevés a RAM. Esetleg SPI RAM-ot használok pluszban van is itthon 256K-s, de nem tudom. Még zavar van mindenben.

dsPIC nehezebb tesztelni élesben, igen jó lenne az ESP32S, ami itthon van. Pénzem meg... Mondjuk 2-3000Ft volt az ESP, nem volt drága, 6000 a dsPIC.

Ráaggatom a SPI RAM-ot, az adatoknak meg le lehet foglalni a saját memóriájában. Meg több programozás kell, de alszom rá.
A hozzászólás módosítva: Okt 11, 2023
(#) pipi válasza KoblogPerGyok hozzászólására (») Okt 11, 2023 / 1
 
Esp32 cam 2000ft az ali-n, rajta psram-mal, a kamera meg kidobható, ha nem kell
Sajnos ennek kevés gpio-ja van tüskesoron, a kamera miatt nincs kivezetve. Programozó adapterrel is lehet rendelni, de programozáshoz jó a ch340-es modul, (az a fajta ahol van rts meg dtr kivezetve, akkor nem kell a resetet(rts-re) meg a gpio0-t(dtr-re) kézzel nyomkodni)
(#) Sick-Bastard hozzászólása Nov 1, 2023 /
 
Üdv!

Még új vagyok az ESP8266 és az Arduino IDE terén.
Odáig sikerült az Arduinos példákkal (és google) segítségével eljutnom, hogy egy Docker-ben futtatott Home Assistant + mosquitto broker kombinációval képes vagyok reléket vezérelni. Többé kevésbé.

A probléma, hogy Home Assistant-ban nem minden ”relé/switch” jelenik meg.

Elsőre a switchekhez végzett módosításaimra tippeltem:
  1. HASwitch switch0("Switch0");
  2. HASwitch switch1("Switch1");
  3. … stb.

Helyett:
  1. HASwitch switch[4]{" Switch0"," Switch1",…};



  1. void onSwitchCommand(bool state, HASwitch* sender)
  2. {
  3.     if (sender == &switch0) {
  4.         if(state == true){Relay_array[0] |= 0x01;   }
  5.         else{ Relay_array[0] &= ~0x01;}      
  6.     }
  7.   else if (sender == &switch0) {
  8.         if(state == true){Relay_ array[0] |= 0x02;   }
  9.         else{ Relay_ array[0] &= ~0x02;}      
  10.     }
  11. …stb.

helyett:

  1. void onSwitchCommand(bool state, HASwitch* sender)
  2. {
  3.  
  4. for(uint8_t i = 0, r = 1; i < 4 ;i++, r*=2)
  5. {
  6.       if(sender == & switch[i]){
  7.         if(state == true){Relay_ array[0] |= r;}
  8.         else{  Relay_ array[0] &= ~r;}
  9.       }
  10.  }
  11. }


és végül a setup()-ban

  1. switch0.setName("Switch0");
  2.     switch0.setIcon("mdi:toggle-switch");
  3.     switch0.onCommand(onSwitchCommand);
  4.    
  5.     switch1.setName("Switch1");
  6.     switch1.setIcon("mdi:toggle-switch");
  7.     switch1.onCommand(onSwitchCommand);
  8. …stb.

helyett:

  1. for(uint8_t i = 0; i < 4 ;i++)
  2.     {
  3.       char numberArray[4];
  4.       itoa(i,numberArray,10);  
  5.       char haswitch_name[16];
  6.  
  7.       strcpy(haswitch_name,"switch");
  8.       strcat(haswitch_name,numberArray);
  9.      
  10.       switch[i].setName(haswitch_name);
  11.       switch[i].setIcon("mdi:toggle-switch");
  12.       switch[i].onCommand(onSwitchCommand);
  13.     }


Lényegében változók, funkciók, rutinok… egyesével való deklarálása helyett tömböket és for() ciklusokat akartam használni.

Ami fontos info még, hogy mosquitto log szerint: Client esp8266ID has exceeded timeout, disconnecting.
Mintha nem fejezné be a submit/publish utasításokat?

A tömbös+for()ciklusos megközelítésemet mellőzve, megpróbáltam mindent egyesével deklarálni, de a hiba így is fennáll. Jelenleg 5 Switch jelenik meg a definiált 8-ból.



SB
(#) Sick-Bastard válasza Sick-Bastard hozzászólására (») Nov 3, 2023 /
 
Üdv

Nos sikerült a Home Assistant, Mosquitto hibákat kizárni. Most már ugyanúgy működik a tömb és for() ciklussal, mintha egyesével definiáltam volna.

Ergo, valami magában a programban (ArduinoHA.h könyvtár vagy alkönyvtára) limitálja a HASwitch-ek számát 5-ben.

Erről van valakinek infója?

Miért kell nekem több relé, amikor nincs sok szabad GPIO rajta? Egy(vagy több TWI) MCP23X17-et kötnék rá, amivel öntözéshez vezérelném a szektorokat, keverő szelepeket.... vagy bemenetként tartály vízszint érzékelő lehetne.

SB
(#) lalca válasza Sick-Bastard hozzászólására (») Nov 3, 2023 /
 
Bővebben: Link Talán ennyi.
(#) Sick-Bastard válasza lalca hozzászólására (») Nov 3, 2023 /
 
Üdv!

A dokumentum megvan, de újoncként nem segített, de meglett.

Két módosítás (vagy egyike):

1. HAMqtt.h könyvtárban 40-60 közötti soraiban 2 helyen:

  1. const uint8_t maxDevicesTypesNb = 6
  2. csere:
  3. const uint8_t maxDevicesTypesNb = 64


2. vagy inicializálásnál:
  1. HAMqtt mqtt(client, device);
  2. helyett:
  3. HAMqtt mqtt(client, device, 16);


3. ill. talán van egy harmadik megoldás is az alábbi foo() használatával:
  1. void HAMqtt::addDeviceType(HABaseDeviceType* deviceType)

Utóbbit nem próbáltam.

Mindenesetre köszönöm a segítséget!

SB
(#) Jonni hozzászólása Nov 11, 2023 /
 
Sziasztok!
Rátaláltam ERRE A FURCSASÁGRA . Nem ismerem, hogy hogy müködik. Most a gsm részérte vagyok kiváncsi. Kell bele SIM kártya? Kell hozzá előfizetés? Vagy valami feltöltös kártyával is elmegy? Honnan tudom hogy mennyi a számlám?
A hozzászólás módosítva: Nov 11, 2023
(#) Gafly válasza Jonni hozzászólására (») Nov 11, 2023 /
 
Ha megnézed, a másik oldalon ott van a SIM kártya foglalata.
(#) Jonni válasza Jonni hozzászólására (») Nov 11, 2023 /
 
Most azért azt megtudtam, hogy ez egy olyan modul ami csak a 2G hálózaton tud kommunikálni, de azt folyamatosan szüntetik meg. Ugyhogy túlsok értelme nincs.
(#) pipi válasza Jonni hozzászólására (») Nov 11, 2023 / 1
 
Én úgy tudom a 3G-t szüntetik meg, a 2g marad
(#) Helios hozzászólása Dec 15, 2023 /
 
Sziasztok!

A legutóbbi metadata probléma megoldódott. Viszont újra hozzátok fordulok egy kis segítségért:

egy ESP32 bluetooth kapcsolatát szeretném ki és be kapcsolni, úgy hogy a felfedezhetőségét és az elérhetőségét korlátoznám. Tehát ha "Kikapcsolt" állapotban van akkor nem felfedezhető és nem lehet hozzá kapcsoldóni, bekapcsolát állapotban pedig a fordítottja lenne tehát felfedezhető és lehet hozzá kapcsolódni.

Ezt találtam, de sajnos nem tudom hogyan tudnám használni arduino IDE-ben. Tud segíteni valaki?
(#) Vacok hozzászólása Dec 21, 2023 /
 
Sziasztok!
Megépítettem ezt a kapcsolást. Relé nélkül működik rendesen, relével, ahogy megkapja a tápfeszt a relé meghúz, sípol és az egész esp lefagy. Minlehet a gond?

IMG_0694.png
    
(#) jefflynn válasza Vacok hozzászólására (») Dec 21, 2023 /
 
A relé akkorát ránt a tápon meghúzáskor, hogy leesik a feszültség. Hány ohmos a relé?
(#) Vacok válasza jefflynn hozzászólására (») Dec 21, 2023 /
 
400ohm. 12-V-on.
Elvileg a 3.3C-os oldalt nem kellene bántania.
(#) jefflynn válasza Vacok hozzászólására (») Dec 21, 2023 /
 
Nem értem. A rajzon nincs 12V. A D1-el jelölt dióda megvan? Esetleg próbálj meg nagyobb kondikat tenni a tápra, 1000-2000u-t próbaképpen.
(#) Vacok válasza jefflynn hozzászólására (») Dec 21, 2023 /
 
Oh, bocsi. 12V-os a tápom 5V helyett. A D1 megvan. Megpróbálom a nagyobb kondit.
(#) Vacok válasza jefflynn hozzászólására (») Dec 21, 2023 /
 
Nem működik sehogy sem. Amint ráakasztom a tranzisztort a GPIO02 kivezetésre induláskor rögtön lefagy vagy gerjed. A relét lecseréltem egy ledre. Úgy is ugyanazt produkálja.
(#) jefflynn válasza Vacok hozzászólására (») Dec 21, 2023 /
 
Utolsó ötletem, hogy a D1 fordítva van.
(#) Vacok válasza jefflynn hozzászólására (») Dec 21, 2023 /
 
Az jól van.
Körvonalazódik a dolog. A GPIO2 H szinten kell, hogy legyen indulásnál, különben nem indul a program. Szerintem a tranzisztor ebbe bezavar.
(#) jefflynn válasza Vacok hozzászólására (») Dec 21, 2023 /
 
A leírások szerint a gpio0 testre húzásával reset alatt lép be boot módba. A gpio2 elvileg nem csinál semmit.
(#) Vacok válasza jefflynn hozzászólására (») Dec 21, 2023 /
 
A tranzisztor bázisa és a GPIO02 felé nyitóirányban betettem egy diódát, a tranzisztor bázisa és a táp közé egy 3.3k ellenállás került. Így már működik.

IMG_0696.png
    
(#) Inhouse hozzászólása Dec 24, 2023 /
 
Sziasztok!

ESP8266 Karadio. Évek óta használom, ezt még nem én építettem. Elkezdett vacakolni. Volt egy módosítás, beleraktam egy kis D osztályú végfok panelt, hogy ne kelljen egy külső hifi a hangosításhoz. De nem tetszett a hangja (2*10W, tekercs nélküli). Ehhez a hozzá adott 5VDC 2A dugasztáp helyett kapott egy 12VDC 2A (mindkettő PWM) tápot az erősítő miatt és belülre került egy 34063-as panel (szivargyújtó adapterből) az 5VDC-nek, az ESP panelnek. Stabil 5.1V-ot ad, 0.04V ugrálás van működés közben. Ment is pár napot már így, nem bontottam vissza az erősítő panelt. Viszont elkezdett gurgulázni néha (a vége felé), meg volt hogy megállt. Aztán pár napja már nem szólalt meg és nem is értem el. Ma hoztam le a műhelyből (ott teljesít szolgálatot), felraktam gépre, terminálban adja az adatokat, de attól függetlenül, hogy kapcsolódik a routerhez, az alap 192.168.4.1 IP-t írja, nem ez van megadva és nem jó a tartomány sem. Aztán írja az éppen aktuális rádiót is. De nem elérhető. A router írja a 192.168.0.99-en, hogy wifin csatlakozik valami, de mégsem elérhető, nem pingelhető...ő meg közben a 4.1-et írja a terminálon. Ha kikapcsolom a wifi-t a routeren, átáll AP módba (ilyenkor valóban 192.168.4.1) és rá lehet csatlakozni, meg is nyílik a webes felület. Aztán itt próbálkoztam átállítani, elsőre belefutottam, hogy az alatta levő Validate gombot nyomtam (régen kellett már beállítani), de aztán rájöttem, hogy a felette levő tartozik a nethez. De itt is csak sokára sikerült, hogy valóban a terminálon is írja, hogy csatlakozott a routerhez és a kívánt 192.168.0.99-es IP-t kapja (a gateway a router 192.168.0.1). Gyorsan kipróbáltam és szól. A 2 gombot nyomkodom rajta, lehet léptetni a rádiókat, de ugyanúgy nem érem el a webes felületet, sőt a Karadio-s app sem tud rá csatlakozni. Tehát eggyel előrébb vagyok, újra szól, de nem tudom elérni station módban továbbra sem.
Haldoklik, vagy segítene ha újra beleírnám a Karadio szoftvert?
A hozzászólás módosítva: Dec 24, 2023
(#) blikkk válasza Inhouse hozzászólására (») Dec 26, 2023 /
 
Szerintem interferencia van az erősítő, WiFi között. Próbáld meg lekötni az erősítő tápját, valószínű működni fog. Ha ez a gond, árnyékold le a teljes hangcuccot, vagy használj analógot. Nekem NFC modul csinált ilyen hibát, összeveszett a 13MHz meg a 2.4GHz.
(#) Inhouse válasza blikkk hozzászólására (») Dec 26, 2023 /
 
Lekötöttem a végfokot, úgy próbáltam újra életet lehelni bele. Még azt próbálom majd meg, hogy visszakötöm az 5V-os dugasztápját, kihagyom a 12V-ost a 34063-al ami az 5V-ot csinálta...
Következő: »»   136 / 138
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