Outra possibilidade é usar JArduino, que possibilita o uso de código Java para diretamente interagir com o Arduino. O que você precisa fazer é seguir o tutorial do README da página do JArduino. Uma vez usando Java podemos utilizar qualquer API já bem conhecida
Problemas
O seguinte erro me tomou alguns minutos:
java.lang.UnsatisfiedLinkError: no rxtxSerial64 in java.library.path thrown while loading gnu.io.RXTXCommDriver
Ele vem por causa da falta da API nativa RxTx. Simplesmente baixe a API para o seu sistema aqui aqui e colocou na lib da sua JDK. No meu caso o diretório que usei foi: /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64
Lendo um sensor de luz (LDR) a partir do Java
O "olá mundo" do mundo arduino é fazer um led piscar. Eu queria começar com algo mais interativo, então criei uma aplicação simples que lê uma entrada analógica conectada a um LDR, como descrito nesse tutorial. Coisas para se notar sobre o código
- A classe JArduino imita um código Arduino. Você simplesmente estende a classe JArduino e implementa suas coisas no método loop e configura as portas no método setup;
- Eu estou usando maven e tive que adicionar alguns repositórios no meu pom.xml pois algumas dependências não estão disponíveis na central do Maven;
- A única coisa que precisamos fazer no lado do arduino é subir o código provido pelo JArduino. Lembre-se de usar a porta certa na sua classe;
- O circuito é o mesmo do tutorial Using an LDR Sensor with Arduino: A Tutorial for Beginners, a diferença aqui é que uso o Garagino:
Aqui está o código:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.fxapps.arduino; | |
public class App { | |
public static void main(String[] args) { | |
// remember to use the correct port in your project | |
new LightSensorApp("/dev/ttyUSB0" , System.out::println) | |
.runArduinoProcess(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.fxapps.arduino; | |
import java.util.function.Consumer; | |
import org.sintef.jarduino.AnalogPin; | |
import org.sintef.jarduino.InvalidPinTypeException; | |
import org.sintef.jarduino.JArduino; | |
public class LightSensorApp extends JArduino { | |
private Consumer<Short> receiveLight; | |
public LightSensorApp(String port, Consumer<Short> receiveLight) { | |
super(port); | |
this.receiveLight = receiveLight; | |
} | |
@Override | |
protected void setup() throws InvalidPinTypeException { | |
} | |
@Override | |
protected void loop() throws InvalidPinTypeException { | |
short light = analogRead(AnalogPin.A_0); | |
receiveLight.accept(light); | |
delay(100); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
<modelVersion>4.0.0</modelVersion> | |
<groupId>org.fxapps.arduino</groupId> | |
<artifactId>arduino-light-chart</artifactId> | |
<version>1.0</version> | |
<repositories> | |
<repository> | |
<id>thingml-snapshot</id> | |
<name>thingml-snapshot</name> | |
<url>http://maven.thingml.org/thingml-snapshot/</url> | |
</repository> | |
<repository> | |
<id>thingml-release</id> | |
<name>thingml-release</name> | |
<url>http://maven.thingml.org/thingml-release/</url> | |
</repository> | |
<repository> | |
<id>thirdparty</id> | |
<name>thingml-snapshot</name> | |
<url>http://maven.thingml.org/thirdparty/</url> | |
</repository> | |
</repositories> | |
<dependencies> | |
<dependency> | |
<groupId>org.kevoree.extra</groupId> | |
<artifactId>org.kevoree.extra.osgi.rxtx</artifactId> | |
<version>2.2.0</version> | |
</dependency> | |
<dependency> | |
<groupId>org.sintef.jarduino</groupId> | |
<artifactId>org.sintef.jarduino.core</artifactId> | |
<version>0.1.7-SNAPSHOT</version> | |
</dependency> | |
<dependency> | |
<groupId>org.sintef.jarduino</groupId> | |
<artifactId>org.sintef.jarduino.serial</artifactId> | |
<version>0.1.7-SNAPSHOT</version> | |
</dependency> | |
</dependencies> | |
</project> |
Agora em breve no blog Aprendendo JavaFX iremos postar algo visual. Até mais!
Nenhum comentário:
Postar um comentário