Sugestão de solução - Exercício 4 - Aula 4 MIC2

De IFSC
Ir para navegação Ir para pesquisar
int converte(char);
char c;
char LEDVET[4];

 void setup(){
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  Serial.begin(9600);
}

void loop()
{ int i;
  if (Serial.available()>0)
  {
    c = Serial.read()- '0' ;
    if(converte(c))
    { for(i=0;i<4;i++)
        digitalWrite(i+2,LEDVET[i]);
    }
    delay(2000);
    Serial.println("------");
  }
}

int converte(char val)
{ int i;
 if(val<0 || val>15)
 {  Serial.println("Erro! Valor inválido!");
    return 0;
 }
 else
 { for(i=0;i<4;i++)
   {   

     LEDVET[i] = val&1;
     Serial.print(LEDVET[i], DEC);
     Serial.println();
      val=val/2;
   }
  return 1;
 }
}


Outra forma de testar o valor binário do número digitado é:

byte x; byte bin[4];

void setup() {

  Serial.begin(9600);

} void loop() {

  if (Serial.available()>0)
  {  x = Serial.read() - '0';
     Serial.flush();
     if(x>=0 && x<=9)
        intparabin(x);
  } 
   

}//end loop

void intparabin(byte n) {int i; Serial.print("Palavra binária lida: ");

 for(i=0;i<4;i++)
 {  bin[i] = (n>>i)&1;
    Serial.print(bin[i]);
    Serial.print(" ");
 }

Serial.println("."); }