konverze datových typů / komunikace s displayem pomocí SPI

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Uživatelský avatar
kiRRow
Příspěvky: 1164
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: konverze datových typů / komunikace s displayem pomocí SPI

Příspěvek od kiRRow » 04 úno 2020, 21:18

Navyšovat napětí nahoru (a ještě k tomu DC/DC) se vyplatí opravdu v případech jako je např blesk u fotoaparátu ... atp ... pro trvalejší provoz to je opravdu nevhodné, hlavně při větším a stálém odběru.

Pokud potřebuji 12V pro něco ... 5V pro arduino a 3.3V pro některé jeho senzory ... baterie by měla mít 12-14V (typický olověný bezúdržbový akumulátor)
12V bych napájel přes pojistku přímo z akumulátoru, dolů bych to srazil na 7V DC/DC měničem a prohnal pinem VIN (nebo přes souosý konektor) a 3.3 V bych už poslal z arduina (za předpokladu, že je tam rozumný odběr)

Baterie...Teču, když tohle někdo řekne a představuje si jeden monočlánek AAA... Baterie je přece více akumulátorů (v podstatě jakýchkoliv věcí, třeba raketometná baterie) sestavených tak aby se tvářili jako jeden člen.

Uživatelský avatar
kiRRow
Příspěvky: 1164
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: konverze datových typů / komunikace s displayem pomocí SPI

Příspěvek od kiRRow » 04 úno 2020, 21:24

Hehe ... v tenhle moment musíš buď program zmáčknout ... tj začít psát vlastní knihovny šetřící každou nulu a jedničku a velmi pečlivě si hlídat (tu bych začal) co nahráváš do SRAM paměti, třeba při výpisu na serial použít F("text") a to co neměním v proměnné, tak PROGMEM ... takhle ty data zůstanou jen v flash paměti, ale je k nim zase složitější přístup (z hlediska toho čipu, né programátora) ... ne všechny proměnné musí být globální

Nebo je to konečně super výmluva proč si koupit dražší a lepší hračku ... to co mi na UNU zabralo 70%, tak na MEGA to bylo 7%

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: konverze datových typů / komunikace s displayem pomocí SPI

Příspěvek od ondraN » 05 úno 2020, 07:22

Dělat všechny proměnné globální, ikdyž to opravdu není třeba, je volovina. Pro proměnné, co použiješ jen někde, je dobré je odsunout na vyšší úroveň.

Kód: Vybrat vše

int promenna1;   //tahle promenna je definovana globalne a zabere 2byte RAM po celou dobu
{
	int promenna2; //tahle promenna je lokalni, zabere 2byte RAM jen po dobu, nez pogram opusti slozene zavorky, zaklada a uvolnuje se v zasobniku
}
Tahle vlastnost se nazývá anglicky scope a doporučuji prostudovat.
Paměť se dá ušetřit i použitím unionů, ale to už chce trochu hlubší znalosti a dobře si promyslet strukturu a použití proměnných.

Maxim
Příspěvky: 128
Registrován: 22 led 2019, 20:32
Reputation: 0

Re: konverze datových typů / komunikace s displayem pomocí SPI

Příspěvek od Maxim » 05 úno 2020, 09:18

Já to potřebuji rozchodit na Arduino mini pro, to má stenou paměť jako UNO, ne?

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: konverze datových typů / komunikace s displayem pomocí SPI

Příspěvek od ondraN » 05 úno 2020, 09:38

Maxim píše:
05 úno 2020, 09:18
Já to potřebuji rozchodit na Arduino mini pro, to má stenou paměť jako UNO, ne?
To záleží na procesoru. 328P má 2K, 168P má jen 1K RAM.

Maxim
Příspěvky: 128
Registrován: 22 led 2019, 20:32
Reputation: 0

Re: konverze datových typů / komunikace s displayem pomocí SPI

Příspěvek od Maxim » 05 úno 2020, 09:44

mám 328P....
nové čipy se zatím nechystají?

teď koukám, že existují ATMEGA32U4, které mají SRAM 2.5 KB, ale našel jsem je pouze v Arduino NANO.

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: konverze datových typů / komunikace s displayem pomocí SPI

Příspěvek od ondraN » 05 úno 2020, 09:52

V té řadě je 328P nejvyšší. Jestli chceš víc paměti, tak z těch osmibitových jedině Mega. Pokud ale ještě upravíš ten program, tak se to tam vejde.

Maxim
Příspěvky: 128
Registrován: 22 led 2019, 20:32
Reputation: 0

Re: konverze datových typů / komunikace s displayem pomocí SPI

Příspěvek od Maxim » 05 úno 2020, 10:04

Ok, zkusím ještě zabojovat.

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: konverze datových typů / komunikace s displayem pomocí SPI

Příspěvek od ondraN » 05 úno 2020, 10:09

Pro začátek zkus vyházet všechny zbytečné proměnné na jedno použití deklarované globálně. Je jich tam fakt hodně.

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: konverze datových typů / komunikace s displayem pomocí SPI

Příspěvek od ondraN » 05 úno 2020, 10:26

Kód: Vybrat vše


long zobrazeniCasuAZnakuCasu(char *pomocnePole , size_t velikostPole , long pocetCyklu) {

  long hodnotaCasuUpravena = pocetCyklu;
  hodnotaCasuUpravena = pocetCyklu * 2;

  if (hodnotaCasuUpravena < 99) {

    hodnotaCasuUpravena = snprintf(pomocnePole, velikostPole - 1, "%i" , (long)hodnotaCasuUpravena); //převede int "hodnotaCasu" na řetězec "velikostPole" a uloží do velikostPole délku proměnné velikostPole, kterou vrací funkce snprinf
    pomocnePole[hodnotaCasuUpravena] = 's'; //na konec řetězce připíše s

  }

  if ((hodnotaCasuUpravena > 99) and (hodnotaCasuUpravena < 5939)) {
    hodnotaCasuUpravena = hodnotaCasuUpravena / 60;
    hodnotaCasuUpravena = snprintf(pomocnePole, velikostPole - 1, "%i" , (long)hodnotaCasuUpravena); //převede int "hodnotaCasu" na řetězec "velikostPole" a uloží do velikostPole délku proměnné velikostPole, kterou vrací funkce snprinf
    pomocnePole[hodnotaCasuUpravena] = 'm'; //na konec řetězce připíše m

  }

  if (hodnotaCasuUpravena > 5939) {
    hodnotaCasuUpravena = hodnotaCasuUpravena / 3600;
    hodnotaCasuUpravena = snprintf(pomocnePole, velikostPole - 1, "%i" , (long)hodnotaCasuUpravena); //převede int "hodnotaCasu" na řetězec "velikostPole" a uloží do velikostPole délku proměnné velikostPole, kterou vrací funkce snprinf
    pomocnePole[hodnotaCasuUpravena] = 'h'; //na konec řetězce připíše h

  }

  pomocnePole[hodnotaCasuUpravena + 1] = 0; //vytvoří novou zarážku na konci řetězce

  return pomocnePole + 1;

}
Víš, co ti vrací tahle funkce v tvém programu??

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Bing [Bot] a 15 hostů