【问题标题】:varying pwm on an arduino through visual basic 2010通过visual basic 2010在arduino上改变pwm
【发布时间】:2015-01-05 02:43:36
【问题描述】:

所以我在 vb 2010 上制作了一个用户界面,允许用户在文本框中键入他们想要的 0-255 之间的值的 PWM。我希望能够获取该值并尽可能多地更改它,但似乎有一个问题,我只能发送一个值而无需再次调试程序。我用作测试的 LED 似乎没有以我在文本框中使用的 PWM 的等效亮度响应。我希望能够使用某种 switch 语句以 8 个独立的继电器作为最终目标来控制它。任何帮助都会非常好我当前的代码: VB

 Imports System.IO
Imports System.IO.Ports
Imports System.Threading
Public Class Form1
    Shared _continue As Boolean
    Shared _serialPort As SerialPort
    Dim SerialPort1 As SerialPort
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        SerialPort1 = New SerialPort
        SerialPort1.PortName = "COM4"
        SerialPort1.BaudRate = 9600
        SerialPort1.DataBits = 8
        SerialPort1.Parity = Parity.None
        SerialPort1.StopBits = StopBits.One
        SerialPort1.Handshake = Handshake.None
        SerialPort1.Encoding = System.Text.Encoding.Default
        SerialPort1.Open()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim input As String
        Dim returnvalue As String

        input = TextBox1.Text
        returnvalue = input


        SerialPort1.Write(input)
        SerialPort1.Close()


        MessageBox.Show(returnvalue)

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim a As Integer
        a = SerialPort1.ReadChar()
        MessageBox.Show(a)
    End Sub
End Class



Arduino
   void setup() {
  // initialize serial communication:
  Serial.begin(9600);
   // initialize the LED pins:
      int thisPin = 2;
        pinMode(thisPin, OUTPUT);
      }

void loop() { 
    int inByte= 0;
    int V1;
  if (Serial.available()) {
     inByte = Serial.read();
     V1 = inByte;
      analogWrite(2, V1);
  }
}

Any help would be awesome ive been stumped on this for awhile

【问题讨论】:

  • 问:你真的应该在 Button1_Click() 中这样做 SerialPort1.Close() 吗?另外:看看herehere

标签: vb.net serial-communication pwm


【解决方案1】:

我对 VB 2000 没有什么经验。但我可以回答 Arduino 方面的问题。看起来您正在读取 Arduino 中的字节(每次 1 个)

 inByte = Serial.read();

但看起来您正在 VB2000 应用程序中发送文本

 SerialPort1.Write(input)

你能确认一下吗?如果是这样,您需要将文本输入转换为 Integer,然后仅发送 1 个字节。

【讨论】:

  • 是的,我以 0-255 之间的数字形式将文本从 vb 2010 发送到 arduino,这将代表 pwm 周期,以便我可以更改 LED 的亮度
  • 在 SerialPort1.Write(input) 之后,你不需要像“flush”这样的想法来真正发送数据吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多