Pi4 GPIO ควบคุมด้วย Java

Oct 12 2020

โดยพื้นฐานแล้วฉันพยายามเปิดการนำโดยใช้ไลบรารี 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)

ฉันขาดอะไรไป?

คำตอบ

1 Frank Oct 12 2020 at 13:51

ตามที่กล่าวไว้ในความคิดเห็น 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 เวอร์ชันใหม่ซึ่งจะทำให้สิ่งต่างๆง่ายขึ้น แต่กำลังดำเนินการ ... ;-)

ข้อมูลเพิ่มเติมในบล็อกโพสต์ของฉันเกี่ยวกับ:

  1. ใช้ Pi4j (V1) บน Raspberry Pi 4
  2. ประวัติ Raspberry Pi เวอร์ชันพินและส่วนหัวเป็นไลบรารี Java Maven
  3. Oracle Java Magazine: เริ่มต้นใช้งาน JavaFX บน Raspberry Pi