Почему программа не изменяет переменную внутри void();
- Войдите на сайт для отправки комментариев
Сб, 02/11/2019 - 22:22
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)
ну вы же переменную trips нигде не меняете.
поменять строку 55
void CardCheck(int &Trips) {дело в том, что вы передаете внутрь процедуры не саму переменную, а ее копию. И когда вы из копии вычитаете единицу - исходная переменная не меняется