基于ArduinoUNO的LD3320语音识别+SYN6288语音合成的智能分类垃圾桶的程序代码
时间: 2024-03-23 18:38:41 浏览: 142
基于Arduino和语音识别的智能垃圾分类系统.pdf
5星 · 资源好评率100%
以下是基于Arduino UNO、LD3320语音识别芯片和SYN6288语音合成模块的智能分类垃圾桶程序代码:
```
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//定义LD3320语音识别模块的接口
#define LD3320_RX 2
#define LD3320_TX 3
//定义SYN6288语音合成模块的接口
#define SYN6288_RX 4
#define SYN6288_TX 5
//定义LCD液晶显示屏的I2C地址和行数、列数
#define LCD_I2C_ADDR 0x27
#define LCD_COLS 20
#define LCD_ROWS 4
SoftwareSerial ld3320(LD3320_RX, LD3320_TX);
SoftwareSerial syn6288(SYN6288_RX, SYN6288_TX);
LiquidCrystal_I2C lcd(LCD_I2C_ADDR, LCD_COLS, LCD_ROWS);
String voice = ""; //存储语音识别结果
int trash = 0; //存储垃圾桶类型,1为可回收垃圾,2为有害垃圾,3为厨余垃圾,4为其他垃圾
void setup()
{
Serial.begin(9600);
ld3320.begin(9600);
syn6288.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("智能分类垃圾桶");
lcd.setCursor(0, 1);
lcd.print("请说出垃圾类型");
}
void loop()
{
while (ld3320.available() > 0) //检测LD3320是否有语音输入
{
voice = ld3320.readString();
Serial.println("语音输入:" + voice);
if (voice.indexOf("可回收垃圾") != -1) //语音识别结果为可回收垃圾
{
trash = 1;
syn6288.println("可回收垃圾,请投入绿色垃圾桶");
lcd.setCursor(0, 2);
lcd.print("可回收垃圾,请投入绿桶");
}
else if (voice.indexOf("有害垃圾") != -1) //语音识别结果为有害垃圾
{
trash = 2;
syn6288.println("有害垃圾,请投入红色垃圾桶");
lcd.setCursor(0, 2);
lcd.print("有害垃圾,请投入红桶");
}
else if (voice.indexOf("厨余垃圾") != -1) //语音识别结果为厨余垃圾
{
trash = 3;
syn6288.println("厨余垃圾,请投入棕色垃圾桶");
lcd.setCursor(0, 2);
lcd.print("厨余垃圾,请投入棕桶");
}
else if (voice.indexOf("其他垃圾") != -1) //语音识别结果为其他垃圾
{
trash = 4;
syn6288.println("其他垃圾,请投入灰色垃圾桶");
lcd.setCursor(0, 2);
lcd.print("其他垃圾,请投入灰桶");
}
else //语音识别结果无法识别
{
syn6288.println("抱歉,无法识别,请重新说出垃圾类型");
lcd.setCursor(0, 2);
lcd.print("无法识别,请重新说出");
}
delay(1000);
lcd.setCursor(0, 3);
lcd.print("请说出垃圾类型");
}
}
```
以上代码中,使用了LD3320语音识别模块和SYN6288语音合成模块。程序会不断检测LD3320是否有语音输入,如果有输入则进行语音识别并根据识别结果选择相应的垃圾桶类型,然后通过SYN6288语音合成模块输出提示信息并在LCD液晶显示屏上显示提示信息。循环执行,等待下一个语音输入。
阅读全文