|
|
本帖最后由 445814907 于 2013-1-24 02:57 编辑
一直想用上位机控制arduino。计划用方案1用C++编,但是发现网上的视频大部分直接就教编串口调试助手这个软件,完全跟不上视频的步骤啊,方案2用labview软件,但是labview里面的串口例子也是串口调试助手这个例子啊,我总不能直接就用吧,G语言编的,看的我头大啊,这么改都不知道。最后的最后,我觉得与其把时间浪费在纯上位机的编程上,不如就是能达到我的要求,能和arduino通讯就好。
第一个图片是前面的设计,第二个图片是代码窗口,别看就这几句代码,好用就行啊,哈哈,我插上arduino,显示的是COM3,所以在
第一栏的代码框里Comm3.PortOpen = True,打开COM3口,
第二栏
Private Sub Command2_Click()
Comm3.Output = "a"
End Sub
使com3 发送数据a
第三栏
Private Sub Command3_Click()
Comm3.PortOpen = fase
End Sub
使com3 关闭
Private Sub Command4_Click()
Comm3.Output = "b"
End Sub
使com3 发送数据b
编完之后F5运行就可以了,这时要注意不能打开arduino的COM工具,
图片2是代码窗口的截图。
下面的是arduino的代码,我要实现的功能是点击上位机led按钮,arduino的led灯亮,点击led1按钮arduino的led1亮。思路就是串口发送"a", arduino 读到a,进行led 部分的工作。同理于“b”
int led=2;     //把LED连在Arduino数字端口2
int led1 = 3; //把LED连在Arduino数字端口3
//初始化
void setup() 
{
  Serial.begin(9600);  //启动串行通讯,波特率为9600b/s
  pinMode(led,OUTPUT);  
  pinMode(led1,OUTPUT);
  digitalWrite(led,HIGH);
  digitalWrite(led1,HIGH);
}
//主程序
void loop() 
{
  char val;//定义变量val,用于暂存上位机发送来的字符
  if(Serial.available()>0)//如果上位机发送来了字符
  {
    val=Serial.read(); //读取上位机发来的字符,并保存到val  
    Serial.println(val); //显示接受到的字符
    if(val=='a')//如果上位机发送字符'a',
    {
      digitalWrite(led,LOW); //点亮LED灯         
    }
    if(val=='b')//如果上位机发送字符'b',
    {
       digitalWrite(led1,LOW);//点亮LED1          
    }    
  }
  delay(100);//延时100ms
}
测试好用,第一次添加个附件,看看好不好用,哈哈。还有啊,大家要是想试试,看看把自己的arduino的改成COM3.试试好不好用啊,然后告诉我。我觉得应该能还用。水平太差,让大家见笑了啊 。还有我的暴力改装arduino。在万用版的下面了,不想把钱花在那些扩展板上,自己动手丰衣足食啊,还有不会传视频啊,怎么传?大家教教我啊。。还的攒钱娶媳妇呢。哈哈
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|