电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
创作
电子发烧友网>电子资料下载>电子资料>使用温度传感器控制Sphero

使用温度传感器控制Sphero

2023-06-19 | zip | 0.00 MB | 次下载 | 免费

资料介绍

描述

在这篇文章中,我想介绍一种使用 Android 手机的新方法,并解释我们如何使用它来控制Sphero球。如果您不知道这个令人难以置信的球,请查看Sphero 网站

计划:使用温度传感器控制 Sphero

在这个 Android 项目中,我想描述我们如何在智能手机中集成温度传感器来控制 Sphero 球的颜色。换句话说,我想根据智能手机测量的温度改变球的颜色,即使它处于待机状态。这是一个有趣的项目,因为它可以用来演示一些重要的概念:

最后但同样重要的是,如何连接和使用Sphero ball 及其 SDK 我们要设计的是一个如下图所示的应用程序:

 
poYBAGOIO7uAWcCdAABMv62ByG0646.png
 

应用程序设计

现在我们知道我们想要获取什么,我们可以混合使用 Android 特性和组件来获取它。我们需要一个监控温度传感器的组件和另一个连接到 Sphero 的组件。如前所述,即使应用程序不在前台或智能手机处于待机状态,我们也想让这项工作正常进行。所以我们需要一个Service,因为这个Android组件可以满足我们的要求。我们将用来控制 Sphero 的组件是:

  • 作为应用程序 UI 的 Activity
  • 监控温度传感器的服务
  • 连接到球并控制其颜色的服务
 
poYBAGOIO76AElzYAACLhA536C4561.png
 

UI 活动启动两个服务并侦听来自它们的事件。该活动设置了一个警报,用于启动温度传感器服务,这样我们就不会耗尽电池。警报可以配置为以固定的时间间隔启动。每次温度传感器启动时,它都会测量环境温度并广播该值。UI 活动侦听这些事件并在 UI 中显示值。同时,球连接服务监听相同的事件并计算颜色分量(R、G、B)并设置球的颜色。

创建温度传感器服务:代码

现在我们已经大致了解了应用程序中的主要组件,我们可以开始对其进行编码了。我们要编码的第一个元素是温度传感器服务。

创建球连接服务:代码

我们必须实施的另一项服务是通过蓝牙处理 Sphero 连接。您可以参考 Sphero SDK 了解更多信息我们想在 android 服务中处理连接:

public class BallConnectionService extends Service {
..
}

现在onStartCommand 我们开始连接到 Sphero,同时我们开始监听传入的温度事件(第 8 行)。

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (mySphero == null)
doConnection();
IntentFilter rec = new IntentFilter();
rec.addAction(SensorService.TEMP_BALL_SENSOR);
registerReceiver(receiver, rec);
return Service.START_STICKY;
}

doConnection我们进行实际连接时:

private void doConnection() {
    sendStatus(CONNECTING);
    createNotification("Connecting...");
    RobotProvider.getDefaultProvider().addConnectionListener(new ConnectionListener() {
    @Override
    public void onConnected(Robot robot) {
        Log.d("Temp", "Connected");
        mySphero = (Sphero) robot;
        sendStatus(CONNECTED);
        createNotification("Connected");
    }
    @Override
    public void onConnectionFailed(Robot robot) {
        Log.d("Temp", "Conection failed");
        sendStatus(FAILED);
    }
    @Override
    public void onDisconnected(Robot robot) {
        Log.d("Temp", "Disconnected");
        mySphero = null;
        createNotification("Disconnected!");
    }
});

RobotProvider.getDefaultProvider().addDiscoveryListener(new DiscoveryListener() {
@Override
public void onBluetoothDisabled() {
Log.d("Temp", "BT Disabled");
}
@Override
public void discoveryComplete(Listspheros) {
Log.d("Temp", "Found ["+spheros.size()+"]");
}
@Override
public void onFound(Listspheros) {
// Do connection
Log.d("Temp", "Found ball");
RobotProvider.getDefaultProvider().connect(spheros.get(0));
}
});
boolean success = RobotProvider.getDefaultProvider().startDiscovery(this);
}

代码看似复杂,仔细看其实很简单。我们开始广播我们尝试连接到 Sphero 的事件(第 3 行),然后,使用 Sphere API,我们注册一个侦听器以了解连接何时建立,并在最后广播连接处于活动状态的新事件通过这种方法,我们开始发现周围是否有新的 Sphero 并准备好连接。

服务的最后一部分用于监听温度事件并设置球的颜色:

private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
float val = intent.getFloatExtra("value", 0);
Log.d("Temp", "Received value ["+val+"]");
if (mySphero != null) {
// send color to sphero
int red = (int) (255 * val / RANGE) * (val > 10 ? 1 : 0);
int green = (int) ( (255 * (RANGE - Math.abs(val)) / RANGE) * (val < 10 ? 0.2 : 1) );
int blue = (int) (255 * (10 - val) / 10) * (val < 10 ? 1 : 0);
mySphero.setColor(red, green, blue);
}
}
;

现在是创建应用程序并使用 Android 温度传感器控制 Sphero 的时候了。


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费