Ein Slider steuert die Helligkeit einer LED
Ziel:
Die Helligkeit einer LED steuern.
Ein Java-Programm sendet Informationen zu Arduino.
Das Java Programm (es ist ein sog. "Frontend") enthält einen
Slider (Schieberegler), der die Werte 0 bis 255 liefert.
Diese Werte werden über USB an den Arduino gesendet.
Arduino benutzt diese Werte zum Steuern des PWM-Signals an
Pin11, an dem eine LED angeschlossen.
Die LED wird somit in ihrer Helligkeit gesteuert.


Du solltest vorher unbedingt dieses Experiment
erfolgreich durchgeführt haben.
Java-Programm:
In Deinem Java-Projekt legst Du ein neues Package
namens: "de.arduinospielwiese"
an.
In diesem Package legst Du eine neue Klasse namens "OneSliderToArduino"
an.
Ist die geforderte Klasse bei Dir angelegt, steht schon
einwenig Code darin.
Diesen vorhandenen Code kannst Du komplett löschen und statt
dessen dort den folgenden Programmcode hineinkopieren:
package de.arduinospielwiese;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import jssc.SerialPort;
import jssc.SerialPortException;
@SuppressWarnings("serial")
public class OneSliderToArduino extends JFrame
implements ChangeListener {
private JSlider sli;
private JLabel lbl;
private SerialPort sp;
public OneSliderToArduino() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setBounds(200, 20, 250, 500);
this.setTitle("Slider zu PWM");
this.setLayout(null);
this.createComponents();
this.setVisible(true);
}
private void createComponents() {
sli = new
JSlider(JSlider.VERTICAL, 0, 255, 0);
sli.setBounds(100, 20, 50, 400);
sli.setMajorTickSpacing(50); // Große
Skalenstriche
sli.setMinorTickSpacing(5); //
Kleine Skalenstriche
sli.setPaintTicks(true);
sli.setPaintLabels(true);
sli.addChangeListener(this);
this.add(sli);
lbl =
new JLabel("0");
lbl.setBounds(85, 230, 50, 420);
lbl.setHorizontalAlignment(JLabel.CENTER);
this.add(lbl);
sp = new
SerialPort("COM8"); //hier musst Du Deinen Port angeben!
try {
this.sp.openPort();
this.sp.setParams(9600, 8, 1, 0);
} catch
(SerialPortException e) {
e.printStackTrace();
}
}
public static void main(String[]
args) {
new
OneSliderToArduino();
}
@Override
public void stateChanged(ChangeEvent
arg0) {
int sliderValue =
sli.getValue();
lbl.setText(String.valueOf(sliderValue));
try {
sp.writeInt(sliderValue);
} catch
(SerialPortException e) {
e.printStackTrace();
}
}
}
Arduino-Programm:
int wert;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
wert = Serial.read();
analogWrite(11, wert);
}
delay(5); //eine kleine Pause kann nie schaden
}
Eine Erweiterung dieses Programmes mit 6 Sliders findest Du
hier.
|