Przeszukaj forum
Pokazywanie wyników dla tagów 'time'.
Znaleziono 1 wynik
-
Cześć, mam problem ze swoim małym projektem - Rejestrator Czasu Pracy. Jestem początkującym w programowaniu oraz w zabawach z Arduino. Przechodząc do głównego problemu zaprezentuje wam kawałek kodu w którym utknąłem. void loop() { // Sprawdzamy, czy są nowe karty if ( mfrc522.PICC_IsNewCardPresent()) { //odczyt karty if ( mfrc522.PICC_ReadCardSerial()){ unsigned long czasStart1 = 0; unsigned long czasStop1 = 0; unsigned long czas1 = 0; unsigned long czasStart2 = 0; unsigned long czasStop2 = 0; unsigned long czas2 = 0; tone(8, 2000, 100); if (mfrc522.uid.uidByte[0] == 0x09 && mfrc522.uid.uidByte[1] == 0x87 && mfrc522.uid.uidByte[2] == 0xF3 && mfrc522.uid.uidByte[3] == 0x97&& odczyt1 == 0){ lcd.setCursor(0,2); lcd.print("Wejscie "); Serial.print("Wejscie "); odczyt1++; unsigned long czasStart1 = millis(); Serial.print(dayOfMonth, DEC); Serial.print("/"); Serial.print(month, DEC); Serial.print("/"); Serial.print(year, DEC); Serial.print(" "); if (hour<10) { Serial.print("0"); Serial.print(hour, DEC); } else { Serial.print(hour, DEC); } Serial.print(":"); if (minute<10) { Serial.print("0"); Serial.print(minute, DEC); } else { Serial.print(minute, DEC); } Serial.print(" "); lcd.setCursor(0,3); Serial.println("Jan Nowak "); lcd.print("Jan Nowak "); delay(1000); lcd.clear(); } else if (mfrc522.uid.uidByte[0] == 0x09 && mfrc522.uid.uidByte[1] == 0x87 && mfrc522.uid.uidByte[2] == 0xF3 && mfrc522.uid.uidByte[3] == 0x97&& odczyt1 == 1){ lcd.setCursor(0,2); odczyt1=odczyt1-1; unsigned long czasStop1 = millis(); unsigned long Czas1 = czasStop1 - czasStart1; unsigned long Czas_w_s1 = Czas1 / 1000; unsigned long posrednie = (Czas_w_s1/3600)*60; unsigned long Czas_w_h1 = Czas_w_s1/3600; unsigned long Czas_w_m1 = (posrednie%60); lcd.print("Wyjscie"); Serial.print("Wyjscie "); Serial.print(dayOfMonth, DEC); Serial.print("/"); Serial.print(month, DEC); Serial.print("/"); Serial.print(year, DEC); Serial.print(" "); if (hour<10) { Serial.print("0"); Serial.print(hour, DEC); } else { Serial.print(hour, DEC); } Serial.print(":"); if (minute<10) { Serial.print("0"); Serial.print(minute, DEC); } else { Serial.print(minute, DEC); } Serial.print(" "); lcd.print(" Time "); Serial.print("Jan Nowak "); Serial.print("Czas pracy "); if (Czas_w_h1 < 10) { lcd.print("0"); Serial.print("0"); lcd.print(Czas_w_h1, DEC); Serial.print(Czas_w_h1, DEC); } else { lcd.print(Czas_w_h1, DEC); Serial.print(Czas_w_h1, DEC); } lcd.print(":"); Serial.print(":"); if (Czas_w_m1<10) { lcd.print("0"); Serial.print("0"); lcd.print(Czas_w_m1, DEC); Serial.print(Czas_w_m1, DEC); Serial.println(" "); } else { lcd.print(Czas_w_m1, DEC); Serial.print(Czas_w_m1, DEC); Serial.println(" "); } lcd.setCursor(0,3); lcd.print("Jan Nowak "); delay(3000); lcd.clear(); } To jest prosty projekt do szkoły. Mam dwóch pracowników, którzy po przyjściu do pracy "odbijają się" czytnikiem. Na wyświetlaczu jest cały czas wyświetlona data, godzina oraz dzień tygodnia. Jeżeli odbiją się pierwszy raz to wyświetla się "Wejście" do pracy oraz imię i nazwisko pracownika. Jeżeli odbiją się drugi raz to zmienia się "Wejście" na "Wyjście" wyświetla się imię, nazwisko, oraz przepracowany czas!!!! No i tu są schody. Podczas pierwszego odbicia sczytuję unsigned long czasStart1 = millis(); podczas drugiego odbicia sczytuję unsigned long czasStop1 = millis(); oraz chcę od czasStop1-czasStart1 aby wyliczyć czas pracy pracownika. To wszystko jest robione w jednej funkcji void loop() { .... } ale nie przekazuje mi zmiennej czasStart1. Pomocy, jak to mogę rozwiązać inaczej?