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 :lol:

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