Почто ребенка учишь плохому - пользовать операцию "запятая", там где оно не требуется и только путает?C:void loop() { msg[0] = !digitalRead(BTN0_PIN) + !(digitalRead(BTN1_PIN) << BTN1_BIT) + !(digitalRead(BTN7_PIN) << BTN7_BIT); val_1 = analogRead(potpin_1)[B][COLOR=rgb(209, 72, 65)],[/COLOR][/B] val_1 = map(val_1, 0, 1023, 0, 127)[B][COLOR=rgb(209, 72, 65)],[/COLOR][/B] msg[1] = val_1; val_2 = analogRead(potpin_2)[COLOR=rgb(209, 72, 65)][B],[/B][/COLOR] val_2 = map(val_2, 0, 1023, 128, 254)[COLOR=rgb(209, 72, 65)][B],[/B][/COLOR] msg[2] = val_2,radio.write(msg, sizeof(msg)); }
Можно жеж и так записать:
C:
struct _msg_ {
struct _btns_ {
uint_8t btn1 : 1;
uint_8t btn2 : 1;
uint_8t unused : 5;
uint_8t tbn7 : 1;
} btns;
uint8_t potpin1, potpin2;
} msg;
void loop() {
msg.bnts.btn1 = !digitalRead(BTN0_PIN);
msg.btns.bnt2 = !digitalRead(BTN1_PIN);
msg.btns.btn7 = !digitalRead(BTN7_PIN);
msg.potpin1 = map( analogRead(potpin_1), 0, 1023, 0, 127);
msg.potpin2 = map( analogRead(potpin_2), 0, 1023, 128, 254);
radio.write(msg, sizeof(msg));
}
// не помню, позволяет ли С/С++ такой вариант присваивания:
msg = {
{ !digitalRead(BTN0_PIN), !digitalRead(BTN1_PIN), 0, !digitalRead(BTN7_PIN) },
map( analogRead(potpin_1), 0, 1023, 0, 127),
map( analogRead(potpin_2), 0, 1023, 128, 254)
};
Изменено: