"新四大火炉城市"榜单系2012年发布 到底哪座城最热

社会化媒体
了解更多>>
桂ICP备 号
阅读下一篇
自媒体运营攻略
行业经验交流
Hi,在你登录以后,就可以永久免费的收藏任何您感兴趣的内容,关注感兴趣的作者!
手机注册或邮箱注册
点击按钮进行验证
请输入正确的邮箱
已有帐号请点击
帐号创建成功!
我们刚刚给你发送了一封验证邮件
请在48小时内查收邮件,并按照提示验证邮箱
感谢你对微口网的信任与支持
你输入的邮箱还未注册
还没有帐号请点击
点击按钮进行验证
你输入的邮箱还未注册
又想起来了?
你已成功重置密码,请妥善保管,以后使用新密码登录
邮件发送成功!
我们刚刚给你发送了一封邮件
请在5分钟内查收邮件,并按照提示重置密码
感谢你对微口网的信任与支持
对不起,你的帐号尚未验证
如果你没有收到邮件,请留意垃圾箱 或
意见与建议
请留下您的联系方式
* 留下您正确的联系方式,以便工作人员尽快与你取得联系
转藏至我的藏点天气又转热了,我给她做了个智能小风扇 - 文章 - 伯乐在线
& 天气又转热了,我给她做了个智能小风扇
黄花深巷,
红叶低窗,
凄凉一片秋声。
豆雨声来,
中间夹带风声。
疏疏二十五点,
丽谯门、不锁更声。
问谁摇玉佩,
檐底铃声。
彩角声吹月堕,
渐连营马动,
四起笳声。
闪烁邻灯,
灯前尚有砧声。
知他诉愁到晓,
碎哝哝、多少蛩声。
诉未了,把一半、分与雁声。
123456789101112131415161718
黄花深巷,红叶低窗,凄凉一片秋声。豆雨声来,中间夹带风声。疏疏二十五点,丽谯门、不锁更声。故人远,问谁摇玉佩,檐底铃声。彩角声吹月堕,渐连营马动,四起笳声。闪烁邻灯,灯前尚有砧声。知他诉愁到晓,碎哝哝、多少蛩声。诉未了,把一半、分与雁声。
一首短诗《声声慢 秋声》献与大家。蒋捷的这首短诗共96字,其中有十个“声”字;其通过风声、雨声、更声、铃声、笳声、砧声、蛩声、雁声来形容秋天的到来,颇有节奏感。
一直颇喜欢古典诗词,怎奈天赋不佳,至今连完整的四言诗都木写出来过……哎……不提伤心往事了……五音不全不能阻止我喜爱音乐,不能作诗亦不能阻止我爱诗哒!!记得小时候在乡间,对四季的变化非常敏锐,树枝张新芽了,知春来了;知了叫了,知夏来了,树叶黄了,知秋来了;雪花飘了,知深冬了。如今,生活在钢筋水泥之间,对季节的感觉淡漠了,似乎是麻木了,唯一触发人知觉的只有温度,冷了暖气,热了风扇/空调;对于季节的感受全然变了被遗弃的孩子,尽管它在冬天里猛力的哭号,也没有多少人能听见……向往古人感受季节的敏锐……
我这是说哪去了呢……哎……情不自禁啊……大家谅解……
话说,长沙天气的热是出了名的,四大火炉之一啊!只是今年天气有点异常,只有在7月热了一小段时间,后面一直是清凉气爽的天!!!在这样的天气下,舒服地过了几个月后(咱家席子都换成被子了),现在又突然变热,大家都有点不适应,GF表现得尤为突出。坐一会就焦躁不安地站起来,说热死了,热死了,显得燥热难耐的样子(她本身散热面积就挺大,不知为啥比我还热……)。好吧,那就开风扇吧,可没吹多久,又说这风吹着不舒服,风大了点还冷。额……,这可是开得最小档啊!为了让GF乖乖的做在我旁边陪我写代码(当然她可以用手机玩游戏),我试着用技术来解决这个问题……
学技术,去哪里,当然是山东蓝翔啊,哈哈……开个玩笑,最近关于蓝翔的段子还真不少,咱就不跟这个风了。 咱可是程序员,用一现有技术拼凑(高大上的说法是集成)就能解决问题好不。下面就说说我要做的智能风扇的功能吧:
风速无级调节
手机控制风扇开关及风速
语音控制风扇开关及风速(能够根据语义进行智能控制)
通过检测皮肤的温湿度控制风扇开关及风速(手环啊)
要做的功能确定了,那就设计方案和准备材料吧。
7寸大号丝雨usb电风扇,用着好用就帮人家推荐下(塑料的,轻,便宜),这是我做人的原则
拿着师弟做的带WiFi功能的Arduino板子,不给钱的,光线暗拍着不好看,其实做的还蛮精致的。
控制接口电路
通过主控板pwm输出控制电源给风扇供电,用万用板焊接好后如下
如果配送这个手机的话,风扇应该会被扔掉,所以坚决不用这种档次的手机。
听说又要变天了,为了在天气变凉前把风扇做出来,这个还是在第二版再做吧。
Arduino IDE编程
是的,控制端的程序我就是用arduino写的,你们就尽情的鄙视我吧。
而且关于pwm调节只要这么一条语句就实现了哦。
analogWrite( 7 , hp*25 );
<div class="crayon-num" data-line="crayon-5a98e
analogWrite( 7 , hp*25 );
Alljoyn通信
用Alljoyn完全是为了装逼,可以对别人吹牛说,我的风扇里用了最先进的物联网技术,其实用tcp通信就能实现。
主控板端Alljoyn接口代码:
static const char* const testInterface[] = {
&org.alljoyn.sample.ledcontroller&,
&?Flash msec&u&,
static const char* const testInterface[] = {&&&&&quot;org.alljoyn.sample.ledcontroller&quot;,&&&&&quot;?Flash msec&lt;u&quot;,&&&&&quot;?On&quot;,&&&&&quot;?Off&quot;,&&&&NULL};
科大飞讯语音引擎
大家用着都说好,我试了下,果然不错!科大飞讯,中国人都用它。
语音识别关键部分代码:
private InitListener mInitListener = new InitListener() {
public void onInit(int code) {
Log.d(TAG, &SpeechRecognizer init() code = & + code);
if (code == ErrorCode.SUCCESS) {
findViewById(R.id.isr_recognize).setEnabled(true);
* 构建语法监听器。
private GrammarListener grammarListener = new GrammarListener() {
public void onBuildFinish(String grammarId, SpeechError error) {
if(error == null){
String grammarID = new String(grammarId);
Editor editor = mSharedPreferences.edit();
if(!TextUtils.isEmpty(grammarId))
editor.putString(KEY_GRAMMAR_ABNF_ID, grammarID);
editor.commit();
showTip(&语法构建成功:& + grammarId);
showTip(&语法构建失败,错误码:& + error.getErrorCode());
* 识别监听器。
private RecognizerListener mRecognizerListener = new RecognizerListener() {
public void onVolumeChanged(int volume) {
showTip(&当前正在说话,音量大小:& + volume);
public void onResult(final RecognizerResult result, boolean isLast) {
runOnUiThread(new Runnable() {
public void run() {
if (null != result) {
Log.d(TAG, &recognizer result:& + result.getResultString());
String text = &&;
if(mEngineType.equals(SpeechConstant.TYPE_CLOUD))
//解析云端结果
text = JsonParser.parseGrammarResult(result.getResultString());
//解析本地结果
text = XmlParser.parseNluResult(result.getResultString());
//((EditText)findViewById(R.id.isr_text)).setText(text);
//分析识别结果
Boolean analyzeRelult = analyzeWords(text);
//发送控制指令
if(analyzeRelult)
controlFan(mWindLevel);
Log.d(TAG, &recognizer result : null&);
SystemClock.sleep(100);
//下一次语音识别
Button recognizeButton = (Button)findViewById(R.id.isr_recognize);
recognizeButton.performClick();
public void onEndOfSpeech() {
showTip(&结束说话&);
public void onBeginOfSpeech() {
showTip(&开始说话&);
public void onError(SpeechError error) {
showTip(&onError Code:& + error.getErrorCode());
SystemClock.sleep(100);
//下一次语音识别
Button recognizeButton = (Button)findViewById(R.id.isr_recognize);
recognizeButton.performClick();
public void onEvent(int eventType, int arg1, int agr2, String msg) {
<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e<div class="crayon-num crayon-striped-num" data-line="crayon-5a98e<div class="crayon-num" data-line="crayon-5a98e100101102103104105106
private InitListener mInitListener = new InitListener() {&&&&&&&&&@Override&&&&&&&&public void onInit(int code) {&&&&&&&&&&&&Log.d(TAG, &quot;SpeechRecognizer init() code = &quot; + code);&&&&&&&&&&&&if (code == ErrorCode.SUCCESS) {&&&&&&&&&&&&&&&&findViewById(R.id.isr_recognize).setEnabled(true);&&&&&&&&&&&&}&&&&&&&&}&&&&};&&&&&/**&&&& * 构建语法监听器。&&&& */&&&&private GrammarListener grammarListener = new GrammarListener() {&&&&&&&&@Override&&&&&&&&public void onBuildFinish(String grammarId, SpeechError error) {&&&&&&&&&&&&if(error == null){&&&&&&&&&&&&&&&&String grammarID = new String(grammarId);&&&&&&&&&&&&&&&&Editor editor = mSharedPreferences.edit();&&&&&&&&&&&&&&&&if(!TextUtils.isEmpty(grammarId))&&&&&&&&&&&&&&&&&&&&editor.putString(KEY_GRAMMAR_ABNF_ID, grammarID);&&&&&&&&&&&&&&&&editor.commit();&&&&&&&&&&&&&&&&showTip(&quot;语法构建成功:&quot; + grammarId);&&&&&&&&&&&&}else{&&&&&&&&&&&&&&&&showTip(&quot;语法构建失败,错误码:&quot; + error.getErrorCode());&&&&&&&&&&&&}&&&&&&&&&& &&&&&&&&}&&&&};&&&&&/**&&&& * 识别监听器。&&&& */&&&&private RecognizerListener mRecognizerListener = new RecognizerListener() {&&&&&&&&&@Override&&&&&&&&public void onVolumeChanged(int volume) {&&&&&&&&&&&&showTip(&quot;当前正在说话,音量大小:&quot; + volume);&&&&&&&&}&&&&&&&&&@Override&&&&&&&&public void onResult(final RecognizerResult result, boolean isLast) {&&&&&&&&&&&&runOnUiThread(new Runnable() {&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&&&public void run() {&&&&&&&&&&&&&&&&&&&&if (null != result) {&&&&&&&&&&&&&&&&&&&&&&&&Log.d(TAG, &quot;recognizer result:&quot; + result.getResultString());&&&&&&&&&&&&&&&&&&&&&&&&String text = &quot;&quot;;&&&&&&&&&&&&&&&&&&&&&&&&if(mEngineType.equals(SpeechConstant.TYPE_CLOUD))&&&&&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&//解析云端结果&&&&&&&&&&&&&&&&&&&&&&&&&&&&text = JsonParser.parseGrammarResult(result.getResultString());&&&&&&&&&&&&&&&&&&&&&&&&}else {&&&&&&&&&&&&&&&&&&&&&&&&&&&&//解析本地结果&&&&&&&&&&&&&&&&&&&&&&&&&&&&text = XmlParser.parseNluResult(result.getResultString());&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&// 显示&&&&&&&&&&&&&&&&&&&&&&&&//((EditText)findViewById(R.id.isr_text)).setText(text);&& &&&&&&&&&&&&&&&&&&&&&&&&&//分析识别结果&&&&&&&&&&&&&&&&&&&&&&&&Boolean analyzeRelult = analyzeWords(text);&&&&&&&&&&&&&&&&&&&&&&&&&//发送控制指令&&&&&&&&&&&&&&&&&&&&&&&&if(analyzeRelult)&&&&&&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&controlFan(mWindLevel);&&&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&} else {&&&&&&&&&&&&&&&&&&&&&&&&Log.d(TAG, &quot;recognizer result : null&quot;);&&&&&&&&&&&&&&&&&&&&}&& &&&&&&&&&&&&&&&&&&&&SystemClock.sleep(100);&&&&&&&&&&&&&&&&&&&&//下一次语音识别&&&&&&&&&&&&&&&&&&&&Button recognizeButton = (Button)findViewById(R.id.isr_recognize);&&&&&&&&&&&&&&&&&&&&&recognizeButton.performClick();&&&&&&&&&&&&&&&&}&&&&&&&&&&&&});&&&&&&&&&}&&&&&&&&&@Override&&&&&&&&public void onEndOfSpeech() {&&&&&&&&&&&&showTip(&quot;结束说话&quot;);&&&&&&&&&}&&&&&&&&&@Override&&&&&&&&public void onBeginOfSpeech() {&&&&&&&&&&&&showTip(&quot;开始说话&quot;);&&&&&&&&}&&&&&&&&&@Override&&&&&&&&public void onError(SpeechError error) {&&&&&&&&&&&&showTip(&quot;onError Code:&quot; + error.getErrorCode());&&&&&&&&&&&&SystemClock.sleep(100);&&&&&&&&&&&&//下一次语音识别&&&&&&&&&&&&Button recognizeButton = (Button)findViewById(R.id.isr_recognize);&&&&&&&&&&&&&recognizeButton.performClick();&&&&&&&&}&&&&&&&&&@Override&&&&&&&&public void onEvent(int eventType, int arg1, int agr2, String msg) {&&&&&&&&}&&&&};
做出来手机软件界面是这样的
我最初想做出来的智能风扇应该是这样的:
但事实上做出来却是这样的:
至于具体功能怎么样,我晚点上视频。至于GF用着什么反应,这个……
可能感兴趣的话题
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
&#8211; 好的话题、有启发的回复、值得信赖的圈子
&#8211; 分享和发现有价值的内容与观点
&#8211; 为IT单身男女服务的征婚传播平台
&#8211; 优秀的工具资源导航
&#8211; 翻译传播优秀的外文文章
&#8211; 国内外的精选文章
&#8211; UI,网页,交互和用户体验
&#8211; 专注iOS技术分享
&#8211; 专注Android技术分享
&#8211; JavaScript, HTML5, CSS
&#8211; 专注Java技术分享
&#8211; 专注Python技术分享
& 2018 伯乐在线

我要回帖

更多关于 四大火炉 的文章

 

随机推荐