摇杆

博客介绍了C9系列手柄,其常用于工业机器人操纵面板等,可选择不同输出电压范围,能外接RS232或USB模块输出。给出了下载链接,还说明了使用时数值范围是0 - 1024,一个通道两个方向范围分别为0 - 511和512 - 1024,数值由两字节拼凑成10bit。

简介:

          C9系列手柄,常用在工业机器人操纵面板、电机控制、数控操作面板灯。可根据选择不同输出电压范围,可外接RS232或USB模块输出。

 

介绍:

下载链接:https://download.youkuaiyun.com/download/c_gyl/11351939

 

使用:

  1. 范围是0~1024。
  2. 一个通道有两个方向,范围分别是0~511和512~1024。
  3. 数值是两个字节拼凑成10bit。
        string Rec;
        public bool GetValue(out int Dir, out int Value)
        {

            bool result = true;
            byte[] bt = new byte[2];
            int xValue, yValue;
            Dir = 0;
            Value = 0;

            //转化成数字
            bt[0] = (byte)(Rec[1] & 0x03);
            bt[1] = Rec[2];
            xValue = (bt[0] << 8) + bt[1];

            bt[0] = (byte)(Rec[3] & 0x03);
            bt[1] = Rec[4];
            yValue = (bt[0] << 8) + bt[1];

            if ((xValue >= 562 && xValue <= 1023) && Math.Abs(yValue - 512) < 50)
            {
                Value = xValue - 512;
                Dir = 0;
                return true;
            }
            else if (xValue <= 461 && xValue >= 0 && Math.Abs(yValue - 511) < 50)
            {
                Value = 512 - xValue;
                Dir = 1;
                return true;
            }
            else
            {
                result = false;
            }

            if (yValue >= 562 && yValue <= 1023 && Math.Abs(xValue - 512) < 50)
            {
                Value = yValue - 512;
                Dir = 2;
                return true;
            }
            else if (yValue <= 461 && yValue >= 0 && Math.Abs(xValue - 511) < 50)
            {
                Value = 512 - yValue;
                Dir = 3;
                return true;
            }
            else
            {
                result = false;
            }

            return result;
        }

 

摇杆与Arduino结合使用在多个方面有应用。 从硬件角度来看,JoyStick Shield有1个PS2带按钮十字摇杆,还有4颗圆形按钮、2个小按键,为Arduino提供了摇杆和按键的输入扩展,其载开关可以在3.3V和5V之间切换,还能用于其它3.3V单片机平台,如STM32 [^3]。 在原理方面,摇杆实际上是两个电位器和一个微动按钮,电位器可理解为圆形的滑动电阻,微动按钮是普通按钮但不能保持按下状态,按下去松开就自动弹起。在使用Arduino读取摇杆信息前,需要了解analogRead函数和摇杆基本原理 [^2]。 在应用场景上,摇杆与Arduino结合有广泛用途: - **游戏娱乐领域**:在基于Arduino的小型游戏中,摇杆可作为主要控制输入设备,如在迷宫游戏里控制角色移动、射击游戏中控制射击方向;结合OLED显示屏,能带来更丰富的互动游戏体验,如在冒险游戏中控制角色在不同场景切换,OLED实时显示角色位置和环境变化 [^4]。 - **智能家居控制**:可用于控制智能设备状态,如调节智能灯光亮度、控制智能窗帘开合程度;还能在智能家居设备设置界面作为导航和选择工具,方便用户进行个性化配置 [^4]。 - **教育与科普领域**:在电子工程、计算机科学等实验教学中,可作为教学辅助工具,让学生通过摇杆控制OLED屏幕上图形或数据显示,加深对知识的理解;在科技馆、博物馆等科普场所,用于制作互动展示项目,增加科普趣味性和吸引力 [^4]。 - **工业控制与监测**:在工业控制系统中,可实时调整设备运行参数,通过OLED显示屏显示设备状态和参数信息;在工业监测领域,用于数据的可视化展示和分析,如切换不同监测数据图表 [^4]。 在代码示例上,有Arduino实验开源代码用于测试摇杆扩展,通过analogRead函数读取摇杆Y轴和X轴的值,用digitalRead函数读取按键值,并通过串口显示,代码如下 [^5]: ```cpp /* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验一百二十:JoyStick Shield PS2游戏摇杆扩展 模拟键盘鼠标功能 大摇杆模块 项目:摇杆扩展测试之二 */ char button0 = 7, Y = 6, R = 3, G = 4, B = 5; void setup(void) { pinMode(R, INPUT); //设置口按键为输入状态,并配置上拉。 digitalWrite(R, HIGH); pinMode(button0, INPUT); digitalWrite(button0, HIGH); pinMode(G, INPUT); digitalWrite(G, HIGH); pinMode(B, INPUT); digitalWrite(B, HIGH); pinMode(Y, INPUT); digitalWrite(Y, HIGH); Serial.begin(9600); //设置串口通信9600波特率 } void loop(void) { Serial.print(analogRead(1)); //读取摇杆Y轴的值,串口显示 Serial.print(","); Serial.print(analogRead(0)); //读取摇杆X轴的值,串口显示 Serial.print(","); Serial.print(digitalRead(button0)); //读按键值,串口显示 Serial.print(digitalRead(R)); Serial.print(digitalRead(G)); Serial.print(digitalRead(B)); Serial.println(digitalRead(Y)); delay(100); //100ms刷新一次 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值