Esse programa mostra como tratar informações vindas da serial, armazenando-as em variáveis do tipo char. A partir disso podemos tratar cada informação individualmente, executando assim uma função especifica para cada uma delas.
Ele começa lendo a serial, porem só armazena os dados se o primeiro digito recebido for igual a ' abre chave ' ( { ), dai ele armazena os próximos sete caracteres. Se o sétimo carácter for igual a ' fecha chave ' ( } ), ele fecha a leitura da porta serial. Depois ele mostra os valores armazenados.
Como exemplo de tratamento dessas informações, programei sete leds para acender de acordo com o carácter que esta nas variáveis ' digx '.
ex: {000000}
{001100}
{100001}
{010010}
{101010}
{010101}
{111111}
// Declara variaveis globais
char data [7];
byte byte_received;
byte cont1 = 1;
char dig0,dig1,dig2,dig3,dig4,dig5,dig6,dig7;
int flag;
int cont;
void setup(){
Serial.begin(9600);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
}
void loop(){
flag=1;// Ativa a leitura Serial
while(Serial.available() > 0 && flag == 1){
byte_received = Serial.read();
if(byte_received == '{'){
cont=0;
}
if(cont <=8){
data[cont] = byte_received;
cont=cont++;
}
// Aqui o programa armazena cada informacao q vem da serial
// em uma varivel diferente.
dig0 = data[0];
dig1 = data[1];
dig2 = data[2];
dig3 = data[3];
dig4 = data[4];
dig5 = data[5];
dig6 = data[6];
dig7 = data[7];
}
if(dig7 == '}'){
flag=0;
}
// O programa so ira armazenar os dados se o primeiro caracter
// recebido for igual a abre chave { ,
//e a ultima for igual a fecha chave } .
// Aqui ele mostra os dados enviados. A apartir daqui eles
// podem ser processados de acordo com o programa que vc ira
// criar.
if(dig0=='{' && dig7 =='}'){
Serial.print(dig0);
Serial.print(dig1);
Serial.print(dig2);
Serial.print(dig3);
Serial.print(dig4);
Serial.print(dig5);
Serial.print(dig6);
Serial.println(dig7);
}
if(dig1 == '1'){
digitalWrite(2,HIGH);
}
if(dig1 == '0'){
digitalWrite(2,LOW);
}
if(dig2 == '1'){
digitalWrite(3,HIGH);
}
if(dig2 == '0'){
digitalWrite(3,LOW);
}
if(dig3 == '1'){
digitalWrite(4,HIGH);
}
if(dig3 == '0'){
digitalWrite(4,LOW);
}
if(dig4 == '1'){
digitalWrite(5,HIGH);
}
if(dig4 == '0'){
digitalWrite(5,LOW);
}
if(dig5 == '1'){
digitalWrite(6,HIGH);
}
if(dig5 == '0'){
digitalWrite(6,LOW);
}
if(dig6 == '1'){
digitalWrite(7,HIGH);
}
if(dig6 == '0'){
digitalWrite(7,LOW);
}
}
Nenhum comentário:
Postar um comentário