Stránka 1 z 2
Arduino - BYTE
Napsal: 04 led 2015, 22:33
od pavoucisit
Zdravím, chtěl jsem si pokusmo připojit k FT-817 externí displej za pomocí arduina. Po prozkoumání netu jsem narazil na
http://www.tarapippo.net/ft-expander/head817.pde
Při Verify mi to zahlásilo samozřejmě chyby
1. #include <NewSoftSerial.h> - tu jsem nahradil #include <SoftareSerial.h> OK
2. v programu mi hlásí chybu error: ‘BYTE’ was not declared in this scope
void ftCmd()
{
for (int i=0; i<5; i++){
mySerial.print(catCmd, BYTE);
Čím mám prosím nahradit "BYTE" ?
Napsal: 04 led 2015, 22:43
od ross4435897
Napsal: 04 led 2015, 22:59
od pavoucisit
To mi došlo hned a proto jsem v programu souvislosti přepsal na SoftwareSerial.
Napsal: 04 led 2015, 23:15
od berk
Zkus
#define BYTE unsigned char
Napsal: 04 led 2015, 23:26
od pavoucisit
Na pozici kde je BYTE, by mělo být HEX BIN atd..nebo nic, prostě definovaný formát odeslaného řetězce. Já nechápu, kde na to BYTE autor přišel. Z Italem se asi nedomluvím, takže autorovi raději nepíšu.
Napsal: 05 led 2015, 12:08
od Honza_dy
V jaké verzi IDE pracuješ?
Napsal: 05 led 2015, 12:34
od pavoucisit
Poslední 1.0.6 v Ubuntu
http://arduino.cc/en/Reference/SoftwareSerialPrint
To BYTE tam popsané je, ale 1.0.6 to nepřeloží.
Napsal: 05 led 2015, 14:03
od Honza_dy
Tak zkus třeba 0023 protože .pde je formát pro starší IDE. Už jsem řešil podobné problémy kdy nové verze odmítaly něco přeložit a starší fungovaly bez problémů.
Napsal: 05 led 2015, 15:10
od ross4435897
ve
foru se to probira ... dival ses tam?
Napsal: 05 led 2015, 16:00
od pavoucisit
S překladem po záměně za SoftwareSerial.h není problém, to jsem udělal hned , ale ta hodnota BYTE, co vlastně konkretně znamená? V programu jsem ji vynechal a program se v pořádku přeloží. Do radiostanice potřebuji poslal korektní posloupnost bytů. Hodnota BYTE (viz doc HEX BIN OCT...) mění odeslané byty, ale nevím za jaké.
Napsal: 05 led 2015, 17:00
od MiloPS3
rek bych ze je to obycejny odeslani hodnoty unsigned int8 (0-255)
Kód: Vybrat vše
serial.print(analogValue/4, BYTE); // print as a raw byte value (divide the
// value by 4 because analogRead() returns numbers
// from 0 to 1023, but a byte can only hold values
// up to 255)
Napsal: 05 led 2015, 17:08
od ross4435897
... anebo to zpracuj v radku navic, do predem deklarovane promenne prevedene do BYTE
Napsal: 05 led 2015, 17:53
od MiloPS3
tak jeste jinak
Kód: Vybrat vše
NewSoftSerial mySerial(2, 3);
char catCmd[] = { 00, 00, 00, 00, 00 } ;
.
.
void ftCmd()
{
for (int i=0; i<5; i++){
mySerial.print(catCmd[i], BYTE);
}
}
.
.
catCmd[0] = 0;
catCmd[1] = 0x59;
catCmd[2] = 0;
catCmd[3] = 0;
catCmd[4] = 0xbb;
ftCmd();
nebo
Kód: Vybrat vše
#define FT817_CONFIG_EEPROM_READ 0xBB
#define FT817_ANY_BYTE 0x00
sendCATCommandChar(FT817_ANY_BYTE);
sendCATCommandChar(0x59);
sendCATCommandChar(FT817_ANY_BYTE);
sendCATCommandChar(FT817_ANY_BYTE);
sendCATCommandChar(FT817_CONFIG_EEPROM_READ);
coz je odeslani nejakeho prikazu po serialu do ty FT-817 tak bych rek ze to tak bude
Kód: Vybrat vše
serial.print(analogValue); // print as an ASCII-encoded decimal
serial.print("\t"); // print a tab character
serial.print(analogValue, DEC); // print as an ASCII-encoded decimal
serial.print("\t"); // print a tab character
serial.print(analogValue, HEX); // print as an ASCII-encoded hexadecimal
serial.print("\t"); // print a tab character
serial.print(analogValue, OCT); // print as an ASCII-encoded octal
serial.print("\t"); // print a tab character
serial.print(analogValue, BIN); // print as an ASCII-encoded binary
serial.print("\t"); // print a tab character
serial.print(analogValue/4, BYTE); // print as a raw byte value (divide the
// value by 4 because analogRead() returns numbers
// from 0 to 1023, but a byte can only hold values
// up to 255)
takze pokud si to BYTE vynechal tak to standartne odesila hodnotu 0-255 co ty prave potrebujes ale muzu se mylit ale vypada to ze to tak je
![Laughing :lol:](./images/smilies/icon_lol.gif)
Napsal: 05 led 2015, 21:00
od pavoucisit
Hmm asi to tak bude a BYTE není potřeba. Dokud si nebudu jist, stanici nechci připojit. Zatím jsem k arduinu připojil BT modul a na tabletu jsem si po spárování otevřel BT Terminál. V programu jsem upravil komunikační rychlost a připojil jsem napájení. Ardu odeslalo 00 00 00 00 03. Takže OK a děkuji.
Napsal: 05 led 2015, 23:09
od MiloPS3
oprava . to BYTE musi bejt. jinak ti to vypise v ascii. skus si dat zobrazeni v hexu v terminalu . musi s toho lezt 0x00.0x00.0x00.0x00.0x03 . to co ti to vypisuje je zrejme 0x30 0x30.0x30 0x30.0x30 0x30.0x30 0x30.0x30 0x33 coz je v ascii 00 00 00 00 03 a to je spatne