|
arduino主板上二哈识图和液晶屏一起接后,接上舵机舵机抽,使用mind+写的程序,这是代码
二哈是dfrobot上买的,https://www.dfrobot.com.cn/goods-2050.html
液晶屏是LCD的
舵机链接:https://www.dfrobot.com.cn/goods-214.html
急!!!!!!!!!比赛用
/*!
* MindPlus
* uno
*
*/
#include <SimpleList.h>
#include <DFRobot_Servo.h>
#include <DFRobot_HuskyLens.h>
#include <DFRobot_LiquidCrystal_I2C.h>
// 动态变量
String mind_s_ans;
volatile float mind_n_start_time, mind_n_end_time, mind_n_book, mind_n_notebook,
mind_n_pencil, mind_n_Zhou, mind_n_i, mind_n_temp, mind_n_JuShou,
mind_n_Nian, mind_n_Yue, mind_n_Ri, mind_n_ChuanKouShuJu;
SimpleList<String> mind_l_KeCheng;
// 函数声明
void DF_ChuShiHua();
void DF_XianShiKeChengXinXi();
void DF_XianShiDangTianXinXi();
void DF_ErHaJianCe();
void DF_AnNiuJianCe();
void DF_ShiFuJuShou();
// 创建对象
DFRobot_LiquidCrystal_I2C lcd1602;
Servo servo_A2;
DFRobot_HuskyLens huskylens;
// 主程序开始
void setup() {
servo_A2.attach(A2);
DF_ChuShiHua();
}
void loop() {
mind_n_start_time = millis();
mind_n_end_time = (mind_n_start_time + 6000);
while (!(millis()>mind_n_end_time)) {
lcd1602.clear();
if (((mind_n_book==1) && ((mind_n_notebook==1) && (mind_n_pencil==1)))) {
lcd1602.printLine(uint32_t(1), (String((String((floor(((mind_n_end_time - millis()) / 1000)))).toInt())) + String((String("s: ") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - (3 - mind_n_i))-1])))));
lcd1602.printLine(uint32_t(2), (String("Need: ") + String("B, P, N.")));
}
else if (((mind_n_book==0) && ((mind_n_notebook==1) && (mind_n_pencil==1)))) {
lcd1602.printLine(uint32_t(1), (String((String((floor(((mind_n_end_time - millis()) / 1000)))).toInt())) + String((String("s: ") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - (3 - mind_n_i))-1])))));
lcd1602.printLine(uint32_t(2), (String("Need: ") + String("P, N.")));
}
else if (((mind_n_book==1) && ((mind_n_notebook==0) && (mind_n_pencil==1)))) {
lcd1602.printLine(uint32_t(1), (String((String((floor(((mind_n_end_time - millis()) / 1000)))).toInt())) + String((String("s: ") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - (3 - mind_n_i))-1])))));
lcd1602.printLine(uint32_t(2), (String("Need: ") + String("B, N.")));
}
else if (((mind_n_book==1) && ((mind_n_notebook==1) && (mind_n_pencil==0)))) {
lcd1602.printLine(uint32_t(1), (String((String((floor(((mind_n_end_time - millis()) / 1000)))).toInt())) + String((String("s: ") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - (3 - mind_n_i))-1])))));
lcd1602.printLine(uint32_t(2), (String("Need: ") + String("B, P.")));
}
else if (((mind_n_book==1) && ((mind_n_notebook==0) && (mind_n_pencil==0)))) {
lcd1602.printLine(uint32_t(1), (String((String((floor(((mind_n_end_time - millis()) / 1000)))).toInt())) + String((String("s: ") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - (3 - mind_n_i))-1])))));
lcd1602.printLine(uint32_t(2), (String("Need: ") + String("B.")));
}
else if (((mind_n_book==0) && ((mind_n_notebook==1) && (mind_n_notebook==0)))) {
lcd1602.printLine(uint32_t(1), (String((String((floor(((mind_n_end_time - millis()) / 1000)))).toInt())) + String((String("s: ") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - (3 - mind_n_i))-1])))));
lcd1602.printLine(uint32_t(2), (String("Need: ") + String("N.")));
}
else if (((mind_n_book==0) && ((mind_n_notebook==0) && (mind_n_pencil==1)))) {
lcd1602.printLine(uint32_t(1), (String((String((floor(((mind_n_end_time - millis()) / 1000)))).toInt())) + String((String("s: ") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - (3 - mind_n_i))-1])))));
lcd1602.printLine(uint32_t(2), (String("Need: ") + String("P.")));
}
else if (((mind_n_book==0) && ((mind_n_notebook==0) && (mind_n_notebook==0)))) {
lcd1602.printLine(uint32_t(1), (String((String((floor(((mind_n_end_time - millis()) / 1000)))).toInt())) + String((String("s: ") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - (3 - mind_n_i))-1])))));
lcd1602.printLine(uint32_t(2), "Everything is ready.");
}
DF_ErHaJianCe();
delay(((900 - (millis() - mind_n_temp)) / 1000) * 1000);
}
mind_n_start_time = millis();
mind_n_end_time = (mind_n_start_time + 60000);
mind_s_ans = "none";
while (!(millis()>mind_n_end_time)) {
lcd1602.clear();
lcd1602.printLine(uint32_t(1), (String((String((floor(((mind_n_end_time - millis()) / 1000)))).toInt())) + String("s: class over")));
DF_AnNiuJianCe();
if ((mind_n_JuShou==0)) {
lcd1602.printLine(uint32_t(2), (String("Your ans:") + String(mind_s_ans)));
}
else {
lcd1602.printLine(uint32_t(2), "Hand raised");
}
delay(((225 - (millis() - mind_n_temp)) / 1000) * 1000);
}
mind_n_i += 1;
}
// 自定义函数
void DF_ChuShiHua() {
mind_l_KeCheng.clear();
// 1
mind_l_KeCheng.push_back("Chinese");
mind_l_KeCheng.push_back("Math");
mind_l_KeCheng.push_back("English");
// 2
mind_l_KeCheng.push_back("Math");
mind_l_KeCheng.push_back("English");
mind_l_KeCheng.push_back("Chinese");
// 3
mind_l_KeCheng.push_back("Math");
mind_l_KeCheng.push_back("Chinese");
mind_l_KeCheng.push_back("English");
// 4
mind_l_KeCheng.push_back("Chinese");
mind_l_KeCheng.push_back("Math");
mind_l_KeCheng.push_back("English");
// 5
mind_l_KeCheng.push_back("Chinese");
mind_l_KeCheng.push_back("English");
mind_l_KeCheng.push_back("Math");
Serial.begin(9600);
digitalWrite(6, LOW);
servo_A2.angle(abs(60));
lcd1602.begin(0x3F);
mind_n_Nian = 2021;
mind_n_Yue = 6;
mind_n_Ri = 30;
mind_n_Zhou = 3;
mind_n_i = 1;
mind_n_pencil = 1;
mind_n_notebook = 1;
mind_n_book = 1;
huskylens.beginSoftwareSerialUntilSuccess(2, 3);
huskylens.writeAlgorithm(ALGORITHM_OBJECT_CLASSIFICATION);
}
void DF_XianShiKeChengXinXi() {
delay(1000);
lcd1602.clear();
lcd1602.print(uint32_t(0), uint32_t(0), "Today's subjects:");
lcd1602.print(uint32_t(0), uint32_t(1), (String("1:") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - 2)-1])));
delay(1000);
lcd1602.clear();
lcd1602.print(uint32_t(0), uint32_t(0), (String("1:") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - 2)-1])));
lcd1602.print(uint32_t(0), uint32_t(1), (String("2:") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - 1)-1])));
delay(1000);
lcd1602.clear();
lcd1602.print(uint32_t(0), uint32_t(0), (String("2:") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - 1)-1])));
lcd1602.print(uint32_t(0), uint32_t(1), (String("3:") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - 0)-1])));
delay(1000);
lcd1602.clear();
lcd1602.print(uint32_t(0), uint32_t(0), (String("3:") + String(mind_l_KeCheng[((mind_n_Zhou * 3) - 0)-1])));
lcd1602.print(uint32_t(0), uint32_t(1), "Learn for better!");
delay(2000);
}
void DF_XianShiDangTianXinXi() {
lcd1602.printLine(uint32_t(1), (String((String((String((String(mind_n_Nian).toInt())) + String("."))) + String((String((String(mind_n_Yue).toInt())) + String("."))))) + String((String(mind_n_Ri).toInt()))));
if (((String(mind_n_Zhou).toInt())==1)) {
lcd1602.printLine(uint32_t(2), "Monday");
}
else if (((String(mind_n_Zhou).toInt())==2)) {
lcd1602.printLine(uint32_t(2), "Tuesday");
}
else if (((String(mind_n_Zhou).toInt())==3)) {
lcd1602.printLine(uint32_t(2), "Wednesday");
}
else if (((String(mind_n_Zhou).toInt())==4)) {
lcd1602.printLine(uint32_t(2), "Thursday");
}
else if (((String(mind_n_Zhou).toInt())==5)) {
lcd1602.printLine(uint32_t(2), "Friday");
}
else {
lcd1602.printLine(uint32_t(2), "Weekend");
}
delay(2000);
}
void DF_ErHaJianCe() {
mind_n_temp = millis();
huskylens.request();
if (((mind_n_book==1) && (huskylens.readBlockCenterParameterDirect().ID==1))) {
mind_n_book = 0;
}
else if (((mind_n_pencil==1) && (huskylens.readBlockCenterParameterDirect().ID==2))) {
mind_n_pencil = 0;
}
else if (((mind_n_notebook==1) && (huskylens.readBlockCenterParameterDirect().ID==3))) {
mind_n_notebook = 0;
}
}
void DF_AnNiuJianCe() {
mind_n_ChuanKouShuJu = analogRead(A0);
mind_n_temp = millis();
Serial.println(mind_n_ChuanKouShuJu);
if (((mind_n_ChuanKouShuJu>=600) && (mind_n_ChuanKouShuJu<650))) {
mind_s_ans = "A";
}
else if ((mind_n_ChuanKouShuJu<600)) {
mind_s_ans = "B";
}
else if (((mind_n_ChuanKouShuJu>=850) && (mind_n_ChuanKouShuJu<900))) {
mind_s_ans = "none";
}
else if (((mind_n_ChuanKouShuJu>=650) && (mind_n_ChuanKouShuJu<700))) {
mind_s_ans = "C";
}
else if (((mind_n_ChuanKouShuJu>=750) && (mind_n_ChuanKouShuJu<800))) {
mind_s_ans = "D";
}
}
void DF_ShiFuJuShou() {
if (digitalRead(8)) {
while (!(digitalRead(8)==0)) {}
if ((mind_n_JuShou==0)) {
mind_n_JuShou = 1;
}
else {
mind_n_JuShou = 0;
}
}
else {
}
}
|
|