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.