Почему программа не изменяет переменную внутри void();

BlackHacker_YT
Offline
Зарегистрирован: 02.11.2019
int show;

int trips = 15;      // Кол-во поездок
int trips2 = 5;

float timeout = 1.5; // Тайм-аут В СЕКУНДАХ

#include <SPI.h>
#include <MFRC522.h> // библиотека "RFID".

#define SS_PIN 10
#define RST_PIN 9

MFRC522 mfrc522(SS_PIN, RST_PIN);
unsigned long uidDec, uidDecTemp;  // для храниения номера метки в десятичном формате

void setup() {
Serial.begin(9600);
Serial.println("Приложите билет!");
Serial.println();
Serial.println();
SPI.begin();  //  инициализация SPI / Init SPI bus.
mfrc522.PCD_Init();     // инициализация MFRC522 / Init MFRC522 card.

}
void loop() {
// Поиск новой метки
if ( ! mfrc522.PICC_IsNewCardPresent()) {
  return;
}
// Выбор метки
if ( ! mfrc522.PICC_ReadCardSerial()) {
  return;
}
uidDec = 0;
// Выдача серийного номера метки.
for (byte i = 0; i < mfrc522.uid.size; i++)
{
  uidDecTemp = mfrc522.uid.uidByte[i];
  uidDec = uidDec * 256 + uidDecTemp;
}

switch (uidDec) {
  case 0123456789:
  CardCheck(trips);
  break;

  case 9876543210:
  CardCheck(trips2);
  break;
}

}

int CardCheck(int Trips) {
  int show = Trips - 1;
  if (Trips > 0) {
    show = Trips - 1;
    Serial.println("ПРОХОДИТЕ!");
    Serial.println("Осталось: " + String(show) + " поездок");
    Serial.println();
    Serial.println();
    Trips--;
    delay(timeout * 1000);
  }else{
    Serial.println("НА ВАШЕМ СЧЁТЕ НЕ ОСТАЛОСЬ ПОЕЗДОК!!!");
    Serial.println("(Ткните RESET на ардуинке)");
    Serial.println();
    Serial.println();
    delay(timeout * 1000);
  }
}

Код /\ /\ /\
 

Когда я прикладываю карту к считывателю 2 раз то на выводе по прежнему остаётся число 14 (в переменной trips - 15)

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

ну вы же переменную trips нигде не меняете.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

поменять строку 55 

void CardCheck(int &Trips) {

 

b707
Онлайн
Зарегистрирован: 26.05.2017

дело в том, что вы передаете внутрь процедуры не саму переменную, а ее копию. И когда вы из копии вычитаете единицу - исходная переменная не меняется