Arduino, я не могу заставить это утверждение работать

int val1 = 0;
byte val2 = 10;
int buttonPin = A0;
byte result = 0;

void setup() {
    Serial.begin(115200);
}

void loop() {
    val1 = digitalRead(buttonPin);

    if (buttonPin == HIGH) {
        result = result + val2;
        result = result + 10;
    } 
    else
    {
        digitalWrite(val1, LOW);
    }

    Serial.print("STATE   ");
    Serial.print(val1);
    Serial.print("    ");
    Serial.print(result);
    Serial.println();

    delay(100);
}

, 👍-3

Обсуждение

зачем ты выложил код? ... что означает название вашего поста?, @jsotola

Я пытаюсь увеличить значение результата на 10 каждый раз, когда кнопка находится на высоком уровне., @Aimless

вы не сказали, в чем проблема ... это все равно, что отнести свой автомобиль к механику и сказать: «у него проблема» ... как вы думаете, что механик отремонтирует?, @jsotola

что значит "кнопка высокая"?, @jsotola

Пожалуйста, [отредактируйте] свой вопрос вместо того, чтобы помещать дополнительную информацию в комментарий. Вы же не хотите тратить наше время? Вы надеетесь, что мы думаем о вашей проблеме. Кстати, какой у вас вопрос?, @the busybee

Одна из проблем вашего кода заключается в том, что вы сравниваете номер контакта кнопки с ВЫСОКИМ, а не с состоянием кнопки чтения. Напишу ответ, когда вы сделаете свой вопрос более ясным, так как я думаю, что это не решит вашу проблему полностью, @chrisl

Мне жаль говорить, что ваш код - полная авария поезда. Я знаю, вы еще учитесь, но там так много ошибок, что даже новичок, потративший всего несколько минут на чтение документации и примеров, избежал бы их, что это просто совершенно неисправимо., @Majenko


1 ответ


3

Похоже, вы хотите увеличивать результат на val2 при каждом нажатии кнопки. Если вы хотите подключить его таким образом, вы можете, но есть потенциальные проблемы с этим, например, не ловить каждый раз, когда вы нажимаете кнопку, или думать, что вы нажали кнопку дважды, когда вы случайно удерживали ее нажатой более 100 мс. Код этого метода приведен ниже:

const int buttonPin = A0;
bool buttonState = LOW;
int val = 10;
int result = 0;

void setup()
{
  pinMode(buttonPin,INPUT);
  Serial.begin(115200);
}

void loop()
{
    buttonState = digitalRead(buttonPin);

    if (buttonState == HIGH)
    {
        result = result + val;
    } 

    Serial.print("STATE:   ");
    Serial.print(buttonState);
    Serial.print("\t");
    Serial.print("RESULT:  ");
    Serial.print(result);
    Serial.println();

    delay(100);
}

Способ предотвращения двойного подсчета или отсутствия подсчета заключается в использовании прерываний. Позже я могу написать об этом, если вам это нужно.

Удачи!

,

Я использую функцию void для увеличения значения. Спасибо, ребята, помогите, @Aimless