使用图形化编程实现灯泡开关设置
使用图形化编程实现灯泡开关设置
实验所需
硬件:Arduino、LED
软件:Mixly IDE
1.Arduino简介
Arduino是一种开源的电子平台,该平台最初主要基于AVR单片机的微控制器和相应的开发软件,目前在国内正受到电子爱好者的广泛关注。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反映、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用Arduino编程语言(基于Wiring)和(Arduino)开发环境(基于Processing)来实现的。
Arduino被设计成一个小型控制器的形式,通过连接到计算机进行控制。Arduino开发过程如下:
(1)开发者设计并连接好电路;
(2)将电路连接到计算机上进行编程;
(3)将编译通过的程序下载到控制板中进行观测;
(4)最后不断修改代码进行调试以达到预期效果。
2.Mixly简介
Mixly是一款用于中小学创意电子教学的图形化编程软件,由北京师范大学米思奇团队开发和维护,它是基于谷歌的图形化开源引擎Blockly进行的开发。现在已经成为国内重要的创客教育编程软件之一。随着2017年7月,国务院发文要求在中小学开展人工智能课程、普及编程教育,Mixly将得到中小学的进一步推广,其未来值得期待。
实验过程
利用Arduino板上的LED灯和开关,实现按钮控制LED灯亮灭。
方法1:
volatile int BUTTON;
volatile int LED;
volatile boolean state; //state记录当前开关状态void setup(){ //初始化pinMode(13, OUTPUT); //把13串口设为高,则灯泡亮起state = true;LED = 13;BUTTON = 7;digitalWrite(13,HIGH);Serial.begin(9600);pinMode(12, INPUT);
}void loop(){Serial.println(state);while (digitalRead(12) == 1) { //按钮是1的时候,既不按按钮的情况,不做处理。按下按钮后则执行下面语句} if (state == true) { //如果state为真,则把13调为底,LED灯熄灭digitalWrite(13,LOW);state = !state;} else { //如果state为假,则把13调为高,LED灯亮起digitalWrite(13,HIGH);state = !state;}delay(500);}
转换为图形化编程如下:
方法2:
volatile byte LED;
volatile boolean LastState; //变量LastSTate记录LED灯上一个状态
volatile byte SW; //变量开关
volatile byte click; //变量click来记录按下开关的次数
volatile boolean flag;
volatile boolean flag2;
volatile boolean toggle; //toggle控制LED亮灭void setup(){ //初始化pinMode(8, INPUT);Serial.begin(9600);pinMode(13, OUTPUT);LED = 0;SW = 0;LastState = 0;toggle = 0;click = 0;flag = 0;flag2 = 0;pinMode(8, INPUT_PULLUP);digitalWrite(13,LOW);
}void loop(){Serial.println(digitalRead(8)); //打印串口8的值while (digitalRead(8) == 0) { //当串口为0时,进入循环,即按钮按下flag = !digitalRead(8); //记录LED当前状态和上一次状态是否一样delay(10); if (flag != LastState) { //如果LED当前状态和上一次状态不一致flag2 = !digitalRead(8); //则再次进行判)}if (flag == flag2) { //如果两次判断的结果相同,则为开关已经按下LastState = flag; //开关状态换为flag记录的状态click = click + 1; //按钮按下次数加1}if (click == 1) { //当按钮按下次数为1toggle = !toggle; //更改控制LED状态值digitalWrite(13,toggle); //执行LED状态值}if (click == 2) { //当按钮按下次数为1click = 0; //把按钮按下次数置0,以便重复循环使用toggle = !toggle; //更改控制LED状态值digitalWrite(13,toggle); //执行LED状态值}}}
转换为图形化编程如下:
如果想要继续学习Mixly的同学,可以关注我,我会陆续发布更多资源,供大家参考学习
使用图形化编程实现灯泡开关设置相关推荐
- microbit编程_使用图形化编程实现主控板与手机蓝牙通讯(2019.3.25)
本文转自:DFRobot创客社区 原文链接: [Mind+]使用图形化编程实现主控板与手机蓝牙通讯-Mind+论坛-DF创客社区mc.dfrobot.com.cn 本帖最后由 Forgotten 于 ...
- NuGet学习笔记(2) 使用图形化界面打包自己的类库
上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新.在安装好NuGet扩展后,我们已经能够通 ...
- wsl使用可视化界面_通过 VcXsrv 在 WSL2 上使用图形化界面(xfce4)
当然网络上已经有很多相关教程了,但是对于我的情况那些方法都不完全正确以至于我不能使用图形化界面.所以如果你查了很多方法也不能使用的话可以看看这篇. 这是我的系统参数. 开门见山 启动 VcXsrv 在 ...
- NuGet学习笔记(2) 使用图形化界面打包自己的类库[转]
http://www.cnblogs.com/lzrabbit/archive/2012/05/01/2477607.html 上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet ...
- 【转】NuGet学习笔记(2)——使用图形化界面打包自己的类库
上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新.在安装好NuGet扩展后,我们已经能够通 ...
- NuGet学习笔记(2)——使用图形化界面打包自己的类库
上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新.在安装好NuGet扩展后,我们已经能够通 ...
- termux使用无图形界面linux,在termux上使用图形化
最近老是被人问怎么在termux上用图形化(GUI),想来不如写一篇文章得了. 被人吐槽写的太抽象了,我改还不行吗 VNC Termux原生 准确来说,原生是不可能的,你不可能在termux那个窗口里 ...
- Linux命令行如何使用图形化软件
WX众号:基因学苑 Q群:32798724 更多精彩内容等你发掘! 做生物信息一般是使用远程工具,连接Linux的命令行界面,如果遇到图片.网页等文件,就下载下来查看,这样虽然不是很方便,但是也能够凑 ...
- linux远程登录x11,windows linux 通过SSH X11Forwrding 使用图形化界面
有时候,我们需要在命令行中使用远程的GUI程序,这样我们就需要x11转发的来进行访问: Linux平台下不需要特别的配置,假如我们要远程的机器是centos机器,只要做如下配置即可: #vi /etc ...
- windows linux 通过SSH X11Forwrding 使用图形化界面
有时候,我们需要在命令行中使用远程的GUI程序,这样我们就需要x11转发的来进行访问: Linux平台下不需要特别的配置,假如我们要远程的机器是centos机器,只要做如下配置即可: #vi /etc ...
最新文章
- node mysql 多个_使用Node.js处理多个MySQL查询
- 11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机
- Java注释和真实世界的Spring示例
- 阿里云CDN操控2.0版本正式发布
- 7-8 统计工龄 (20 分)
- C语言实现呼吸灯(HAL库)
- PhotoShop中批量导出图片
- 12个医学公共数据库
- win7没有权限使用计算机的,Win7提示你可能没有权限使用网络资源|未授予用户在此计算机解决方法...
- L2-016 愿天下有情人都是失散多年的兄妹 (25 分)
- eclipse32位安装教程_Maya2015 (64位) 软件安装教程
- 网络笔记:路由选路原则
- 自动记录电脑开关机时间
- java手机游戏吸血鬼_Java 吸血鬼数字
- go 切片排序以及转为带间隔符的字符串
- cartographer中的pose_extrapolator梳理
- JQuery拖拽通过八个点改变div大小
- VLookup函数详细教程
- 3. node.js 异步式I/O或非阻塞式I/O
- Optitrack定位系统搭建(仅交换机,无需路由)