void setup() {
Serial.begin(9600);
// get data from Serial.readStringUntil('\n'); to memory
String data="FFFFFFFF 00FFFFFF 0000FFFF 000000FF";
// store length of data
int iend = data.length() - 1;
// current begin index
int index=0;
// next index
int next_index;
do{
next_index=data.indexOf(' ',index);
String hexcode=data.substring(index, next_index);
index=next_index+1;
unsigned long bigNumber = (unsigned long)strtoul(hexcode.c_str(), 0, 16);
// add number to array
Serial.println(bigNumber);
}while((next_index!=-1)&&(next_index<iend));
}
void loop() {
}
After some time of googling, i found interesting solution, how to get and set pins as bits in arduino
union myunion {
struct {
unsigned int b7: 1;
unsigned int b6: 1;
unsigned int b5: 1;
unsigned int b4: 1;
unsigned int b3: 1;
unsigned int b2: 1;
unsigned int b1: 1;
unsigned int b0: 1;
};
unsigned int num;
} mu;
with this union with struct, we can read pins to 1 big number invidual bits and display it on for example - led's in binary.
// parallel to serial
// serial to parallel
union mu1 {
struct {
unsigned int b7: 1;
unsigned int b6: 1;
unsigned int b5: 1;
unsigned int b4: 1;
unsigned int b3: 1;
unsigned int b2: 1;
unsigned int b1: 1;
unsigned int b0: 1;
};
unsigned int num;
} mu;
void setup() {
Serial.begin(9600);
}
void loop() {
mu.b0 = digitalRead(2); // switch 1
mu.b1 = digitalRead(3); // switch 2
mu.b2 = digitalRead(4); // switch 3
mu.b3 = digitalRead(5); // switch 4
mu.b4 = digitalRead(6); // switch 5
mu.b5 = digitalRead(7); // switch 6
mu.b6 = digitalRead(8); // switch 7
mu.b7 = digitalRead(9); // switch 8
Serial.println(mu.num);
delay(5000);
}
thats it. union acts as "shift in" and "shift out" register, if you set mu.num than you can read individual bits(pins) if you set pins you can read mu.num and it works then like shift in register.