Как присвоить кнопке геймпада PS2 оператор break?

Wolff_2020
Offline
Зарегистрирован: 04.02.2021

Есть рабочий скетч управления шасси танка.

Пытаюсь доработать и не могу понять один момент:

#include <PS2X_lib.h>

// всё работает и упраляется

void setup(){

........
void loop(){
.......
//часть скетча с которой проблема
int ttt = 0;

if(ps2x.ButtonPressed(PSB_L1))  {   
 for (;int ttt = 70;){
 Serial.println(ttt);
 if(ps2x.ButtonPressed(PSB_R1)) {
   break;
 
 }
  delay(50);
  }
  }

ttt - величина задаётся клавишей PSB_L1 (геймпад PS2),  а клавишей PSB_R1 её обратно в "0".

Вопрос: как остановить бесконечный цикл?

значение "70" присваивается.

if(ps2x.ButtonPressed(PSB_R1)) break; прерывание может по другому пишется?  

b707
Offline
Зарегистрирован: 26.05.2017

Чтобы оператор button.pressed() сработал, нужно еще регулярно проверять кнопку, чего в коде нет.
И в условии оператора for ошибка, хотя на результат не влияет

Wolff_2020
Offline
Зарегистрирован: 04.02.2021

Уважаемый, Ваша стоимость подсказки?

sadman41
Offline
Зарегистрирован: 19.10.2016

Не знаю, зачем там бесконечный цикл, но, наверное, как-то так надо:

do {
  ps2x.read_gamepad();
} while (!ps2x.ButtonPressed(PSB_R1));

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Wolff_2020, объясните, пожалуйста, внятно, что написано (или что Вы хотели написать) в строке №14.

Wolff_2020
Offline
Зарегистрирован: 04.02.2021

после выполнения строки 14, нажав 1 раз PSB_L1, ttt постоянно = 70, а нажав PSB_R1 должно поменяться на 250 и наоборот

Wolff_2020
Offline
Зарегистрирован: 04.02.2021

до меня не доходит присвоение кнопками (одним нажатием) переменной значений

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Wolff_2020 пишет:

до меня не доходит присвоение кнопками (одним нажатием) переменной значений

А разве сложно перед строкой 17 вставить ttt = 0;

Только действительно наличие цикла там вызывает удивление

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Wolff_2020 пишет:

после выполнения строки 14, ...

Я спросил Вас что написано в строке №14, а не что происходит после неё.

Пока Вы не ответите внятно на этот вопрос, Вы не сможете ничего исправить.

Wolff_2020
Offline
Зарегистрирован: 04.02.2021

в таком виде значения 70 и 250 только при нажатых кнопках

int ttt = 0;

if(ps2x.Button(PSB_L1))  {   
ttt = 70;
Serial.println(ttt);
  delay(50);

  }
  
 if(ps2x.Button(PSB_L2))  {   
 ttt = 250; 
 Serial.println(ttt);
  delay(50);
  }

а мне нужно чтобы значения фиксировались после отпускания

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

В первой строке - static int ttt = 0;

Wolff_2020
Offline
Зарегистрирован: 04.02.2021

ОППА!!!!!!!!!!!!!!! заработало!!!!!!!!!!!!!!!

v258 Спасибо!!!