I have an array of hexadecimal values as given below.
byte Hexa_Val[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
I want to increase this array from the end. As in, go from {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} all the way to {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, and then increase the value next to it to {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00}, and continue. The increment should go as shown below.
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}
.
.
.
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00}
.
.
.
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF}
{0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00}
.
.
.
{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}
The code I am came up with is
byte Hexa_Val[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
void setup() {
Serial.begin(115200);
}
void loop() {
Hexa_Val[7] = Hexa_Val[7] + 1;
if(Hexa_Val[7] = 0xFF){
Hexa_Val[6] = Hexa_Val[6] + 1;
Hexa_Val[7] = 0x00;
}
if((Hexa_Val[7] = 0xFF) && (Hexa_Val[6] = 0xFF)){
Hexa_Val[5] = Hexa_Val[5] + 1;
Hexa_Val[7] = 0x00;
Hexa_Val[6] = 0x00;
}
if((Hexa_Val[7] = 0xFF) && (Hexa_Val[6] = 0xFF) && (Hexa_Val[5] = 0xFF)){
Hexa_Val[4] = Hexa_Val[4] + 1;
Hexa_Val[7] = 0x00;
Hexa_Val[6] = 0x00;
Hexa_Val[5] = 0x00;
}
if((Hexa_Val[7] = 0xFF) && (Hexa_Val[6] = 0xFF) && (Hexa_Val[5] = 0xFF) && (Hexa_Val[4] = 0xFF)){
Hexa_Val[3] = Hexa_Val[3] + 1;
Hexa_Val[7] = 0x00;
Hexa_Val[6] = 0x00;
Hexa_Val[5] = 0x00;
Hexa_Val[4] = 0x00;
}
if((Hexa_Val[7] = 0xFF) && (Hexa_Val[6] = 0xFF) && (Hexa_Val[5] = 0xFF) && (Hexa_Val[4] = 0xFF) && (Hexa_Val[3] = 0xFF)){
Hexa_Val[2] = Hexa_Val[2] + 1;
Hexa_Val[7] = 0x00;
Hexa_Val[6] = 0x00;
Hexa_Val[5] = 0x00;
Hexa_Val[4] = 0x00;
Hexa_Val[3] = 0x00;
}
if((Hexa_Val[7] = 0xFF) && (Hexa_Val[6] = 0xFF) && (Hexa_Val[5] = 0xFF) && (Hexa_Val[4] = 0xFF) && (Hexa_Val[3] = 0xFF) && (Hexa_Val[2] = 0xFF)){
Hexa_Val[1] = Hexa_Val[1] + 1;
Hexa_Val[7] = 0x00;
Hexa_Val[6] = 0x00;
Hexa_Val[5] = 0x00;
Hexa_Val[4] = 0x00;
Hexa_Val[3] = 0x00;
Hexa_Val[2] = 0x00;
}
if((Hexa_Val[7] = 0xFF) && (Hexa_Val[6] = 0xFF) && (Hexa_Val[5] = 0xFF) && (Hexa_Val[4] = 0xFF) && (Hexa_Val[3] = 0xFF) && (Hexa_Val[2] = 0xFF) && (Hexa_Val[1] = 0xFF)){
Hexa_Val[0] = Hexa_Val[0] + 1;
Hexa_Val[7] = 0x00;
Hexa_Val[6] = 0x00;
Hexa_Val[5] = 0x00;
Hexa_Val[4] = 0x00;
Hexa_Val[3] = 0x00;
Hexa_Val[2] = 0x00;
Hexa_Val[1] = 0x00;
}
if((Hexa_Val[7] = 0xFF) && (Hexa_Val[6] = 0xFF) && (Hexa_Val[5] = 0xFF) && (Hexa_Val[4] = 0xFF) && (Hexa_Val[3] = 0xFF) && (Hexa_Val[2] = 0xFF) && (Hexa_Val[1] = 0xFF) && (Hexa_Val[0] = 0xFF)){
Hexa_Val[7] = 0x00;
Hexa_Val[6] = 0x00;
Hexa_Val[5] = 0x00;
Hexa_Val[4] = 0x00;
Hexa_Val[3] = 0x00;
Hexa_Val[2] = 0x00;
Hexa_Val[1] = 0x00;
Hexa_Val[0] = 0x00;
}
//to find out what I am sending
for( byte a=0; a<8; a++ ) {
Serial.print(Hexa_Val[a], HEX);
}
Serial.println();
delay(500);
}
But it just gives me zeros in the serial monitor. If I just leave the first two IF statements
byte Hexa_Val[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
void setup() {
Serial.begin(115200);
}
void loop() {
Hexa_Val[7] = Hexa_Val[7] + 1;
if(Hexa_Val[7] = 0xFF){
Hexa_Val[6] = Hexa_Val[6] + 1;
Hexa_Val[7] = 0x00;
}
if((Hexa_Val[7] = 0xFF) && (Hexa_Val[6] = 0xFF)){
Hexa_Val[5] = Hexa_Val[5] + 1;
Hexa_Val[7] = 0x00;
Hexa_Val[6] = 0x00;
}
//to find out what I am sending
for( byte a=0; a<8; a++ ) {
Serial.print(Hexa_Val[a], HEX);
}
Serial.println();
delay(500);
}
The increment will start from the third value on the right. Something like
00000200
00000300
00000400
00000500
00000600
00000700
How do I get it to increase as I mentioned at the beginning? Why does the code recognize 0xFF
as a zero?
if
comparesHexa_val[7]
with 0xFF, but the first has already reset it to 0.