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.
|