Код звучит хорошо, но проблема, вероятно, в названии GPIO.
Проверьте схему распиновки Raspberry Pi

Вы можете видеть, что BCM2 недоступен (хотя BCM21 есть)
Вы можете увидеть другой пример, который использует контакты на Rainbow HAT в этом примере . Тот, который я запустил и проверил, что работает. Не стесняйтесь сравнивать проект с вашим или клонировать репозиторий и попробовать этот код.