Valaki használt már Nrfl24l01-es modult két arduino közötti kommunikációra? Lassan megőszülök vele... Több példaprogramot próbáltam többféleképpen.
Az alap példa szerint, a küldőn létrehozunk egy változót egy kezdeti értékkel, pl.: x=100; és elküldjük. Még abban a ciklusban növeljük az értékét 1-el, majd a következőben a növelt érték küldődik.
A fogadó oldalon arra vár a program, hogy csomagot kapjon, ha kap, akkor kiírja a soros monitorra. A fogadó oldal össze-vissza működik, és soha nem adott helyes értéket:
Package:0 0.00
Package:-241 nan ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙<br /> Package:0 0.00
Package:0 nan ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙<br /> Package:0 nan ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙<br />
Ami plusz érdekesség, hogy az adóként működő arduino, (illetve a vevő is) csak akkor ad jelet, ha a Megán hozzáérek az ICSP tüskesor egyik lábához.... nem értem...
Ha nem érek hozzá, akkor a következő részben elakad, és nem lép tovább... amint "letestelem" fut, és számol. ha elengedem, akkor megáll...
void loop() { myRadio.write(&data, sizeof(data)); // itt akad el, ha elé teszek be egy Serial.print-et akkor azt kiírja, de utána már nem.
Már arra is gondoltam, hogy a Mega talán "nem alkalmas erre"? Mindenhol UNO-t látok használatban. Milliószor néztem meg a lábkiosztást, a bekötést... Hagytam mindent az alapprogram szerint. A PWM kimenetek egyáltalán alkalmasak erre a kommunikációra? Mega 7,8,11,12,13 láb.
Megjött az Nrf24L01-es vezetéknélküli adó-vevőm, tegnap óta kínozom, de nem jutok el még a kipróbálásig sem. Bármilyen példaprogramot próbálok ellenőrizni, a következő hibaüzenettel megáll a fordítás.
C:Program Files (x86)Arduinohardwaretoolsavr/bin/avr-ar: unable to rename 'corecore.a'; reason: Permission denied
exit status 1 Hiba fordításkor.
Értem, hogy a jogosultsággal van baja, de miért? (Win10)
Megtaláltam az egyetlen kódot, amivel működik a CTE LCD 3.2" + DUE :
// UTFT_Demo with Font and icon Flash IC // (C) 2012 Coldtears electronics // For use with CTE 3.2" TFT LCD Module w/Font and Icon Flash IC // in combination with CTE TFT/SD Shield for Arduino DUE //web: http://stores.shop.ebay.com/coldtears-electronics-store // // Demo code and UTFT library freely modified from Henning Karlsen's UTFT Library // Original by // UTFT_Demo_320x240 (C)2012 Henning Karlsen // web: http://www.henningkarlsen.com/electronics // // The first part of the demo is to show how to use the font IC to draw font to the LCD, // The IC also include some commonly used and open source icons // great for custom application development. // // // This second part of the demo is by Henning Karlsen, // showing how to use most of the functions // of the library with a supported display modules. // // This demo was made for modules with a screen resolution // of 320x240 pixels. // // This program requires the UTFT library which is modified by Coldtears electronics //
Version: 1.0 12 Feb 2012 - initial release 1.1 09 Apr 2012 - added support for more display modules added support for String objects to print() fixed a bug in printNumF() added optional minimum length and filler character to pintNumI() and printNumF() added option to disable unneeded controller chip code to minimize memory use 1.2 14 Apr 2012 - added support for more display modules added getDisplayXSize() and getDisplayYSize() 1.3 03 Jun 2012 - added support for more display modules fixed a bug in the ITDB02-25H init
Szia, ha Nextion editorral csinálod, akkor mi sem egyszerűbb. A változó helyét ne számként hanem Text-ként deklaráld. Nekem minden floatként megy ki rá hiba nélkül.
segítség kéne: hogy tudok float (század pontosságú) változót átadni a nextion HMI-nek? ahogy nézem csak egész számokat kezel a HMI. hőmérők mért adatait akarom megjeleníteni. ketté kéne szedni a mért értéket egészekre és törtekre és úgy átadni? ezt hogy tudom megtenni? pld: 24,52 átadni két egész számként: 24 illetve 52? minimum egy tizedes jegyet meg szeretnék jeleníteni.
Most tettem szert néhány ESP8266 modulra, wifi kommunikációt próbálok létrehozni egy hőmérő+ESP8266+Arduino kombó és a PC között, szóval abszolút alap dolgot próbálok. A gondom az, hogy miután az ESP8266 megkapja a tápot, kiüti az otthoni wifit. Egyszerűen megszűnik az egész otthoni háló, semmilyen eszközöm nem lát semmiféle wifit az éterben. Amint leválasztom a kütyüt, visszatér az otthoni háló, mintha mi sem történt volna... Biztosan valami nagyon kezdő dolog, de hálás lennék, ha valaki magyarázatot tudna adni.
Én a legutóbb egy Piergiacomi tre-03-nb típusú csipőfogót vettem, de nyílatkozni nem tudok róla többezer lábbal kapcsolatban mert nem számolom :-), nincs annyira napi szinten használva sok lábra.. Egyelőre teszi a dolgát, és a br 2000 ft alatti árat megéri. A TR25 állítólag valamivel jobb.
De fogalmam sincs hogy nagyipari használatnál mennyire válik be, főleg mert olasz termék..... Ha valaki ügyes talán egyszeri élezést is meg lehet próbálni, de nem tudom van-e az élén valami felületi edzés keményítés, akármi.
Igen, egy eszközt, amivel nyákforrasztás után számtalan (illetve számos, de bőven több, mint ezer) alkatrészlábat levághatok. És nem negyvenezer és nem vajból van. :-D Utóbbi van, fáj a kezem tőle.
Most pár hete csak read-only vagyok, de visszaolvasok mindent, a nekem küldött (hasznos) válaszokat is, amiket köszönök!
Kérdésem: ha nem olcsó, vajszerű kínai vackot, de nem is 40000 forintos Erem (/Weller) igáslovat akarok, hanem a kettő között valamit, akkor mit (és hol) tudtok ajánlani?
Most alkatrészláb vágáshoz kellene kicsi, de nagyon strapabíró fejű darab (1N4007 diódákhoz is, ami ugye 0,6 mm-es láb).
A korábban már beüzemelt Mega2560 R3 ATMEGA16U2 + SainSmart TFT LCD Adjustable Shield +
3.2” TFT LCD with SD and Touch for Arduino Mega
Után megérkezett a Due + CTE TFT/SD shield for arduino DUE + 3.2” TFT LCD with SD and Touch for Arduino hármas.
Az utóbbi összeállítást egyelőre nem sikerült munkára bírni.
A Megahoz képest változtattam:
To use with UTFT library:
1.uncomment "#define CTE_DUE_SHIELD 1" in the HW_ARM_defines.h in the hardwarearm folder of the UTFT library
2.Change the pinout to : UTFT myGLCD(ITDB32S,25,26,27,28);
Using the Touch function:
Remember to change the touch initialization to the following if it does not work. The TP DataIN is routed to pin 32 of arduino DUE instead of 4. (Because pin4 of arduino is a hardware SPI CS pin, which is reserved for SPI device)
URTouch myTouch( 6, 5, 32, 3, 2);
Shipping default jumper configuration:
The TFT/SD Shield for arduino DUE is shipped with the following jumper config, if you use TFT modules in our store, you do not need to reconfig the jumpers.
jaja, ez mindig az utolsó 5 mérésből veszi a érték szerint középső hármat, és azok átlagát adja.
ha pl 1 másodpercenként mérsz, akkor ez minden mérés után ad egy értéket, de az függ az előzőektől is. kicsit le van simítva, meg kicsit késik. cserébe nem szőrös meg tüskés.
Így már jobb :-) Pl.: egy hibás mérés 5 eleme így néz ki: 75,25 ; 75,50; 32,50; 75,50; 75,75; ezekből ki kellene venni a 32,50-es és a 75,75-ös mérést. Vagy valahogy a tőle legtávolabb eső elemet fogja kicserélni?
%5 azt jelenti hogy az 5tel osztás maradéka. így ha a p eléri az 5öt, újra nulla lesz.
na megtaláltad az első bugot.
a maxx-ot kell mínuszra inicializálni, a minn-t pluszra. így az ifek szépen lecserélik az aktuálisra, ha az még nagyobb vagy kisebb, kigyűjti a legnagyobbat/legkisebbet.
Tetszik a dolog, de nem nagyon értem :-) durván 20 perce nézem a programot, de nem jövök rá :D
int p=0;
double buffer[5]; // gondolom ez csak egy sima 5 elemű tömb
mérsz egyet, és beteszed a pufferbe következőnek:
buffer[p]=mért adat;
p=(p+1)%5; // a p-t emeljük egyesével 5-ig? ( a %5-öt nem tudom mit jelent )
így a tömbben az utolső 5 mérés eredménye van mindig. végigmész, és a középső három átlagát veszed:
double szum=0; // szum-ot nullázzuk
double maxx=1E10; // maxx értke 10Milliárd
double minn=-1E10; // minn értéke -10Milliárd
for (i=0;i<5;i++) { // for ciklus. tiszta sor...
szum+=buffer[i]; // buffer 5 értékét összeadom
if (buffer[i]>maxx) maxx=buffer[i]; // ha valamelyik elem nagyobb mint 10Milliárd akkor az legyen maxx de ez soha nem lesz igaz, csak 20-30C félremérésem van
if (buffer[i]<minn) minn=buffer[i]; // ha valamelyik elem kissebb mint -10Milliárd akkor az legyen minn de ez soha nem lesz igaz, csak 20-30C félremérésem van
}
eredmeny=(szum-minn-maxx)/3; // összegből kivonom minn-t (-10Milliárd) és maxx-t (10 Milliárd) ha az if nem lett igaz.
Javítsatok ki ha tévedek, lehet estére gondolom rosszul :-)
Köszi!!
Bocsi, most nem tudtam kipróbálni, hogy félrebeszélek-e nincs nálam board :D
nem nagyon vagyok tisztában hogy milyen cpu van a projektben :(
ha másodpercenként 5 mérés van, akor csak belefér egy ilyen. lehet szórakozni hogy ne double legyen, hanem valami fixpontos intekkel lehessen számolni, 6 elemű a buffer, mert akkor néggyel kell osztani, stb.
U.i.: egyszer ennél egy kicsit egyszerűbb megoldással összevetettem egy Leonardot egy Nucleo 401-gyel. A pontos számra nem emlékszem, de nagyjából két nagységrenddel volt gyorsabb az utóbbi (azonos számítási ciklusidőhöz hány szám átlaga kell, és amíg a Leonardon ez olyan 10 volt, a Nucleon 400).
Köszönöm, jegyzeteltem, :-) ki fogom próbálni a javaslatokat, a távolság ebben az esetben akadály, mivel a "prototípus" üzemel a főzdében, ami a lakhelyemtől kicsit messzebb van, és a munkám miatt csak talán hétvége fele fogok tudni eljutni mókolgatni.