В любой программе, работающей с GPIO, должны быть два шага:
- Захват пина GPIO в начале работы
- Освобождение пина в конце работы программы.
У Вас я вижу захват пина:
# Initial the dht device, with data pin connected to:
dhtDevice = adafruit_dht.DHT22(board.D18)
Но не вижу освобождения пина при выходе из программы. Поэтому, я предполагаю, что после завершения работы пргораммы пин не освобождается и, при повторном запуске, ОС не даёт его захватить повторно.