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   475 / 854
(#) malak válasza tbarath hozzászólására (») Szept 26, 2018 /
 
Rendben de akkor ezek szerint semmiképpen nem lehet ugy megcsinálni ezt hogy ha nincs lcd akkor serialra irjon mig ha van akkor az lcdre?
(#) KoblogPerGyok válasza malak hozzászólására (») Szept 26, 2018 / 1
 
Szia!

Sok a hiba ebben a kódban jelenleg. Legalábbis szerintem. Lehet, hogy a C nyelv trükközése ver át engem, de259. sorban nem kell { karakter, míg a 267. sorban egy }


Ugyanez a gondom a 243-249. sorig.
(#) tbarath válasza malak hozzászólására (») Szept 26, 2018 / 1
 
De, meg lehet csinálni, csak ahhoz nem kontans kell, mert azt futásidőben nem tudod módosítani. Futásidőben egy változó értékét tudod módosítani.
Két lehetőség van, mindkettőt leírtuk már:
1. minden egyes kiiratást megírsz kétféleképpen, és a korábban beállított változó alapján egy if-fel eldöntöd hogy hogy melyik fusson le
2. csinálsz egy saját fv-t, ami tartalmazza ezt az if-es vizsgálatot, és ez alapján meghívja a megfelelő print függvényt.
Az utóbbi kisebb kódot jelent, forráskódban és binárisban is, cserébe némileg lassabb lesz a kód, mert a függvényhívásnak mindig van valamekkora költsége futásidőben.
(#) vargham válasza malak hozzászólására (») Szept 26, 2018 / 1
 
Lehet automatikusra is, de akkor nem dől el fordításkor. A Serial és az LCD is elvisz önmagában 2-4 kB flasht... Plusz némi RAM-ot. A libek használata költséges, nincs ingyen.
Én a futásidejű döntést olyan esetekre tartogatnám, ahol kint a terepen, használat közben kell eldöntenie az eszköznek, hogy mi a helyzet. Nálad most nem így van.
(#) vargham válasza malak hozzászólására (») Szept 26, 2018 / 1
 
Idézet:
„Ha az i2cscanner majd müködik a progin belül akkor akár vele is kapcsolgathatom a defineben”

Nem lehet. Az I2C scanner az futásidőben mondja meg, hogy van-e LCD, míg a preprocessor makró még a C/C++ fordító ELŐTT megy végig a kódon.
(#) malak hozzászólása Szept 26, 2018 /
 
Igazatok van amugy mert ez csak tulcifrázás valoban.Az Ide-n belül elég gyorsan átlehet irogatni egész sorokat a cserével,csak azt hittem hogy meglehet egyszerüen oldani hogy a libes parancsokra változoval tudjak hivatkozni és akkor nem kellene átirogatnom.
(#) malak válasza malak hozzászólására (») Szept 26, 2018 /
 
Látjátok én ezért szeretek ide irogatni mert elég hamar rátudtok engem vezetni arra hogy nem biztos hogy minden jo és szép amit én elképzelek.

Na meg szeretem néha tulbonyolitani a dolgokat
(#) malak válasza malak hozzászólására (») Szept 26, 2018 /
 
Ja és most mindenkinek megy a mancs
Köszönöm szépen mindenkinek az épitö hozzászolását.
(#) KoblogPerGyok válasza KoblogPerGyok hozzászólására (») Szept 26, 2018 /
 
Serial- segítségével megnézheted pl 0.1 másodpercenként, hogy van-e usb csatlakoztatva. Lefuttatod a i2C scannert (ami ne VOID legyen hanem int.)

loop:

if (serial)
{
Soroportra('A szöveg');
}

if (I2cScan==1)

{
LCD_re('A szöveg');
}

delay(10); Ok, lehet milis()
.
.
.
A többi kód



Void Sorosportra(char* Szoveg) 'Vagy ahogy szöveget kell átadni a függvénynek.
{
ide az a kód ami kirakja a szöveget a soros portra
}

void LCD_re (char * szoveg) 'Vagy ahogy szöveget kell átadni a függvénynek.
{
ide az a kód ami az LCD-re ír
}

Int I2cScan() 'itt is meg lehetne oldani, hogy a címet is itt megkapja de akkor a loop-ban a hívás változik
{

Ha van akkor return 1;
ha nincs a címen az LCD akkor return 0;
}
A hozzászólás módosítva: Szept 26, 2018
(#) kapu48 válasza malak hozzászólására (») Szept 26, 2018 /
 
Nekem nem jött le elég tisztán, mit szeretnél?

Egy eszközt hordozni kétféle környezet között?
Vagy egy programot használni, kétféle hardveren?
Esetleg programot fejleszteni, kétféle eszközön felváltva?

Mert ettől az ismerettől nagyban függ az ajánlható megoldás!
(#) KoblogPerGyok válasza kapu48 hozzászólására (») Szept 26, 2018 /
 
Amit én javaslok neki az nem pont az amit kér. Azért írok ilyesmit, mert ha működik akkor az jobb szerintem és lehet villogni a megoldással.

Neki az kell, hogy gyorsan tudjon tesztelni serial-ra is, mert nincs LCD mindig nála. Azonban gyorsan lehessen LCD_re átírni a kódot. Erre a #DEFINE tökéletes megoldás.
(#) kapu48 válasza KoblogPerGyok hozzászólására (») Szept 26, 2018 /
 
Ettől nem lettem okosabb!!

Mit tesztel?

Program fejlesztés közben, akármit?
Mert akkor ott van a feltételes fordítás lehetősége.
Bővebben: Link

Vagy hordoz egy eszközt, és annak a kijelzője változó?
De mért szedné le róla mindig az LCDt?
A hozzászólás módosítva: Szept 26, 2018
(#) bujan hozzászólása Szept 26, 2018 /
 
Tisztelt Fórumozók!
Hozzátok fordulnék 2 kérdéssel.
Nem tettem le az ELM327 bluetooth-al való gk. adatok kijelzésére TFT LCD-n arduinoval. Uno és a 1604 LCD-vel megy, csak kevés a memória ezért Wemos D1 Minivel(160MHz), STM32F103RC8T6-al és Maple Minivel próbálkozom. A 2,8” TFT LCD touch screen kijelzőt mindegyik szépen meghajtja de az alábbi problémák léptek fel.

A Wemos D1 Minire sehogy sem csatlakozik a HC-05 vevő. Sem a TX,RX-re, sem a SoftwareSerial BTSerial(D2, D1);-re. A vevő 3,3V-os és UNO-ra csatlakoztatva (TX leosztva) szépen olvas, tehát működik és jók az AT beállítások. Kérdésem: Miért nem olvassa a Wemos D1 Mini a HC-05-t?

Az STM32F103RC8T6 az #include <OBD.h> beszúrása után „fatal error: avr/io.h: No such file or directory” Annyit kinyomoztam, hogy ő nem AVR alapú ezért nem is kellene keresnie az avr/io.h-t. Mit lehet tenni?
(#) vargham válasza bujan hozzászólására (») Szept 26, 2018 /
 
Ezek szerint az OBD.h nem platformfüggetlen, direktben használja az AVR MCU-t regiszter szinten. Így ez nem használható az STM32 MCU-val.
Amúgy mi ez az OBD.h, honnan szerezted? Egy link a használt libek forrására sokat segítene ilyenkor.
A hozzászólás módosítva: Szept 26, 2018
(#) KoblogPerGyok válasza bujan hozzászólására (») Szept 26, 2018 /
 
Szia!

Erről van szó?

Bővebben: Link
(#) KoblogPerGyok válasza bujan hozzászólására (») Szept 26, 2018 /
 
Arduino Ide-ben írod?

Ezeket megcsináltad?

Bővebben: Link

Ez a fentiből van.
A hozzászólás módosítva: Szept 26, 2018
(#) bujan válasza vargham hozzászólására (») Szept 26, 2018 /
 
Az obd.h a git.hub.com-ról származik. Szerintem Ő rendeli el a TX,RX figyelését.
(#) bujan válasza KoblogPerGyok hozzászólására (») Szept 26, 2018 /
 
A Wemos-sal az AT parancsokat is szépen megírtam és visszakérdeztem.
(#) bujan válasza KoblogPerGyok hozzászólására (») Szept 26, 2018 /
 
Igen, megpróbáltam.
(#) vargham válasza bujan hozzászólására (») Szept 26, 2018 /
 
Link?
(#) bujan válasza vargham hozzászólására (») Szept 26, 2018 /
 
(#) KoblogPerGyok válasza bujan hozzászólására (») Szept 26, 2018 /
 
Soros kommunikációhoz szükséges pár beállítás. Byte order, Paritás bit, start/stop bit hasonlók. (fejből tolom, nem biztos mindegyik.)

Ezek be vannak állítva? Illetve mindkét eszközön azonosak?

Csak mert a példa linken lévő kódoknak futnia kellene, ha minden helyesen van bekötve, közös föld, mindegyik 3.3V stb.
A hozzászólás módosítva: Szept 26, 2018
(#) KoblogPerGyok válasza bujan hozzászólására (») Szept 26, 2018 /
 
Illetve a HC-05 képes Master/Slave üzemmódban futni. Remélem ez nem kavar be, de ha minden kötél szakad akkor ennek is utána néznék.
(#) KoblogPerGyok válasza bujan hozzászólására (») Szept 26, 2018 /
 
Az sem tiszta, hogy a Bluetooth serial baudrate mennyi. Alap, vagy fel van turbózva? Gondolom ezt a hibát nem vétetted mert az uno-val ment.
(#) KoblogPerGyok válasza bujan hozzászólására (») Szept 26, 2018 /
 
13. oldal Innen:

Bővebben: Link

Idézet:
„Both Serial and Serial1 objects support 5, 6, 7, 8 data bits, odd (O), even (E), and no (N) parity, and 1 or 2 stop bits. To set the desired mode, call Serial.begin(baudrate, SERIAL_8N1), Serial. begin(baudrate, SERIAL_6E2), etc.”


HC-05

Idézet:
„Baud Rate: 9600 bps, Data : 8 bits, Stop Bits: 1 bit, Parity : None, Handshake: None”


innen:
Bővebben: Link

Ezeknek meg kell egyeznie mindegyik hardveren. Egész pontosan a wemos-t kell belőni a hc-05 gyári értékeire.
(#) sargarigo válasza malak hozzászólására (») Szept 26, 2018 / 1
 
Amúgy ha elég fordítási időben eldönteni hogy van-e lcd, akkor a libeket is tetszőlegesen csereberélheted, mert a #define makró pont ezt tudja.
  1. #define USE_LCD 1
  2.  
  3. #if USE_LCD
  4. #include <lcd.h>
  5. #define print(x) lcd.print(x)
  6. #else
  7. #include <serial.h>
  8. #define print(x) serial.print(x)
  9. #endif


Ez azt csinálja, hogy ha a USE_LCD 1-re van állítva, akkor a print() függvény helyére az lcd.print()-et helyettesíti be. Ha más van beállítva, akkor meg a serial.print()-et.
Ha csak annyi a feladat hogy fordítási helytő függően vagy az egyik vagy a másik libet használd, akkor ez teljesen jó megoldás lehet.

Ha a #define USE_LCD sort kirakod egy külső .h fájlba, akkor megteheted hogy a munkahelyi verzóban 1-et állítasz be, az otthoniban meg nullát. Maga az .ino forrásfájl lehet bájtra pontosan ugyanaz, a .h fájl határozza meg hogy hogyan forduljon le.

program.ino:
  1. #include "config.h"
  2.  
  3. #if USE_LCD
  4. #include <lcd.h>
  5. #define print(x) lcd.print(x)
  6. #else
  7. #include <serial.h>
  8. #define print(x) serial.print(x)
  9. #endif


config.h:
  1. #define USE_LCD 1
A hozzászólás módosítva: Szept 26, 2018
(#) Kovidivi válasza sargarigo hozzászólására (») Szept 26, 2018 /
 
Ezek jó ötletek, de ahol lcd.print van, ott van más is, mint pl.: set.lcdCursor, tehát nem elég csak a print cseréje.
(#) vargham válasza Kovidivi hozzászólására (») Szept 27, 2018 /
 
A fentiek alapján remélhetőleg már azokat is meg tudja csinálni...
(#) sargarigo válasza Kovidivi hozzászólására (») Szept 27, 2018 / 1
 
Ez sem nehéz probléma. Akkor legyen
  1. #define print(x,y,msg) lcd.setCursor(x,y);lcd.print(msg)

és
  1. #define print(x,y,msg) serial.print(msg)


Tehát ahol kell (lcd) pozícionál, ahol meg nem kell (serial) ott meg nem használja fel a plusz paramétereket. A fentiek csak fejből, de szerintem így mennie kellene. Lényeg hogy a #define makró tartalmát szolgai módon bemásolja a szövegbe, és csak azután fordítja a kódot. Lehet vele trükközni.
A hozzászólás módosítva: Szept 27, 2018
(#) bujan válasza KoblogPerGyok hozzászólására (») Szept 27, 2018 /
 
"Egész pontosan a wemos-t kell belőni a hc-05 gyári értékeire. " Ilyet még nem csináltam. Ezt hogyan kell?
Következő: »»   475 / 854
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