как менять (инвертировать) переменную var?
- Войдите на сайт для отправки комментариев
Чт, 04/02/2016 - 15:40
подскажите, как правильно записать инверсию var=1 и var=2 на примере: digitalWrite(13,!digitalRead(13));?
var=1(!var=2); что то типа этого, не знаю, как правильно
Как менять-то? С 1 на 2 и наоборот? Ну, также точно, как и rav
rav = 3 - rav;
Или что-то другое надо?
Бог знает что Вы подразумеваете под инверсией, если предположить по примеру, что речь о лигическом отрицании, то читать здесь:
http://arduino.ru/Reference/Boolean
а еще есть и другие варианты: var1 = var2 ^ 0xFF; var1 = ~var2; var1 = !var2;
Вот часть кода, где при нажатии на кнопку я должен выйти в меню, на повторное нажатие выйти в основную функцию
int var; if (buttonState3 == HIGH && flag == 0) { var=1(!var=2); lcd.clear(); flag = 1; } if (buttonState3 == LOW && flag == 1) { flag = 0; } switch (var) { case 1: lcd.setCursor(3, 0); lcd.print("MENU"); lcd.setCursor(1, 1); lcd.print("t="); lcd.setCursor(4, 1);Можно так:
var=(var==1)?2:1;
или так
var ^= 3;
Спасибо большое, но не помогло, скорее всего сам что-то закосячил
переделал так:
int var; if (buttonState3 == HIGH && flag == 0) { flag = 1; var=2; lcd.clear(); } if (buttonState3 == HIGH && flag == 1) { flag = 2; var=1; lcd.clear(); } if (buttonState3 == HIGH && flag == 2) { flag = 0; }Но все равно, кнопка не нажата - выполняется var2, var1 выполняется только при удерживании кнопки, почему то не фиксируется
А в чем глубинный смысл присваивать переменной var значения 1 и 2? Если чисто сила привычки - то таки скажу что с точки зрения машины логичнее использовать булевы выражения - т.е. 0 и 1. А использование 2,3 и далее - если действительно нужен многовариантный выбор.
byte var=0; while(1) { if(button && !var) { var=!var; void func1(); } if(button&&var) { var=!var; void func2(); } }ну делай между чтениями кнопки для устранения дребезга.
спасибо
подскажите, как правильно записать инверсию var=1 и var=2 на примере: digitalWrite(13,!digitalRead(13));?
var=1(!var=2); что то типа этого, не знаю, как правильно
var = !var ;
если кнопка не на прерывании, в момент нажатия может гулять/ждать(delay) где-то в другом месте по ходу программы, т.к. при длительном нажатии срабатывает
В цикле после ифов delay() на 300-500мс. Я так делал для устранения дребезгов. Хотя иногда приходится секунду держать кнопку ;) но мне техзадание позволяет ;)
Подскажите, побитовые операнды применимы к типам любой длины или только 8-bit?
Т.е. будет ли корректным например:
А не дольше ли ждать ответа, чем попробовать? Или без форума ни-ни?