一、Arduino

Arduino是一个开放源码电子原型平台,拥有灵活、易用的硬件和软件。Arduino专为设计师,工艺美术人员,业余爱好者,以及对开发互动装置或互动式开发环境感兴趣的人而设的。

Arduino可以接收来自各种传感器的输入信号从而检测出运行环境,并通过控制光源,电机以及其他驱动器来影响其周围环境。板上的微控制器编程使用Arduino编程语言(基于Wiring)和Arduino开发环境(以Processing为基础)。Arduino可以独立运行,也可以与计算机上运行的软件(例如,Flash,Processing,MaxMSP)进行通信。Arduino开发 IDE 接口基于开放源代码,可以让您免费下载使用开发出更多令人惊艳的互动作品。

二、超声波模块——HC-SR04

超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

1、超声波测距原理:时间差测距法

声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,即:s=340m/s× t / 2

2、工作原理:

    1)通过某个引脚(IO)给至少10us的高电平信号触发测距;2)触发测距以后模块自动发送8个40khz的方波,自动检测是否有信号返回;3)如果有信号返回,通过IO输出一高电平,高电平持续时间就是超声波从发射到返回的时间4)测试距离=(高电平时间*声速(340M/S))/2;

VCC 是超声波距离传感器的电源,连接Arduino上的5V引脚。
Trig (Trigger) 引脚用于触发超声波脉冲——A0
Echo 回声当接收到反射信号时,引脚产生一个脉冲。脉冲的长度与检测发射信号所需的时间成正比——A1
GND 应该连接到Arduino的GND

代码示例:

int TrgPin = A0;
int EcoPin = A1;
float dist;
void setup()
{
Serial.begin(9600);//设置TrgPin为输出状态
pinMode(TrgPin, OUTPUT);// 设置EcoPin为输入状态
pinMode(EcoPin, INPUT);
}
void loop()
{digitalWrite(TrgPin, LOW);
delayMicroseconds(8);
digitalWrite(TrgPin, HIGH);
delayMicroseconds(10);// 维持10毫秒高电平用来产生一个脉冲
digitalWrite(TrgPin, LOW);
dist = pulseIn(EcoPin, HIGH) / 58.00;// 读取脉冲的宽度并换算成距离
Serial.print("Distance:");
Serial.print(dist);
Serial.println("cm");
delay(300);
}

三、舵机——SG90舵机

舵机是一种位置(角度)伺服的驱动器。舵机只是一种通俗的叫法,其实质是一个伺服马达。
其中SG90为模拟舵机,其需要不断的发送相应角度的PWM信号,才能旋转到指定位置。例如:我现在让它旋转90度,我就需要在一个时间内不断的发送90度的PWM信号,舵机转动到指定位置就会停止。
舵机的转动角度大多为0~180°,其内部结构包括电机,控制电路和机械结构三部分。电机有三根线引出,分别接VCC、GNG和信号线。

主要有两种引出线的格式:
棕、红、橙(棕色连接GND、红色连接VCC、橙色连接信号);
红、黑、黄(红色连接VCC、黑色连接GND、黄色连接信号)。

工作原理

舵机的控制信号为周期是20ms 的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0—180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。

控制电路板接受来自信号线相应的PWM控制信号,进而控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。
舵机的控制需要MCU产生一个周期为20ms的脉冲信号,以0.5ms到2.5ms的高电平来控制舵机转动的角度。

代码示例:

#include <Servo.h>  //加入含有舵机控制库的头文件#define PIN_SERVO 9  //舵机信号控制引脚
Servo myservo;
int pos=0;void setup()
{  myservo.attach(PIN_SERVO);  //舵机初始化
}  void loop()  //0到180,再从180到0
{  for (pos=0;pos<=180;pos+=1){myservo.write(pos);delay(10);}for (pos=180;pos<=0;pos-=1){myservo.write(pos);delay(10);}//myservo.write(90);  //PWM输出
}

四、水泵&继电器

说白了就是一个继电器控制的电机,电路导通则开始工作

继电器原理:弱电控制强电

NC:常闭端 NO:常开端 COM:公共端
VCC:电源正极 GND:电源负极 IN:信号输入端

五、语音播报——SYN6288


核心板接口为:BUSY GND TXD RXD VCC BIN0 NP0,其中 VCC GND 是用来供电,电压支持 3-5V,推荐使用5V;BUSY 为忙标志,高电平为忙(处于播放中),低电平为空闲;TXD RXD 为串口通信,其中 TXD 为发送端,接外设接收端;BIN0 BP0为喇叭接口,可以直接与 8R 0.5W 喇叭连接。记住喇叭必须是8R 0.5W。
官方给的示例:(播报内容被我改了)

/*
1.项目名称:Arduino综合测试板SYN6288语音合成模块测试程序
2.配套APP:无
3.主要原理:具体参考SYN6288数据手册,通过串口发送语音对应的数据
4.配套上位机:无
5.项目组成:SYN6288语音合成模块、Arduino综合测试板
6.项目功能:将文字转换为语音朗读出来。具体操作请看演示视频*///此处发送内容为:[m4][v16][t5]欢迎使用SYN6288语音合成模块
//v[0~16]:0背景音乐为静音,16背景音乐音量最大
//m[0~16]:0朗读音量为静音,16朗读音量最大
//t[0~5]:0朗读语速最慢,5朗读语速最快
//其他不常用功能请参考数据手册
void xiwan(){      //语音播报unsigned char i = 0;unsigned char head[20];head[0] = 0xFD;  //FD 00 22 01 01 0D 0Ahead[1] = 0x00;head[2] = 0x0B;head[3] = 0x01;head[4] = 0x01;head[5] = 0xBF;head[6] = 0xAA; // C4 E3 BA C3 20 CE D2 CA C7 C8 AB head[7] = 0xCA;head[8] = 0xBC;head[9] = 0xCF;head[10] = 0xB4;head[11] = 0xCD;head[12] = 0xEB;head[13] = 0xC8;for(i=0; i<43; i++){Serial.write(head[i]);}
}void setup() {Serial.begin(9600);
}void loop() {xiwan();delay(2000);
}

全部代码如下:

#include <Servo.h>
//水泵+————继电器常开  -————地
//继电器公共端————正极
//各模块与arduino共地int relayPin = 13;  //继电器引脚负也接到单片机上
int TrgPin = A0;    //超声波引脚
int EcoPin = A1;    //超声波引脚Servo myservo;  //定义Servo对象来控制舵机
int pos = 0;    //角度存储变量
float dist;     //距离void xiwan() {  //语音播报--开始洗碗unsigned char i = 0;unsigned char head[20];head[0] = 0xFD;head[1] = 0x00;head[2] = 0x0B;head[3] = 0x01;head[4] = 0x01;head[5] = 0xBF;head[6] = 0xAA;head[7] = 0xCA;head[8] = 0xBC;head[9] = 0xCF;head[10] = 0xB4;head[11] = 0xCD;head[12] = 0xEB;head[13] = 0xC8;for (i = 0; i < 43; i++) {Serial.write(head[i]);}
}void end() {  //语音播报--洗碗完成unsigned char s = 0;unsigned char head1[20];head1[0] = 0xFD;head1[1] = 0x00;head1[2] = 0x0B;head1[3] = 0x01;head1[4] = 0x01;head1[5] = 0xCF;head1[6] = 0xB4;head1[7] = 0xCD;head1[8] = 0xEB;head1[9] = 0xCD;head1[10] = 0xEA;head1[11] = 0xB3;head1[12] = 0xC9;head1[13] = 0xF6;for (s = 0; s < 53; s++) {Serial.write(head1[s]);}
}void setup() {myservo.attach(9, 500, 2500);  //修正脉冲宽度pinMode(TrgPin, OUTPUT);       //设置TrgPin为输出状态pinMode(EcoPin, INPUT);        // 设置EcoPin为输入状态pinMode(relayPin, OUTPUT);     //设置引脚13为输出接口Serial.begin(9600);            //设置波特率为9600,这里要跟软件设置相一致。当接入特定设备时,我们也要跟其他设备的波特率达到一致。digitalWrite(relayPin, HIGH);  //防止一上电继电器就工作
}void loop() {digitalWrite(TrgPin, LOW);delayMicroseconds(8);digitalWrite(TrgPin, HIGH);delayMicroseconds(10);  // 维持10毫秒高电平用来产生一个脉冲digitalWrite(TrgPin, LOW);dist = pulseIn(EcoPin, HIGH) / 58.00;  // 读取脉冲的宽度并换算成距离if (dist <= 6 && dist > 1)  // 距离小等于6cm{digitalWrite(relayPin, LOW);  //水泵开始工作xiwan();                      //语音播报delay(2000);                  //等待语音播报完成for (pos = 0; pos <= 180; pos++) {  // 0°到180°myservo.write(pos);               // 舵机角度写入delay(5);                         // 等待转动到指定角度}for (pos = 180; pos >= 0; pos--) {  // 从180°到0°myservo.write(pos);               // 舵机角度写入delay(5);                         // 等待转动到指定角度}}else {digitalWrite(relayPin, HIGH);  //水泵停止工作end();                         //语音播报delay(2000);                   // 等待播报}
}

Arduino洗碗机相关推荐

  1. DevOps是软件研发的洗碗机

    原创:Brian Kelly(2019年8月12日发表的一篇博客文章).本文授权转载自公众号老丛讲桌,特此感谢. 最近一篇博客文章突然爆火,许多敏捷.精益.DevOps大咖都在转发这篇文章.Brain ...

  2. 洗碗机,加速中国化才能更适合中国厨房

    "目前我们拓展海外市场的策略就是四处出击,哪里有市场哪里就有我们!"2004年,美的洗碗机出口部的部长向媒体表示. 中国一开始是外向型经济,家电产业往往是制造先行.市场后醒,以承接 ...

  3. 云米AI洗碗机Iron A1 AI消毒除菌版上手体验

    全自动的洗碗能手,省时省力更卫生,云米AI洗碗机Iron A1体验 和炒菜做饭相比,洗碗更加费时费力,特别是到了秋冬季节,洗碗的难度指数更是直线上升.好在这两年洗碗机逐渐普及了,随着国产互联网品牌不断 ...

  4. 方太水槽洗碗机好吗?森歌洗碗机怎么样?买家用洗碗机前必看

    我是一个忙碌的上班族,经常没时间做家务,所以像扫地机器人.家用洗碗机等居家好物我都买了.不过,最令我满意的还是洗碗机啦,简直就是解放双手的神器.有些朋友问我方太水槽洗碗机好吗?哪款洗碗机更值得入手?所 ...

  5. 洗碗机底板原理图绘制

    大家好,我是程序员小哈. 上周的直播回放,小哈哥已经放到B站上了,答疑了三个问题,感兴趣的可以去看看. 直达链接:https://space.bilibili.com/19681109 今晚我们继续在 ...

  6. 更智能的洗碗机,省时省水又健康,云米互联网洗碗机Iron X1体验

    这些年智能化的家电产品越来越流行,而且催生出了很多年轻的家电品牌,相比于传统家电,这些新品牌的产品往往很重视操作的便捷性,同时大多具有联网的特性,可以通过手机APP操作,同时也能够和其他家电进行互动, ...

  7. 洗碗机,开始了“圈地运动”

    文|智能相对论​ 作者|Alex Chiang (封面图) 洗碗机这个舶来品,进入中国市场的时间已逾20年. 早年由于用户消费观念的差异,在国外家庭几乎作为标配的洗碗机在中国内地却没有风靡起来.近年来 ...

  8. 老板、方太、美的们决战洗碗机“中国化”的新拐点

    文 | 陈选滨 来源 | 智能相对论(ID:aixdlun) 洗碗机可以解决80%的家庭矛盾?! 近年来,有关洗碗机的话题在微博上越来越火.特别是对于年轻一代用户而言,洗碗机已经成为了和冰箱.洗衣机一 ...

  9. 洗碗机超声波换能器振子设计

    超声波的声波是一种可以穿透液体和固体的声学化学能量,超声波的污染非常小穿透力强,所以人们就想到了用它来清洗餐具,于是乎超声波洗碗机就应运而生了.洗碗机超声波换能器振子作为超声波洗碗机的三大组件之一,是 ...

最新文章

  1. 删除u盘mbr多余启动项 linux,高手教你怎么修复U盘的MBR
  2. 两个js文件同时执行,解决覆盖问题
  3. monit 内存 监控_如何借助Monit搭建服务器监控系统?(1)
  4. AIX操作系统基本命令
  5. delta对冲策略_股票基础知识—Delta中性理论
  6. SQL Server 2012笔记分享-47:Database Recovery Advisor
  7. Another Professor
  8. ATmega328芯片-“变身”-温度计-,附示例教程
  9. 全国市场调查大赛经历分享(一)
  10. GitHub账号注册教程
  11. Altium Designer如何批量修改SCH名称,数值,封装
  12. 字节跳动移动架构师学习笔记,Android篇
  13. excel缩字间距_如何取消字体间距 excel字体间距紧缩
  14. Java使用Tomcat服务器打开jsp等文件出现源码的解决办法
  15. 三维渲染 光能辐射基础
  16. uniapp开发中ios底部出现安全距离问题怎么解决?
  17. 【AD】Altium Designer 新建一个项目
  18. 疫情期间对通证经济的一些思考
  19. Redis教程之基础-五种数据基本操作
  20. Cadence 17.4 原理图导出PDF

热门文章

  1. js中Object常用方法和属性
  2. Ubuntu下载安装搜狗输入法
  3. ios开发 静音键设置_iOS获取设备静音键的开关状态 误差优化
  4. ​永洪科技出席科博会:领先源于洞察
  5. 2018年计算机基础知识题库,2018年计算机基础知识题库文献.doc
  6. 电脑无法显示计算机,解决方案:如果无法打开计算机且屏幕不显示,该怎么办?台式电脑开机黑屏修复技巧...
  7. 微信小程序 | 12.生命周期、globalData全局数据
  8. php星期_php 星期 日期
  9. 密度聚类之DBSCAN算法原理
  10. 大一经历 不全是 寥寥草草应付申报单项奖