Како направити РФИД систем присуства

Испробајте Наш Инструмент За Елиминисање Проблема





У овом посту ћемо изградити РФИД систем присуства, који може да евидентира присуство 12 ученика / запослених у датом временском периоду, а овај систем може да евидентира до 255 присуства по особи.

Шта је РФИД систем за присуство

Не треба нам никакво представљање у вези са системом похађања заснован на РФИД-у, он се користи у колеџима, канцеларијама, библиотекама да би се знало колико пута је особа или колико људи ушло и изашло у које време.



У овом пројекту ћемо изградити најједноставнији систем присуства заснован на РФИД-у који не прекомплицира пројекат.

У овом пројекту користићемо РТЦ модул који се користи за омогућавање и онемогућавање система похађања у одређеном временском периоду, тако да можемо задржати оне који касне.



РФИД модул „РФИД-РЦ522“ који може да врши операције читања и писања на НКСП РФИД ознакама. НКСП је водећи светски произвођач РФИД ознака и лако их можемо добити у мрежним и офлајн продавницама.

Користи се ЛЦД екран од 16 к 2, који представља податке попут времена, датума, броја похађања итд.

И на крају се користи Ардуино плоча која је мозак пројекта . Можете одабрати било коју верзију плоче.

Пређимо сада на шематске дијаграме:

Прикључак Ардуино на ЛЦД екран:

Само повежите ожичење према доњем дијаграму и користите потенциометар од 10 килограма да прилагодите контраст.

Повезивање Ардуино-а са РФИД модулом:

РФИД модул се мора напајати од 3,3 В, а 5 В може оштетити компоненте на броду. Модул РФИД-РЦ522 ради на СПИ комуникационом протоколу док комуницира са Ардуином.

Остатак кола:

Ардуино се може напајати преко 9В зидног адаптера. Постоје звучни сигнал и ЛЕД индикатор који указују на откривање картице. На располагању су 4 тастера за преглед присутности, брисање меморије и тастери „да“ и „не“.

То закључује хардверски део.

Преузмите следеће датотеке библиотеке:

Линк1: гитхуб.цом/ПаулСтоффреген/ДС1307РТЦ

Линк2: гитхуб.цом/ПаулСтоффреген/Тиме

Линк3: гитхуб.цом/мигуелбалбоа/рфид.гит

Сада морамо да подесимо тачно време за РТЦ модул да бисмо то урадили, следите кораке у наставку са завршеним постављањем хардвера.

  • Отворите Ардуино ИДЕ.
  • Дођите до Датотека> Примери> ДС1307РТЦ> СетТиме.
  • Отпремите код.

Једном када се код учита у Ардуино, отворите серијски монитор . Сада је РТЦ синхронизован са временом вашег рачунара.

Сада морате да пронађете УИД или јединствени идентификациони број свих 12 РФИД картица / ознака. Да бисте пронашли УИД, отпремите доњи код и отворите серијски монитор.

//-------------------------Program developed by R.Girish------------------//
#include
#include
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN)
MFRC522::MIFARE_Key key
void setup()
{
Serial.begin(9600)
SPI.begin()
rfid.PCD_Init()
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent())
return
if ( ! rfid.PICC_ReadCardSerial())
return
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak)
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K)
{
Serial.println(F('Your tag is not of type MIFARE Classic, your card/tag can't be read :('))
return
}
String StrID = ''
for (byte i = 0 i <4 i ++)
{
StrID +=
(rfid.uid.uidByte[i] <0x10 ? '0' : '') +
String(rfid.uid.uidByte[i], HEX) +
(i != 3 ? ':' : '' )
}
StrID.toUpperCase()
Serial.print('Your card's UID: ')
Serial.println(StrID)
rfid.PICC_HaltA ()
rfid.PCD_StopCrypto1 ()
}
//-------------------------Program developed by R.Girish------------------//

  • Отворите серијски монитор.
  • Скенирајте картицу / ознаку на РФИД модулу.
  • Сада ћете видети неки хексадецимални код за сваку картицу.
  • Запишите, те податке ћемо унети у следећи програм.

Главни програм:

//-------------------------Program developed by R.Girish------------------//
#include
#include
#include
#include
#include
#include
#include
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN)
MFRC522::MIFARE_Key key
const int rs = 7
const int en = 6
const int d4 = 5
const int d5 = 4
const int d6 = 3
const int d7 = 2
const int LED = 8
boolean ok = false
LiquidCrystal lcd(rs, en, d4, d5, d6, d7)
const int list = A0
const int CLM = A1
const int yes = A2
const int no = A3
int H = 0
int M = 0
int S = 0
int i = 0
int ID1 = 0
int ID2 = 0
int ID3 = 0
int ID4 = 0
int ID5 = 0
int ID6 = 0
int ID7 = 0
int ID8 = 0
int ID9 = 0
int ID10 = 0
int ID11 = 0
int ID12 = 0
char UID[] = ''
// **************************** SETTINGS ************************ //
// ------ From -------- // (Set the time range for attendance in hours 0 to 23)
int h = 21 // Hrs
int m = 00 // Min
// ------- To ------- //
int h1 = 21 // Hrs
int m1 = 50 //Min
// ---------------- SET UIDs ----------------- //
char UID1[] = 'F6:97:ED:70'
char UID2[] = '45:B8:AF:C0'
char UID3[] = '15:9F:A5:C0'
char UID4[] = 'C5:E4:AD:C0'
char UID5[] = '65:1D:AF:C0'
char UID6[] = '45:8A:AF:C0'
char UID7[] = '15:9F:A4:C0'
char UID8[] = '55:CB:AF:C0'
char UID9[] = '65:7D:AF:C0'
char UID10[] = '05:2C:AA:04'
char UID11[] = '55:7D:AA:04'
char UID12[] = 'BD:8A:16:0B'
// -------------- NAMES -----------------------//
char Name1[] = 'Student1'
char Name2[] = 'Student2'
char Name3[] = 'Student3'
char Name4[] = 'Student4'
char Name5[] = 'Student5'
char Name6[] = 'Student6'
char Name7[] = 'Student7'
char Name8[] = 'Student8'
char Name9[] = 'Student9'
char Name10[] = 'Student10'
char Name11[] = 'Student11'
char Name12[] = 'Student12'
// ********************************************************** //
void setup()
{
Serial.begin(9600)
lcd.begin(16, 2)
SPI.begin()
rfid.PCD_Init()
pinMode(yes, INPUT)
pinMode(no, INPUT)
pinMode(list, INPUT)
pinMode(LED, OUTPUT)
pinMode(CLM, INPUT)
digitalWrite(CLM, HIGH)
digitalWrite(LED, LOW)
digitalWrite(yes, HIGH)
digitalWrite(no, HIGH)
digitalWrite(list, HIGH)
}
void loop()
{
if (digitalRead(list) == LOW)
{
Read_data()
}
if (digitalRead(CLM) == LOW)
{
clear_Memory()
}
tmElements_t tm
if (RTC.read(tm))
{
lcd.clear()
H = tm.Hour
M = tm.Minute
S = tm.Second
lcd.setCursor(0, 0)
lcd.print('TIME:')
lcd.print(tm.Hour)
lcd.print(':')
lcd.print(tm.Minute)
lcd.print(':')
lcd.print(tm.Second)
lcd.setCursor(0, 1)
lcd.print('DATE:')
lcd.print(tm.Day)
lcd.print('/')
lcd.print(tm.Month)
lcd.print('/')
lcd.print(tmYearToCalendar(tm.Year))
delay(1000)
} else {
if (RTC.chipPresent())
{
lcd.setCursor(0, 0)
lcd.print('RTC stopped!!!')
lcd.setCursor(0, 1)
lcd.print('Run SetTime code')
} else {
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Read error!')
lcd.setCursor(0, 1)
lcd.print('Check circuitry!')
}
}
if (H == h)
{
if (M == m)
{
ok = true
}
}
if (H == h1)
{
if (M == m1)
{
ok = false
}
}
if ( ! rfid.PICC_IsNewCardPresent())
return
if ( ! rfid.PICC_ReadCardSerial())
return
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak)
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K)
{
Serial.println(F('Your tag is not of type MIFARE Classic, your card/tag can't be read :('))
}
String StrID = ''
for (byte i = 0 i <4 i ++)
{
StrID +=
(rfid.uid.uidByte[i] <0x10 ? '0' : '') +
String(rfid.uid.uidByte[i], HEX) +
(i != 3 ? ':' : '' )
}
StrID.toUpperCase()
if (ok == false)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Attendance is')
lcd.setCursor(0, 1)
lcd.print('Closed.')
delay(1000)
}
if (ok)
{
//-----------------------------------//
if (StrID == UID1)
{
ID1 = EEPROM.read(1)
ID1 = ID1 + 1
if (ID1 == 256)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Memory is Full')
lcd.setCursor(0, 1)
lcd.print('Please Clear All.')
for (i = 0 i <20 i++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
i = 0
return
}
if (ID1 != 256)
{
EEPROM.write(1, ID1)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Your Attendance')
lcd.setCursor(0, 1)
lcd.print('Registered !!!')
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
return
}
}
//-----------------------------------//
if (StrID == UID2)
{
ID2 = EEPROM.read(2)
ID2 = ID2 + 1
if (ID2 == 256)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Memory is Full')
lcd.setCursor(0, 1)
lcd.print('Please Clear All.')
for (i = 0 i <20 i++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
i = 0
return
}
if (ID2 != 256)
{
EEPROM.write(2, ID2)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Your Attendance')
lcd.setCursor(0, 1)
lcd.print('Registered !!!')
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
return
}
}
//-----------------------------------//
if (StrID == UID3)
{
ID3 = EEPROM.read(3)
ID3 = ID3 + 1
if (ID3 == 256)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Memory is Full')
lcd.setCursor(0, 1)
lcd.print('Please Clear All.')
for (i = 0 i <20 i++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
i = 0
return
}
if (ID3 != 256)
{
EEPROM.write(3, ID3)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Your Attendance')
lcd.setCursor(0, 1)
lcd.print('Registered !!!')
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
return
}
}
//-----------------------------------//
if (StrID == UID4)
{
ID4 = EEPROM.read(4)
ID4 = ID4 + 1
if (ID4 == 256)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Memory is Full')
lcd.setCursor(0, 1)
lcd.print('Please Clear All.')
for (i = 0 i <20 i++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
i = 0
return
}
if (ID4 != 256)
{
EEPROM.write(4, ID4)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Your Attendance')
lcd.setCursor(0, 1)
lcd.print('Registered !!!')
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
return
}
}
//-----------------------------------//
if (StrID == UID5)
{
ID5 = EEPROM.read(5)
ID5 = ID5 + 1
if (ID5 == 256)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Memory is Full')
lcd.setCursor(0, 1)
lcd.print('Please Clear All.')
for (i = 0 i <20 i++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
i = 0
return
}
if (ID5 != 256)
{
EEPROM.write(5, ID5)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Your Attendance')
lcd.setCursor(0, 1)
lcd.print('Registered !!!')
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
return
}
}
//-----------------------------------//
if (StrID == UID6)
{
ID6 = EEPROM.read(6)
ID6 = ID6 + 1
if (ID6 == 256)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Memory is Full')
lcd.setCursor(0, 1)
lcd.print('Please Clear All.')
for (i = 0 i <20 i++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
i = 0
return
}
if (ID6 != 256)
{
EEPROM.write(6, ID6)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Your Attendance')
lcd.setCursor(0, 1)
lcd.print('Registered !!!')
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
return
}
}
//-----------------------------------//
if (StrID == UID7)
{
ID7 = EEPROM.read(7)
ID7 = ID7 + 1
if (ID7 == 256)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Memory is Full')
lcd.setCursor(0, 1)
lcd.print('Please Clear All.')
for (i = 0 i <20 i++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
i = 0
return
}
if (ID7 != 256)
{
EEPROM.write(7, ID7)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Your Attendance')
lcd.setCursor(0, 1)
lcd.print('Registered !!!')
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
return
}
}
//-----------------------------------//
if (StrID == UID8)
{
ID8 = EEPROM.read(8)
ID8 = ID1 + 1
if (ID8 == 256)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Memory is Full')
lcd.setCursor(0, 1)
lcd.print('Please Clear All.')
for (i = 0 i <20 i++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
i = 0
return
}
if (ID8 != 256)
{
EEPROM.write(8, ID8)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Your Attendance')
lcd.setCursor(0, 1)
lcd.print('Registered !!!')
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
return
}
}
//-----------------------------------//
if (StrID == UID9)
{
ID9 = EEPROM.read(9)
ID9 = ID9 + 1
if (ID9 == 256)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Memory is Full')
lcd.setCursor(0, 1)
lcd.print('Please Clear All.')
for (i = 0 i <20 i++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
i = 0
return
}
if (ID9 != 256)
{
EEPROM.write(9, ID9)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Your Attendance')
lcd.setCursor(0, 1)
lcd.print('Registered !!!')
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
return
}
}
//-----------------------------------//
if (StrID == UID10)
{
ID10 = EEPROM.read(10)
ID10 = ID10 + 1
if (ID10 == 256)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Memory is Full')
lcd.setCursor(0, 1)
lcd.print('Please Clear All.')
for (i = 0 i <20 i++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
i = 0
return
}
if (ID10 != 256)
{
EEPROM.write(10, ID10)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Your Attendance')
lcd.setCursor(0, 1)
lcd.print('Registered !!!')
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
return
}
}
//-----------------------------------//
if (StrID == UID11)
{
ID11 = EEPROM.read(11)
ID11 = ID11 + 1
if (ID11 == 256)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Memory is Full')
lcd.setCursor(0, 1)
lcd.print('Please Clear All.')
for (i = 0 i <20 i++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
i = 0
return
}
if (ID11 != 256)
{
EEPROM.write(11, ID11)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Your Attendance')
lcd.setCursor(0, 1)
lcd.print('Registered !!!')
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
return
}
}
//-----------------------------------//
if (StrID == UID12)
{
ID12 = EEPROM.read(12)
ID12 = ID12 + 1
if (ID12 == 256)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Memory is Full')
lcd.setCursor(0, 1)
lcd.print('Please Clear All.')
for (i = 0 i <20 i++)
{
digitalWrite(LED, HIGH)
delay(100)
digitalWrite(LED, LOW)
delay(100)
}
i = 0
return
}
if (ID12 != 256)
{
EEPROM.write(12, ID12)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Your Attendance')
lcd.setCursor(0, 1)
lcd.print('Registered !!!')
digitalWrite(LED, HIGH)
delay(1000)
digitalWrite(LED, LOW)
return
}
}
if (StrID != UID1 || StrID != UID2 || StrID != UID3 || StrID != UID4
|| StrID != UID5 || StrID != UID6 || StrID != UID7 || StrID != UID8
|| StrID != UID9 || StrID != UID10 || StrID != UID11 || StrID != UID12)
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print('Unknown RFID')
lcd.setCursor(0, 1)
lcd.print('Card !!!')
for (i = 0 i <3 i++)
{
digitalWrite(LED, HIGH)
delay(200)
digitalWrite(LED, LOW)
delay(200)
}
}
rfid.PICC_HaltA ()
rfid.PCD_StopCrypto1()
}
}
void Read_data()
{
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(Name1)
lcd.print(':')
lcd.print(EEPROM.read(1))
lcd.setCursor(0, 1)
lcd.print(Name2)
lcd.print(':')
lcd.print(EEPROM.read(2))
delay(2000)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(Name3)
lcd.print(':')
lcd.print(EEPROM.read(3))
lcd.setCursor(0, 1)
lcd.print(Name4)
lcd.print(':')
lcd.print(EEPROM.read(4))
delay(2000)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(Name5)
lcd.print(':')
lcd.print(EEPROM.read(5))
lcd.setCursor(0, 1)
lcd.print(Name6)
lcd.print(':')
lcd.print(EEPROM.read(6))
delay(2000)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(Name7)
lcd.print(':')
lcd.print(EEPROM.read(7))
lcd.setCursor(0, 1)
lcd.print(Name8)
lcd.print(':')
lcd.print(EEPROM.read(8))
delay(2000)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(Name9)
lcd.print(':')
lcd.print(EEPROM.read(9))
lcd.setCursor(0, 1)
lcd.print(Name10)
lcd.print(':')
lcd.print(EEPROM.read(10))
delay(2000)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(Name11)
lcd.print(':')
lcd.print(EEPROM.read(11))
lcd.setCursor(0, 1)
lcd.print(Name12)
lcd.print(':')
lcd.print(EEPROM.read(12))
delay(2000)
}
void clear_Memory()
{
lcd.clear()
lcd.print(0, 0)
lcd.print(F('Clear All Data?'))
lcd.setCursor(0, 1)
lcd.print(F('Long press: Y/N'))
delay(2500)
Serial.print('YES')
if (digitalRead(yes) == LOW)
{
EEPROM.write(1, 0)
EEPROM.write(2, 0)
EEPROM.write(3, 0)
EEPROM.write(4, 0)
EEPROM.write(5, 0)
EEPROM.write(6, 0)
EEPROM.write(7, 0)
EEPROM.write(8, 0)
EEPROM.write(9, 0)
EEPROM.write(10, 0)
EEPROM.write(11, 0)
EEPROM.write(12, 0)
lcd.clear()
lcd.setCursor(0, 0)
lcd.print(F('All Data Cleared'))
lcd.setCursor(0, 1)
lcd.print(F('****************'))
delay(1500)
}
if (digitalRead(no) == LOW)
{
return
}
}
//-------------------------Program developed by R.Girish------------------//

// ---------------- СЕТ УИД-ови ----------------- //

цхар УИД1 [] = 'Ф6: 97: ЕД: 70'

цхар УИД2 [] = '45: Б8: АФ: Ц0 '

цхар УИД3 [] = '15: 9Ф: А5: Ц0 '

цхар УИД4 [] = 'Ц5: Е4: АД: Ц0'

цхар УИД5 [] = '65: 1Д: АФ: Ц0 '

цхар УИД6 [] = '45: 8А: АФ: Ц0 '

цхар УИД7 [] = '15: 9Ф: А4: Ц0 '

цхар УИД8 ​​[] = '55: ЦБ: АФ: Ц0 '

цхар УИД9 [] = '65: 7Д: АФ: Ц0 '

цхар УИД10 [] = '05: 2Ц: АА: 04 '

цхар УИД11 [] = '55: 7Д: АА: 04 '

цхар УИД12 [] = 'БД: 8А: 16: 0Б'

// ---------------------------------------------- //

Овде имате имена места:

// -------------- ИМЕНА ----------------------- //

цхар Наме1 [] = 'Студент1'

цхар Наме2 [] = 'Студент2'

цхар Наме3 [] = 'Студент3'

цхар Наме4 [] = 'Студент4'

цхар Наме5 [] = 'Студент5'

цхар Наме6 [] = 'Студент6'

цхар Наме7 [] = 'Студент7'

цхар Наме8 [] = 'Студент8'

цхар Наме9 [] = 'Студент9'

цхар Наме10 [] = 'Студент10'

цхар Наме11 [] = 'Студент11'

цхар Наме12 [] = 'Студент12'

// -------------------------------------------- //

Замените студент1, студент2 било којим именом које желите или га оставите какво јесте.

Морате да подесите време од када до када систем за присуство треба да буде активан, а остатак времена систем неће регистровати присуство када скенирамо РФИД ознаку / картицу:

// ------ Од -------- //

инт х = 21 // сати

инт м = 00 // Мин

// ------- До ------- //

инт х1 = 21 // сати

инт м1 = 50 // Мин

// ------------------------- //

Горњи део је време почетка, а доњи крај времена. Време морате унети у сатима од 0 до 23 и минутама од 00 до 59.

Ауторски прототип:

Ако имате било каквих питања у вези са овим пројектом, слободно изразите у одељку за коментаре, можда ћете добити брзи одговор.




Претходно: Ардуино аутоматски систем школског / факултетског звона Следеће: 3Д Моон-Спхере ЛЕД управљачки програм са пуњачем и затамњеним кругом