Arduinobol onallo NYAKra

Nyákkészítés fortélyai a tervezéstől a maratott panelig....
Válasz küldése
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Arduinobol onallo NYAKra

Hozzászólás Szerző: kapu48 »

Belenéztem a MySensor libbe.
Véleményem szerint ez valami szörnyszülött tákolmány!
Én kidobnám az egészet!
:(
Próbáltak összepréselni mindent egy helyre, de nem figyeltek alapvető szabályokra!
Már a Mysensor. h-ban kiragadot példa a rengetegből ilyenek vannak:

Kód: Egész kijelölése

#include "core/MyCapabilities.h"  	<<< ez OK
#include "core/MyMessage.cpp"	<<< Ilyet nem csinálunk!
#include "core/MySensorsCore.cpp"	<<< Ilyet nem csinálunk!
A header fájlok védve vannak a többszöri betöltés ellen.
Ellenben a C, Cpp állományok nem rendelkeznek ilyen védelemmel, és többszörös meghívás esetén többszörösen betöltődnek!
Ezért azoknak az elérési útját szoktuk megadni a fordítónak.

Más.
A változókat mindig a függvények elején deklaráljuk!

Kód: Egész kijelölése

bool _processInternalMessages() {
	uint8_t type = _msg.type;	<<< Ez JÓ
…
		else if (type == I_DEBUG) {
			#if defined(MY_DEBUG) || defined(MY_SPECIAL_DEBUG)
				char debug_msg = _msg.data[0];   <<< ilyet a legtöbb fordító elsem fogad!!
…
Talán csak az Arduino, nem jelez erre hibát?
Most ennek a „debug_msg” területe vajon felfog szabadulni a függvényből való kilépéskor?
Vagy majd hosszabb futás után (párnap?) veremtúlcsordulást fog okozni?
:?
Keres puritánabb megoldást, amik csak az éppen alkalmazót HW-ket kezelik le.
Nem pedig a fiókban fellehető őszeset egyben.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Arduinobol onallo NYAKra

Hozzászólás Szerző: csabeszq »

A változókat mindig a függvények elején deklaráljuk!
Ez C-ben részben igaz.

C++ specifikáció szerint ott deklarálsz változót, ahol jólesik. Az Arduino C++ alatt megy.

Rossz szokás szerint én C-ben is ahogy esik úgy puffan deklarálom a változókat, a gcc megeszi. A 70-es évek unixain nem fordulna.
Mindenesetre specifikáció szerint elöl kell deklarálni őket C-ben. Van valami -ansi vagy ilyesmi flag és akkor a gcc sem nyeli le csendesen az össze-vissza deklarált változókat.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Arduinobol onallo NYAKra

Hozzászólás Szerző: kapu48 »

Már azt is megmondhatnád, miért fagynak az ilyen szedett-vedett összecsapót Arduinos lib-ek pár napos használat után?

Vagy ezt is a Te műhelyedben írták azért véded? Ráismertél a munkádra? :mrgreen:
Vagy hol érdemes egyáltalán ebben hibát keresni? :?:
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Arduinobol onallo NYAKra

Hozzászólás Szerző: kapu48 »

Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Arduinobol onallo NYAKra

Hozzászólás Szerző: csabeszq »

A specifikációról beszéltem, nem a minőségről.
C++-ban ott definiálsz változót, ahol tetszik, C-ben nem.

Ez helyes C++-ban:

Kód: Egész kijelölése

for(int i=0;i<100;i++);
A libek minősége olyan, amilyen. Ezzel mindenki tisztában van.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Arduinobol onallo NYAKra

Hozzászólás Szerző: kapu48 »

Ezzel a megjegyzéssel semmit nem segítettél a kérdezőnek!
Csak próbálod magyarázni a nem kompatilis, hordozhatatlan hanyag kódszerkezeteket.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduinobol onallo NYAKra

Hozzászólás Szerző: Robert »

Ne püföljétek egymást :) !
A saját kódok egyre finomodnak, és rájön az ember, hogy a szakmai alap/irányelveket jobb betartani (vagy kezdetben nem is hallott róluk). Többen kezdők, hobbifejlesztők és így a hosszú úton válnak profivá.

Az Arduino LIB-eknél meg sokféle elv érvényesülhet - sokan hobbiként kezdik írni, aztán úgymarad.... És ha használható, akkor többen kezdik használni. És ha működik, akkor a "csicsázás", alapelvi megfelelőség a kód funkcionalitásához nem tesz hozzá - ellenben viszi az időt (és még el is lehet rontani a kódot figyelmetlenségből)...

Aztán ezek következménye : a fagyások, a instabil verzióváltások.
De ha nem lennének ilyen hobbilibek , a profik meg nem írogatnák vagy csak jóval kevesebben. Így inkább marad a fokozatos tanulás, hogy egyre jobb, és szabványosabb legyen először a program, majd később a lib-ek is (végre van verziózás az Arduino követelmények/lehetőségek közt). Azaz egy hosszú fejlődés lépcsőit láthatjuk-szívhatjuk....
http://www.tavir.hu - a gazda :)
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Arduinobol onallo NYAKra

Hozzászólás Szerző: csabeszq »

Annyit hozzátennék, hogy nem egyszerű általános lib-eket írni.

Olyan lib-et, ami működik Attiny85-ön, ESP8266-on, STM32-n, Atmega328P-n, Arduino Due-n,... Ezek a chip-ek nagyon különböznek egymástól.

Hiába állsz elő gyönyörű megoldással, ami Attiny85 alatt optimális, senkit sem fog érdekelni, mert általános megoldást szeretnének, amit egyszer megtanulnak és működik. Az általános megoldásnak természetesen ára van: sebességgel és kódmérettel fogsz fizetni érte.

Hiába csinálsz egy szétoptimalizált baromi gyors Arduino-t Atmega328P-vel, egyedül fogsz maradni a projekteddel. Az Arduino célja nem a gyorsaság, nem a kódméret, nem a stabilitás, hanem hogy kezdők össze tudjanak vele ütni ezt-azt nagyon gyorsan saját cuccaikon.

A rengeteg támogatott chip következménye az #if defined matyóhímzés, amit nagyon jól ismerünk a libekből.
vargham
Chipgyilok
Hozzászólások: 308
Csatlakozott: 2014. január 8. szerda, 8:32

Re: Arduinobol onallo NYAKra

Hozzászólás Szerző: vargham »

Sziasztok!

Készítettem egy tervet USB és külső táp közötti automatikus választáshoz. Ugyanaz a funkció, mint az Arduino Unon, csak másképpen megoldva.
Követelmények:
  1. Külső táp 12V (5V DC-DC konverterrel).
  2. USB táp 5V.
  3. USB és DC-DC visszairányú táplálásának elkerülése.
  4. 0V feszültségesés.
  5. Mindkét táp megléte esetén a 12V (+DC-DC) preferálása.
https://circuits.io/circuits/3583848-us ... -drop/edit

Szerintetek jól fog ez így működni, vagy esetleg látszik rajta valami nagyon veszélyes?
Köszönöm.
Válasz küldése