A nyomógomb -kapcsoló egy egyszerű, mégis hatékony bemeneti eszköz, amelyet gyakran használnak olyan projektekben, mint a kezdő vagy leállítási folyamatok, a LED -ek vezérlése vagy az események kiváltása. Ez az oktatóanyag végigvezeti a nyomógomb -kapcsoló csatlakoztatását a Raspberry Pi -hez, beállítja a vezetéket, és írjon egy Python szkriptet a gombnyomások észlelésére.
Mire lesz szüksége
- Málna PI (Bármely modell GPIO -támogatással, például PI 3, PI 4)
- Nyomógomb kapcsoló
- Kenyérlemez és jumper vezetékek
- Ellenállás (10KΩ a lehúzáshoz)
- Python telepítve a málna pi -jén
- GPIO könyvtár A Raspberry PI GPIO -csapok vezérléséhez
1. lépés: A nyomógombot a Raspberry PI -hez vezetni
A nyomógomb -kapcsoló úgy működik, hogy vagy a GPIO csapot egy magas (3,3 V) állapothoz csatlakoztatja, amikor megnyomja, vagy alacsonyra húzza (0v), ha nem nyomja meg. Használunk egy legördülő ellenállást annak biztosítása érdekében, hogy a GPIO PIN-kódja alacsony legyen, amikor a gombot nem nyomják meg.
A nyomógomb bekötése
| Nyomógomb | Raspberry Pi GPIO PIN | 
|---|---|
| Egy csap | GPIO17 (11. érintkező) | 
| Egyéb csap | Föld (6. érintkező) | 
| Egy csap | 10kΩ ellenállás a földre | 
Itt van a kábelezés beállítása:
- Csatlakozzon a nyomógomb egyik termináljának csatlakoztatásához GPIO17 (11. érintkező).
- Csatlakoztassa a nyomógomb másik terminálját Föld (6. érintkező).
- Csatlakoztasson egy 10KΩ -os ellenállást GPIO17 és Föld hogy legfelsőbb ellenállásként működjön.
Ez biztosítja, hogy a gomb megnyomásakor a GPIO17 magasan olvassa el (3,3 V), és ha nem nyomja meg, a GPIO17 -et alacsonyra (0V -re) húzza az ellenállás.
2. lépés: Engedélyezze a GPIO -csapokat a Python -ban
- 
Először frissítse a Raspberry Pi csomaglistáját: sudo apt update sudo apt upgrade -y
- 
Telepítse a szükséges Python GPIO könyvtárat (ha még nem telepítve): sudo apt install python3-rpi.gpio
- 
Importálja a könyvtárat a Python szkriptbe: import RPi.GPIO as GPIO import time
3. lépés: A Python kód írása
Írjunk be egy Python szkriptet, hogy észleljük a gombot, és ennek megfelelően cselekedjünk.
Python kód példa
import RPi.GPIO as GPIO
import time
# Set up the GPIO mode and pin
GPIO.setmode(GPIO.BCM)        # Use BCM numbering
button_pin = 17               # GPIO pin connected to the button
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)  # Set up pin with pull-down resistor
# Function to detect button press
def button_callback(channel):
    print("Button was pressed!")
# Set up an event on the button pin
GPIO.add_event_detect(button_pin, GPIO.RISING, callback=button_callback, bouncetime=300)
try:
    print("Press the button...")
    while True:
        # Keep the program running to wait for button press
        time.sleep(0.1)
except KeyboardInterrupt:
    print("Program exited")
finally:
    GPIO.cleanup()  # Clean up GPIO to ensure a clean exit
Kód magyarázat:
- Gpio.setmode (gpio.bcm): Állítsa be a GPIO PIN -kódot a BCM (Broadcom) módba.
- Gpio.setup (button_pin, gpio.in, pull_up_down = gpio.pud_down): Konfigurálja a gombos tűt egy bemenetként egy legördülő ellenállással, azaz alacsonyan fog olvasni, ha nem nyomja meg.
- 
Gpio.add_event_detect (): Detektálja a GPIO PIN emelkedő élét (gombnyomását), és kiváltja a visszahívási funkciót button_callbackAmikor a gombot megnyomják.
- idő.Sleep (0,1): Futtatja a szkriptet, lehetővé téve, hogy várjon egy gombnyomásra.
- Gpio.cleanup (): Tisztítsa meg a GPIO beállításait, amikor a szkript kilép.
4. lépés: A gomb tesztelése
- 
Futtassa a Python szkriptet: python3 button.py
- 
Nyomja meg a nyomógombot, és figyelje meg a „gomb megnyomása” üzenetet! a terminálon. 
5. lépés: Alkalmazások
Íme néhány ötlet a projektekben lévő nyomógomb használatához:
- Irányítson egy LED -t: Használja a nyomógombot egy LED be- és kikapcsolásához.
- Eseményindítást indít: Indítsa el vagy állítsa le a folyamatot (például indítsa el a motort, kapcsolja be a ventilátort, vagy kezdeményezzen egy szkriptet).
- Intelligens ajtócsengő: Használja a gombot ajtócsengőként, hogy értesítést küldjön a telefonjára.
- Felhasználói bemenet: Szerezzen egyszerű felhasználói bemenetet a projektjeihez (például egy "igen/nem" válasz).
Hibaelhárítás
- 
A gombot nem észlelték: - Győződjön meg arról, hogy a gomb helyesen van-e huzalozva a lefelé irányuló ellenállással.
- Ellenőrizze duplán a GPIO PIN beállítását a kódban.
 
- 
GPIO hiba: - Győződjön meg arról, hogy a GPIO könyvtár megfelelően van telepítve, és hogy a szkriptben lévő PIN -kódok helyesek -e.
 
- 
Gombbal ugrál: - Ha észreveszi több gombnyomás észlelését, akkor hozzáadhat egy lefoglalási időt (bouncetime=300a szkriptben) a hamis érzékelések elkerülése érdekében.
 
- Ha észreveszi több gombnyomás észlelését, akkor hozzáadhat egy lefoglalási időt (
Következtetés
A nyomógomb -kapcsoló használata a Raspberry PI -vel egyszerű módja annak, hogy a bemeneti funkciókat hozzáadja a projektekhez. Legyen a LED -ek váltása, események kiváltása vagy más hardverekkel való interakció, ez az egyszerű beállítás számos érdekes alkalmazás alapja lehet. Kísérletezzen különböző GPIO -csapokkal és elszámolási beállításokkal, hogy megfeleljen az Ön igényeinek!
 
            
 
      
 
      
 
      
 
      
 
      
 
      
 
      
 
      
 
      
 
      
 
       
         
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  