Stránka 2 z 6
Re: konverze datových typů / komunikace s displayem pomocí SPI
Napsal: 18 led 2020, 18:07
od pavel1tu
Kód: Vybrat vše
char data[100];
sprintf(data, "Toto je můj FLOAT : %f , %.1f , %.3f", myFloat, myFloat, myFloat);
Serial.println(data);
mne to funguje i to z příkladu i toto
PS: ale jak je zde psáno, je úplná DEBILITA si tu vyměňovat kousky kodu, pošli celé ... někde máš blbost ....
Kód: Vybrat vše
18:17:42.752 -> Tutorial by: ArduinoBasics
18:17:42.786 -> Year: 2019, Blog Link: https://arduinobasics.blogspot.com
18:17:42.820 ->
18:17:42.820 -> Character: 1 , a
18:17:42.854 -> Integer (d): 49 , Width(8d): 49 , Zero Prefix Width(07d): 0000049
18:17:42.923 -> Floats f: 99.991096 , .1f: 100.0 , .3f: 99.991
18:17:42.989 -> Scientific e: 9.999110e+01 , g: 99.9911
18:17:43.023 -> Radices u: 49 , #o: 061 , x: 31 , #x: 0x31
18:17:43.056 -> Big Number lld: [1234567890123456789 + 1 = 1234567890123456790]
PS2: jaké máš Arduino, IDE a knihovny originální, oficiální, nebo nějaké upravené od někoho ?
Re: konverze datových typů / komunikace s displayem pomocí SPI
Napsal: 20 led 2020, 17:53
od Maxim
mám arduino UNO, ale program potom poběží na mini
knihovny v tom zkouškovém programu pro sprintf nemám žádné, zkopíroval jsem to jak to bylo
IDE mám 1.8.10
Re: konverze datových typů / komunikace s displayem pomocí SPI
Napsal: 20 led 2020, 17:56
od Maxim
zkusil jsem i jiné Arduino a vypisuje mi to to samé
Tutorial by: ArduinoBasics
Year: 2019, Blog Link:
https://arduinobasics.blogspot.com
Character: 1 , a
Integer (d): 49 , Width(8d): 49 , Zero Prefix Width(07d): 0000049
Floats f: ? , .1f: ? , .3f: ?
Scientific e: ? , g: ?
Radices u: 49 , #o: 061 , x: 31 , #x: 0x31
Big Number lld: [
Re: konverze datových typů / komunikace s displayem pomocí SPI
Napsal: 20 led 2020, 18:11
od Maxim
Přeinstaloval jsem IDE, ale stále to dělá to samé.
Re: konverze datových typů / komunikace s displayem pomocí SPI
Napsal: 20 led 2020, 19:21
od pavel1tu
W10 ?
A prosím pomocí "zobrazení kodu" </> sem hod ten kod z Arduino IDE.
Dle mne se ti špatně kopíruje z prohlížeče
Nedaří se mi tu tvoji chybu nasimulovat
Re: konverze datových typů / komunikace s displayem pomocí SPI
Napsal: 20 led 2020, 19:29
od Maxim
kód toho Tutoriálu? kopíroval jsem to i přes textový editor
mám windows 10
Kód: Vybrat vše
/*==========================================================================
* Project: sprintf functionality
* Author: Scott C
* Date created: 06 May 2019
* Arduino IDE version: 1.8.5
* Operating System: Windows 10 Pro
* Tutorial Link: https://arduinobasics.blogspot.com/2019/05/sprintf-function.html
*
* Acknowledgements:
* The following resource was a key element of this tutorial: http://www.cplusplus.com/reference/cstdio/printf/
* Another useful resource can be found here: https://en.wikipedia.org/wiki/C_data_types
*
*------------------------------------------------------------------------------
* Code Explanation
* -----------------------------------------------------------------------------
* Begin serial communication at a baud rate of 9600
* Wait until Serial communication has established before continuing
*
* The sprintf function will write the formatting string and the variables into the "data" character array.
* You provide a formatting string template, that contains placeholders for variables that you plan to insert.
* These placeholders have a percentage sign (%) prefix. Eg. %s, %d, %f etc.
* The number of placeholders must match the number of variables.
* The variables are inserted at the placeholder position, and formatted based on the type of placeholder used.
* %d = signed integer %f = floating point number
* %s = string %.1f = float to 1 decimal place
* %c = character %.3f = float to 3 decimal places
* %e = scientific notation %g = shortest representation of %e or %f
* %u = unsigned integer %o = unsigned octal
* %x = unsigned hex (lowercase) %X = unsigned hex (uppercase)
* %hd = short int %ld = long int
* %lld = long long int
* ============================================================================= */
char data[100];
char* myName = "ArduinoBasics";
char* myBlog = "https://arduinobasics.blogspot.com";
int year = 2019;
int num = 49;
char myChar = 'a';
float myFloat = 99.9911;
long long int vLong = 1234567890123456789LL;
void setup() {
Serial.begin(9600);
while (!Serial) {
delay(10);
}
sprintf(data, "Tutorial by: %s", myName);
Serial.println(data);
sprintf(data, "Year: %u, Blog Link: %s",year,myBlog);
Serial.println(data);
Serial.println();
sprintf(data, "Character: %c , %c", num, myChar);
Serial.println(data);
sprintf(data, "Integer (d): %d , Width(8d): %8d , Zero Prefix Width(07d): %07d", num, num, num);
Serial.println(data);
sprintf(data, "Floats f: %f , .1f: %.1f , .3f: %.3f", myFloat, myFloat, myFloat);
Serial.println(data);
sprintf(data, "Scientific e: %e , g: %g", myFloat , myFloat);
Serial.println(data);
sprintf(data, "Radices u: %u , #o: %#o , x: %x , #x: %#x ", num, num, num, num);
Serial.println(data);
sprintf(data, "Big Number lld: [%lld + 1 = %lld]", vLong, vLong+1);
Serial.println(data);
}
void loop() {
//do nothing
}
Kód: Vybrat vše
Tutorial by: ArduinoBasics
Year: 2019, Blog Link: https://arduinobasics.blogspot.com
Character: 1 , a
Integer (d): 49 , Width(8d): 49 , Zero Prefix Width(07d): 0000049
Floats f: ? , .1f: ? , .3f: ?
Scientific e: ? , g: ?
Radices u: 49 , #o: 061 , x: 31 , #x: 0x31
Big Number lld: [
Re: konverze datových typů / komunikace s displayem pomocí SPI
Napsal: 20 led 2020, 20:20
od AstroMiK
Mě ty floaty ve sprintf taky nefungujou.
Hledal jsem na internetu a našel jsem, že to do Arduina není implementované:
https://stackoverflow.com/questions/276 ... formatting
"... Due to some performance reasons %f is not included in the Arduino's implementation of sprintf(). A better option would be to use dtostrf() ..."
Re: konverze datových typů / komunikace s displayem pomocí SPI
Napsal: 21 led 2020, 18:40
od Maxim
Teď jsem zkusil nahrát i z notebooku, ten ukázkový kód pro funkci sprintf, ve kterém jsem zrovna nově nainstaloval IDE. Mám tam také win 10.
Výsledek stejný.
Poradil by někdo tedy jak na to? opravit můj program nebo to vymyslet celé nějak jinak?
Díky
Re: konverze datových typů / komunikace s displayem pomocí SPI
Napsal: 21 led 2020, 20:06
od ondraN
Re: konverze datových typů / komunikace s displayem pomocí SPI
Napsal: 21 led 2020, 20:46
od Maxim
S tím floatem mi to fungovalo už dřív, ale jak jsem psal.. ukládám si záznamy z dvou čidel a s floatem se mi to nevejde do paměti. Nějak rozumně konvertovat z toho INT zpět by to nešlo?