arduino主板上二哈识图和液晶屏一起接后,接上舵机舵机抽-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1041|回复: 2

[未解决] arduino主板上二哈识图和液晶屏一起接后,接上舵机舵机抽

[复制链接]
发表于 2021-7-10 21:40 | 显示全部楼层 |阅读模式
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 {
        }
}




发表于 2021-7-11 07:15 | 显示全部楼层
是不是供电不足了?
 楼主| 发表于 2021-7-11 09:13 | 显示全部楼层
不是这个问题啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 03:42 , Processed in 0.079409 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表