Go Down

Topic: Código para sumador/restador de 2 numeros de 2bits y 3bits (Read 104 times) previous topic - next topic

jhondenns

Jul 10, 2018, 10:32 pm Last Edit: Jul 10, 2018, 11:13 pm by surbyte Reason: Editado el título
Hola soy nuevo con arduino, y estoy buscando un programa para arduino Mega, necesito un código en booleano para que sume 2 números, uno de 2 bits y el otro de 3 bits, y represente en display, si alguien de favor pueda ayudar si lo tiene compartir, o cómo lo podría hacer? me sería de mucha ayuda. Gracias

surbyte

Código no te va a dar nadie hasta que muestres un poco de esfuerzo de tu parte.

Debes sumar dos números pues súmalos, el resultado será correcto.
Los números binarios se representas asi
0b00000000 porque son 8 bits
si tu hablas de 2 bits entonces
0b00000011 es un 3 o sea 2 bits
0b00000111 es un 7 o sea 3 bits


Supongamos que
Code: [Select]
int num1 = 0b01;   // 2 bits
int num2 = 0b07;   // 3 bits


si sumas

Code: [Select]
int suma = num1 + num2;

tendras al imprimierlo en el puerto serie y verlo en el Monitor Serie un resultado correcto.


Por favor lee las normas del foro y no pongas código sin usar etiquetas. Usa preview para asegurarte de hacerlo bien y no le des POST hasta esta seguro que se vea como lo que yo te he respondido.

jhondenns

Ok, muchas gracias, no entendía esa parte de booleano, ahora voy a intentarlo hacer. Gracias

surbyte

Eso no es booleano, solo represente en binario dos números, pero a arduino no le importa, como lo asignas.
Ejemplo

Estas formas son equivalentes

Code: [Select]
int num1 = 0b03;   // 2 bits en binario <= revisa esto si no funciona debería ser asi
int num1 = 0b00000003;  // esa es la forma correcta
int num1 = 0x03;    // 2 bits en hexadecimal
int num1 = 3;         // 2 bits en decimal

jhondenns

Hola que tal, ya hice el sketch, la representación de suma, resta, mutlipicacion, division de los 2 numeros ( 1er de 2bits, y el 2do de 3bits), me imprime bien en binario, el unico problema que tengo es que quiero que me represente en decimal usando CI-7447 Decodificador con 3 displays, aun no logro hacerlo ya que usando las salidas al decodificador y conectado a los displays, me salen caracteres raros. Si fueran muy amable en hecharme una manito. Gracias de antemano.





DEJO EL CODIGO POR AQUI:

Code: [Select]
//Entradas 1er numero (E2, E3); 2do numero (E4, E5, E6); signo (E0, E1):
const int E0 = 2, E1 = 3, E2 = 4, E3 = 5, E4 = 6, E5 = 7, E6 = 8;

//Salidas
const int S0 = 9, S1 = 10, S2 = 11, S3 = 12, S4 = 13, S5 = 44, S6 = 45, S7 = 46;


void setup() {
  // put your setup code here, to run once:

  //Entradas
  pinMode(E6,INPUT_PULLUP);
  pinMode(E5,INPUT_PULLUP);
  pinMode(E4,INPUT_PULLUP);
  pinMode(E3,INPUT_PULLUP);
  pinMode(E2,INPUT_PULLUP);
  pinMode(E1,INPUT_PULLUP);
  pinMode(E0,INPUT_PULLUP);

  //Salidas
  pinMode(S7,OUTPUT);
  pinMode(S6,OUTPUT);
  pinMode(S5,OUTPUT);
  pinMode(S4,OUTPUT);
  pinMode(S3,OUTPUT);
  pinMode(S2,OUTPUT);
  pinMode(S1,OUTPUT);
  pinMode(S0,OUTPUT);

  /*Para iniciar led's apagados*/
  digitalWrite(S7, HIGH);
  digitalWrite(S6, HIGH);
  digitalWrite(S5, HIGH);
  digitalWrite(S4, HIGH);
  digitalWrite(S3, HIGH);
  digitalWrite(S2, HIGH);
  digitalWrite(S1, HIGH);
  digitalWrite(S0, HIGH);

 
}

void loop() {
  /*
   *Entradas negadas para cambiar configuración del pullup
   *cuando se lee estado de la entrada
   */
  bool a = !digitalRead(E0);
  bool b = !digitalRead(E1);
  bool c = !digitalRead(E2);
  bool d = !digitalRead(E3);
  bool e = !digitalRead(E4);
  bool f = !digitalRead(E5);
  bool g = !digitalRead(E6);
 
  //Salida S0 (RESTA)
  if( (a&&b&&c&&d&&!e&&f&&!g) ||  (a&&b&&c&&d&&e&&!f) || (a&&b&&c&&!d&&g) || (a&&b&&c&&e&&g) || (a&&b&&c&&!f&&g) ){
      digitalWrite(S0,LOW);
  }else{
      digitalWrite(S0, HIGH); 
  }

  //Salida S1 (MULTIPLICACIÓN)
  if((!a&&b&&!c&&!d&&g) || (!a&&b&&!d&&f&&g) || (!a&&b&&!c&&f) || (!a&&b&&e)){
      digitalWrite(S1,LOW);
  }else{
      digitalWrite(S1, HIGH); 
  }

  //Salida S2 (DIVISION)
  if((a&&b&&c&&!d&&e&&g) || (a&&c&&d&&e&&f&&g)){
      digitalWrite(S2,LOW);
  }else{
     digitalWrite(S2,HIGH);   
  }

  //Salida S3
  if((!a&&!b&&c&&d&&e&&f&&g) || (a&&!b&&c&&!d&&e&&g) || (a&&b&&c&&!d&&f&&g) ||(a&&!b&&c&&e&&f&&!g) || (a&&c&&d&&e&&!f) ){
      digitalWrite(S3,LOW);
  }else{
      digitalWrite(S3, HIGH);

 //Salida S4
  if((a&&!b&&c&&d&&!e&&f&&g) || (a&&!b&&c&&!d&&e&&!f&&!g) || (!a&&!b&&c&&d&&e&&!f&&g) || (!a&&!b&&!c&&d&&e&&f&&g) || (!a&&!b&&c&&!d&&e&&f) || (!b&&c&&d&&e&&f&&!g)){
      digitalWrite(S4,LOW);
  }else{
     digitalWrite(S4,HIGH);   
  }
   //Salida S5
  if((!a&&!b&&c&&d&&!e&&g) || (!a&&!b&&d&&!e&&f&&g) || (a&&c&&d&&!e&&f&&!g) || (a&&b&&c&&!d&&g) || (!a&&!b&&c&&!e&&f) || (!a&&b&&!d&&e&&f) || (!a&&!b&&!d&&e&&!f) || (!a&&b&&e&&f&&g) || (!a&&!b&&e&&!f&&!g) || (a&&c&&!d&&f&&g) || (!a&&!c&&e&&f&&!g) || (a&&d&&e&&!f&&g) || (!b&&c&&!e&&f&&!g) || (!c&&d&&e&&!f&&g) || (a&&!c&&d&&e) || (!a&&!c&&!d&&e)){
      digitalWrite(S5,LOW);
  }else{
     digitalWrite(S5,HIGH);   
  }
 
 //Salida S6
 if((!a&&b&&!c&&d&&e&&!f&&!g) || (!a&&!b&&c&&d&&!e&&f&&g) || (!a&&b&&c&&d&&!e&&!f) || (a&&!b&&c&&!d&&!e&&g) || (!a&&!b&&!c&&d&&!f&&g) || (!a&&b&&c&&e&&!f&&g) || (a&&c&&d&&!e&&!f&&g) || (a&&c&&!d&&e&&f&&!g) || (b&&c&&d&&e&&f&&!g) || (b&&c&&!d&&e&&!f&&!g) || (!b&&c&&d&&e&&!f&&!g) || (a&&b&&c&&d&&e) || (!a&&!b&&c&&!d&&!f) || (!a&&b&&!c&&f&&g) || (!a&&c&&!e&&!f&&!g) || (a&&d&&!e&&f&&!g) || (!b&&!c&&d&&f&&!g) || (a&&!c&&d&&f) || (!a&&!c&&!d&&f)){
 digitalWrite(S6,LOW);
  }else{
    digitalWrite(S6,HIGH);
    }
   
  //Salida S7
     if((b&&c&&d&&e&&!f&&!g) || (a&&b&&c&&!d&&f) || (a&&!b&&d&&g) || (a&&!c&&d&&g) || (a&&d&&!e&&g) || (a&&d&&f&&g) || (b&&c&&!d&&g) || (!a&&d&&!g) || (!a&&!d&&g)){
 digitalWrite(S7,LOW);
  }else{
    digitalWrite(S7,HIGH);
    }
   
 
  }

}

Go Up