Java auf Raspberry Pi

matze86

Bekanntes Mitglied
Und ein Portscan zeigt zum Raspi
Code:
PORT     STATE  SERVICE
8000/tcp closed http-alt

Wenn ich jetzt port 8003 nehme und dann portscan mache zeigt es mir das:
Code:
PORT     STATE SERVICE
8003/tcp open  mcreport

Edit: einmal funktionierte es. Allerdings stand da was mit handshake failed....

Beim 2. Versuch ist keine Verbindung zustande gekommen. der Port 8003 ist wieder closed.
 
Zuletzt bearbeitet von einem Moderator:
K

kneitzel

Gast
Wie genau sieht denn nun das Script aus? Hast du da jetzt ein Port-Forwarding eingebaut? (Müsste ja, wenn Du per 127.0.0.1 versuchst zu zu greifen.)

Das genau für eine Meldung hast Du bekommen mit dem handshake? Das deutet darauf hin, dass da irgend eine Connection eingegangen ist, die ein anderes Protokoll genutzt hat. Wenn man z,B. den Debug Adapter Launch nutzen würde - da kann man dann auch Adresse und Port eingeben, aber das ist etwas Anderes und kann natürlich nicht funktionieren ...
 

matze86

Bekanntes Mitglied
Jetzt funktioniert es.
Fragt mich aber nicht wie :D

Jetzt bei weitreichenden Test's wollte ich mal eine GPIO leuchten lassen, dass es wirklich funzt, da bekomme ich die Meldung
wiringPiSetup: Must be root. (Did you forget sudo?)

Wenn ich den Code direkt auf dem Pi ausführe (ohne root rechte) dann gehts.
 
K

kneitzel

Gast
- Wie genau sieht das Script aus, mit dem Du es startest?
- Wie genau startest Du es lokal?
- Was genau macht das Programm?
 

matze86

Bekanntes Mitglied
Mein Script:
Bash:
#!/bin/sh
# copy and start MavenTest on remote system

JAR=/matti-0.0.1-SNAPSHOT.jar
FILE=/home/matze/eclipse-workspace/matti/target/matti-0.0.1-SNAPSHOT.jar
REMOTEPATH=/home/pi/tester
HOST=192.168.178.22
USER=pi

scp $FILE $USER@$HOST:$REMOTEPATH
ssh -l $USER $HOST java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:8007 -jar $REMOTEPATH$JAR

Ausführen tue ich das script mit Eclipse > Ausführen > Externe Tools .....

Hier ist mein Java Code:
Java:
package matti;
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.RaspiPin;

public class Matti
{
    public static void main( String[] args )
    {
        System.out.println( "hallo" );
        
        
        try {
            /** create gpio controller */
            final GpioController gpio = GpioFactory.getInstance();

            final GpioPinDigitalOutput ledPin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_00);

            /** Blink every second */
            ledPin.blink(1000, 15000);

            /** keep program running until user aborts (CTRL-C) */
            while (true) {
            Thread.sleep(500);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        }
    }
 

matze86

Bekanntes Mitglied
Als User pi oder als anderer User? (Hintergrund der Frage: ich meine, es reicht, wenn der User Mitglied in bestimmten Gruppen ist)
Als user pi.
Mit direkt ausführen meinte ich nicht die .jar Datei die rüber kopiert wurde, sondern habe den code in eine extra java Datei kopiert und mit classpath ausführen lassen, und das mit pi.
Wenn ich Testweise die .jar Datei ausführen lasse, bekomme ich auch die Meldung, und wenn ich es mit root ausführe kommt die Meldung:
Unable to determine hardware version. I see: Hardware : BCM2835 , - expecting BCM2708 or BCM2709. Please report this to projects@drogon.net
 
K

kneitzel

Gast
Dann ist da schlicht etwas anders. Was ist denn im Classpath alles? Evtl. hast du da noch andere jars oder andere Versionen ...

Vermutlich hast du auf dem pi in dem classpath das aktuelle pi4j 2.0.

Pi4j Homepage hat auch eine Göttinger started Sektion mit einem Beispuel ...
 

matze86

Bekanntes Mitglied
Nachdem ich jetzt mal drüber geschlafen habe, bin ich zur Lösung gekommen.
Also ich hänge per sshfs ein Verzeichnis vom Pi in mein Ubuntu System ein. Darauf erstelle ich mit Eclipse maven und die entsprechenden Klassen(n), in die pom.xml kommen die Abhängigkeiten.
Jetzt habe ich ein SSH Skript gebaut, welches auf dem Pi die Klasse kompiliert und dann ausführt.
Das Script starte ich per Eclipse, da sehe ich auch die Ausgabe unten. So kann ich bequem mein Code schreiben.
Hier mal der Inhalt vom Sript
Bash:
#!/bin/bash

ssh pi@192.168.178.22 "cd /home/pi/Java/richtig/src/main/java/matti44/ && javac -classpath .:classes:/home/pi/Java/pi4j/lib/* Entferntesklasse.java && java -classpath .:classes:/home/pi/Java/pi4j/lib/* Entferntesklasse"

Allerdings fehlen mir noch 2 dinge. Zum einen muss ich immer den Classpath angeben zur lokalen pi4j und zum anderen muss ich immer das package löschen sonst kommt der Fehler.
 

matze86

Bekanntes Mitglied
Was natürlich noch besser wär, wenn ich die .jar auf dem Raspi ausführen könnte, denn dann brauche ich nicht mehr den classpath. Das wäre meiner Meinung nach die edlere Variante.
 
K

kneitzel

Gast
Was für Abhängigkeiten hast du denn in dem lib Ordner? Das, was Du da drin hast, musst Du als Dependency eintragen. Dann wird es auch mit dem gebauten Jar klappen.

Und das Problem wird die Version 1.3 sein. Eine Änderung mit 2.0 war halt, dass mehr Hardware unterstützt wird. Und das wird da ja angemeckert.

Und wie schon erwähnt: pi4j Homepage! Da im Getting Started wirst Du fündig! Den Hinweis zu der Beispiel Applikation hast Du ja schon bekommen! Und das führt Dich dann zu
Mit einer POM, die auf folgende pi4j verweist:
XML:
        <dependency>
            <groupId>com.pi4j</groupId>
            <artifactId>pi4j-core</artifactId>
            <version>${pi4j.version}</version>
        </dependency>

        <!-- include Pi4J Plugins (Platforms and I/O Providers) -->
        <dependency>
            <groupId>com.pi4j</groupId>
            <artifactId>pi4j-plugin-raspberrypi</artifactId>
            <version>${pi4j.version}</version>
        </dependency>
        <dependency>
            <groupId>com.pi4j</groupId>
            <artifactId>pi4j-plugin-pigpio</artifactId>
            <version>${pi4j.version}</version>
        </dependency>

mit der pi4j.version gesetzt auf:
<pi4j.version>2.0</pi4j.version>


Und bitte wirklich den generellen Ansatz befolgen:
Wenn Du mit einer Sache etwas machen willst, dann schau direkt beim "Hersteller" und befolge den Ansatz, den die durchführen. Also z.B. ein solches Beispielprojekt zum Test.
 

matze86

Bekanntes Mitglied
Problem endlich gelöst. Und zwar ist die PI4J Version nicht 1.0 sondern 1.2.
Somit gelingt mir jetzt auch das Ausführen der .jar Datei auf dem pi und die GPIO leuchtet.

An alle vielen vielen dank die mir geholfen haben.
Hoffe, das wenn andere auch so ein Problem haben, es so auch lösen können.

Edit: die Version 2.0 ging auch nicht, nur 1.2
 
K

kneitzel

Gast
Und zwar ist die PI4J Version nicht 1.0 sondern 1.2.
Ähm, da hast Du nicht die aktuelle Version. Die 1.3 war teilweise bei einigen Modulen die letzte Version und die hattest Du ursprünglich. Aber das Projekt pi4j ist in der Version 2.x und nicht mehr 1.x und wenn Du damit anfängst, dann wäre mein Rat, da auch die aktuelle Version zu nutzen.

Aber das nur ganz am Rande - schön, dass es nun läuft.
 
K

kneitzel

Gast
Das Problem ist aber bei <pi4j.version>2.0</pi4j.version> wird der import nicht gefunden.
Weil die groupIds sind auch geändert haben! Die Dependencies, die ich aus dem Beispiel Projekt kopiert haben, reichen so evtl. schon aus. Ggf. muss aber auch an dem Code etwas geändert werden. Ich kenen mich mit der Library pi4j nicht aus, aber wie bei allen Libraries würde ich nicht ohne Grund eine veraltete Version nutzen ...
 

matze86

Bekanntes Mitglied
Hier ist eine offizielle Doku, aber wenn ich den übernehme, dann meckert er mich an das var nicht in einen Typ aufgelöst werden kann. Den Import von pi4j habe ich natürlich gemacht.
 
K

kneitzel

Gast
Das ist ja auch mit Java 10 eingeführt worden.

Wieso greifst Du nicht auf ein aktuelles Java zurück? Was spricht gegen Java 17?
 
K

kneitzel

Gast
Dann pass auch das pom an, dass die Sprach Features verwendet werden können.
(Antwort #15 - da halt das 1.8 zu 17 machen. Ggf. kommt es auch noch an weiteren Stellen vor.)
 

matze86

Bekanntes Mitglied
Java:
package com.pi4j.example;


import com.pi4j.Pi4J;
import com.pi4j.io.gpio.digital.DigitalInput;
import com.pi4j.io.gpio.digital.DigitalOutput;
import com.pi4j.io.gpio.digital.DigitalState;
import com.pi4j.io.gpio.digital.PullResistance;
import com.pi4j.util.Console;

/**
 * <p>This example fully describes the base usage of Pi4J by providing extensive comments in each step.</p>
 *
 * @author Frank Delporte (<a href="https://www.webtechie.be">https://www.webtechie.be</a>)
 * @version $Id: $Id
 */
public class MinimalExample {

    private static final int PIN_BUTTON = 24; // PIN 18 = BCM 24
    private static final int PIN_LED = 22; // PIN 15 = BCM 22

    private static int pressCount = 0;

    /**
     * This application blinks a led and counts the number the button is pressed. The blink speed increases with each
     * button press, and after 5 presses the application finishes.
     *
     * @param args an array of {@link java.lang.String} objects.
     * @throws java.lang.Exception if any.
     */
    public static void main(String[] args) throws Exception {
        // Create Pi4J console wrapper/helper
        // (This is a utility class to abstract some of the boilerplate stdin/stdout code)
        final var console = new Console();

        // Print program title/header
        console.title("<-- The Pi4J Project -->", "Minimal Example project");

        // ************************************************************
        //
        // WELCOME TO Pi4J:
        //
        // Here we will use this getting started example to
        // demonstrate the basic fundamentals of the Pi4J library.
        //
        // This example is to introduce you to the boilerplate
        // logic and concepts required for all applications using
        // the Pi4J library.  This example will do use some basic I/O.
        // Check the pi4j-examples project to learn about all the I/O
        // functions of Pi4J.
        //
        // ************************************************************

        // ------------------------------------------------------------
        // Initialize the Pi4J Runtime Context
        // ------------------------------------------------------------
        // Before you can use Pi4J you must initialize a new runtime
        // context.
        //
        // The 'Pi4J' static class includes a few helper context
        // creators for the most common use cases.  The 'newAutoContext()'
        // method will automatically load all available Pi4J
        // extensions found in the application's classpath which
        // may include 'Platforms' and 'I/O Providers'
        var pi4j = Pi4J.newAutoContext();

        // ------------------------------------------------------------
        // Output Pi4J Context information
        // ------------------------------------------------------------
        // The created Pi4J Context initializes platforms, providers
        // and the I/O registry. To help you to better understand this
        // approach, we print out the info of these. This can be removed
        // from your own application.
        // OPTIONAL
        PrintInfo.printLoadedPlatforms(console, pi4j);
        PrintInfo.printDefaultPlatform(console, pi4j);
        PrintInfo.printProviders(console, pi4j);

        // Here we will create I/O interfaces for a (GPIO) digital output
        // and input pin. We define the 'provider' to use PiGpio to control
        // the GPIO.
        var ledConfig = DigitalOutput.newConfigBuilder(pi4j)
                .id("led")
                .name("LED Flasher")
                .address(PIN_LED)
                .shutdown(DigitalState.LOW)
                .initial(DigitalState.LOW)
                .provider("pigpio-digital-output");
        var led = pi4j.create(ledConfig);

        var buttonConfig = DigitalInput.newConfigBuilder(pi4j)
                .id("button")
                .name("Press button")
                .address(PIN_BUTTON)
                .pull(PullResistance.PULL_DOWN)
                .debounce(3000L)
                .provider("pigpio-digital-input");
        var button = pi4j.create(buttonConfig);
        button.addListener(e -> {
            if (e.state() == DigitalState.LOW) {
                pressCount++;
                console.println("Button was pressed for the " + pressCount + "th time");
            }
        });

        // OPTIONAL: print the registry
        PrintInfo.printRegistry(console, pi4j);

        while (pressCount < 5) {
            if (led.equals(DigitalState.HIGH)) {
                console.println("LED low");
                led.low();
            } else {
                console.println("LED high");
                led.high();
            }
            Thread.sleep(500 / (pressCount + 1));
        }

        // ------------------------------------------------------------
        // Terminate the Pi4J library
        // ------------------------------------------------------------
        // We we are all done and want to exit our application, we must
        // call the 'shutdown()' function on the Pi4J static helper class.
        // This will ensure that all I/O instances are properly shutdown,
        // released by the the system and shutdown in the appropriate
        // manner. Terminate will also ensure that any background
        // threads/processes are cleanly shutdown and any used memory
        // is returned to the system.

        // Shutdown Pi4J
        pi4j.shutdown();
    }
}
von der Seite. Und hier die pom.xml
XML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>richtig</groupId>
  <artifactId>matti44</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
 
     <dependencies>
  <dependency>
            <groupId>com.pi4j</groupId>
            <artifactId>pi4j-core</artifactId>
            <version>${pi4j.version}</version>
        </dependency>

        <!-- include Pi4J Plugins (Platforms and I/O Providers) -->
        <dependency>
            <groupId>com.pi4j</groupId>
            <artifactId>pi4j-plugin-raspberrypi</artifactId>
            <version>${pi4j.version}</version>
        </dependency>
        <dependency>
            <groupId>com.pi4j</groupId>
            <artifactId>pi4j-plugin-pigpio</artifactId>
            <version>${pi4j.version}</version>
        </dependency>
        

</dependencies>

 <properties>
  <pi4j.version>2.0</pi4j.version>
   <slf4j.version>1.7.32</slf4j.version>
        <main.class>matti44.Entferntesklasse</main.class>
        <java.version>17</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>

        <!-- plugin versions -->
        <maven.compiler.version>3.8.1</maven.compiler.version>
        <maven.jar.version>2.1</maven.jar.version>
        <maven.shade.version>3.2.4</maven.shade.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven.compiler.version}</version>
                <configuration>
                    <release>${java.version}</release>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${maven.jar.version}</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>${main.class}</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>${maven.shade.version}</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
        
      
        
    </build>

</project>

Ich weiß das oben noch einen Button Funktion hat, aber die würde ich dann heraus nehmen um nur zu schauen ob es funzt.
 
K

kneitzel

Gast
Was sieht erst einmal richtig aus - wie rufst Du es auf? Sicher, dass Du es mit einem Java 17 JDK aufrufst?
 

matze86

Bekanntes Mitglied
$ java -version openjdk version "1.8.0_292" OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
 
K

kneitzel

Gast
Dann hast Du das Problem ja gefunden - wobei unklar ist, wieso da die Übersetzung überhaupt startet, da die 1.8 den release Parameter nicht kennt.

Aber Du musst natürlich das Java 17 im Pfad haben und JAVA_HOME sollte richtig gesetzt sein.
 

matze86

Bekanntes Mitglied
So ich habe jetzt mal alle Java Versionen deinstalliert und neu 17 installiert.
$ java -version openjdk version "17" 2021-09-14 OpenJDK Runtime Environment (build 17+35-Ubuntu-120.04) OpenJDK 64-Bit Server VM (build 17+35-Ubuntu-120.04, mixed mode, sharing)

Jetzt gehts. Aber bekomme jetzt die Meldung
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Exception in thread "main" com.pi4j.provider.exception.ProviderNotFoundException: Pi4J provider [pigpio-digital-output] could not be found. Please include this 'provider' JAR in the classpath. at com.pi4j.provider.impl.DefaultRuntimeProviders.get(DefaultRuntimeProviders.java:238) at com.pi4j.provider.impl.DefaultProviders.get(DefaultProviders.java:147) . . .

Ich habe schon auf der Seite bei StaticLoggerBinder geschaut, aber leider wird mir nicht klar was ich änder muss.
 

matze86

Bekanntes Mitglied
OK. Bin der Anleitung befolgt,allerdings habe ich laut ausgabe noch Pi4J 1.4 statt 2.0 drauf. Obwohl in der pom.xml und bei Maven dependencies 2.0 steht. 🤔
Vielleicht ist das der Auslöser.

$ pi4j --version -------------------------------------------- THE Pi4J PROJECT -------------------------------------------- PI4J.VERSION : 1.4 PI4J.TIMESTAMP : 2021-03-02 03:43:12 ---------------------------------------- WIRINGPI.PATH : /usr/lib/libwiringPi.so /usr/local/lib/libwiringPi.so WIRINGPI.VERSION : 2.60 --------------------------------------------
 

matze86

Bekanntes Mitglied
So bezüglich der obigen Fehlermeldung bekomme ich keine Meldung mehr. Ich habe in der pom.xml das hinzu gefügt:
XML:
<dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>1.7.5</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.5</version>
</dependency>

Jetzt bekomme ich, wenn ich "Thread.sleep(5000);" im Code habe folgende Meldung:
Error: LinkageError occurred while loading main class neu.Gpio java.lang.UnsupportedClassVersionError: neu/Gpio has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
Wenn ich das auskommentiere wird, zeigt er nur Warnungen an.

Hier nochmal mein Code.
Java:
package neu;

import com.pi4j.Pi4J;
import com.pi4j.io.gpio.digital.DigitalInput;
import com.pi4j.io.gpio.digital.DigitalOutput;
import com.pi4j.io.gpio.digital.DigitalState;
import com.pi4j.io.gpio.digital.PullResistance;
import com.pi4j.util.Console;
public class Gpio {

        private static final int PIN_LED = 11; // PIN 15 = BCM 22

    
        
        public static void main(String[] args)  throws Exception {
            System.out.println("habens endlich geschafft");

            var pi4j = Pi4J.newAutoContext();

            var ledConfig = DigitalOutput.newConfigBuilder(pi4j)
                    .id("led")
                    .name("LED Flasher")
                    .address(PIN_LED)
                    .shutdown(DigitalState.LOW)
                    .initial(DigitalState.LOW)
                    .provider("pigpio-digital-output");
            var led = pi4j.create(ledConfig);

        
         led.high();
         Thread.sleep(5000);
         led.low();
        
        
         pi4j.shutdown();
        }
    }

Vielleicht kann jemand was dazu sagen.
 

mihe7

Top Contributor
Du kompilierst mit JDK 17 für Java 17 und versuchst, den Spaß unter Java 11 laufen zu lassen. Daher die Fehlermeldung.
 
K

kneitzel

Gast
Du kannst natürlich Dein Projekt generell mit einer niedrigeren Java Version bauen.

Aber Java 17 gibt es auch für den Pi. So sehe ich z.B. auf https://adoptium.net/releases.html für Linux sowohl AACH64 als auch ARM32 Builds.

Ich habe jetzt kein Raspbian zur Hand, aber da würde ich eigentlich erwarten, dass da auch schon ein openjdk-17 Paket vorhanden ist.
 

matze86

Bekanntes Mitglied
Das hat funktioniert, habe jetzt Java 17 auf dem Pi und funktioniert. Danke.

Wenn ich nochmal zur LED komme. habe ich jetzt folgenden Code:
Java:
package neu;

import com.pi4j.Pi4J;
import com.pi4j.io.gpio.digital.DigitalInput;
import com.pi4j.io.gpio.digital.DigitalOutput;
import com.pi4j.io.gpio.digital.DigitalState;
import com.pi4j.io.gpio.digital.PullResistance;
import com.pi4j.util.Console;
public class Gpio {
    private static final int PIN_LED = 12;

    public static void main(String[] args)  throws Exception {
    System.out.println("start");

    var pi4j = Pi4J.newAutoContext();

    var output = pi4j.dout().create(PIN_LED);
    output.config().shutdownState(DigitalState.HIGH);
  
    
    output.high();
    Thread.sleep(5000);
    output.high();
        
    pi4j.shutdown();
    System.out.println("ende");
        }
    }

Leider leuchtet keine LED, bekomme nur folgende Warnungen:
start
log4j:WARN No appenders could be found for logger (com.pi4j.Pi4J).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
ende
 

Jw456

Top Contributor
Frage an welchen hardware Pin hast du die LED

HW pin12 ist BCM 18


Java:
// copy vom Link

private static final int PIN_LED = 22; // PIN 15 = BCM 22

// bei dir wohl private static final int PIN_LED = 18

var ledConfig = DigitalOutput.newConfigBuilder(pi4j)
      .id("led")
      .name("LED Flasher")
      .address(PIN_LED)
      .shutdown(DigitalState.LOW)
      .initial(DigitalState.LOW)
      .provider("pigpio-digital-output");
      
var led = pi4j.create(ledConfig);

while (pressCount < 5) {
      if (led.equals(DigitalState.HIGH)) {
           led.low();
      } else {
           led.high();
      }
      Thread.sleep(500 / (pressCount + 1));
}
 
Zuletzt bearbeitet:

matze86

Bekanntes Mitglied
Ich habe ihn an Pin 12 (BCM 18).
Getestet ob die LED leuchtet habe ich im Terminal mit exports.
Ich habe es auch mal getestet mit der pi4j Version 1.4 und da musste man nicht den BCM sondern PIN eintragen.
 

matze86

Bekanntes Mitglied
Zeig mal Deinen Code.
Java:
package neu;

import com.pi4j.Pi4J;
import com.pi4j.io.gpio.digital.DigitalInput;
import com.pi4j.io.gpio.digital.DigitalOutput;
import com.pi4j.io.gpio.digital.DigitalState;
import com.pi4j.io.gpio.digital.PullResistance;
import com.pi4j.util.Console;
import java.util.concurrent.TimeUnit;

public class Gpio {
    private static final int PIN_LED = 18;

    public static void main(String[] args)  throws Exception {
    System.out.println("start");

    var pi4j = Pi4J.newAutoContext();

    var output = pi4j.dout().create(PIN_LED);
    output.config().shutdownState(DigitalState.HIGH);
 
    
    output.high();
    Thread.sleep(5000);
  
    output.high();
        
    pi4j.shutdown();
    System.out.println("ende");
        }
    }
 

matze86

Bekanntes Mitglied
Habe ich 1:1 übernommen, nur mit PIN (BCM 18), also 18.
Da kommt diese Fehlermeldung:
[main] INFO com.pi4j.Pi4J - New auto context
[main] INFO com.pi4j.Pi4J - New context builder
[main] INFO com.pi4j.platform.impl.DefaultRuntimePlatforms - adding platform to managed platform map [id=raspberrypi; name=RaspberryPi Platform; priority=5; class=com.pi4j.plugin.raspberrypi.platform.RaspberryPiPlatform]
<<DIGITAL CHANGE EVENT>> [@DOUT-3 "DOUT-3" (#3)] STATE: [LOW -> HIGH]
<<DIGITAL CHANGE EVENT>> [@DOUT-3 "DOUT-3" (#3)] STATE: [HIGH -> LOW]
<<DIGITAL CHANGE EVENT>> [@DOUT-3 "DOUT-3" (#3)] STATE: [LOW -> HIGH]
<<DIGITAL CHANGE EVENT>> [@DOUT-3 "DOUT-3" (#3)] STATE: [HIGH -> LOW]
Exception in thread "main" java.lang.UnsupportedOperationException: BLINK has not yet been implemented!
at com.pi4j.io.gpio.digital.DigitalOutputBase.blink(DigitalOutputBase.java:134)
at com.pi4j.io.gpio.digital.DigitalOutput.blink(DigitalOutput.java:341)
at com.pi4j.io.gpio.digital.DigitalOutput.blink(DigitalOutput.java:329)
at neu.Gpio.main(Gpio.java:98)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
J Java Testklasse Java Basics - Anfänger-Themen 5
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
W Java code- TicTac toe Java Basics - Anfänger-Themen 51
Ostkreuz Java Docs Java Basics - Anfänger-Themen 9
R Java boolean Unterschied " == " und " = " Java Basics - Anfänger-Themen 3
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Java-code Java Basics - Anfänger-Themen 8
W Java-code Java Basics - Anfänger-Themen 9
W Java-Code erklären Java Basics - Anfänger-Themen 6
A Java Kurs / Tutorial Java Basics - Anfänger-Themen 6
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
P Java 2n Potenzieren Java Basics - Anfänger-Themen 1
J Java Hamster Java Basics - Anfänger-Themen 4
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
laxla123 If-else Java Java Basics - Anfänger-Themen 4
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
S Substring in java Java Basics - Anfänger-Themen 3
Z Operatoren Java Applikation Java Basics - Anfänger-Themen 8
Tw1Z Erste Schritte Sort in java Java Basics - Anfänger-Themen 2
sasnitzer java augensumme von zwei würfeln ist 1 Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben