Ir ao conteúdo
  • Cadastre-se
Gustavoo_

Arduino Recebendo valor alto através do Serial

Posts recomendados

Oi, boa noite.. Então, estou precisando fazer o seguinte:

Receber um valor maior que 30000 (Valor que será um Tempo em milissegundos) através do serial e fazer com que um led fique aceso por essa quantidade de tempo definido pelo usuário.

Se alguém souber como faço para simplificar melhor essa programação também , agradeço.

 

Até então, minha prog. está assim:

 

#include <Servo.h>

Servo meuServo;
char caracter;
int JanelaSala      = 4;
int LampadaEntrada  = 5;
int LampadaSala     = 6;
int LampadaCozinha  = 7;
int LampadaBanheiro = 8;
int estado          = 0;
bool a,b,c,d        = LOW;

void setup()
{
  Serial.begin(9600);
  pinMode(LampadaEntrada  ,OUTPUT);
  pinMode(LampadaSala     ,OUTPUT);
  pinMode(LampadaCozinha  ,OUTPUT);
  pinMode(LampadaBanheiro ,OUTPUT);
  meuServo.attach(JanelaSala);
}

void loop()
{
  if(Serial.available() > 0){
    delay(100);
    caracter = Serial.read();
    
    switch(caracter){
      case '1':
        a = !a;
        digitalWrite(LampadaEntrada, a);
      break;
      case '2':
        b = !b;
        digitalWrite(LampadaSala, b);
      break;
      case '3':
        c = !c;
        digitalWrite(LampadaCozinha, c);
      break;
      case '4':
        d= !d;
        digitalWrite(LampadaBanheiro, d);
      break;
      case '5':
        if(estado == 0){
          meuServo.write(90);
          estado = 1;
        }
        else if(estado == 1){
          meuServo.write(0);
          estado = 0;
        }
      break;
   }
  }
 delay(10);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Envia o valor como String 

Serial.print("30000");

Na recepção use o toint para volta a ser valor inteiro.

byte recebe = recebido.toInt();

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for receber em binário, pode fazer o seguinte:

void loop() {

  while(Serial.available() < 2) {}   //Waiting for packets

  int input1 = Serial.read(); // lê 1° byte

  int input2 = Serial.read(); // lê 2° byte

 

  int  tempo= ( input1 * 256 )+ input2);

  //ou  tempo= ( input1 <<8 ) + input2);

  delay(tempo);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Redes de Computadores - Gabriel Torres

PROMOÇÃO DE QUARENTENA

De R$ 39,90 por apenas R$ 9,90 só até as 23h59min desta sexta-feira 03/04/2020

CLIQUE AQUI E COMPRE AGORA MESMO!