图形化编程教学实例

 人生第一篇博客,水平不好,请大家勿吐槽!
 今天为大家推荐几款国内主流的图形化编程软件。这些软件部分适用于8岁以上,部分适用于12岁以上
  一、图形化软件介绍
  (1)软件一:Scratch
    Scratch是麻省理工学院媒体实验室开发的一款图形化开发工具,代码开源,早期主要用于电脑动画编辑,面向小朋友群体,通过鼠标拖拽的形式放置各种角色及脚本指令,脚本指令通过搭积木的形态提供给小朋友使用,界面直观好用。Scratch的动画和脚本编辑实时响应,用户可随时点击相应指令与动画进行交互,使用门槛很低。

图形化编程软件推荐二: Mind+
(2)软件二:Mind+
Mind+是一款拥有自主知识产权的国产青少年编程软件,由上海智位机器人(DFRobot)维护,有中文社区支持。除了支持arduino,还支持micro:bit等其他的开源硬件,只需要拖动图形化程序块即可完成编程,还可以使用python/c/c++等高级编程语言。Mind+是一款特别的图形化开发工具,这个软件采用C++和Qt开发,界面精致,相对其他拼接指令式的编程软件,确实有一些新意。此软件通过抽象出软件开发中的命令流和数据流,模拟成图形界面中的红蓝折线,通过导线的流动体现出程序流程和数据传递的过程,使得初学者都很容易看懂。Mind+还有WEB端在线编程功能,打开即可使用,很方便,而且他们的社区教程也很丰富,是目前国内中小学生图形化编程学习、比赛使用较多的。
(3)软件三:Mixly
Mixly也是针对arduino的一款图形化编程工具,基于blockly开发而成。这个软件针对arduino完善了一些数据类型等方面的功能,比原生blockly更好用。相对其他图形化软件来说,mixly显得更轻量级一些,上层图形化界面基于开源blockly修改而成;下层编译下载直接建立在arduino IDE环境上;图形界面的指令映射到arduino原生库,所以软件相当于一个粘合剂,只要arduino原生支持的功能,mixly都可以很快进行集成,方便软件迭代升级。软件开源发布,第三方厂商可以自行添加自己的库文件,或者进行定制。缺陷是和arduino绑定太紧密,难有个性化的功能,且始终受限于arduino本身的天花板。

 二、Mind+实战案例
 ①光控灯的图形化编程代码和Python编程

在这里插入图片描述

语言代码如下:
#include <MPython.h>
// 主程序开始
void setup() {
mPython.begin();
display.setCursorLine(1);
display.printLine(“声音强度”);
}
void loop() {
display.setCursorLine(2);
display.printLine((sound.read()));
delay(200);
if (((sound.read())>100)) {
rgb.write(0, 0x0000FF);
delay(1000);
}
else {
rgb.write(0, 0x000000);
}
}
②声控灯的图形化编程代码和Python编程
在这里插入图片描述
#include <MPython.h>
// 主程序开始
void setup() {
mPython.begin();
display.setCursorLine(1);
display.printLine(“声音强度”);
}
void loop() {
display.setCursorLine(2);
display.printLine((sound.read()));
delay(200);
if (((sound.read())>100)) {
rgb.write(0, 0x0000FF);
delay(1000);
}
else {
rgb.write(0, 0x000000);
}
}

③语音识别控制灯的图形化编程代码和Python编程

在这里插入图片描述
#include <MPython.h>
#include <MPython_ASR.h>
#include <DFRobot_Iot.h>
// 函数声明
void DF_YuYinShiBie();
void DF_wifi();
// 创建对象
MPython_ASR mpythonAsr;
String str_mpythonAsr_result;
DFRobot_Iot myIot;
// 主程序开始
void setup() {
mPython.begin();
DF_wifi();
DF_YuYinShiBie();
}
void loop() {

}

// 自定义函数
void DF_YuYinShiBie() {
display.fillScreen(0);
while (1) {
if ((buttonA.isPressed())) {
while (!(!buttonA.isPressed())) {yield();}
str_mpythonAsr_result=mpythonAsr.getAsrResult(4);
display.setCursorLine(1);
display.printLine((str_mpythonAsr_result));
if (((String(str_mpythonAsr_result).indexOf(String(“开灯”)) != -1))) {
rgb.write(0, 0x0000FF);
delay(5000);
rgb.write(0, 0x000000);
display.fillInLine(1, 0);
}
}
yield();
}
}
void DF_wifi() {
myIot.wifiConnect(“602iot”, “18wulian”);
display.setCursorLine(1);
display.printLine(“正在连接网络”);
while (!myIot.wifiStatus()) {yield();}
display.fillInLine(1, 0);
display.setCursorLine(1);
display.printLine(“网络连接成功”);
display.setCursorLine(2);
display.printLine(“ip地址:”);
display.setCursorLine(3);
display.printLine(myIot.getWiFiLocalIP());
delay(3000);
}

④实现Easy IoT上mqtt消息通讯的图形化编程代码和Python编程

在这里插入图片描述
!错误提示:密码格式错误,Wi-Fi密码必须是8-20位的字母或数字
/*!

  • MindPlus
  • mpython

*/
#include <MPython.h>
#include <DFRobot_Iot.h>
// 函数声明
void onButtonAPressed();
void obloqMqttEventT1(String& message);
// 静态常量
const String topics[5] = {“T_GCbjdGg”,“OklCbjdGg”,"","",""};
const MsgHandleCb msgHandles[5] = {NULL,obloqMqttEventT1,NULL,NULL,NULL};
// 创建对象
DFRobot_Iot myIot;
// 主程序开始
void setup() {
mPython.begin();
myIot.setMqttCallback(msgHandles);
buttonA.setPressedCallback(onButtonAPressed);
myIot.wifiConnect(“xiaoxian”, “123456”);
display.setCursorLine(1);
display.printLine(“正在连接网络”);
while (!myIot.wifiStatus()) {yield();}
display.setCursorLine(2);
display.printLine(“连接网络成功”);
display.fillScreen(0);
delay(2000);
myIot.init(“iot.dfrobot.com.cn”,“q0uh-COMR”,"",“qAX2-jOGRz”,topics,1883);
myIot.connect();
while (!myIot.connected()) {yield();}
display.setCursorLine(1);
display.printLine(“mqtt连接成功”);
delay(3000);
display.fillInLine(1, 0);
}
void loop() {

}

// 事件回调函数
void onButtonAPressed() {
while (!(!buttonA.isPressed())) {yield();}
myIot.publish(topic_0, “吴春贤”);
display.fillScreen(0);
display.setCursorLine(1);
display.printLine(“发送消息成功”);
delay(3000);
display.fillInLine(1, 0);
}
void obloqMqttEventT1(String& message) {
display.setCursorLine(1);
display.printLine(“您有新的消息!”);
rgb.write(-1, 0x0000FF);
display.setCursorLine(2);
display.printLine(message);
delay(3000);
rgb.write(-1, 0x000000);
display.fillScreen(0);
}

三、总结
本次实战案例主要介绍了四种,关于软件平台还有很多,就不一一介绍了,对图形化感兴趣的朋友们,可以多去查找资料,如果有什么问题需要请教,可以给我留言,感谢大家!写得不是很好,请大家海涵!

猜你喜欢

转载自blog.csdn.net/weixin_43271542/article/details/108741878
今日推荐