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);
}