Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot:exp38 [2020/05/23 10:46] – [Схема эксперимента] labuser29products:laboratory_iot:exp38 [2024/12/04 18:15] (текущий) – [Программный код эксперимента] labuser30
Строка 9: Строка 9:
  
 ==== Программный код эксперимента ==== ==== Программный код эксперимента ====
-<file python Exp37.py[enable_line_numbers="2", start_line_numbers_at="1"]>+<file python Exp38.py[enable_line_numbers="2", start_line_numbers_at="1"]>
 import time import time
 from machine import I2C, Pin from machine import I2C, Pin
Строка 18: Строка 18:
 buzzer = Pin(15, Pin.OUT) buzzer = Pin(15, Pin.OUT)
  
-DEFAULT_I2C_ADDR = 0x3F+DEFAULT_I2C_ADDR = 0x3F # Или 0x27 в зависимости от модели микросхемы на плате
  
 i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000) i2c = I2C(scl=Pin(5), sda=Pin(4), freq=400000)
Строка 57: Строка 57:
             print("Card detected: " + card_number)             print("Card detected: " + card_number)
  
-            if (cardn in allow_cards):+            if (card_number in allow_cards):
                 print('OK')                 print('OK')
                 signal_ok()                 signal_ok()
Строка 64: Строка 64:
                 signal_fail()                 signal_fail()
 </file> </file>
 +
 +Объявляем массив с номерами карт, которым доступен вход. В нашем списке одна карта. Замени этот номер на номер своей карты. Номера карт мы узнавали на [[products:laboratory_iot:exp37|прошлом эксперименте]].
 +<code python[enable_line_numbers="2", start_line_numbers_at="17"]>
 +allow_cards = [
 +    '7982e1b3'
 +]
 +</code>
 +
 +В основном цикле, после определения номера считанной метки, проверяем входит ли она в число разрешенных
 +<code python[enable_line_numbers="2", start_line_numbers_at="48"]>
 +            if (card_number in allow_cards):
 +                print('OK')
 +                signal_ok()
 +            else:
 +                print('NO')
 +                signal_fail()
 +</code>
 +
 +Если да, то выводим в терминал слово 'OK' и вызываем функцию генерации разрешительного звукового сигнала. Если нет, то выводим в терминал слово 'NO' и вызываем функцию генерации запретительного звукового сигнала.
 +
 +В реальных условиях к схеме можно было бы добавить дополнительное исполнительное устройство, например, электромагнит, который удерживает дверь. После обнаружения карты из списка разрешенных, такая схема могла бы отключать электромагнит и дверь можно было бы открыть.