Почему программа не изменяет переменную внутри 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
дело в том, что вы передаете внутрь процедуры не саму переменную, а ее копию. И когда вы из копии вычитаете единицу - исходная переменная не меняется