Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:laboratory_iot:exp38 [2020/05/23 10:36] – labuser29 | products:laboratory_iot:exp38 [2024/12/04 18:15] (текущий) – [Программный код эксперимента] labuser30 | ||
|---|---|---|---|
| Строка 8: | Строка 8: | ||
| // | // | ||
| + | ==== Программный код эксперимента ==== | ||
| + | <file python Exp38.py[enable_line_numbers=" | ||
| + | import time | ||
| + | from machine import I2C, Pin | ||
| + | from esp8266_i2c_lcd import I2cLcd | ||
| + | import mfrc522 | ||
| + | _init() | ||
| + | |||
| + | buzzer = Pin(15, Pin.OUT) | ||
| + | |||
| + | DEFAULT_I2C_ADDR = 0x3F # Или 0x27 в зависимости от модели микросхемы на плате | ||
| + | |||
| + | i2c = I2C(scl=Pin(5), | ||
| + | lcd = I2cLcd(i2c, DEFAULT_I2C_ADDR, | ||
| + | lcd.backlight_on() | ||
| + | |||
| + | rdr = mfrc522.MFRC522(0, | ||
| + | |||
| + | allow_cards = [ | ||
| + | ' | ||
| + | ] | ||
| + | |||
| + | def print_lcd(data): | ||
| + | lcd.clear() | ||
| + | lcd.putstr(str(data)) | ||
| + | |||
| + | def signal_ok(): | ||
| + | buzzer.on() | ||
| + | time.sleep_ms(200) | ||
| + | buzzer.off() | ||
| + | |||
| + | def signal_fail(): | ||
| + | for i in range(3): | ||
| + | buzzer.on() | ||
| + | time.sleep_ms(100) | ||
| + | buzzer.off() | ||
| + | time.sleep_ms(100) | ||
| + | |||
| + | while True: | ||
| + | (stat, tag_type) = rdr.request(rdr.REQIDL) | ||
| + | |||
| + | if stat == rdr.OK: | ||
| + | (stat, raw_uid) = rdr.anticoll() | ||
| + | |||
| + | if stat == rdr.OK: | ||
| + | card_number = ' | ||
| + | print_lcd(card_number) | ||
| + | print(" | ||
| + | |||
| + | if (card_number in allow_cards): | ||
| + | print(' | ||
| + | signal_ok() | ||
| + | else: | ||
| + | print(' | ||
| + | signal_fail() | ||
| + | </ | ||
| + | |||
| + | Объявляем массив с номерами карт, которым доступен вход. В нашем списке одна карта. Замени этот номер на номер своей карты. Номера карт мы узнавали на [[products: | ||
| + | <code python[enable_line_numbers=" | ||
| + | allow_cards = [ | ||
| + | ' | ||
| + | ] | ||
| + | </ | ||
| + | |||
| + | В основном цикле, после определения номера считанной метки, проверяем входит ли она в число разрешенных | ||
| + | <code python[enable_line_numbers=" | ||
| + | if (card_number in allow_cards): | ||
| + | print(' | ||
| + | signal_ok() | ||
| + | else: | ||
| + | print(' | ||
| + | signal_fail() | ||
| + | </ | ||
| + | |||
| + | Если да, то выводим в терминал слово ' | ||
| + | |||
| + | В реальных условиях к схеме можно было бы добавить дополнительное исполнительное устройство, | ||