Hallo Gemeinde,
leider habe ich ein Problem. Im Bereich Arduino bin ich noch neu.
Ich versuche über verschiedene Ausgänge eines Arduinos PWM Signale auszugeben.
Das ganze möchte ich mit einem kleinem Programm vom PC aus steuern.
Soweit ganz gut. Habe hier auch eine kleine Anleitung gefunden.
Ein Ausgang funktioniert aber nicht die anderen.
Leider komme ich nicht weiter und benötige hilfe von den "Wissenden".
Hier der Code vom Arduino:
hier der Code von VB2010:
Ich weiß nicht mehr weiter. Könnt Ihr mir bitte helfen? Danke
leider habe ich ein Problem. Im Bereich Arduino bin ich noch neu.
Ich versuche über verschiedene Ausgänge eines Arduinos PWM Signale auszugeben.
Das ganze möchte ich mit einem kleinem Programm vom PC aus steuern.
Soweit ganz gut. Habe hier auch eine kleine Anleitung gefunden.
Ein Ausgang funktioniert aber nicht die anderen.
Leider komme ich nicht weiter und benötige hilfe von den "Wissenden".
Hier der Code vom Arduino:
C-Quellcode
- int inByte;
- char inText1[300];
- char inText2[300];
- char inText3[300];
- char inText4[300];
- int outp1;
- int outp2;
- int outp3;
- int outp4;
- int index1;
- int index2;
- int index3;
- int index4;
- int PWM1 = D5;
- int PWM2 = D6;
- int PWM3 = D7;
- int PWM4 = D8;
- void setup() {
- Serial.begin(9600);
- pinMode(D5, OUTPUT);
- pinMode(D6, OUTPUT);
- pinMode(D7, OUTPUT);
- pinMode(D8, OUTPUT);
- int outp1 = 0;
- int outp2 = 0;
- int outp3 = 0;
- int outp4 = 0;
- }
- void loop(){
- if (Serial.available() > 0) {
- inByte = Serial.read();
- if (inByte == 13) // Wenn das Enter ankommt. PWM1 D5
- {
- // outp1 = 0;
- outp1= atoi(inText1);
- analogWrite(PWM1, outp1);
- index1 = 0;
- memset(&inText1[0], 0, sizeof(inText1));
- }
- else // Falls kein Enter kommt muss der Text gespeichert werden in dem inText Array
- {
- if (index1 < 300) { // Diese Überprüfung ist nötig, damit das Array nicht überfüllt wird sonst werden andere Variablen überschrieben.
- inText1[index1] = inByte;
- index1 += 1;
- }
- }
- if (inByte == 8) // Wenn das Back ankommt. PWM2 D6
- {
- // outp2 = 0;
- outp2= atoi(inText2);
- analogWrite(PWM2, outp2);
- index2 = 0;
- memset(&inText2[0], 0, sizeof(inText2));
- }
- else // Falls kein Enter kommt muss der Text gespeichert werden in dem inText Array
- {
- if (index2 < 300) { // Diese Überprüfung ist nötig, damit das Array nicht überfüllt wird sonst werden andere Variablen überschrieben.
- inText2[index1] = inByte;
- index2 += 1;
- }
- }
- if (inByte == 24) // Wenn das Cancel ankommt. PWM3 D7
- {
- outp3 = 0;
- outp3= atoi(inText3);
- analogWrite(PWM3, outp3);
- index3 = 0;
- memset(&inText3[0], 0, sizeof(inText3));
- }
- else // Falls kein Enter kommt muss der Text gespeichert werden in dem inText Array
- {
- if (index3 < 300) { // Diese Überprüfung ist nötig, damit das Array nicht überfüllt wird sonst werden andere Variablen überschrieben.
- inText3[index3] = inByte;
- index3 += 1;
- }
- }
- if (inByte == 10) // Wenn das lf linefeed ankommt. PWM4 D8
- {
- outp4 = 0;
- outp4= atoi(inText4);
- analogWrite(PWM4, outp4);
- index4 = 0;
- memset(&inText4[0], 0, sizeof(inText4));
- }
- else // Falls kein Enter kommt muss der Text gespeichert werden in dem inText Array
- {
- if (index4 < 300) { // Diese Überprüfung ist nötig, damit das Array nicht überfüllt wird sonst werden andere Variablen überschrieben.
- inText4[index4] = inByte;
- index4 += 1;
- }
- }
- }
- }
hier der Code von VB2010:
VB.NET-Quellcode
- Public Class Form1
- Dim ser As New System.IO.Ports.SerialPort
- Dim Scro As Integer
- Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
- Scro = 0
- ser.WriteLine(Scro & vbCr)
- ser.Close()
- End Sub
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- ser.BaudRate = 9600
- ser.PortName = "COM6"
- ser.Open()
- End Sub
- Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
- Label1.Text = HScrollBar1.Value.ToString
- ser.WriteLine(HScrollBar1.Value & vbCr)
- End Sub
- Private Sub HScrollBar2_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar2.Scroll
- Label2.Text = HScrollBar2.Value.ToString
- ser.WriteLine(HScrollBar2.Value.ToString & vbBack)
- End Sub
- Private Sub HScrollBar3_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar3.Scroll
- Label3.Text = HScrollBar3.Value.ToString
- ser.WriteLine(HScrollBar3.Value & vbCancel)
- End Sub
- Private Sub HScrollBar4_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar4.Scroll
- Label4.Text = HScrollBar4.Value.ToString
- ser.WriteLine(HScrollBar4.Value.ToString & vbLf)
- End Sub
- End Class
Ich weiß nicht mehr weiter. Könnt Ihr mir bitte helfen? Danke