konverze datových typů / komunikace s displayem pomocí SPI
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Re: konverze datových typů / komunikace s displayem pomocí SPI
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.
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.
Re: konverze datových typů / komunikace s displayem pomocí SPI
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%
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%
Re: konverze datových typů / komunikace s displayem pomocí SPI
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ň.
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.
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
}
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.
Re: konverze datových typů / komunikace s displayem pomocí SPI
Já to potřebuji rozchodit na Arduino mini pro, to má stenou paměť jako UNO, ne?
Re: konverze datových typů / komunikace s displayem pomocí SPI
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.
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.
Re: konverze datových typů / komunikace s displayem pomocí SPI
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.
Re: konverze datových typů / komunikace s displayem pomocí SPI
Ok, zkusím ještě zabojovat.
Re: konverze datových typů / komunikace s displayem pomocí SPI
Pro začátek zkus vyházet všechny zbytečné proměnné na jedno použití deklarované globálně. Je jich tam fakt hodně.
Re: konverze datových typů / komunikace s displayem pomocí SPI
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;
}
Kdo je online
Uživatelé prohlížející si toto fórum: Bing [Bot] a 15 hostů