Arduino - BYTE

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
pavoucisit
Příspěvky: 176
Registrován: 02 lis 2008, 01:00
Bydliště: Havířov

Arduino - BYTE

#1 Příspěvek 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" ?

Uživatelský avatar
ross4435897
Příspěvky: 426
Registrován: 10 lis 2009, 01:00
Bydliště: Brno

#2 Příspěvek od ross4435897 »


Uživatelský avatar
pavoucisit
Příspěvky: 176
Registrován: 02 lis 2008, 01:00
Bydliště: Havířov

#3 Příspěvek od pavoucisit »

To mi došlo hned a proto jsem v programu souvislosti přepsal na SoftwareSerial.

Uživatelský avatar
berk
Příspěvky: 107
Registrován: 07 úno 2014, 01:00

#4 Příspěvek od berk »

Zkus

#define BYTE unsigned char

Uživatelský avatar
pavoucisit
Příspěvky: 176
Registrován: 02 lis 2008, 01:00
Bydliště: Havířov

#5 Příspěvek 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.

Uživatelský avatar
Honza_dy
Příspěvky: 2172
Registrován: 20 srp 2004, 02:00
Bydliště: Brno-venkov

#6 Příspěvek od Honza_dy »

V jaké verzi IDE pracuješ?

Uživatelský avatar
pavoucisit
Příspěvky: 176
Registrován: 02 lis 2008, 01:00
Bydliště: Havířov

#7 Příspěvek 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ží.

Uživatelský avatar
Honza_dy
Příspěvky: 2172
Registrován: 20 srp 2004, 02:00
Bydliště: Brno-venkov

#8 Příspěvek 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ů.

Uživatelský avatar
ross4435897
Příspěvky: 426
Registrován: 10 lis 2009, 01:00
Bydliště: Brno

#9 Příspěvek od ross4435897 »

ve foru se to probira ... dival ses tam?

Uživatelský avatar
pavoucisit
Příspěvky: 176
Registrován: 02 lis 2008, 01:00
Bydliště: Havířov

#10 Příspěvek 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é.

Uživatelský avatar
MiloPS3
Příspěvky: 259
Registrován: 07 srp 2010, 02:00

#11 Příspěvek 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)

Uživatelský avatar
ross4435897
Příspěvky: 426
Registrován: 10 lis 2009, 01:00
Bydliště: Brno

#12 Příspěvek od ross4435897 »

... anebo to zpracuj v radku navic, do predem deklarovane promenne prevedene do BYTE

Uživatelský avatar
MiloPS3
Příspěvky: 259
Registrován: 07 srp 2010, 02:00

#13 Příspěvek 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:

Uživatelský avatar
pavoucisit
Příspěvky: 176
Registrován: 02 lis 2008, 01:00
Bydliště: Havířov

#14 Příspěvek 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.

Uživatelský avatar
MiloPS3
Příspěvky: 259
Registrován: 07 srp 2010, 02:00

#15 Příspěvek 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

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“