2014-06-15 14 views
6

Quindi ho una piccola piccola ventola collegata al pin 6 (Ground) e al pin 2. Sto provando ad avviarlo manualmente e fermare il ventilatore quando necessario, ma sto ottenendo questo errore quando prova:ValueError: il canale inviato non è valido su un Raspberry Pi - Controllo GPIO Pin 2 (BOARD) utilizzando Python causa Errore

ValueError: il canale inviato non è valido su un Raspberry Pi

Ecco il mio codice che sto eseguendo come root. Sembra funzionare su altri pin ma non su Pin 2

import RPi.GPIO as GPIO 

GPIO.setmode(GPIO.BOARD) 

GPIO.setup(2, GPIO.OUT, pull_up_down=GPIO.PUD_UP) 

Non so come accedere a questo pin. C'è qualcosa che sto sbagliando?

risposta

0

Non è possibile. Il pin 2 dell'header di espansione Raspberry Pi è collegato direttamente all'alimentazione USB - non è controllato dalla CPU.

Non tentare di collegare la ventola direttamente a un pin GPIO; non solo non emettono la giusta tensione, ma non possono neanche assorbire/assorbire abbastanza corrente per far funzionare la ventola. È molto probabile che provare a farlo sia in grado di distruggere il driver pin e danneggiare anche altre parti del BCM2835.

Se è necessario attivare e disattivare una ventola da 5 V, è necessario un supporto hardware per controllarlo (ad es. Un FET).

15

Potrebbe essere qualcosa di stupido, stavo guardando allo stesso modo. Sembra che ci siano due modalità nel GPIO. Change GPIO.setmode (GPIO.BOARD) a

GPIO.setmode(GPIO.BCM) 

Ha funzionato per me su una nuova installazione di Raspbian

+0

bene questo ha funzionato anche per me. ma si prega di rimuovere "testo sottolineato" – sudocoder

+0

Rimosso. Meglio dopo che mai –

+0

Questo è stato un mio errore. Mi sento così stupido! – Phil

1

Credo che il vostro errore è che ti ha dato pull_up_down ad un pin OUT definied

#this is only for input pins 
GPIO.setup(n, RPIO.OUT, initial=RPIO.LOW, pull_up_down=GPIO.PUD_UP) 

#CORRECT ("initial" is optional) 
GPIO.setup(n, RPIO.OUT, initial=RPIO.LOW)