2017-08-16 1 views
-3

Je suis un ancien programmeur java, traduire le code de bureau à Raspberry Pi, dans le but d'intégrer le logiciel dans une interface matérielle.Raspberry Pi Java Pi4j gpio ne fonctionne pas pour moi, fonctionne avec python si

I câblé un écran à cristaux liquides de caractère 16 * 2, qui a travaillé avec le code Python, mais quand j'utilise bibliothèques pi4j pour accéder au GPIO via Java, l'écran est vide. Est-ce qu'il me manque un commutateur binaire on/off?

Je courais pi4j 1.2, sur un A + Pi, obtenu sur le bug du processeur 1.1 qui a affecté Pi de câblage.

Merci pour votre lecture, toutes les suggestions sont appréciées.

import com.pi4j.component.lcd.LCDTextAlignment; 
import com.pi4j.component.lcd.impl.GpioLcdDisplay; 
import com.pi4j.io.gpio.GpioController; 
import com.pi4j.io.gpio.GpioFactory; 
import com.pi4j.io.gpio.RaspiPin; 
import com.pi4j.system.NetworkInfo; 

public class LCD { 

    public static void main(String args[]) { 
     System.out.println("SYSTEM PRINT TEST"); 
     GpioController gpio = GpioFactory.getInstance(); 
     GpioLcdDisplay lcd = new GpioLcdDisplay(2,16, 
      RaspiPin.GPIO_26, 
      RaspiPin.GPIO_31, 
      RaspiPin.GPIO_15, 
      RaspiPin.GPIO_16, 
      RaspiPin.GPIO_01, 
      RaspiPin.GPIO_04); 

     lcd.clear(); 
     Thread.sleep(1000); 

     lcd.write(0, "LINE 1 TEST"); 
     lcd.write(1, "LINE 2 TEST"); 

     Thread.sleep(2000); 
     gpio.shutdown(); 
    } 
} 
+0

Comment savez-vous que le code java fonctionne? L'exécution du programme python montre les bibliothèques python et vos connexions matérielles fonctionnent correctement, mais cela ne me donne aucune information sur la raison pour laquelle le code java ne fonctionne pas. – DevelopingDeveloper

+0

Vous pouvez également l'essayer sur [Raspberry Pi StackExchange] (https://raspberrypi.stackexchange.com/). – Zabuza

+0

[Pourquoi est-ce que quelqu'un peut m'aider? "Pas une question réelle?] (Http://meta.stackoverflow.com/q/284236) – EJoshuaS

Répondre

0

L'écart entre la numérotation des broches sur ce code de jargon et la numérotation des wiringPi sous-jacente d'origine était la cause de cette frustration. Voici le code révisé, où gpio 25 correspond à wiringPi 6, pas à 26! N'oubliez pas de mettre à jour wiringPi et pi4j avec les dernières versions.

import com.pi4j.wiringpi.Gpio; 
import com.pi4j.wiringpi.Lcd; 

public class LCD { 

    public final static int LCD_ROWS = 2; 
    public final static int LCD_COLUMNS = 16; 
    public final static int LCD_BITS = 4; 

    public static void main(String args[]) { 

     System.out.println("SYSTEM PRINT TEST"); 

     if (Gpio.wiringPiSetup() == -1) { 
      System.out.println("GPIO SETUP ERROR"); 
      return; 
     } 

     int lcdHandle= Lcd.lcdInit(LCD_ROWS, 
            LCD_COLUMNS, 
            LCD_BITS, 
            6, 
            5, 
            15, 
            16, 
            1, 
            4, 
            0, 
            0, 
            0, 
            0); 

     if (lcdHandle == -1) { 
      System.out.println("LCD INIT ERROR"); 
      return; 
     } 

     Lcd.lcdDisplay(lcdHandle,1); 
     Lcd.lcdClear(lcdHandle); 

     Lcd.lcdPuts (lcdHandle, "LCD TEST LINE 1") ; 

     Lcd.lcdPosition (lcdHandle, 0, 1) ; 
     Lcd.lcdPuts (lcdHandle, "LCD TEST LINE 2") ; 

try { 
    Thread.sleep(10000); 
    } catch (Exception e) {} 
    Lcd.lcdDisplay(lcdHandle,0); 

    } 
}