Pi4 GPIO ควบคุมด้วย Java
โดยพื้นฐานแล้วฉันพยายามเปิดการนำโดยใช้ไลบรารี pi4j รหัสของฉันค่อนข้างง่าย:
public static void main(String args[]) throws InterruptedException {
GpioController gpioController = GpioFactory.getInstance();
GpioPinDigitalOutput pinOut = gpioController.provisionDigitalOutputPin(RaspiPin.GPIO_17);
pinOut.high();
Thread.sleep(5000);
pinOut.low();
}
ฉันกำลังส่งออกไฟล์ jar จากคอมพิวเตอร์ของฉันคัดลอกไปยัง Raspberry Pi 4 ของฉันมากกว่าที่จะทำงานในนั้น
เพื่อตรวจสอบว่า led ของฉันไม่เสียหรือตั้งค่า GPIO ฉันได้ดำเนินการตามสคริปต์ Python และฉันเห็นว่า led ของฉันทำงานได้อย่างสมบูรณ์:
python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,True)
ฉันขาดอะไรไป?
คำตอบ
ตามที่กล่าวไว้ในความคิดเห็น Pi4J กำลังใช้รูปแบบการกำหนดหมายเลขพินที่แตกต่างกัน "ใต้ฝากระโปรง" WiringPi ใช้เพื่อควบคุม GPIO ไลบรารีนี้ใช้รูปแบบการกำหนดหมายเลขที่แตกต่างกัน ซึ่งหมายความว่า BCM พิน 17 ที่คุณใช้ใน Python คือพิน 0 ในโครงร่าง WiringPi
ดูตารางเต็มด้านล่างพร้อม BCM, WiringPi และหมายเลขพินทางกายภาพ (ดูลิงก์ 2 ด้านล่าง)
ถัดจากนั้นการเดินสายภายในของ Raspberry Pi 4 นั้นแตกต่างกันเมื่อเทียบกับรุ่นก่อนหน้าดังนั้นคุณจะต้องอัปเกรด WiringPi ของคุณเป็นเวอร์ชันล่าสุด 2.52 ด้วย:
$ gpio -v
gpio version: 2.50
$ cd /tmp
$ wget https://project-downloads.drogon.net/wiringpi-latest.deb
$ sudo dpkg -i wiringpi-latest.deb
$ gpio -v
gpio version: 2.52
หมายเหตุด้านข้าง: เรากำลังดำเนินการกับ Pi4J เวอร์ชันใหม่ซึ่งจะทำให้สิ่งต่างๆง่ายขึ้น แต่กำลังดำเนินการ ... ;-)
ข้อมูลเพิ่มเติมในบล็อกโพสต์ของฉันเกี่ยวกับ: