基于arduino的语音控制智能垃圾桶(2)
基于arduino的语音控制智能垃圾桶
·
超声波测距
//判断条件用distance,不要用串口信号
//diatance=15(厘米)是本项目的临界值
const int trig=7;
const int echo=8;
float distance;
void setup()
{
Serial.begin(9600);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
}
void loop()
{
//产生1个10us的高脉冲去出发trig
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
//检测脉冲宽度,计算距离(厘米)
distance=pulseIn(echo,HIGH)/58.00;
Serial.print(distance);
Serial.println();
delay(1000);
}
舵机
#include <Servo.h> //加载舵机文件库
Servo servo1; //创建舵机对象
void setup()
{
servo1.attach(3); //servo1.attach(舵机信号引脚)
}
void loop()
{
/*
for (int pos = 180; pos >= 0; pos -= 1)
{
servo1.write(pos);
delay(5);
}
for (int pos = 0; pos <= 180; pos += 1)
{
servo1.write(pos);
delay(5);
}
*/
servo1.write(80);
}
光敏电阻开关灯
//lightvalue越大越亮,初步认为450为明暗分界值
void setup()
{
Serial.begin(9600);
}
void loop()
{
int lightvalue=analogRead(A4);
Serial.println(lightvalue);
delay(1000);
}
语音识别
/*
Arduino与ASR01语音识别模块的串口通讯实验
*/
// 定义引脚
const int LedPin = 11; // led连接的引脚,作为LED灯的正极
String st=""; //串口读取的字符数据的字符串变量
//初始化
void setup() {
Serial.begin(9600); //设置串口波特率9600
pinMode(LedPin, OUTPUT); //设置LedPin
}
void loop() {
st="";
while(Serial.available() > 0){
//当串口缓冲区有数据
st+=char(Serial.read());
//将缓冲区数据累加读入st
delay(2);
}
if(st.length()>0){
//st不为空
if(st=="dry001") digitalWrite(LedPin, HIGH);Serial.println(st);//st为“dry001”则LedPin置高电平,即开灯
if(st=="wet002") digitalWrite(LedPin, LOW);//st为“wet002”则LedPin置低电平,即关灯
if(st=="hello"){//st为“hello”则Led灯闪3下
Serial.println(st);
for(int i=0;i<3;i++){
digitalWrite(LedPin, HIGH);
delay(100);
digitalWrite(LedPin, LOW);
delay(100);
}
}
}
}
更多推荐
所有评论(0)