Duda particular bucle for

Hola compis, llevo unos días con un bucle for que no me acaba de funcionar.
El tema es que quiero rellenar un array de enteros con los números que voy asignando en función de la tecla que pulso en un mando a distancia pero no consigo rellenar el array, el valor siempre me devuelve 0 y no consigo ver el problema.
La lógica que sigo es primero asigno los números en función de los códigos que leo del mando a distancia y si el valor asignado es 0 recorro el array y si el valor de esa posición es 0 le asigno el valor del mando a distancia y inicializo a 0 el valor del mando.
Lo que quiero es crear un número pulsando las teclas.
Os dejo el código a ver si me podéis ayudar.

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <Arduino.h>
#include <NECIRrcv.h>
#define IRPIN 8   // pin al que conectamos el receptor de IR
#define I2C_ADDR    0x27
//aux y biblioteca para control remoto mando
static int aux = 1;
NECIRrcv ir(IRPIN) ;

// Variables necesarias
  int valor_mando;  
  int variable[10];
  int ircode;
  long int valor_final;
  int i;

LiquidCrystal_I2C             lcd(I2C_ADDR,2, 1, 0, 4, 5, 6, 7);

void setup() 
{


ir.begin() ;
//
  Serial.begin(9600);
  delay(1000);

lcd.begin (16,2);    
       lcd.setBacklightPin(3,POSITIVE);
       lcd.setBacklight(HIGH);
    
}

void loop() 
{
//Lectura de boton mando a distancia
  unsigned long ircode ;

  while (ir.available()) { 

    ircode = ir.read() ;  

      Serial.println(ircode);
      Serial.println(valor_final);
      Serial.println(valor_mando);
  
     }
    
//Asignar valores según el boton pulsado del mando

switch (ircode)
{
case 4077715200:
  valor_mando=1;

  break;

case 3877175040:
  valor_mando=2;

  break;

case 2707357440:
  valor_mando=3;

  break;

case 4144561920:
  valor_mando=4;

  break;

case 3810328320:
  valor_mando=5;

  break;

case 2774204160:
  valor_mando=6;

  break;

case 3175284480:
  valor_mando=7;

  break;

case 2907897600:
  valor_mando=8;

  break;

case 3041591040:
   valor_mando=9;

  break;

case 3910598400:
  valor_mando=0;

  break;
}

 if (valor_mando !=0) {
  for (i = 0; i < 10 ; i++){
   if (variable[i] =0){
     variable[i]=valor_mando;
      }
    }
  }

    valor_final= variable[1]*10000000 + variable[2]*1000000 + variable[3]*100000 + variable[4]*10000 + variable[5]*1000;
 
    valor_mando=0;
   

  lcd.home();
     lcd.print(valor_final);
      delay(200);


}

Si solo agregas el valor del número pulsado cuando

if (valor_mando !=0) {

¿Qué pasa cuando se cumple

case 3910598400:
    valor_mando=0;

?
¿Cuando pulsas "0" no lo guardas?


Esta sentencia

if (variable[i] =0){

está mal, debería ser

if (variable[i] == 0){

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.