Kode ini tidak menghidupkan dan mematikan led.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(21,GPIO.OUT)
for number in range(0,10):
GPIO.output(21,GPIO.LOW)
time.sleep(1)
GPIO.output(21,GPIO.HIGH)
GPIO.cleanup()
tetapi ketika saya mencetak nomor di loop itu berhasil:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(21,GPIO.OUT)
for number in range(0,10):
GPIO.output(21,GPIO.LOW)
time.sleep(1)
GPIO.output(21,GPIO.HIGH)
print(number)
GPIO.cleanup()
Adakah yang tahu mengapa itu terjadi?
Jawaban:
Coba ganti
print
dengan atime.sleep(0.05)
. Anda mungkin mengalami perilaku aneh ini karena GPIO.output dialihkan terlalu cepat dari TINGGI ke RENDAH untuk ditetapkan / terdeteksi / dilihat. Menambah / mengurangi durasi tidur hingga program bekerja dengan baik (meningkat) dan cukup cepat (berkurang).sumber
Buka gulungan Anda untuk memahami apa yang terjadi di sini:
berubah menjadi:
Seperti yang Anda lihat, mengatur pin rendah mengikuti (dekat ke) segera setelah memutarnya tinggi. Akibatnya LED Anda akan tetap di satu negara untuk sebagian besar waktu (yaitu, apa yang bisa kita rasakan dengan mata telanjang).
Perbaiki seperti ini (untuk siklus tugas 50:50):
sumber
print()
menyebabkan kode asli untuk bekerja adalah karena menulis ke layar adalah proses yang sangat lambat dan pada dasarnya bertindak seperti yangsleep(1)
Anda sarankan.