|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 1:21 pm
|
Страница 1 от 1
|
[ 8 мнения ] |
|
Arduino как се прави база данни и четене
| Автор |
Съобщение |
|
koko76bj
Ранг: Минаващ
Регистриран на: Вто Юни 27, 2017 8:03 am Мнения: 24 Местоположение: Варна
|
 Arduino как се прави база данни и четене
Здравейте, написах един код за RFID четец за врата,който си работи нормално.Но не знам как може да се направи една променлива от базата с данни на UID и после да се чете.Не знам дали се изразих правилно.Написах го по "бабешки" начин и не ми харесва много как изглежда.  |  |  |  | Код: byte Key_1_UID[4] = {0x3A, 0xC9, 0x6A, 0xCB}; byte Key_2_UID[4] = {0x35, 0x21, 0x8B, 0x17}; byte Key_3_UID[4] = {0x20, 0x02, 0x7B, 0x25}; byte Key_4_UID[4] = {0x3F, 0xF1, 0x4B, 0x15};
|  |  |  |  |
може ли това да се направи в една променлива? и може ли това с четенето да е по-кратко? дано ме разберете какво питам.
|
| Пет Май 07, 2021 10:15 am |
|
 |
|
t_i_t_o
Ранг: Почетен член
Регистриран на: Вто Окт 25, 2005 10:54 am Мнения: 896
|
 Re: Arduino как се прави база данни и четене
Сложи ключевете в двумерен масив и после в цикъл един по един ги проверявай с memcmp(), нещо от сорта:
#define KEYS_NUM 4 #define KEY_LEN 4
byte keys[KEYS_NUM][KEY_LEN] = { {0x3A, 0xC9, 0x6A, 0xCB}, {0x35, 0x21, 0x8B, 0x17}, ... }
for (i = 0; i < KEYS_NUM; i++) { if (!memcmp(keys[i], rfid.uid.uidByte, KEY_LEN)) { digitalWrite(RELAY_DOOR, HIGH); // unlock the door for 2 seconds delay(2000); digitalWrite(RELAY_DOOR, LOW); // lock the door } }
Ама най добре да не ги хардкодваш в кода ами да ги записваш в епрома с някакъв мастър ключ... аз така направих преди 10 години за входа на блока. Така няма нужда да ребилдваш и препрограмираш ако искаш да добавиш нов ключ.
|
| Пет Май 07, 2021 11:51 am |
|
 |
|
koko76bj
Ранг: Минаващ
Регистриран на: Вто Юни 27, 2017 8:03 am Мнения: 24 Местоположение: Варна
|
 Re: Arduino как се прави база данни и четене
Няма да се добавят или махат ключове,тези четирите ще са само.Благодаря ти.
|
| Пет Май 07, 2021 12:03 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: Arduino как се прави база данни и четене
4 байта е 32 битов инт
uint32_t data; rfid_read( &data, 4);
for( int i = 0; i < KEY_NUMBERS; i++ ) if ( data == key[i] ) ... ok, break;
_________________ main[-1u]={1};
|
| Пет Май 07, 2021 2:58 pm |
|
 |
|
t_i_t_o
Ранг: Почетен член
Регистриран на: Вто Окт 25, 2005 10:54 am Мнения: 896
|
 Re: Arduino как се прави база данни и четене
+1 Това още повече опростява кода, т.е. ключовете може да си ги сложиш в едномерен uint32 масив с 4 елемента и вместо memcmp() да използваш "==".
|
| Пет Май 07, 2021 3:09 pm |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12765 Местоположение: София
|
 Re: Arduino как се прави база данни и четене
Хубаво е да могат да се подменят чипове, например ако загубиш или се повреди някой.
|
| Пет Май 07, 2021 4:44 pm |
|
 |
|
koko76bj
Ранг: Минаващ
Регистриран на: Вто Юни 27, 2017 8:03 am Мнения: 24 Местоположение: Варна
|
 Re: Arduino как се прави база данни и четене
Това не го разбрах.Къде се прави масива? Извинявам се че задавам такива въпроси но още имам да уча,не съм на вашето ниво.
|
| Пет Май 07, 2021 5:25 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: Arduino как се прави база данни и четене
_________________ main[-1u]={1};
|
| Пет Май 07, 2021 5:46 pm |
|
|
|
Страница 1 от 1
|
[ 8 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 0 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|