Keresés

Részletes keresés

Mr.Cross Creative Commons License 2023.08.31 0 0 4271

Üdvözlök mindenkit! Arduinoval kapcsolatban lenne néhány nagyon alapszintű kérdésem, ha zavarhatok:

Az arduinora ha rákapcsolom a tápot, akkor mennyi idő múlva indul el a korábban felírt program? 5-10 másodperc vagy azonnal?

Elbír az arduino uno vagy nano egy relémodult, vagy annak megint csak külső tápellátás kell?

Ha mondjuk nano-ról beszélünk akkor számít hogy a tápellátása 5V 1A vagy 3A a kimenetei (5V) szempontjából?

Ha uno-ról beszélünk, akkor usb-ről 5V elég neki, de ha a sima táp, akkor meg 9-12V? Miért? Utóbbi tolerálja a primitív tápellátást (trafó+graetz híd+kondenzátor= hullámos egyenáram) ???

Mi a különbség az eredeti és a klónok között?

 

Eddig a youtube-on találkoztam vele, nagyon tetszik hogy milyen frankó dolgokat lehet vele csinálni, meg a programozása is egyszerűnek tűnik (windows és android alatt programozok), és gondoltam rászánok 20e Ft-ot és kipróbálom ezt is  :)

 

üdv:  domel

Prof Creative Commons License 2023.08.23 0 0 4270

Szuper, a közösség ereje, ugye. :-)

Sok sikert a továbbiakhoz is!

Előzmény: Windrad (4268)
Alpári Gnác Creative Commons License 2023.08.22 0 0 4269

Szuper!

Előzmény: Windrad (4268)
Windrad Creative Commons License 2023.08.20 0 0 4268

Hát köszönöm mindenkinek a jótanácsokat. Amit leírtatok jogos ,és elfogadom...Valóban csak rengeteg idő befektetéssel,   és gyakorlással juthatok arra a szintre , ami teljes rálátást ad arra hogy én is profin szerkeszthessem ,az általam leírt projekt kódját. Az arduinó programozás az érdeklődési köröm egyik keskeny  része ,de emellett rengeteg mással is foglalkozom, ezért az idő mindig szűkös számomra. Időközben külső segítséggel megoldódott a kaptármérleg projekt , amiért nagyon hálás vagyok a privátban megkereső segítségemnek.

Prof Creative Commons License 2023.08.15 0 0 4267

Én mást megközelítést használnék, de az alapja kb. ugyanaz, amint Albári Gnác leírt.

 

Teljesen mindegy, mi a cél, van, aki meg tudja csinálni, van, aki nem. Aki meg tudja csinálni, három dolgot tehet:
1. megtanít, hogy te is meg tudd csinálni,
2. megcsinálja veled együtt, de inkább jobbára helyetted, te csak a végrehajtó vagy,
3. megcsinálja helyetted.

 

Mindhárom működhet, de nem biztos, hogy ugyanaz a hozzáértő mind a háromban penge.

 

Az elmúlt 10 évben mindháromban volt részem (a "tudatlan" oldalon kevésbé, de ez más kérdés). A számos tapasztalat alapján azt tudom mondani, hogy ha csak és kizárólag ez az egy projekt az, amit meg szeretnél valósítani, akkor inkább a 3. megoldást válaszd.

Ha szeretnél elmélyedni benne és később más projekteket is megvalósítani, akkor én az 1. megoldást javaslom, ami időben a három közül a leghosszabb, de később ebből tudsz a legtöbbet profitálni, mert az alapoktól építkezik. A legtöbb itteni hobbista (aki érdemben hozzászól) ugyanígy kezdte. És ismerek többeket, akik hasonlóan kezdték és most főállásban foglalkoznak beágyazott fejlesztéssel.

 

Én az 1. megoldást pártolom, és ha hallgatsz ránk és képes vagy az instrukciók alapján önállóan gondolkodva és haladva egy meglehetősen nehéz és rögös úton végigmenni, akkor ez működni fog, mert nekünk csak kis időbe kerül, neked viszont nem kerül pénzedbe.

A 2. megoldásra én csak számodra elfogadhatatlanul nagy összegért vállalkoznék, ilyen kísérletek voltak, nem volt eredményük.

A 3. megoldás működhet, ha a most futó projektben lesz szünet (október-november), de itt két dolog van, egyrészt én nem fejlesztek már Arduinora, másrészt bár a TÜV/CE azért több ponton nekem is magas, sokkal inkább ipari/professzionális megközelítésben dolgozom, mint egy hobbista. Mondjuk ez speciel olcsóbb lenne, mint a 2. forgatókönyv szerinti, de elvileg még az is előfordulhat, hogy forintban az öt számjegybe belefér. Talán. Felülről.

Vagy leülsz, és végigseggeled azt az uszkve 100-500 órát, ami a megértéshez kell. Oktatási anyag van bőven, és egészen jók is (kristálytiszta elektronika például kiváló, bár más platformot használ).

Nincs c) opció. Mint minden szakmában, itt is a tapasztalat az érték. Sok embernek sok tapasztalata van, ezért is szeretem pl. az eeevblog fórumát, mert ott 72 órán belül feljön vagy az, hogy hülye vagy, vagy az, hogy hülye vagy, de nem annyira, csak épp elnéztél valamit. A fejlesztés kb. 80 százaléka hibakeresés (úgyis, mint tapasztalatszerzés). Ez az arány nem változik, csak a problémák jellege lesz más.  Nálam is van, hogy 200 warningot és 25 Error-t dob az IDE, aztán rájövök, hogy, izé, egyetlen nyomorult zárójel rossz helyre került, aztán nyilván tizedelődik, de még úgy is lehet működési hiba, ami lefordult kóddal is előfordul. 

 

Szép szakma ez, de ahogy vezetni sem úgy tanultál meg, hogy lemásoltad az oktató mozdulatait, úgy itt sem működik egy bizonyos problémán túl a copy-paste módszer.

Alpári Gnác Creative Commons License 2023.08.13 0 0 4266

Hát, nézd, biztos sokan tanulták ezt, ha úgy vesszük én is tanultam programozni az egyetemen, Pascalban, bő 30 éve...

Ez nyilván ad egy szemléletet, ami nem árt a programozáshoz, de azért mégis más.

 

Egy kódot a kívánt paraméterekkel megírni, legyen az bármilyen egyszerű, az én fogalmaim szerint nem segítség, hanem munka.

A te esetedben a hardver nálad van, még csak ki sem tudnám próbálni, végtelen ide-oda levelezésekbe torkollna és végtelen időbe, pláne ha még a hardver megoldásokat is el kell magyarázni.

 

Áthidaló javaslatként, remélve, hogy nem vívom ki ezzel a valóban hozzáértők rosszallását, javaslom a OneButton könyvtárat.

 

Ennek van olyan példaprogramja, ami interruptot használ, tehát elvileg a delay-ek közben is működik és mindenféle gombnyomásokra (rövid, hosszú, dupla klikk) meg lehet határozni, hogy mit csináljon.

Nem egy elegáns megoldás, de egyszerű esetben én is használom.

 

Ezzel próbálj valamit kiíratni a serial monitorra és ha működik, akkor lehet tovább lépni.

Felhúzó ellenállás fontos, különben rövidre zárod a tápot!

Előzmény: Windrad (4265)
Windrad Creative Commons License 2023.08.12 0 0 4265

Bármilyen tevékenységre , vagy szakmára elmondható , hogy akinek megvannak hozzá az alapok,  és a gyakorlat , annak valószínű hogy egyszerű a feladat. Én ezt nem tanultam sehol , és a közelemben sincs senki ,aki értene ilyesmihez. Nagy vonalakban" próbálom értelmezni a kódot de ha szerkeszteni próbálom,  többnyire hibaüzenetek lesznek a végeredmény

Előzmény: Alpári Gnác (4263)
Prof Creative Commons License 2023.08.12 0 0 4264

Azért a blinkWithoutDelay alapján megszerkeszteni egy egyszerűbb állapotgépet azért nem magától értetődő, de a meglátás a delay-ekről helyes.

Előzmény: Alpári Gnác (4263)
Alpári Gnác Creative Commons License 2023.08.11 0 0 4263

Pedig ez olyan, hogy el kell kezdeni, aztán előbb-utóbb belejön az ember.

 

Javaslataim:

 

1. Ki kellene irtani a kódból a delay-eket, mert az rendben, hogy most csak a GSM-re vár, de ha gombot is kell figyelni, akkor már útban lesz.

Ehhez jó kiindulás a beépített példák közül a Digital pont alatt a BlinkWithoutDelay.

 

2. Ha ez megy, akkor hajszál pontosan ugyanígy lehet figyelni egy tetszőleges lábra kötött gombot. Felhúzó ellenállást nem elfelejteni!

Mivel a mérés rutin mindent elvégez, amire szükség van, azt kell itt is meghívni és a soros monitoron látható lesz, ha jó.

 

3. Ezután lehet a kijelzőt illeszteni, megkeresni a hozzá való könyvtárat és kiíratni rá a kívánt értékeket.

 

Tényleg nem bonyolult.

 

Előzmény: Windrad (4262)
Windrad Creative Commons License 2023.08.11 0 0 4262

Sajnos kevés a tudásom hozzá hogy magam is szerkeszteni tudjam a kódot, ezért is kértem a segítséget. Mások kódjaival készítettem az eddigi projektjeimet . A kód sok részletét értem is,  de megbízhatóan hiba nélkül szerkeszteni nem tudom. Örülnék ha valaki itt a fórumon megszerkesztené nekem, a kérésben leírtak szerint a weboldalon szereplő második kódot.

Előzmény: Prof (4261)
Prof Creative Commons License 2023.08.11 0 0 4261

Szia,

 

Ez teszteléssel, mindennel együtt kb. 1 órás művelet egy kezdőnek is. A hardver egy kicsit nehezebb ügy, de az egésszel végezni lehet mindenestül egy nap alatt.
A projekt egyébként nem rossz, pár műszaki megoldása próba-szerencse alapon van összerakva, de tanulni, tesztelni teljesen jó.

Előzmény: Windrad (4260)
Windrad Creative Commons License 2023.08.10 0 0 4260

Segítséget szeretnék kérni , egy számomra fontos projekthez. Egy kaptármérleg programot próbálok lemásolni , és működésre bírni ,amit a neten találtam. Tulajdonképpen sikerült is összehozni a linkben szereplő mérleg elkészítését, és kalibrálását is. De szeretném kiegészíteni a működést, egy plusz funkcióval. A projekt lényege hogy egy telefonhívásra GSM modulon keresztül elindít az arduinó egy mérést , és SMS ben elküldi a mért súlyt , és az akumlátor töltöttségi szintjét. A loop funkció csak a telefonhívásra várakozik és csak akkor indít mérést ,ha beérkezik a hívás. Szeretnék illeszteni egy lcd 1602 i2c kijelzőt, és egy nyomógombot valamelyik digitális kimenetre ,amit a helyszínen megnyomva kijelzi a súlyt, esetleg az akuállapotot is. A weboldalon szereplő második kód már a kalibrált értékkel működőképes. Én sajnos nem értek annyira az arduinó programozáshoz hogy ezt kivitelezni tudjam. Tudna nekem segíteni valaki ,aki módosítani tudná ilyen módon a második kódot? Segítségeteket előre is köszönöm.  LINK: https://starduino.hu/2021/02/20/kaptarmerleg/?fbclid=IwAR2ExMJCnRcmNz8ueVNkZ7FKDvhoKuSc9mV-NjPwUrXyJ6P3uCmz5SPSkk0

Prof Creative Commons License 2023.05.16 0 0 4259

Hát ez erősen meglepett...

Sebaj. A lényeg, hogy a tápfesz elvétele NEM egyenlő a resettel.

Előzmény: ezüst-metál (4258)
ezüst-metál Creative Commons License 2023.05.16 0 0 4258
Előzmény: Prof (4257)
Prof Creative Commons License 2023.05.15 0 0 4257

Nem nagyon fogsz tudni Arduinot BT-n, RX/TX szálakon átprogramozni...

Előzmény: ezüst-metál (4256)
ezüst-metál Creative Commons License 2023.05.15 0 0 4256

Sziasztok!

 

Van egy működö áramkőr Arduino UNO és egy HC-05 bt modullal, a reset PIN viszont nem lett bekötve (csak az Rx, Tx, +5V, GND) így az Arduino-t nem tudom átprogramozni BT-n keresztül. Megoldható ez valahogy a tápvezeték megszakításával (mert csak ahhoz férek hozzá), vagy ez kizárt?

Prof Creative Commons License 2023.05.08 0 0 4255

Szia,

 

A Firmata működésében nem merültem el, egyszerűbb direktben megcsinálni, mert sokkal nagyobb a kontroll.

 

Amit ki tudtam belőle bogarászni, az alapján pár javaslatom van.

Egyrészt. Ne az összes, hanem csak egyetlen LED kezelésével kezdj. Lényegtelen, hogy egyébként a többire érkezik-e hívás, egyszerűen nem kell vele törődni (a beavatkozó részeket ki kell kommentelni és ennyi).

Másrészt. A ledek állapot állítása csak megszakításra történik a handleAnalogMessage() függvényben, amit a Firmata megszakítása (amikor üzenet érkezik) hív. Ha nincs üzenet, nincs hívás, így az értékbeállítás és annak az érvényre juttatása sem történik meg, így a villogtatás biztosan nem fog működni.

Megjegyzés: a getLedState() függvényben az 1-es elágazásban lévő vizsgálat elég impresszív, bár Arduino viszonylatban azért elég rengeteg órajelet elvisz a matekozás, mire lefut. Ezen határozottan meglepődtem.

Harmadrészt. Mivel a Serial.print() nem megy, nincs más, mint valami egyszerű kijelzőt rápakolni a rendszerre és arra kiírni a főbb változók aktuális értékét, vagy azt, hogy épp hol jár a kód futása. Más debug megoldás sajnos nincs, az Arduino keretrendszer legnagyobb hiányossága. Sok turpisság kiderülne.

Negyedrészt. Én mindenképp kipróbálnám Exceltől függetlenül, csak simán a soros monitor adatbeviteli mezőjéből indítva.

 

Kb. ennyi. Az excel oldalt most nem értelmezem, ha a fentiek mennek, akkor kell rátérni arra.

Előzmény: Poroszló_ (4254)
Poroszló_ Creative Commons License 2023.05.07 0 0 4254

Köszönöm Prof!

 

Mára feladtam. A videot megnéztem de nem jutottam messzebre mint eddig.

 

A kód az arduinon elméletileg jó:

 

#include <Firmata.h>

// Pin assignments for LEDs
const int led1 = 8;
const int led2 = 9;
const int led3 = 10;
const int led4 = 11;
const int led5 = 12;

// Variables to store LED states
int state1 = 0;
int state2 = 0;
int state3 = 0;
int state4 = 0;
int state5 = 0;

void setup() {
// Initialize digital pins as outputs
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);

// Initialize Firmata
Firmata.setFirmwareVersion(0, 1);
Firmata.begin(57600);

// Register callback functions for incoming messages from Excel Data Streamer
Firmata.attach(ANALOG_MESSAGE, handleAnalogMessage);
}

void loop() {
// Handle any incoming messages from Excel Data Streamer
while (Firmata.available()) {
Firmata.processInput();
}
}

// Callback function for incoming analog messages
void handleAnalogMessage(byte pin, int value) {
// Update LED states based on incoming data from Excel
switch (pin) {
case 0:
state1 = value;
break;
case 1:
state2 = value;
break;
case 2:
state3 = value;
break;
case 3:
state4 = value;
break;
case 4:
state5 = value;
break;
}

// Update LED states based on Excel data
digitalWrite(led1, getLedState(state1));
digitalWrite(led2, getLedState(state2));
digitalWrite(led3, getLedState(state3));
digitalWrite(led4, getLedState(state4));
digitalWrite(led5, getLedState(state5));
}

// Function to convert Excel data to LED state
int getLedState(int data) {
switch (data) {
case 0:
return LOW;
case 1:
return (millis() / 500) % 2 == 0 ? HIGH : LOW;
case 2:
return HIGH;
default:
return LOW;
}
}

 

 

A nagy kihívás hogy meg tudjam szólítani helyesen az excel vba kódból vagy a datastreamer-ből. Most még hibák meg öszse-vissza villogás az eredmény.

Ha van még ötlet, akkor arra vevő vagyok. Így tanul az ember fia. Mára vége mert szétrobban a fejem az erőlködéstől :)

Köszönöm még egyszer!

Előzmény: Prof (4252)
Prof Creative Commons License 2023.05.07 0 0 4253

Te direktben rákötötted a központi zár vezérlő jelére az Arduino kimenetét? Vagy hogy kell az egészet elképzelni?

Valami alap kapcsolási rajz (sőt, részletes), vázlat, működési elv mindenképp kellene, mert ezzel így nem sokra fogunk menni.

Előzmény: Kysac (4250)
Prof Creative Commons License 2023.05.07 0 1 4252

Serial.Write / Serial.Read lesz a barátod.
https://www.youtube.com/watch?v=umBarmiCWEo
Ez a film egészen jól összefoglaló, bár csak a lényeg van benne.

 

De. Alapvetően kód nélkül semmire sem fogunk menni.

Előzmény: Poroszló_ (4251)
Poroszló_ Creative Commons License 2023.05.07 0 0 4251

Sziasztok!

Segítséget szeretnék kérni. Van egy Arduino uno 5 leddel felszerelve. Mindenféle példaprogramokkal tökéletesen müxik. Excel-ből szeretném a ledeket vezérelni. "Out" munkalap A1 cella uno 8-as kimenet, A2 cella a 9-es;A3 sella a 10-es;A4 cella a 11 és A5-ös 12-es kimenetre kötött ledet kellene vezéreljen úgy, hogy ha cella értéke=0 akkor nem világít, Ha =1 akkor 1HZ-en villog és ha =3 akkor folyamatosan világít.

Próbáltam mindenféle mintakódot és az excel data streamer bővítményét is de nem jutottam célba. Minden féle "mutatvány" működik ami csak az unot érinti, villognak a ledek jobbra-balra de az excek kommunikáció nem jött össze. Excel látja a Com3 porton unot és viszont, de nem megy a dolog. Ha valaki tudna segíteni azt megköszönném.

Üdv,

Poroszló 

Kysac Creative Commons License 2023.05.07 0 0 4250

Sziasztok, egy érdekes projektbe kezdtem, ami esetleg másokat is érdekelhet, viszont elakadtam benne picit. 

Kártyaolvasós autó nyitás/zárás lenne a cél. Odáig jutottam, hogy kártya olvasása mukodik, servo motorral tesztelve is minden jó. Azután kivettem auz autóból a központi zár gombját, kábelozáskor összekötöttem. Amikor az arduinobol bedugom a kabelt, akkor egyből nyit/zár. Viszont kártya olvasásra sajnos még nem. Mi lehet itt a megoldás. Ha jelet küldök a megfelelő pin-re, akkor semmi sem történik. Csak ha ki/be húzom a kábelt, és direkt áramot kap. Valakinek valami tipp?

sanyi33nk Creative Commons License 2023.05.04 0 1 4249

 

Üdvözlöm!

 

Már normálisan kiirja RPM = 1250 [ f/s ]

 

Már csak a TextOut  koordinátákkal van gondom.

 

#include "Wire.h"// I2C: 0x3D (61) Lcd chip: based on PCF8558
#define LCD_ADR 0x3d #define NORMAL_MODE B00000001 #define I2C_BUFFER 30

static const uint8_t System5x7[]/* PROGMEM*/ = { 0x00, 0x00, 0x00, 0x00, 0x00,// (space) 0x00, 0x00, 0x5F, 0x00, 0x00,// ! 0x00, 0x07, 0x00, 0x07, 0x00,// " 0x14, 0x7F, 0x14, 0x7F, 0x14,// # 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $ 0x62, 0x64, 0x08, 0x13, 0x23,// % 0x36, 0x49, 0x55, 0x22, 0x50,// & 0x00, 0x05, 0x03, 0x00, 0x00,// ' 0x00, 0x1C, 0x22, 0x41, 0x00,// ( 0x00, 0x41, 0x22, 0x1C, 0x00,// ) 0x08, 0x2A, 0x1C, 0x2A, 0x08,// * 0x08, 0x08, 0x3E, 0x08, 0x08,// + 0x00, 0x50, 0x30, 0x00, 0x00,// , 0x08, 0x08, 0x08, 0x08, 0x08,// - 0x00, 0x60, 0x60, 0x00, 0x00,// . 0x02, 0x04, 0x08, 0x10, 0x20,// / 0x3E, 0x45, 0x49, 0x51, 0x3E,// 0 0x00, 0x40, 0x7F, 0x42, 0x00,// 1 0x46, 0x61, 0x51, 0x61, 0x42,// 2 0x31, 0x4B, 0x45, 0x41, 0x21,// 3 0x10, 0x7F, 0x12, 0x14, 0x18,// 4 0x39, 0x45, 0x45, 0x45, 0x27,// 5 0x30, 0x49, 0x49, 0x4A, 0x3C,// 6 0x03, 0x05, 0x09, 0x71, 0x01,// 7 0x36, 0x49, 0x49, 0x49, 0x36,// 8 0x1E, 0x29, 0x49, 0x49, 0x06,// 9 0x00, 0x36, 0x36, 0x00, 0x00,// : 0x00, 0x56, 0x36, 0x00, 0x00,// ; 0x00, 0x08, 0x14, 0x22, 0x41,// < 0x14, 0x14, 0x14, 0x14, 0x14,// = 0x41, 0x22, 0x14, 0x08, 0x00,// > 0x02, 0x01, 0x51, 0x09, 0x06,// ? 0x3E, 0x41, 0x79, 0x49, 0x32,// @ 0x7E, 0x11, 0x11, 0x11, 0x7E,// A 0x36, 0x49, 0x49, 0x49, 0x7E,// B 0x22, 0x41, 0x41, 0x41, 0x3E,// C 0x1C, 0x22, 0x41, 0x41, 0x7F,// D 0x41, 0x49, 0x49, 0x49, 0x7F,// E 0x01, 0x01, 0x09, 0x09, 0x7F,// F 0x32, 0x51, 0x41, 0x41, 0x3E,// G 0x7F, 0x08, 0x08, 0x08, 0x7F,// H 0x00, 0x41, 0x7F, 0x41, 0x00,// I 0x01, 0x3F, 0x41, 0x40, 0x20,// J 0x41, 0x22, 0x14, 0x08, 0x7F,// K 0x40, 0x40, 0x40, 0x40, 0x7F,// L 0x7F, 0x02, 0x04, 0x02, 0x7F,// M 0x7F, 0x10, 0x08, 0x04, 0x7F,// N 0x3E, 0x41, 0x41, 0x41, 0x3E,// O 0x06, 0x09, 0x09, 0x09, 0x7F,// P 0x5E, 0x21, 0x51, 0x41, 0x3E,// Q 0x46, 0x29, 0x19, 0x09, 0x7F,// R 0x31, 0x49, 0x49, 0x49, 0x41,// S 0x01, 0x01, 0x7F, 0x01, 0x01,// T 0x3F, 0x40, 0x40, 0x40, 0x3F,// U 0x1F, 0x20, 0x40, 0x20, 0x1F,// V 0x7F, 0x20, 0x18, 0x20, 0x7F,// W 0x63, 0x14, 0x08, 0x14, 0x63,// X 0x03, 0x04, 0x78, 0x04, 0x03,// Y 0x43, 0x45, 0x49, 0x51, 0x61,// Z 0x41, 0x41, 0x7F, 0x00, 0x00,// [ 0x02, 0x04, 0x08, 0x10, 0x20,// "" 0x00, 0x00, 0x7F, 0x41, 0x41,// ] 0x04, 0x02, 0x01, 0x02, 0x04,// ^ 0x40, 0x40, 0x40, 0x40, 0x40,// _ 0x00, 0x01, 0x02, 0x04, 0x00,// ` 0x78, 0x54, 0x54, 0x54, 0x20,// a 0x38, 0x44, 0x44, 0x48, 0x7F,// b 0x20, 0x44, 0x44, 0x44, 0x38,// c 0x7F, 0x48, 0x44, 0x44, 0x38,// d 0x18, 0x54, 0x54, 0x54, 0x38,// e 0x02, 0x01, 0x09, 0x7F, 0x08,// f 0x3C, 0x54, 0x54, 0x14, 0x08,// g 0x78, 0x04, 0x04, 0x04, 0x7F,// h 0x00, 0x44, 0x7D, 0x40, 0x00,// i 0x00, 0x3D, 0x44, 0x40, 0x20,// j 0x44, 0x28, 0x10, 0x7F, 0x00,// k 0x00, 0x40, 0x7F, 0x41, 0x00,// l 0x7C, 0x04, 0x18, 0x04, 0x78,// m 0x78, 0x04, 0x04, 0x08, 0x7C,// n 0x38, 0x44, 0x44, 0x44, 0x38,// o 0x08, 0x14, 0x14, 0x14, 0x7C,// p 0x7C, 0x18, 0x14, 0x14, 0x08,// q 0x08, 0x04, 0x04, 0x08, 0x7C,// r 0x20, 0x54, 0x54, 0x54, 0x48,// s 0x20, 0x40, 0x44, 0x3F, 0x04,// t 0x7C, 0x20, 0x40, 0x40, 0x3C,// u 0x1C, 0x20, 0x40, 0x20, 0x1C,// v 0x3C, 0x40, 0x30, 0x40, 0x3C,// w 0x44, 0x28, 0x10, 0x28, 0x44,// x 0x3C, 0x50, 0x50, 0x50, 0x0C,// y 0x44, 0x4C, 0x54, 0x64, 0x44,// z 0x00, 0x08, 0x36, 0x41, 0x00,// { 0x00, 0x00, 0x7F, 0x00, 0x00,// | 0x00, 0x41, 0x36, 0x08, 0x00,// } 0x08, 0x08, 0x2A, 0x1C, 0x08,// -> 0x08, 0x1C, 0x2A, 0x08, 0x08 // <-};




void setup(){ Wire.begin(); Serial.begin(9600);}

//fill 30bytes with b after that incr doesnt work, wire.h hs 32 data bufvoid fill30(byte x, byte y, byte b){ int i; Wire.beginTransmission(LCD_ADR); Wire.write( y<<5|NORMAL_MODE ); Wire.write(x); for(i=0; i<I2C_BUFFER; i++) Wire.write(b); Wire.endTransmission();}
void cls(){ int x,y; for(y=0; y<5; y++) for(x=0; x<=32; x+=I2C_BUFFER) fill30(x,y,0x0);}
void CharOut(int x, int y, byte c){ // font starts from 32 int i=0; Wire.beginTransmission(LCD_ADR); Wire.write( y<<5|NORMAL_MODE ); Wire.write(x); for(i=0; i<5; i++) { uint8_t b= System5x7[(c-32)*5+i]; Wire.write( b ); } Wire.endTransmission();}
void TextOut(int x, int y, const char* str){ int i; for(i=0; str[i]; i++) CharOut(x-i*5, y, (byte)str[i]);}
// unsigned long timeb, frame_time;// unsigned long timea;
void loop(){ char buf[16];
// timeb= millis(); cls(); TextOut(35,11,"[ f/s ]"); TextOut(60,11,"1250"); TextOut(95,11," RPM = "); delay(1000); }

Előzmény: Prof (4248)
Prof Creative Commons License 2023.05.01 0 0 4248

Ebből nekem sajnos nem jön le, hogy mi történt.

De hajrá előre! Dolgos népünk győzni fog!

Előzmény: sanyi33nk (4247)
sanyi33nk Creative Commons License 2023.05.01 0 0 4247

Üdvözlöm!

 

Köszönöm a segitségét.

 

Egyenlőre csak a RPM 1250 és a f / s LSB MSB módositást csináltam meg amit Ön javasolt.

 

az eredmény :  Kiir    --->  RPM = 1250 [f/s]  

 

a kód:

 

#include "Wire.h"// I2C: 0x3D (61) Lcd chip: based on PCF8558
#define LCD_ADR 0x3d #define NORMAL_MODE B00000001 #define I2C_BUFFER 30

static const uint8_t System5x7[]/* PROGMEM*/ = { 0x00, 0x00, 0x00, 0x00, 0x00,// (space) 0x00, 0x00, 0x5F, 0x00, 0x00,// ! 0x00, 0x07, 0x00, 0x07, 0x00,// " 0x14, 0x7F, 0x14, 0x7F, 0x14,// # 0x24, 0x2A, 0x7F, 0x2A, 0x12,// $ 0x23, 0x13, 0x08, 0x64, 0x62,// % 0x36, 0x49, 0x55, 0x22, 0x50,// & 0x00, 0x05, 0x03, 0x00, 0x00,// ' 0x00, 0x1C, 0x22, 0x41, 0x00,// ( 0x00, 0x41, 0x22, 0x1C, 0x00,// ) 0x08, 0x2A, 0x1C, 0x2A, 0x08,// * 0x08, 0x08, 0x3E, 0x08, 0x08,// + 0x00, 0x50, 0x30, 0x00, 0x00,// , 0x08, 0x08, 0x08, 0x08, 0x08,// - 0x00, 0x60, 0x60, 0x00, 0x00,// . 0x02, 0x04, 0x08, 0x10, 0x20,// / 0x3E, 0x45, 0x49, 0x51, 0x3E,// 0 0x00, 0x40, 0x7F, 0x42, 0x00,// 1 0x46, 0x61, 0x51, 0x61, 0x42,// 2 0x21, 0x41, 0x45, 0x4B, 0x31,// 3 0x18, 0x14, 0x12, 0x7F, 0x10,// 4 0x39, 0x45, 0x45, 0x45, 0x27,// 5 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6 0x01, 0x71, 0x09, 0x05, 0x03,// 7 0x36, 0x49, 0x49, 0x49, 0x36,// 8 0x06, 0x49, 0x49, 0x29, 0x1E,// 9 0x00, 0x36, 0x36, 0x00, 0x00,// : 0x00, 0x56, 0x36, 0x00, 0x00,// ; 0x00, 0x08, 0x14, 0x22, 0x41,// < 0x14, 0x14, 0x14, 0x14, 0x14,// = 0x41, 0x22, 0x14, 0x08, 0x00,// > 0x02, 0x01, 0x51, 0x09, 0x06,// ? 0x32, 0x49, 0x79, 0x41, 0x3E,// @ 0x7E, 0x11, 0x11, 0x11, 0x7E,// A 0x7F, 0x49, 0x49, 0x49, 0x36,// B 0x3E, 0x41, 0x41, 0x41, 0x22,// C 0x7F, 0x41, 0x41, 0x22, 0x1C,// D 0x7F, 0x49, 0x49, 0x49, 0x41,// E 0x7F, 0x09, 0x09, 0x01, 0x01,// F 0x3E, 0x41, 0x41, 0x51, 0x32,// G 0x7F, 0x08, 0x08, 0x08, 0x7F,// H 0x00, 0x41, 0x7F, 0x41, 0x00,// I 0x20, 0x40, 0x41, 0x3F, 0x01,// J 0x7F, 0x08, 0x14, 0x22, 0x41,// K 0x7F, 0x40, 0x40, 0x40, 0x40,// L 0x7F, 0x02, 0x04, 0x02, 0x7F,// M 0x7F, 0x04, 0x08, 0x10, 0x7F,// N 0x3E, 0x41, 0x41, 0x41, 0x3E,// O 0x06, 0x09, 0x09, 0x09, 0x7F,// P 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q 0x46, 0x29, 0x19, 0x09, 0x7F,// R 0x46, 0x49, 0x49, 0x49, 0x31,// S 0x01, 0x01, 0x7F, 0x01, 0x01,// T 0x3F, 0x40, 0x40, 0x40, 0x3F,// U 0x1F, 0x20, 0x40, 0x20, 0x1F,// V 0x7F, 0x20, 0x18, 0x20, 0x7F,// W 0x63, 0x14, 0x08, 0x14, 0x63,// X 0x03, 0x04, 0x78, 0x04, 0x03,// Y 0x61, 0x51, 0x49, 0x45, 0x43,// Z 0x00, 0x00, 0x7F, 0x41, 0x41,// [ 0x02, 0x04, 0x08, 0x10, 0x20,// "" 0x41, 0x41, 0x7F, 0x00, 0x00,// ] 0x04, 0x02, 0x01, 0x02, 0x04,// ^ 0x40, 0x40, 0x40, 0x40, 0x40,// _ 0x00, 0x01, 0x02, 0x04, 0x00,// ` 0x20, 0x54, 0x54, 0x54, 0x78,// a 0x7F, 0x48, 0x44, 0x44, 0x38,// b 0x38, 0x44, 0x44, 0x44, 0x20,// c 0x38, 0x44, 0x44, 0x48, 0x7F,// d 0x38, 0x54, 0x54, 0x54, 0x18,// e 0x02, 0x01, 0x09, 0x7F, 0x08,// f 0x08, 0x14, 0x54, 0x54, 0x3C,// g 0x7F, 0x08, 0x04, 0x04, 0x78,// h 0x00, 0x44, 0x7D, 0x40, 0x00,// i 0x20, 0x40, 0x44, 0x3D, 0x00,// j 0x00, 0x7F, 0x10, 0x28, 0x44,// k 0x00, 0x41, 0x7F, 0x40, 0x00,// l 0x7C, 0x04, 0x18, 0x04, 0x78,// m 0x7C, 0x08, 0x04, 0x04, 0x78,// n 0x38, 0x44, 0x44, 0x44, 0x38,// o 0x7C, 0x14, 0x14, 0x14, 0x08,// p 0x08, 0x14, 0x14, 0x18, 0x7C,// q 0x7C, 0x08, 0x04, 0x04, 0x08,// r 0x20, 0x54, 0x54, 0x54, 0x48,// s 0x04, 0x3F, 0x44, 0x40, 0x20,// t 0x3C, 0x40, 0x40, 0x20, 0x7C,// u 0x1C, 0x20, 0x40, 0x20, 0x1C,// v 0x3C, 0x40, 0x30, 0x40, 0x3C,// w 0x44, 0x28, 0x10, 0x28, 0x44,// x 0x0C, 0x50, 0x50, 0x50, 0x3C,// y 0x44, 0x64, 0x54, 0x4C, 0x44,// z 0x00, 0x08, 0x36, 0x41, 0x00,// { 0x00, 0x00, 0x7F, 0x00, 0x00,// | 0x00, 0x41, 0x36, 0x08, 0x00,// } 0x08, 0x08, 0x2A, 0x1C, 0x08,// -> 0x08, 0x1C, 0x2A, 0x08, 0x08 // <-};

void setup(){ Wire.begin(); Serial.begin(9600);}

//fill 30bytes with b after that incr doesnt work, wire.h hs 32 data bufvoid fill30(byte x, byte y, byte b){ int i; Wire.beginTransmission(LCD_ADR); Wire.write( y<<5|NORMAL_MODE ); Wire.write(x); for(i=0; i<I2C_BUFFER; i++) Wire.write(b); Wire.endTransmission();}
void cls(){ int x,y; for(y=0; y<5; y++) for(x=0; x<=101; x+=I2C_BUFFER) fill30(x,y,0x0);}
void CharOut(int x, int y, byte c){ // font starts from 32 int i=0; Wire.beginTransmission(LCD_ADR); Wire.write( y<<5|NORMAL_MODE ); Wire.write(x); for(i=0; i<5; i++) { uint8_t b= System5x7[(c-32)*5+i]; Wire.write( b ); } Wire.endTransmission();}
void TextOut(int x, int y, const char* str){ int i; for(i=0; str[i]; i++) CharOut(x+i*5, y, (byte)str[i]);}
unsigned long timeb, frame_time;unsigned long timea;
void loop(){ char buf[16];
timeb= millis(); cls(); TextOut(35,11,"0521 ="); TextOut(70,11," MPR"); TextOut(5,11," [s/f]"); int fps= 1000.0 / (float)( millis() - timeb ); sprintf(0,1,buf); delay(2000);}

 

 

 

Szóval alakul ,de még nem az igazi.

 

Üdv: Sándor

Előzmény: Prof (4245)
Prof Creative Commons License 2023.05.01 0 0 4246

Két hely van, meg lehet próbálni.

Előzmény: Alpári Gnác (4243)
Prof Creative Commons License 2023.05.01 0 0 4245

Jó reggelt,

 

Cefetül el van baltázva ez a cucc. Magának ameghajtó IC-nek nincs saját karakterkészlete, kár is arra hajtani. Már ha az van benne, amire gondolok.

 

Per pillanat egy brute-force, elképesztően idióta megoldást tudok.

Ez itt az "R" betű kódja:

0x7F, 0x09, 0x19, 0x29, 0x46,// R

Ezt kellene átírni úgy, hogy:

0x46, 0x29, 0x19, 0x09, 0x7F, 

Egyszerűsítve, az 1, 2, 3, 4, 5 sorrendet kell 5, 4, 3, 2, 1 sorrendre alakítani minden karakternél. Excelben kb. 5 perc alatt megvan.

 

Ezzel a betűk jó állásba lesznek visszafordítva, de a sorrendjük rossz (fordított) lesz.

Ezzeh a TextOut függvényben kell a for ciklust megfordtani:

for(i=str[i]; i >= 0; i--)

Itt azért hozzátenném, hogy ebben a for ciklusban szintaktikai hiba volt, a második paraméter a ciklus végét jelzi, és ennek egy if viszgálat paraméterének kell(ett volna) lennie.

 

Valószínű, hogy a koordinátákkal kell még mókolni kicsit.

Előzmény: sanyi33nk (4242)
Alpári Gnác Creative Commons License 2023.04.30 0 0 4244

Vagy jobbat mondok: mindjárt a #define-ban cseréld meg a kettőt.

Egyszerűbb.

Előzmény: Alpári Gnác (4243)
Alpári Gnác Creative Commons License 2023.04.30 0 0 4243

Ahogy látom, másnak is ugyanez volt a problémája és arra sem született megoldás.

 

Mi van akkor, ha a NORMAL_MODE -ot mindenhol kicseréled  HALF_MIRROR_MODE -ra.

 

Nyilván nem a #define után, hanem a többi helyeken.

Előzmény: sanyi33nk (4242)
sanyi33nk Creative Commons License 2023.04.30 0 0 4242

 

 

Üdvözlöm!

 

Hát a jelölt kód az keservesen,de hoz valami eredményt. Ha nem lenne ez a forditott kiirás akkor még egy fordulatszám jelzéshez tudnám is használni.

 

Ahhoz mit szól, ha futtatom a kódot és a TextOut(0,1,buf) lefut akkor a kijelző átvált inverz kijelzésre és az RPM = szöveg valami maszattá megy át.

 

És kijelző szélén megjelennek a szimbólumok tüélesen. Töltöttségjelző,térerő, ABC felirat email szimbólum stb.. Én ebböl gondolom ,hogy van saját karakterkészlete

 

a jószágnak. A maszatos szöveg egy 3x2cm-es sürü hálóban jelenik meg.

 

SSD136 kijlzővel volt dolgom.De ez a pcf8558 ez nagyon nem ismert nekem. Hogy lehetne legalább a fenti kódot kijavitani?

 

Köszönettel: Sándor

Előzmény: Prof (4234)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!