Desafio 2 Revisitado parte 1 e 2

Desafio 2 revisitado

DESCRIÇÃO DO PROCEDIMENTO E ESQUEMA UTILIZADO


O esquema a seguir foi feito no simulador Tinkercad (Links no final da postagem):


Parte 1 ^

Parte 2 ^
O circuito foi refeito e dividido em 2 partes para atender melhor aos requisitos do problema proposto, na primeira parte foram utilizados:
4 interruptores, 5 resistores, 1 potenciômetro, 1 monitor LCD,1 breadboard , e uma placa arduino UNO R3.
Na segunda parte foram utilizados:
1 monitor LCD, 2 potenciômetros, 1 resistor, 1 breadboard, e uma placa arduino UNO R3.

Código (comentado para facilitar o aprendizado) de ambas as partes abaixo:
========================================================================
// Incluindo a biblioteca do lcd.
#include <LiquidCrystal.h>
// Definindo as portas dos interruptores.
#define switchA 11
#define switchB 10
#define switchC 9
#define switchD 8
// Inicializando as portas do lcd.
LiquidCrystal lcd(13, 12, 5, 4, 3, 2);

int y;

void setup()
{
  // Inicializando o monitor serial.
  Serial.begin(9600);
  //Inicializando o lcd.
  lcd.begin(16, 2);

}
// Variável que vai armazenar o valor do caractere inserido.
char rx_byte = 0;
void loop()
{
  //Leitura dos valores dos interruptores.
  int A = digitalRead(switchA);
  int B = digitalRead(switchB);
  int C = digitalRead(switchC);
  int D = digitalRead(switchD);


  //"y" é a variável que inicia o loop(soma das variáveis acima).
  y = A + B + C + D;


  /* Primeiro loop
  responsável por imprimir as instruções quando nenhum
  interruptor está ligado */
  if(y == 0){
    do{
  lcd.print("Use the serial");
  lcd.setCursor(1,1);
  lcd.print("as input");
  lcd.setCursor(2,2);
  delay(2000);
  lcd.clear();
   
  lcd.print("Switch Order");
  lcd.setCursor(1,1);
  delay(2000);
  lcd.clear();
   
  //Modo DECIMAL/VOLTS
  lcd.print("Switch A:");
  lcd.setCursor(1,1);
  lcd.print("DECIMAL");
  lcd.setCursor(2,2);
  delay(2000);
  lcd.clear();

  //Modo BINARIO
  lcd.print("Switch B:");
  lcd.setCursor(1,1);
  lcd.print("BINARY");
  lcd.setCursor(2,2);
  delay(2000);
  lcd.clear();

  // Modo HEXADECIMAL
  lcd.print("Switch C:");
  lcd.setCursor(1,1);
  lcd.print("HEXADECIMAL");
  lcd.setCursor(2,2);
  delay(2000);
  lcd.clear();

  // Modo OCTADECIMAL
  lcd.print("Switch D:");
  lcd.setCursor(1,1);
  lcd.print("OCTADECIMAL");
  lcd.setCursor(2,2);
  delay(2000);
  lcd.clear();
   
   
      break;
    }while(y == 0);
  /* Segundo loop
  responsável por imprimir os dados quando um ou mais interruptores
  estão ligados. */  
  }else if(y >= 1){
    while(y >= 1){
    int A = digitalRead(switchA);
    int B = digitalRead(switchB);
    int C = digitalRead(switchC);
    int D = digitalRead(switchD);
 
    y = A + B + C + D;
   
 
    /*Retorna o número de bytes (caracteres) disponíveis para
    leitura da porta serial, se existir informação a ser lida,
    inicia a variável que armazena o valor do caractere inserido*/ 
    if (Serial.available() > 0) { 
    rx_byte = Serial.read();     
    Serial.print(rx_byte);
      /* Condição que impede a utilização da tabela ASCII
      estendida. */
      if(rx_byte < 0){
      lcd.print("Please don't use");
      lcd.setCursor(1,1);
      lcd.print("extended ASCII");
      lcd.setCursor(2,2);
      delay(1500);
      lcd.clear();
      lcd.print("characters");
      lcd.setCursor(1,1);
      delay(1000);
      lcd.clear();
     
      }else if(rx_byte < 127){
      /* Interruptor A */
      if(A == 1){
        lcd.print("Decimal is");
  lcd.setCursor(1,1);
  lcd.print(rx_byte, DEC);
  lcd.setCursor(2,2);
  delay(1500);
  lcd.clear();
      /* Interruptor B */
      }if(B == 1){
        lcd.print("Binary is");
  lcd.setCursor(1,1);
  lcd.print(rx_byte, BIN);
  lcd.setCursor(2,2);
  delay(1500);
  lcd.clear();
      /* Interruptor C */
      }if(C == 1){
        lcd.print("Hexadecimal is");
  lcd.setCursor(1,1);
  lcd.print(rx_byte, HEX);
  lcd.setCursor(2,2);
  delay(1500);
  lcd.clear();
      /* Interruptor D */
      }if(D == 1){
        lcd.print("Octadecimal is");
  lcd.setCursor(1,1);
  lcd.print(rx_byte, OCT);
  lcd.setCursor(2,2);
  delay(1500);
  lcd.clear();
      }
      }
    }
  }
  }
}
========================================================================

========================================================================
// Biblioteca do LCD
#include <LiquidCrystal.h>
// Definindo pino 7 como constante
#define pinBotao 7
//Definindo portas do LCD
LiquidCrystal lcd(13, 12, 5, 4, 3, 2);
// Variável que armazena a leitura do potenciometro
int x;

void setup()
{
  //Inicializa o monitor serial.
  Serial.begin(9600);
  //Incializa o lcd.
  lcd.begin(16, 2);
  
  
}

void loop()
{
  
  // Leitura da voltagem em decimal.
  x = analogRead(A5);
  //Conversão de decimal para volts.
  float xv = (5.0*x)/1023;
  
  //Impressão dos dados.
  lcd.print("Decimal is");
  lcd.setCursor(1,1);
  //Conversão do "x" para decimal usando uma função da linguagem.
  lcd.print(x, DEC);
  lcd.setCursor(2,2);
  
  delay(1500);
  lcd.clear();
  
  lcd.print("Volts is");
  lcd.setCursor(1,1);
  
  lcd.print(xv);
  lcd.setCursor(2,2);
  
  delay(1500);
  lcd.clear();
  
  lcd.print("Binary is");
  lcd.setCursor(1,1);
  //Conversão do "x" para binário usando uma função da linguagem.
  lcd.print(x, BIN);
  lcd.setCursor(2,2);
  
  delay(1500);
  lcd.clear();

  }

========================================================================

Nícolas Aguiar :
Parte 1 :https://www.tinkercad.com/things/86bECGVU5vG-desafio-2-revisitado-parte1/editel
Parte 2 :https://www.tinkercad.com/things/52QQ8kkabJU-desafio-2-revisitado-parte2

João Pedro Assis :
Parte 1: https://www.tinkercad.com/things/bXYSb8kLpuv-sizzling-crift-blad/editel
Parte 2: https://www.tinkercad.com/things/3Ntb0Rj8s9p-bodacious-vihelmo/editel?tenant=circuits

Isabella Moreira Ide:
Parte 1 : https://www.tinkercad.com/things/kAQXm48G7a5

Comentários

  1. Os links devem estar habilitados. Como nao temos relatorio para este desafio é importante que voce explique cada uma daspostagens realizadas.. Na sua postagem consta a seguinte informação:
    " O desafio 2 foi refeito com o intuito de melhorar a eficiência do programa, o circuito foi separado em duas partes, uma que a tabela ASCII e converte uma entrada de caracteres pelo monitor serial nas seguintes saídas: Binário, Hexadecimal, Octadecimal e Decimal e uma segunda parte que converte o ddp lido no potenciômetro para Binário e Decimal. "

    isto é um diaruo de bordo e vc deve explicar exatamente o que se propoe com este aplicativo.

    Qual é o objetivo deste aplicativo, para que serve? em relação a teoria que vc desenvolveu para será a contribuição deste aplicativo?


    Aqui é o espaço para que vc conte tudo sobre a proposta e o desenvolvimento do aplicativo.

    ResponderExcluir
  2. Deve existir sempre um texto que antecede a programação fazendo um link com as demais postagens existentes na teoria.
    A teoria ainda está bem deficitária e precisa de mais dedicação por parte da equipe.
    Precisa maior dedicação na introdução teórica e nas postagens de natureza "pratica" deve haver correlação e citações do que foi reportado na teoria.

    ResponderExcluir
    Respostas
    1. isso ai é a introdução professora
      eu vou postar o resumo teórico ainda

      Excluir
  3. Quais sao os objetivos deste desafio? Todas as orientaçoes acerca tanto da abordagem teorica quanto experimental deste desafio foram enviadas por meio de video detalhado e na correção estes itens aparecem na planilha de tal modo que devem aparecer no blog do projeto. Alem destes aspectos videos tanto do desafio 1 quanto 2 deveriam estar postados no blog. Trata-se de um projeto para a disciplina

    ResponderExcluir

Postar um comentário