• Nenhum resultado encontrado

3.2 Programando para o Arduino: Con eitos e Sintaxe da Linguagem de Programação

3.2.18 Comuni ação serial

ˆ Serial.begin( )Ajustaotaxadetransferên iaembitsporsegundoparaumatransmissão

dedados pelopadrãoserial. Para omuni ação omum omputadorutiliza-se umadestas

taxas: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 57600, 115200. Pode-se, entre-

tanto,espe i aroutrasvelo idades,porexemplo,para omuni ação atravésdospinos0e

1 omum omponente que requerumataxa espe í a.

Sintaxe:

Serial.begin(taxa);

Serial1.begin(taxa);

Serial12.begin(taxa);

Serial13.begin(taxa);

Exemplo paraArduinoMega:

void setup(){

/* Abre a porta serial 1, 2, 3 e 4

* e ajusta a taxa das portas para

* 9600 bps, 38400 bps, 19200 bps * e 4800 bps respe tivamente */ Serial1.begin(9600); Serial2.begin(38400); Serial3.begin(19200); Serial4.begin(4800); . : } void loop() { . : }

ˆ int Serial.available( ) Retorna o número de bytes ( ara teres) disponíveis para leitura

no buerda porta serial. O buerserial podearmazenar até128 bytes. [verapêndi eC.4℄

Sintaxe: Serial.available(); Exemplo void setup() { Serial.begin(9600); Serial1.begin(9600); } void loop() { /* lê na porta 0

* e envia para a porta 1:

*/

if (Serial.available()) {

int inByte = Serial.read();

Serial1.print(inByte, BYTE);

}

/* lê na porta 1 e

* envia para a porta 0:

*/

if (Serial1.available()) {

int inByte = Serial1.read();

Serial.print(inByte, BYTE);

}

ˆ int Serial.read()Retornaoprimeiro bytedisponívelnobuerdeentradadaportaserial

(ou -1 senão hover dadosmobuer)

Sintaxe

variavel = Serial.read( )

Exemplo

int in omingByte = 0;

// para entrada serial

void setup() {

Serial.begin(9600);

}

void loop() {

// envia dados apenas

//quando re ebe dados:

if (Serial.available() > 0) {

// lê o primeiro byte disponível:

in omingByte = Serial.read();

// imprime na tela o byte re ebido:

Serial.print("Eu re ebi: ");

Serial.println(in omingByte, DEC);

}

ˆ Serial.ush( ) Esvazia o buer de entrada da porta serial. De modo geral, esta função

apaga todososdadospresentesno buer deentradano momento de exe uçãodamesma.

Sintaxe: Serial.flush(); Exemplo: void setup() {( Serial.begin(9600); } void loop(){ Serial.flush(); /* Apaga o onteúdo * do buffer de entrada */ . : }

ˆ Serial.print( ) Envia dados de todos os tipos inteiros, in luindo ara teres, pela porta

serial. Ela não fun iona om oats, portanto é ne essário fazer uma onversão para um

tipo inteiro. Em algumas situações é útil multipli ar um oat por uma potên ia de 10

parapreservar(aomenosemparte) ainformaçãofra ionária. Atente-separa ofatodeque

os tipos de dados sem sinal, har e byte irão gerar resultados in orretos e atuar omo se

fossemdo tipo dedados om sinal. Este omandopodeassumir diversasformas:

Serial.print(valor)semnenhumformatoespe i ado: imprimeovalor omoumnúmero

de imal emumastringASCII.

Por exemplo:

int b = 79;

Serial.print(b);

(envia pela porta serial o ódigo ASCII do

Serial.print(valor, DEC):imprimevalor omoum número de imal em umastringAS-

CII.

Por exemplo:

int b = 79;

Serial.print(b, DEC);

(imprime astringASCII "79").

Serial.print(valor, HEX): imprimevalor omo umnúmero hexade imal emuma string

ASCII.

Por exemplo:

int b = 79;

Serial.print(b, HEX);

(imprime astring"4F").

Serial.print(valor,OCT):imprime valor omoum número o talemumastring ASCII.

Por exemplo:

int b = 79;

Serial.print(b, OCT);

(imprime astring"117")

Serial.print(valor,BIN):imprimevalor omoumnúmerobinárioemumastringASCII.

Por exemplo:

int b = 79;

Serial.print(b, BIN);

(imprime astring"1001111").

Serial.print(valor,BYTE): imprimevalor omo umúni obyte. Por exemplo:

int b = 79;

Serial.print(b, BYTE);

(envia pela porta serial o valor 79, queserá

mostrado na tela de um terminal omo um

ara tere "0", pois 79 é o ódigo ASCII do

"0").

Serial.print(str): sestrforumastringouumarrayde hars,imprimeumastringASCII.

Por exemplo:

Exemplo: int analogValue; void setup() { serial.begin(9600); } void loop() { analogValue = analogRead(0);

serial.print(analogValue); // imprime um ASCII de imal - o mesmo que "DEC"

serial.print("\t"); // imprime um tab

serial.print(analogValue, DEC); // Imprime um valor de imal

serial.print("\t"); // imprime um tab

serial.print(analogValue, HEX); // imprime um ASCII hexade imal

serial.print("\t"); // imprime um tab

serial.print(analogValue, OCT); // imprime um ASCII o tal

serial.print("\t"); // imprime um tab

serial.print(analogValue, BIN); // imprime um ASCII binário

serial.print("\t"); // imprime um tab

serial.print(analogValue/4, BYTE);

/* imprime omo um byte úni o e adi iona um " ariage return"

* (divide o valor por 4 pois analogRead() retorna número de 0 à 1023,

* mas um byte pode armazenar valores somente entre 0 e 255

*/

serial.print("\t"); // imprime um tab

delay(1000); // espera 1 segundo para a próxima leitura

ˆ Serial.println(data)Estafunçãoenviadadosparaaportaserialseguidosporum arriage

return (ASCII 13, ou '

\

r') e por um ara tere de linha nova (ASCII 10, ou '

\

n'). Este omando utilizaosmesmos formatosdo Serial.print( ):

Serial.println(valor): imprime o valor de um número de imal em uma string ASCII

seguido por um arriage returne umlinefeed.

Serial.println(valor, DEC): imprime o valor de um número de imal em uma string

ASCII seguido por um arriagereturn eumlinefeed.

Serial.println(valor,HEX): imprimeovalordeumnúmero hexade imalemumastring

ASCII seguido por um arriagereturn eumlinefeed.

Serial.println(valor,OCT): imprimeovalordeumnúmero o talemumastringASCII

seguido por um arriage returne umlinefeed.

Serial.println(valor,BIN):imprimeovalordeumnúmerobinárioemumastringASCII

seguido por um arriage returne umlinefeed.

Serial.println(valor,BYTE):imprimeovalordeumúni obyteseguidoporum arriage

return eumlinefeed.

Serial.println(str): se str for uma string ou um array de hars, imprime uma string

Exemplo:

/* Entrada Analógi a

lê uma entrada analógi a no pino analógi o 0 e imprime o valor na porta serial.

*/

int analogValue = 0; // variável que armazena o valor analógi o

void setup() {

// abre a porta serial e justa a velo idade para 9600 bps:

Serial.begin(9600);

}

void loop() {

analogValue = analogRead(0); // lê o valor analógi o no pino 0:

/* imprime em diversos formatos */

Serial.println(analogValue); // imprime um ASCII de imal - o mesmo que "DEC"

Serial.println(analogValue, DEC); // imprime um ASCII de imal

Serial.println(analogValue, HEX); // imprime um ASCII hexade imal

Serial.println(analogValue, OCT); // imprime um ASCII o tal

Serial.println(analogValue, BIN); // imprime um ASCII binário

Serial.println(analogValue/4, BYTE); // imprime omo um byte úni o

delay(1000);// espera 1 segundo antes de fazer a próxima leitura:

Capítulo 4

Exemplos Práti os

4.1 Imprimindo uma mensagem no LCD

Componentes: 1LCD,1 poten imetro

Neste exemplo será mostrado omo one tar orretamente um LCD ao Arduino, além de

imprimir o famoso Hello World! na tela do LCD através da função l d.print(), ontida na

bibliote a LiquidCrystal.h.

Sugestão de montagem

Para one tar o LCD aoArduino, one te osseguintes pinos:

ˆ pinoVSS(1) doLCD ao pinoGND

ˆ pinoVDD(2)do LCD aopino 5V

ˆ pinoRS(4)do LCD aopino12

ˆ pinoRW(5) do LCD aopinoGND

ˆ pinoD6(13) do LCDao pino3

ˆ pinoD7(14) do LCDao pino2

Deve-se one tar também o poten imetro de 10K Ohms aos pinos 5V, GND e V0(3) do

LCD, onforme sugere asFiguras 4.1e 4.2:

Figura4.2: Esquemáti o Eletrni o Código fonte #in lude <LiquidCrystal.h> LiquidCrystal l d(12, 11, 5, 4, 3, 2); void setup() { l d.begin(16, 2); l d.print("Hello World!"); } void loop() { l d.setCursor(0, 1); l d.print(millis()/1000); l d.print("s");

Documentos relacionados