|
|

楼主 |
发表于 2024-4-10 21:44:40
|
显示全部楼层
- /*!
- * MindPlus
- * mpython
- *
- */
- #include <MPython.h>
- #include <DFRobot_Iot.h>
- #include <DFRobot_Task.h>
- #include <Maqueen_Motor.h>
- #include <DFRobot_NeoPixel.h>
- #include <DFRobot_SpeechSynthesis_M.h>
- // 动态变量
- volatile float mind_n_ShuLiang, mind_n_GuangXianZhi, mind_n_ShengYinZhi;
- // 函数声明
- void DF_Deng(float mind_n_NShuLiang, String mind_s_TKaiGuan);
- void DF_B_MaiKun(String mind_s_TZhiLing, float mind_n_NSuDu, float mind_n_NMiao);
- void DF_MQTT(String mind_s_Twifi, String mind_s_TMiMa);
- void DF_YuYin();
- void obloqMqttEventT8mvdn(String& message);
- void onButtonAPressed();
- void onButtonBPressed();
- void DF_KaiDeng_ShuLiang(float mind_n_NShuLiang, float mind_n_NShiJian);
- newTask(loop1)
- // 静态常量
- const String topics[5] = {"37ck/2024","","","",""};
- const MsgHandleCb msgHandles[5] = {obloqMqttEventT8mvdn,NULL,NULL,NULL,NULL};
- // 创建对象
- DFRobot_NeoPixel neoPixel_P1;
- DFRobot_NeoPixel neoPixel_15;
- Maqueen_Motor motor_mq;
- DFRobot_Iot myIot;
- DFRobot_SpeechSynthesis_I2C sstts;
- DFRobot_NeoPixel neoPixel_P16;
- // 主程序开始
- void setup() {
- mPython.begin();
- dfrobotRandomSeed();
- myIot.setMqttCallback(msgHandles);
- neoPixel_15.begin(P15, 4, 255);
- neoPixel_P16.begin(P16, 5, 255);
- buttonA.setPressedCallback(onButtonAPressed);
- buttonB.setPressedCallback(onButtonBPressed);
- display.setCursorLine(1);
- display.printLine("LED灯siotv1.0");
- mind_n_ShuLiang = 15;
- DF_Deng(mind_n_ShuLiang, "关灯");
- DF_MQTT("37ck", "20200808");
- }
- void loop() {
- }
- // 子线程1程序开始
- void loop1::setup() {
- DF_KaiDeng_ShuLiang(mind_n_ShuLiang, 0.3);
- }
- void loop1::loop() {
- }
- // 自定义函数
- void DF_Deng(float mind_n_NShuLiang, String mind_s_TKaiGuan) {
- neoPixel_P1.begin(P1, mind_n_NShuLiang);
- neoPixel_P1.setBrightness(255);
- if (((String(mind_s_TKaiGuan).indexOf(String("开灯")) != -1))) {
- taskStart(loop1);
- }
- else {
- neoPixel_P1.clear();
- }
- }
- void DF_B_MaiKun(String mind_s_TZhiLing, float mind_n_NSuDu, float mind_n_NMiao) {
- neoPixel_15.setRangeColor(-1, -1, 0x00FF00);
- if (((String(mind_s_TZhiLing).indexOf(String("前进")) != -1))) {
- motor_mq.motorRun(motor_mq.LEFT,motor_mq.CW,mind_n_NSuDu);
- motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CW,mind_n_NSuDu);
- }
- else if (((String(mind_s_TZhiLing).indexOf(String("后退")) != -1))) {
- motor_mq.motorRun(motor_mq.LEFT,motor_mq.CCW,mind_n_NSuDu);
- motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CCW,mind_n_NSuDu);
- }
- else if (((String(mind_s_TZhiLing).indexOf(String("左转")) != -1))) {
- motor_mq.motorRun(motor_mq.LEFT,motor_mq.CW,0);
- motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CW,mind_n_NSuDu);
- }
- else if (((String(mind_s_TZhiLing).indexOf(String("右转")) != -1))) {
- motor_mq.motorRun(motor_mq.LEFT,motor_mq.CW,mind_n_NSuDu);
- motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CW,0);
- }
- else if (((String(mind_s_TZhiLing).indexOf(String("停止")) != -1))) {
- motor_mq.motorStop(motor_mq.LEFT);
- motor_mq.motorStop(motor_mq.RIGHT);
- }
- else if (((String(mind_s_TZhiLing).indexOf(String("开灯")) != -1))) {
- rgb.write(-1, 0xFFFFCC);
- }
- else if (((String(mind_s_TZhiLing).indexOf(String("关灯")) != -1))) {
- rgb.write(-1, 0x000000);
- }
- else if (((String(mind_s_TZhiLing).indexOf(String("底灯开")) != -1))) {
- neoPixel_15.setRangeColor(-1, -1, 0x8A2BE2);
- }
- else if (((String(mind_s_TZhiLing).indexOf(String("底灯关")) != -1))) {
- neoPixel_15.setRangeColor(-1, -1, 0x000000);
- }
- else if (((String(mind_s_TZhiLing).indexOf(String("绿灯")) != -1))) {
- rgb.write(-1, 0x009900);
- }
- else if (((String(mind_s_TZhiLing).indexOf(String("红灯")) != -1))) {
- rgb.write(-1, 0xCC0000);
- }
- else if (((String(mind_s_TZhiLing).indexOf(String("黄灯")) != -1))) {
- rgb.write(-1, 0xFFFF00);
- }
- else {
- motor_mq.motorRun(motor_mq.LEFT,motor_mq.CW,0);
- motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CW,0);
- rgb.write(-1, 0x000000);
- neoPixel_15.setRangeColor(-1, -1, 0x000000);
- }
- delay(mind_n_NMiao * 1000);
- }
- void DF_MQTT(String mind_s_Twifi, String mind_s_TMiMa) {
- display.setCursorLine(2);
- display.printLine("WIFI......");
- myIot.wifiConnect(mind_s_Twifi, mind_s_TMiMa);
- while (!myIot.wifiStatus()) {yield();}
- display.setCursorLine(2);
- display.printLine(myIot.getWiFiLocalIP());
- myIot.init("iot.37ck.cn","37ck","6112357418379866","20200808", topics, 1884);
- display.setCursorLine(2);
- display.printLine("MQTT........");
- myIot.connect();
- while (!myIot.connected()) {yield();}
- display.setCursorLine(2);
- display.printLine("已连接物联网服务");
- }
- void DF_YuYin() {
- sstts.begin(sstts.eV1);
- sstts.setVolume(8);
- sstts.setSpeed(5);
- sstts.setSoundType(sstts.eMale1);
- sstts.setTone(5);
- DF_Deng(6, "开灯");
- if (((digitalRead(P1))==1)) {
- sstts.speak("开的");
- neoPixel_P16.setRangeColor(0, 6, 0x009900);
- }
- else {
- sstts.speak("关灯");
- neoPixel_P16.setRangeColor(0, (random(1, 6+1)), (random(0x000000, 0xFFFFFF+1)));
- }
- sstts.speak("37创客");
- neoPixel_P16.setRangeColor(0, (random(0, 6+1)), (random(0xFF0000, 0xFFFFFF+1)));
- }
- void DF_KaiDeng_ShuLiang(float mind_n_NShuLiang, float mind_n_NShiJian) {
- while (1) {
- mind_n_GuangXianZhi = (light.read());
- mind_n_ShengYinZhi = (sound.read());
- display.setCursorLine(3);
- display.printLine((String((String("光:") + String((String(mind_n_GuangXianZhi).toInt())))) + String((String("--声:") + String((String(mind_n_ShengYinZhi).toInt()))))));
- neoPixel_P1.setBrightness(mind_n_GuangXianZhi);
- neoPixel_P1.setRangeColor(0, (random(0, mind_n_NShuLiang+1)), (random(0x000000, 0xFFFFFF+1)));
- rgb.write(-1, (random(0x000000, 0xFFFFFF+1)));
- delay(mind_n_NShiJian * 1000);
- neoPixel_P1.setRangeColor(0, (random(0, mind_n_NShuLiang+1)), (random(0x000000, 0xFFFFFF+1)));
- rgb.write(-1, (random(0x000000, 0xFFFFFF+1)));
- delay(mind_n_NShiJian * 1000);
- yield();
- }
- }
- // 事件回调函数
- void obloqMqttEventT8mvdn(String& message) {
- display.setCursorLine(4);
- display.printLine(message);
- if (((String(message).indexOf(String("开灯")) != -1))) {
- taskStart(loop1);
- }
- else {
- neoPixel_P1.clear();
- taskFree(loop1);
- }
- }
- void onButtonAPressed() {
- digitalWrite(P8, HIGH);
- display.setCursorLine(4);
- display.printLine("开灯");
- myIot.publish(topic_0, "开灯");
- }
- void onButtonBPressed() {
- digitalWrite(P8, LOW);
- display.setCursorLine(4);
- display.printLine("关灯");
- myIot.publish(topic_0, "关灯");
- taskFree(loop1);
- }
复制代码 |
|