青少年无人机编程启蒙
——用 Scratch 3.0 + Tello EDU 开启你的飞行编程之旅
作者团队 | 青少年编程教育研究中心
适用对象 | 小学 3-6 年级(8-12 岁)
编程基础 | 零基础即可轻松上手
�� 写给小读者的话
亲爱的小朋友,你好呀!
你有没有想过,有一天你能指挥一架无人机在空中飞来飞去?不是用手拿着遥控器,而是用你编写的程序来控制它?听起来是不是很酷?
别担心,你不需要是”编程天才”,也不需要读过很多很多的书。只要你有好奇心,愿意动手试一试,这本书就能带你走进一个全新的世界——用代码让无人机听你的话!
在接下来的旅程中,你会认识两位好朋友:小飞(一只梦想飞行的小猫)和码码(一个热爱编程的小机器人)。它们会陪着你,一步步学习编程,一步步让无人机起飞、转弯、翻滚,甚至编队表演!
准备好了吗?让我们一起出发吧!
第 1 章 你好,无人机!
�� 本章目标:认识无人机的基本概念,了解 Tello EDU 的组成部分,掌握安全飞行守则,完成第一次动手操作。
�� 趣味导入
【小飞和码码的故事】
小飞趴在窗台上,仰着头看天空。一架白色的小飞机嗡嗡地飞过,在蓝天白云间灵活地转着圈。
“哇——”小飞的眼睛亮了起来,”那是什么?好酷啊!”
“那是无人机!”码码从桌子上滑了过来,屏幕上显示着大大的笑脸,”你知道吗?无人机就像一只听话的小鸟,你用编程就能让它飞到你想去的地方!”
“编程?”小飞的耳朵竖了起来,”我也可以吗?”
“当然可以啦!”码码眨了眨眼睛,”跟着这本书,我们一起来让无人机飞起来!”
1.1 无人机是什么?
无人机就是”没有人坐在上面”的飞机
小朋友,你坐过飞机吗?普通的飞机里面坐着飞行员(或者自动飞行系统),但无人机不一样——它的身体里面没有飞行员,它是从地面上用遥控器或者电脑程序来控制的!
用一句话来解释:
�� 无人机(Drone) = 不用人坐在里面,靠遥控器或电脑程序控制飞行的飞行器
“无人机”的学名叫”无人驾驶飞行器“(Unmanned Aerial Vehicle,简称 UAV)。”UAV”这个词看起来有点复杂,但你可以这样记:
• U = Unmanned(无人的)
• A = Aerial(空中的)
• V = Vehicle(交通工具)
连起来就是”在空中飞行的、没有人的交通工具”!
无人机长什么样?
无人机的样子有很多种,就像一个家庭有不同的成员一样。最常见的无人机有下面几种形状:
�� 四旋翼无人机(Quadcopter)
这是最常见的一种,有 4 个螺旋桨(也叫”旋翼”),像个小”十”字。我们这本书要用的 Tello EDU 就是这种类型!
�� 六旋翼无人机(Hexacopter)
有 6 个螺旋桨,力气更大,能带更重的东西,比如专业的摄像机。
�� 八旋翼无人机(Octocopter)
有 8 个螺旋桨,是个大力士!通常用在电影拍摄和工业领域。
�� 固定翼无人机
长得像普通飞机,有一对大翅膀,飞得又快又远,常用于航拍地图和农业喷洒。
[配图:四种常见无人机外形对比图——四旋翼、六旋翼、八旋翼、固定翼]
�� 你知道吗?
四旋翼无人机之所以最流行,是因为它只需要 4 个电机就能实现前后左右上下六个方向的运动,既简单又灵活!这就像我们用 4 个轮子就能让汽车在地上跑一样巧妙。
无人机是怎么飞的?
无人机飞起来的秘密就藏在螺旋桨里!
每个螺旋桨旋转的时候,会把空气向下推。根据牛顿第三定律(作用力与反作用力),空气也会给螺旋桨一个向上的推力。当这个向上的推力大于无人机自身的重量时,无人机就飞起来啦!
上升:4 个螺旋桨一起加速旋转 → 推力变大 → 飞起来!
下降:螺旋桨减速 → 推力变小 → 慢慢降落
前进:后面的螺旋桨转得快一些,前面的慢一些 → 无人机身体前倾 → 向前飞
转弯:对角线的两个螺旋桨加速,另外两个减速 → 无人机旋转
[配图:无人机飞行原理示意图,展示螺旋桨转速变化与飞行方向的关系]
�� 你知道吗?
你可能注意到了,4 个螺旋桨的旋转方向是不同的——两个顺时针转,两个逆时针转。为什么要这样呢?因为如果 4 个桨叶都朝同一个方向转,无人机会像陀螺一样不停旋转,根本没法正常飞行!两个方向转,互相抵消,无人机才能稳稳地飞!
1.2 无人机在生活中的应用
你可能会想:”无人机不就是玩具吗?”其实,无人机的用处可大了去了!让我们一起来看看,无人机在各行各业都在做什么:
�� 航拍摄影
这是大家最熟悉的用途了!无人机带着高清摄像头飞到空中,拍下壮观的风景、美丽的城市夜景,甚至电影里那些超酷的空中镜头,很多都是无人机拍的!
你看过一些旅行纪录片吗?那些从高空俯瞰大海、山川、城市全景的画面,大部分都是无人机的杰作。
[配图:无人机航拍的城市全景照片]
�� 农业植保
在田野里,农民伯伯用无人机来喷洒农药和施肥。一架农业无人机一次能装很多药水,飞过的速度比人工快几十倍!
而且无人机喷洒得很均匀,不会喷多也不会喷少,既省药水又环保。
[配图:农业无人机在稻田上空喷洒作业]
�� 快递配送
想象一下,你网购了一个包裹,不是快递员骑着电动车送来,而是一架无人机直接从仓库飞到你家阳台!这已经不是科幻电影了——很多公司已经在测试无人机送快递了!
在一些偏远山区,无人机更是大显身手,把药品和物资送到交通不便的地方。
[配图:无人机送货场景]
�� 救援搜救
当发生地震、洪水或者有人在山里迷路时,无人机可以飞到人类难以到达的地方,用摄像头搜索被困的人,帮救援队找到需要帮助的人。
有些无人机还能携带急救药品和救生圈,在第一时间送到被困者手中。
�� 科学考察
科学家带着无人机去南极看企鹅,去火山口拍岩浆,去森林深处数动物的数量。无人机替人类去了很多危险的地方!
��️ 建筑巡检
在建筑工地,工程师用无人机来检查高楼大厦的外墙、桥梁的结构、风力发电机的叶片。以前要搭脚手架或者用望远镜才能看到的地方,现在无人机飞一圈就搞定了!
�� 你知道吗?
全球无人机的市场规模正在快速增长。据统计,到 2025 年,全球无人机市场规模预计将超过 300 亿美元!在中国,无人机技术走在世界前列,大疆(DJI)等中国企业的产品畅销全世界。
未来,也许你会成为设计下一代无人机的人哦!
1.3 Tello EDU 开箱认识
终于到了认识我们的”主角”的时候了!Tello EDU 是一款专为教育设计的小型无人机,它小巧轻便、安全可靠,而且最重要的是——它可以用 Scratch 编程来控制!
�� 开箱清单
当你打开 Tello EDU 的包装盒,你会看到以下部件:
| 序号 | 部件名称 | 说明 | 数量 |
| 1 | Tello EDU 机身 | 无人机本体,包含摄像头、传感器、电机等 | 1 |
| 2 | 螺旋桨(A 桨) | 顺时针旋转的桨叶,桨尖有 A 标记 | 2 |
| 3 | 螺旋桨(B 桨) | 逆时针旋转的桨叶,桨尖有 B 标记 | 2 |
| 4 | 电池 | 可充电锂电池,续航约 13 分钟 | 1 |
| 5 | 电池仓盖 | 保护电池的盖子 | 1 |
| 6 | 螺旋桨保护罩 | 套在机身外面的保护圈,防止撞伤 | 1 |
| 7 | 说明书 | 使用指南 | 1 |
[配图:Tello EDU 开箱全家福,标注各个部件]
�� 认识 Tello EDU 的各个部位
让我们仔细看看 Tello EDU 机身上都有哪些部件:
�� 正面(前方)
• 摄像头:一个小小的圆形镜头,就像无人机的”眼睛”。它可以拍摄 720P 高清照片和 1080P 视频。
• LED 指示灯:告诉你无人机当前的状态(比如是否已连接、电量是否充足等)。
�� 背面(后方)
• 电池仓:安装电池的地方。
• 电池卡扣:固定电池的卡扣。
�� 底部(下方)
• 气压计传感器:测量高度,让无人机知道自己离地面有多高。
• ToF 距离传感器:向下发射红外光,测量离地面的距离(就像蝙蝠用超声波探路一样!)。
• 序列号标签:印有产品的编号等信息。
�� 顶部(上方)
• 天线(隐藏在机身内部)。
�� 四个侧面
• 4 个电机:分别带动 4 个螺旋桨旋转。
• 电机编号:每个电机旁边标有 1-4 的数字,方便你安装对应的螺旋桨。
• 螺旋桨安装卡扣:用来固定螺旋桨的小卡扣。
[配图:Tello EDU 机身各部位标注图,从正面、背面、底部、顶部四个角度展示]
�� 螺旋桨的 ABCD 标记
螺旋桨的安装非常重要!请仔细看螺旋桨和电机上标记:
• A 桨(CW,顺时针桨):安装在标有 A 或 CW 的电机上
• B 桨(CCW,逆时针桨):安装在标有 B 或 CCW 的电机上
⚠️ 重要提醒:A 桨和 B 桨是不能互换的!如果装反了,无人机会飞不起来甚至翻跟头。安装时一定要仔细检查!
[配图:A 桨和 B 桨的外形对比图,以及正确的安装位置示意图]
1.4 安全飞行守则
��️ 安全小卫士
安全飞行是最重要的!在让无人机飞起来之前,请你和爸爸妈妈一起阅读下面的安全守则。记住,安全第一,快乐第二!
�� 安全飞行十大守则
为了方便记忆,我们把这些安全守则编成了一首小儿歌:
�� 无人机安全飞行歌 ��
小螺旋桨,转得快,
手指千万别靠近。
飞行之前看四周,
远离人群和宠物。
室内飞行空间小,
桌椅花瓶要挪走。
头发飘飘要注意,
扎起长发更安全。
电量不足快降落,
电池发热要休息。
飞行结束关开关,
安全第一记心间!
详细安全守则
守则 1:螺旋桨旋转时,远离螺旋桨
螺旋桨旋转速度非常快(每分钟上万转!),虽然 Tello EDU 的螺旋桨很小很轻,但还是有可能割伤手指。所以,永远不要把手指伸进旋转的螺旋桨里!
守则 2:飞行前检查周围环境
• 清除飞行区域内的障碍物(桌椅、花瓶、吊灯等)
• 确保飞行区域上方没有低矮的障碍物
• 确保没有宠物或小朋友靠近飞行区域
守则 3:注意头发和宽松衣物
如果你的头发比较长,飞行时请扎起来。宽松的衣服、围巾等也要整理好,避免被螺旋桨卷入。
守则 4:不要在拥挤的地方飞行
确保飞行区域周围没有人围观。万一无人机失控,不会伤到人。
守则 5:电量低于 10% 立即降落
当 Tello EDU 电量低于 10% 时,无人机会发出低电量警告。这时请立即让无人机降落,否则它可能会突然掉下来!
守则 6:飞行后让电池冷却
飞行结束后,电池会有些发热。请等电池冷却几分钟再充电或再次飞行。
守则 7:不要在水面上飞行
虽然 Tello EDU 可以在室内飞行,但请远离水源。万一掉进水里,无人机会损坏的。
守则 8:不要在公共场所飞行
Tello EDU 是室内教育无人机,不适合在户外空旷的地方飞(风大了会被吹跑!)。也不要在机场附近或人群密集的地方飞行。
守则 9:使用保护罩
新手练习时,建议始终安装螺旋桨保护罩。保护罩可以防止无人机撞墙时损坏,也能保护周围的人不被螺旋桨碰到。
守则 10:在大人陪伴下飞行
虽然 Tello EDU 很安全,但建议你在家长或老师的陪伴下飞行。有大人看着,会更安全也更放心。
��️ 安全小卫士提醒
安全不是限制你玩耍,而是让你玩得更开心、更放心!每一次飞行前,都花 1 分钟检查一下安全事项,养成好习惯!
1.5 动手时间:安装螺旋桨与充电
好啦,理论知识已经准备好了,现在让我们动手操作!
�� 任务一:安装螺旋桨
准备工具:Tello EDU 机身、4 个螺旋桨
步骤:
第一步:找到 A 和 B 标记
• 仔细看每个电机旁边的标记,有的标着 A,有的标着 B。
• 再看每个螺旋桨,桨叶根部也标着 A 或 B。
第二步:匹配安装
• 把 A 桨安装到标有 A 的电机上。
• 把 B 桨安装到标有 B 的电机上。
• 安装方法:把螺旋桨中心的小孔对准电机轴,轻轻按下去,听到”咔嗒”一声就固定好了。
第三步:检查是否牢固
• 轻轻拉一下每个螺旋桨,确保它不会松动。
• 用手转一下螺旋桨,确保它转动顺畅,没有卡顿。
第四步:安装保护罩
• 把保护罩卡到机身四周的卡槽里。
• 保护罩要完全卡紧,不能有松动的部分。
[配图:螺旋桨安装步骤分解图,标注 A/B 桨的正确安装位置]
�� 小妙招
安装螺旋桨时,可以用手轻轻按住螺旋桨的中心,然后向下一压,这样更容易卡紧。千万不要用很大的力,否则可能会弄坏电机哦!
�� 任务二:给电池充电
准备工具:Tello EDU 电池、USB 充电线(或充电座)
步骤:
第一步:取出电池
• 按下电池仓盖上的卡扣,轻轻拉出电池。
• 注意电池的正负极方向,装回去的时候要按照同样的方向。
第二步:连接充电
• 把 USB 充电线插入电池的充电接口。
• 另一端插入电脑的 USB 口或者手机充电头(输出 5V/1A 的充电器即可)。
第三步:等待充满
• 充电时,电池上的指示灯会亮红灯(表示正在充电)。
• 当指示灯熄灭或变绿(取决于电池型号),就表示充满啦!
• 充满大约需要 90 分钟。
第四步:安装电池
• 把充满电的电池推回电池仓,直到听到”咔嗒”声。
• 确保电池安装牢固,不会松动。
[配图:电池充电和安装步骤图]
⚠️ 安全小卫士提醒
– 不要使用超过 5V 的充电器,否则可能损坏电池。
– 充电时不要覆盖电池,保持通风。
– 如果电池鼓包、变形或有异味,立即停止使用,告诉家长处理。
– 不要在无人看管的情况下给电池充电。
1.6 开机与连接(先睹为快)
�� 虽然我们会在下一章详细学习编程连接,但这里先让你体验一下开机的乐趣!
开机步骤:
• 长按开机键:按住 Tello EDU 机身上的电源键约 2 秒钟,直到指示灯开始闪烁。
• 等待初始化:无人机发出”嘀”的一声,螺旋桨保护罩上的指示灯亮起。这表示无人机已经启动,正在等待连接。
• 连接手机:打开手机 WiFi 设置,找到以 “TELLO-” 开头的 WiFi 信号,点击连接。
• 打开 APP(可选):下载并打开 Tello APP(爸爸妈妈帮忙安装),就能用手机操控无人机了!
[配图:开机步骤示意图]
�� 你知道吗?
Tello EDU 开机后,它会创建一个自己的 WiFi 热点。这就像你的手机开热点分享网络给别人一样。我们的电脑要通过连接这个 WiFi,才能和无人机”说话”哦!
不过现在先不急着用电脑连接,先用手机 APP 体验一下手动飞行的乐趣吧!(但一定要在爸爸妈妈的陪伴下哦!)
�� 本章小结
恭喜你完成了第一章的学习!让我们回顾一下你都学到了什么:
✅ 知识清单
| 知识点 | 你学会了吗? |
| 无人机(UAV)是什么 | ⬜ |
| 四旋翼无人机的飞行原理 | ⬜ |
| 无人机在生活中的 6 种应用 | ⬜ |
| Tello EDU 的各个部件名称 | ⬜ |
| A 桨和 B 桨的区别和安装方法 | ⬜ |
| 安全飞行十大守则 | ⬜ |
| 安装螺旋桨的方法 | ⬜ |
| 给电池充电的方法 | ⬜ |
�� 本章重点回顾
• 无人机就是没有人坐在里面的飞行器,靠遥控器或程序控制。
• 四旋翼无人机通过改变 4 个螺旋桨的转速来实现各种方向的飞行。
• Tello EDU 是一款专为编程教育设计的小型无人机,有摄像头、传感器和编程接口。
• 安全永远是第一位的,飞行前一定要检查环境、安装保护罩、注意电量。
• A 桨和 B 桨不能互换,安装时一定要看标记。
�� 课后小任务
• 观察题:仔细看看你的 Tello EDU,找出所有的传感器位置,并画在纸上。
• 思考题:为什么四旋翼无人机需要两种旋转方向的螺旋桨?试着用”转椅子”来体验一下——坐在旋转椅上,如果你不停地向一个方向推墙,椅子会怎么转?
• 实践题:在爸爸妈妈的陪伴下,给 Tello EDU 充满电,安装好螺旋桨和保护罩,用手机 APP 体验一次飞行。
• 创意题:画一画你心中最厉害的无人机是什么样的?它有什么特别的功能?
第 2 章 认识编程好朋友 Scratch
�� 本章目标:认识 Scratch 编程环境,学会基本操作,写出第一个小程序,理解”事件”和”顺序执行”的概念。
�� 趣味导入
【小飞和码码的故事】
“码码,无人机很酷,但是怎么让它飞起来呢?总不能一直用手机 APP 手动操控吧?”小飞有些不甘心地说。
“当然可以自动飞行!”码码兴奋地说,”这就需要用到——编程!”
“编程?就是那种满屏都是英文字母的东西?好难啊……”小飞有点害怕。
“别怕别怕!”码码笑着调出了一个彩色界面,”我们来认识一个特别好的编程朋友——Scratch!在 Scratch 里编程就像搭积木一样简单,完全不需要写英文代码!”
小飞好奇地看着屏幕上那些五颜六色的积木块,说:”真的吗?看起来好好玩!”
“走吧,我带你一起认识 Scratch!”
2.1 Scratch 是什么?
搭积木 = 写程序!
你玩过乐高积木吗?把一块一块的积木拼在一起,就能搭出城堡、汽车、机器人……
Scratch 编程和搭积木一模一样!只不过,Scratch 里的积木不是塑料块,而是电脑屏幕上的彩色方块。你把不同的积木拖到一起、拼在一起,就能让电脑做各种事情——画画、做游戏、做动画,甚至控制无人机!
�� Scratch 是由美国麻省理工学院(MIT)的媒体实验室开发的一款图形化编程语言。”图形化”的意思就是——你看到的不是文字代码,而是好看的图形和颜色!
为什么选 Scratch?
Scratch 有几个特别适合小朋友的特点:
✅ 不用打字写代码
用鼠标拖动积木块就能编程,不用担心拼写错误、忘记标点符号之类的问题。
✅ 立刻看到效果
写完程序一点”运行”,马上就能看到结果。画了个圆就看到圆,让小猫走就看到小猫走,特别有成就感!
✅ 社区很热闹
全世界有很多小朋友在用 Scratch,你可以分享自己的作品,也可以看看别人做了什么有趣的东西。
✅ 能连接无人机!
Scratch 3.0 支持扩展功能,可以连接 Tello EDU 无人机,这才是我们选它的最重要原因!
�� 你知道吗?
Scratch 的名字来自”scratch DJ”(唱片骑师)——DJ 用手指在唱片上刮擦(scratch)来创造音乐,而 Scratch 编程让你用手指在屏幕上拖动积木来创造程序,概念很像呢!
Scratch 已经有超过 1 亿 个注册作品了,全世界有 200 多个国家和地区的青少年在使用它!
2.2 Scratch 界面介绍
让我们打开 Scratch,来认识一下它的”家”。
�� 如何打开 Scratch
– 方法一(在线版):打开浏览器,访问 https://scratch.mit.edu ,点击”创建”按钮。
– 方法二(离线版):安装 Scratch 桌面版(爸爸妈妈帮忙下载安装),双击打开。
两种方式功能基本一样,但连接无人机时需要用离线版哦!
Scratch 的四大区域
打开 Scratch 后,你会看到一个分成几个区域的界面。让我们一个个来认识:
[配图:Scratch 3.0 完整界面截图,用箭头标注四大区域]
区域一:舞台区(Stage)—— “表演”的地方
舞台区在屏幕的右上角,是角色们”表演”的地方。你写的程序里,角色说什么话、走到哪里、变成什么样,都会在这个舞台上展示出来。
舞台就像一个小小的剧场,你的角色(小猫、小狗、外星人……)都在这里上演你的故事。
舞台上方还有几个按钮:
• �� 绿旗:点击它,程序就开始运行!就像说”开始表演!”
• �� 红圆:点击它,程序就停止运行。就像说”停!”
• 全屏按钮:让舞台变成全屏,看起来更过瘾!
区域二:角色区(Sprite Pane)—— “演员”集合的地方
角色区在舞台的下方,显示当前项目中的所有角色。默认的”演员”就是 Scratch 的吉祥物——小猫!
你可以在这里:
• 点击角色,选中它来编辑程序
• 点击��️画笔画一个全新的角色
• 点击��文件夹从电脑里导入图片当角色
• 点击��骰子从 Scratch 自带的角色库里挑选
区域三:积木区(Block Palette)—— “积木”仓库
积木区在屏幕的左侧,是所有积木的大仓库。这里面的积木按照功能分成了 9 大类,每类用不同的颜色标记:
| 颜色 | 类别名称 | 功能说明 |
| �� 蓝色 | 运动(Motion) | 控制角色移动、旋转、转向 |
| �� 紫色 | 外观(Looks) | 控制角色说话、换造型、改变大小 |
| �� 粉色 | 声音(Sound) | 播放声音、改变音量 |
| �� 黄色 | 事件(Events) | 程序的”开始”信号(如点击绿旗) |
| �� 橙色 | 控制(Control) | 循环、等待、条件判断 |
| �� 红色 | 侦测(Sensing) | 碰到东西、按键、颜色检测 |
| �� 绿色 | 运算(Operators) | 加减乘除、比较大小 |
| �� 天蓝色 | 变量(Variables) | 存储数据的”盒子” |
| �� 深蓝色 | 我的积木(My Blocks) | 自定义积木(高级功能) |
[配图:Scratch 积木区截图,标注 9 大类积木的颜色和名称]
区域四:代码区(Code Area)—— “搭积木”的工作台
代码区在屏幕的中间,是真正搭积木的地方。你从左侧积木区把积木拖到这里,一块一块地拼起来,组成完整的程序。
代码区就是你的”工作台”,所有的编程工作都在这里完成。
2.3 第一个程序:让小猫说 “Hello!”
现在,让我们动手写第一个程序!超级简单,保证你 30 秒就能完成!
跟我做
第一步:确保选中了小猫角色
在角色区点击小猫,确保它周围有蓝色边框。
第二步:找到”事件”类积木
在左侧积木区,点击��黄色的”事件”类别。
第三步:拖出”当��被点击”积木
找到写着”当 �� 被点击”的积木,用鼠标按住它,拖到中间的代码区。
第四步:找到”外观”类积木
点击��紫色的”外观”类别。
第五步:拖出”说 Hello! 2 秒”积木
找到写着”说 Hello! 2 秒”的积木,拖到代码区。
第六步:把两块积木拼在一起
把”说 Hello!”积木的下端靠近”当��被点击”积木的下端。当它们靠近时,你会看到积木边缘出现高光效果(像拼图一样),松开鼠标,两块积木就拼在了一起!
[配图:Scratch 代码区截图,展示”当��被点击”和”说 Hello! 2 秒”两块积木拼在一起]
第七步:点击绿旗运行!
点击舞台上方的��绿旗,你会看到小猫头顶出现一个气泡,里面写着”Hello!”,2 秒后气泡消失。
�� 恭喜你!你的第一个 Scratch 程序完成了!
代码说明
用积木描述格式来表示,就是:
当 �� 被点击
→ 说 [Hello!] (2) 秒
这表示:
• 当绿旗被点击时(程序的”开始”信号)
• 让小猫说”Hello!”,说 2 秒钟
是不是很简单?就这么两行”积木”,就是一个完整的程序!
2.4 事件与顺序执行
什么是”事件”?
事件就是程序的“开始信号”。就像学校上课铃响了,同学们就知道”该开始上课了”。在 Scratch 里,最常见的事件就是”当��被点击”。
常见的事件积木有:
| 事件积木 | 说明 |
| 当 �� 被点击 | 点击绿旗时开始执行 |
| 当按下 [空格] 键 | 按下键盘某个键时开始 |
| 当角色被点击 | 用鼠标点击角色时开始 |
| 当背景切换到 [背景1] | 背景切换时开始 |
| 当接收到消息 [消息1] | 收到一条”消息”时开始 |
�� 小贴士:每个程序都要有一个事件积木来”开头”。就像写作文要有标题一样,事件积木就是程序的”标题”——它告诉 Scratch:”从这里开始执行!”
什么是”顺序执行”?
顺序执行就是从上往下、一步一步地执行指令。Scratch 会按照积木从上到下的排列顺序,一块一块地执行。
比如我们写这样一个程序:
当 �� 被点击
→ 说 [你好!] (2) 秒
→ 说 [我要走了!] (2) 秒
→ 移到 x: [0] y: [0]
→ 说 [拜拜!] (2) 秒
执行顺序是:
• 先说”你好!”,等 2 秒
• 再说”我要走了!”,等 2 秒
• 然后移动到舞台中央
• 最后说”拜拜!”,等 2 秒
就像排队一样,第一个做完,第二个才做,不会同时做。
�� 记住这个口诀:
事件开头打头阵,积木排队往下行。
一个做完下一个,顺序执行要记清。
修改数字试一试
Scratch 的积木里经常有可以修改的数字(白色的输入框)。让我们修改一下刚才的程序:
试试这样做:
• 把”说 Hello! 2 秒”中的 “Hello!” 改成你的名字
• 把 “2” 秒改成 “5” 秒
• 点击绿旗运行
看看效果有什么不同?
你还可以再添加一块积木:
当 �� 被点击
→ 说 [你好,我是小飞!] (3) 秒
→ 将大小设为 (150) %
→ 等待 (1) 秒
→ 将大小设为 (100) %
→ 说 [看我变大了又变小了!] (3) 秒
运行看看效果——小猫先变大了,然后又变小了!
2.5 练习:让角色画画
现在我们来做一个更有趣的程序——让小猫在舞台上画画!
准备工作:使用”画笔”扩展
Scratch 有一个”画笔”功能,可以让角色在舞台上留下痕迹,像画画一样。但画笔功能默认没有显示,需要先添加。
添加画笔扩展的步骤:
• 在 Scratch 左下角,找到一个蓝色的小方块图标(扩展按钮),点击它。
• 在弹出的扩展列表中,找到”画笔”(Pen),点击它。
• 添加成功后,积木区左侧会多出一个绿色的”画笔”类别!
[配图:扩展按钮位置和画笔扩展添加界面截图]
画一个正方形
添加好画笔后,让我们来画一个正方形!
程序:
当 �� 被点击
→ 全部擦除
→ 将笔的粗细设为 (3)
→ 将笔的颜色设为 (红色)
→ 落笔
→ 重复 (4) 次
→ 移动 (100) 步
→ 右转 (90) 度
代码说明:
• 全部擦除:把舞台上之前画的都擦掉,开始一张”白纸”。
• 将笔的粗细设为 3:画出的线条粗细。
• 将笔的颜色设为红色:画出的线条颜色。你也可以改成蓝色、绿色等。
• 落笔:把”笔”放到纸上(开始画线)。如果”抬笔”,角色移动就不会画线。
• 重复 4 次:正方形有 4 条边,所以重复 4 次。
• 移动 100 步:向前画一条 100 步长的线。
• 右转 90 度:每画完一条边,转 90 度(直角),准备画下一条边。
[配图:画正方形的完整积木程序截图]
点击绿旗运行,你会看到小猫在舞台上画出一个完美的红色正方形!
画一个三角形
正方形会画了,三角形呢?
提示一下:三角形有 3 条边,需要转 3 次,每次转 120 度(不是 60 度哦!因为 Scratch 的”右转”是角色自身的转向角度)。
程序:
当 �� 被点击
→ 全部擦除
→ 将笔的粗细设为 (3)
→ 将笔的颜色设为 (蓝色)
→ 落笔
→ 重复 (3) 次
→ 移动 (100) 步
→ 右转 (120) 度
画一个五角星
更酷的五角星!五角星有 5 个角,每次转 144 度。
程序:
当 �� 被点击
→ 全部擦除
→ 将笔的粗细设为 (2)
→ 将笔的颜色设为 (黄色)
→ 落笔
→ 重复 (5) 次
→ 移动 (100) 步
→ 右转 (144) 度
�� 彩虹色多边形
让我们加上颜色变化,画一个彩色的多边形!
程序:
当 �� 被点击
→ 全部擦除
→ 将笔的粗细设为 (3)
→ 落笔
→ 将笔的 [颜色] 设为 (0)
→ 重复 (36) 次
→ 移动 (10) 步
→ 右转 (10) 度
→ 将笔的 [颜色] 增加 (10)
运行看看——画出了一个颜色不断变化的圆形(36 边形)!每次转 10 度,转 36 次刚好转了 360 度(一圈),而且颜色也在不断变化,像彩虹一样美!
�� 动脑筋
如果每次右转 20 度,需要重复多少次才能画完一圈?(提示:360 ÷ 20 = ?)
如果每次右转 45 度呢?(360 ÷ 45 = ?)
这些就是八边形!试试看吧!
�� 本章小结
哇!你已经学会 Scratch 编程了!让我们回顾一下本章学到的知识:
✅ 知识清单
| 知识点 | 你学会了吗? |
| Scratch 是什么(图形化编程) | ⬜ |
| Scratch 界面的四大区域 | ⬜ |
| 9 大类积木的颜色和功能 | ⬜ |
| “当��被点击”事件 | ⬜ |
| 顺序执行的概念 | ⬜ |
| 添加”画笔”扩展 | ⬜ |
| 用画笔绘制正方形、三角形、五角星 | ⬜ |
| 颜色变化的效果 | ⬜ |
�� 本章重点回顾
• Scratch 是一款图形化编程语言,用拖拽积木的方式编程,不需要写文字代码。
• Scratch 界面分为 舞台区、角色区、积木区、代码区 四大区域。
• 积木按功能分为 9 大类,用不同颜色区分。
• 每个程序都需要一个 事件积木 作为开头。
• 程序按照积木 从上到下的顺序 一步步执行。
• 利用 画笔扩展 可以让角色在舞台上画画。
�� 课后小任务
• 基础题:在 Scratch 中,让小猫说”大家好,我是 [你的名字]!”,持续 3 秒。
• 进阶题:让小猫先说”我向左走”,然后向左走 50 步;再说”我向右走”,向右走 100 步。
• 创意题:用画笔画一个你喜欢的图案(比如房子、花朵、星星),试着加上颜色变化。
• 挑战题:能不能画一个六边形?提示:6 条边,每次转多少度?(360 ÷ 6 = ?)
�� 小飞的鼓励
“哈哈, Scratch 真的像搭积木一样简单!我已经迫不及待想用 Scratch 来控制无人机了!码码,下一章快开始吧!”
“别急别急!先把基础打好,下一章我们就让 Tello EDU 和 Scratch 牵手,正式开始飞行编程之旅!”码码笑着说。
第 3 章 让无人机听你的话
�� 本章目标:学会用 WiFi 连接 Tello EDU,安装 Tello Scratch 扩展,掌握基础飞行指令积木,完成第一个飞行程序。
�� 趣味导入
【小飞和码码的故事】
“码码!我已经学会 Scratch 了!画了正方形、三角形、五角星!”小飞兴奋得跳了起来。
“太棒了!”码码竖起了大拇指,”现在,是时候让你真正的’主角’登场了——让 Tello EDU 和 Scratch 连起来!”
“怎么连?用线吗?”
“不用线!用 WiFi!就像你的手机连家里的路由器一样,我们的电脑也要连上 Tello EDU 的 WiFi,这样就能’对话’了。”
“那连上以后呢?”
“连上以后,Scratch 里就会多出一套’飞行积木’——用这些积木,你可以指挥无人机起飞、前进、转弯、翻滚,就像指挥一个空中舞者!”
小飞的眼睛闪闪发光:”那就快开始吧!”
3.1 Scratch 与 Tello EDU 的连接方法
连接原理:WiFi 通信
Tello EDU 开机后,会创建一个自己的 WiFi 热点(就像一个小型路由器)。我们的电脑连接这个 WiFi 后,就可以通过网络和无人机通信了。
具体来说:
• 电脑 → WiFi → Tello EDU:电脑通过 WiFi 发送指令给无人机。
• Tello EDU → WiFi → 电脑:无人机把摄像头画面、传感器数据传回电脑。
这就像你用对讲机说话,声音通过无线电波传到对方的对讲机里。只不过我们用 WiFi 来”说话”。
[配图:电脑、WiFi 信号、Tello EDU 三者通信示意图]
连接步骤(图文详解)
⚠️ 安全小卫士提醒
开始连接之前,请确保:
– ✅ Tello EDU 已充满电
– ✅ 已安装好螺旋桨和保护罩
– ✅ 飞行区域已清理干净
– ✅ 爸爸妈妈在旁边
第一步:启动 Tello EDU
按住机身上的电源键约 2 秒,直到指示灯闪烁。无人机会发出”嘀”的一声,表示已开机。
第二步:连接 WiFi
• 在电脑上,点击 WiFi 图标,查看可用的 WiFi 网络。
• 找到名为 “TELLO-XXXXXX”(X 代表数字和字母)的 WiFi 信号。
• 点击连接(Tello 的 WiFi 不需要密码,直接点击就能连上)。
⚠️ 重要提醒:连接 Tello 的 WiFi 后,你的电脑可能会暂时上不了网,这是正常的!因为电脑的网络连到了 Tello,不是路由器。等我们完成操作断开连接后,就能恢复上网了。
第三步:打开 Scratch 离线版
确保你安装的是 Scratch 离线版(桌面版),在线版无法连接无人机。
第四步:添加 Tello 扩展
• 在 Scratch 左下角,点击蓝色扩展按钮。
• 在扩展列表中,你会看到”Tello Drone”(如果没看到,可能需要安装 Tello 扩展服务器,具体步骤见下一节)。
• 点击”Tello Drone”,积木区左侧就会多出一组飞行积木!
[配图:扩展选择界面,标注 Tello Drone 扩展位置]
第五步:连接确认
添加好 Tello 扩展后,Scratch 会自动尝试与无人机通信。如果连接成功,你会看到积木区中的飞行积木变为可用状态。
�� 小妙招
如果连接不成功,试试这些办法:
1. 关闭 Tello,等 5 秒再重新开机。
2. 断开 WiFi 连接,重新连接 Tello 的 WiFi。
3. 关闭 Scratch,重新打开。
4. 检查电脑上是否有防火墙阻止了 Scratch 的网络访问。
3.2 安装 Tello Scratch 扩展
什么是 Tello Scratch 扩展?
Tello Scratch 扩展是一套额外的积木,专门用来控制 Tello 无人机。它不是 Scratch 自带的,需要额外安装。
安装这个扩展后,你的积木区就会多出一类”飞行积木”,里面有起飞、降落、前进、后退等指令。
安装方法
方法一:使用 Tello Scratch Link(推荐)
Tello 官方提供了 Tello Scratch Link 工具,安装后 Scratch 就能自动识别 Tello 扩展。
步骤:
• 在电脑上打开浏览器,访问 Tello 官方网站的教育板块。
• 下载并安装 Tello Scratch Link(根据你的电脑系统选择 Windows 或 Mac 版本)。
• 安装完成后,运行 Tello Scratch Link,它会在后台运行(系统托盘会有一个图标)。
• 打开 Scratch 离线版,点击扩展按钮,就能看到”Tello Drone”选项了。
[配图:Tello Scratch Link 安装流程截图]
方法二:使用第三方扩展(替代方案)
如果官方扩展不可用,也有一些社区开发的替代方案,比如基于 Python 的 Tello Scratch 服务器。这需要爸爸妈妈帮忙安装。
�� 你知道吗?
Tello 扩展的安装可能因版本和系统不同而有所差异。如果遇到问题,可以在 Tello 官方论坛或者教育社区搜索解决方案。记住,遇到问题不要灰心,很多编程高手都是从”解决问题”中成长起来的!
3.3 基础指令积木详解
现在让我们认识一下 Tello 扩展给我们带来的”飞行积木”们!
基础飞行指令一览
Tello 扩展的积木可以分为以下几类:
�� 连接类
| 积木 | 功能 |
| 连接 Tello | 与无人机建立连接 |
| 断开 Tello | 断开与无人机的连接 |
�� 起飞降落类
| 积木 | 功能 |
| Tello 起飞 | 无人机起飞,悬停在约 1 米高度 |
| Tello 降落 | 无人机安全降落 |
�� 移动类
| 积木 | 功能 | 范围 |
| Tello 向前飞行 (20) 厘米 | 向前飞行指定距离 | 20-500 厘米 |
| Tello 向后飞行 (20) 厘米 | 向后飞行指定距离 | 20-500 厘米 |
| Tello 向左飞行 (20) 厘米 | 向左飞行指定距离 | 20-500 厘米 |
| Tello 向右飞行 (20) 厘米 | 向右飞行指定距离 | 20-500 厘米 |
�� 高度控制类
| 积木 | 功能 | 范围 |
| Tello 向上飞行 (20) 厘米 | 向上升高指定距离 | 20-500 厘米 |
| Tello 向下飞行 (20) 厘米 | 向下降低指定距离 | 20-500 厘米 |
�� 旋转类
| 积木 | 功能 | 范围 |
| Tello 向左旋转 (90) 度 | 向左旋转指定角度 | 1-360 度 |
| Tello 向右旋转 (90) 度 | 向右旋转指定角度 | 1-360 度 |
�� 翻滚类
| 积木 | 功能 |
| Tello 向前翻滚 | 向前翻一个跟头 |
| Tello 向后翻滚 | 向后翻一个跟头 |
| Tello 向左翻滚 | 向左翻一个跟头 |
| Tello 向右翻滚 | 向右翻一个跟头 |
�� 摄像头类
| 积木 | 功能 |
| Tello 拍照 | 拍一张照片 |
| Tello 录像 | 开始/停止录像 |
�� 数据查询类
| 积木 | 功能 |
| Tello 高度 | 获取当前飞行高度 |
| Tello 电池电量 | 获取电池剩余电量 |
| Tello 飞行时间 | 获取已飞行时间 |
| Tello 温度 | 获取当前温度 |
| Tello 气压 | 获取当前气压值 |
| Tello 加速度 x/y/z | 获取三个方向的加速度 |
[配图:Tello 扩展所有积木的截图]
方向说明:无人机的”前后左右”
无人机的”前后左右”和你想象的可能不一样!
• 前方 = 摄像头的方向(也就是无人机的”头”朝向的方向)
• 后方 = 摄像头相反的方向
• 左方 = 面向摄像头方向的左边
• 右方 = 面向摄像头方向的右边
�� 小贴士
想象你自己站在无人机上,面朝摄像头的方向。你的前方就是无人机的前方,你的左边就是无人机的左边。
当你让无人机”向右旋转90度”后,它的”前方”就变成了原来的右边!所以下一次”向前飞行”,它就去原来的右边了。这一点非常重要,一定要记住!
[配图:无人机前后左右方向标注图]
3.4 第一个飞行程序:起飞 → 前进 → 降落
好了,一切准备就绪!让我们来写第一个真正的飞行程序!
安全准备
��️ 安全小卫士飞行前检查清单
– ✅ 螺旋桨安装正确(A 桨在 A 位,B 桨在 B 位)
– ✅ 保护罩已安装
– ✅ 飞行区域至少 2 米 × 2 米,无障碍物
– ✅ 周围没有人围观(至少保持 1 米距离)
– ✅ 头发扎好,衣物整齐
– ✅ 电池电量充足(至少 50% 以上)
编写程序
打开 Scratch,确保 Tello 扩展已加载,然后把下面的积木拼起来:
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 降落
[配图:第一个飞行程序的完整积木截图]
程序说明
让我们一行一行来看这个程序:
• 当 �� 被点击:你点击绿旗,程序开始。
• 连接 Tello:电脑和无人机”握手”建立连接。
• 等待 2 秒:给无人机一点时间准备。就像运动员起跑前要”各就各位”一样。
• Tello 起飞:无人机起飞,升到约 1 米高,悬停在空中。
• 等待 2 秒:让无人机稳定悬停。
• Tello 向前飞行 50 厘米:无人机向前方飞 50 厘米(半米)。
• 等待 3 秒:等无人机完成飞行动作。
• Tello 降落:无人机慢慢降落,安全着陆!
�� 为什么需要”等待”?
因为无人机执行每个动作需要时间!如果”起飞”的积木后面紧跟”向前飞行”,无人机还没来得及稳定就开始向前飞,可能会晃得很厉害。加上”等待”积木,就像给无人机一个”准备好了”的信号。
这叫做程序的时间控制——好的程序要合理安排时间,就像人的行动也要一步一步来。
运行程序
• 把 Tello EDU 放在空旷的地面上。
• 确保所有人都退到安全距离。
• 点击 Scratch 的 �� 绿旗!
• 看着你的无人机按照你编写的程序起飞、前进、降落!
�� 太棒了!你的无人机按照你的代码飞了!这就是”编程控制”的魔力!
3.5 小挑战:让无人机飞一个 “L” 形路线
第一个飞行程序成功了!现在让我们来挑战一个稍微复杂的路线——“L” 形!
什么是 “L” 形路线?
想象一个字母 “L”,它由两段直线组成:先向前走一段,然后转 90 度(向右转),再向前走一段。
起点 ●──────→ 前进 50cm
│
↓ 右转 90 度
│
↓ 前进 50cm
│
● 终点
设计程序
想想看,你需要哪些积木?
提示:起飞 → 前进 → 转弯 → 前进 → 降落
参考答案:
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 降落
[配图:L 形飞行路线示意图和对应的积木程序]
进阶挑战:飞一个 “U” 形
如果 “L” 形难不住你,试试 “U” 形!
起点 ●──────→ 前进 50cm
│
↓ 右转 90 度
│
↓ 前进 80cm
│
↓ 右转 90 度
│
←─── ● 前进 50cm
│
● 终点(在起点旁边)
参考答案:
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ Tello 向前飞行 (80) 厘米
→ 等待 (3) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 降落
超级挑战:飞一个 “口” 形(回到起点)
能不能让无人机飞一个正方形路线,最后回到起点?
提示:需要 4 次”前进 + 右转90度”。
参考答案:
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 降落
�� 动脑筋
上面的正方形程序里,有没有”重复”的部分?
看看:”向前飞行50厘米”和”右转90度”这个组合重复了好几次!
没错,有 4 次完全一样的”前进+转弯” 组合。有没有什么办法让程序更简洁呢?
这就是下一章——循环的力量要告诉你的秘密!
�� 本章小结
太厉害了!你已经成功让无人机按照你的程序飞行了!
✅ 知识清单
| 知识点 | 你学会了吗? |
| 电脑通过 WiFi 连接 Tello EDU | ⬜ |
| 安装 Tello Scratch 扩展 | ⬜ |
| 基础飞行指令积木(起飞、降落、前进、后退、旋转) | ⬜ |
| 无人机”前后左右”的定义 | ⬜ |
| “等待”积木的作用 | ⬜ |
| 编写第一个飞行程序 | ⬜ |
| 让无人机飞 L 形、U 形、正方形路线 | ⬜ |
�� 本章重点回顾
• 连接方式:电脑通过 WiFi 连接 Tello EDU,实现无线通信和控制。
• 扩展安装:安装 Tello Scratch 扩展后,Scratch 里多出飞行积木。
• 基础指令:起飞、降落、前进/后退/左右飞行、左右旋转、翻滚等。
• 方向规则:无人机的”前后左右”是以摄像头方向为前方的。
• 等待很重要:每个动作之间加”等待”,让无人机有足够时间完成动作。
• 正方形路线:4 次”前进 + 右转90度”,可以飞出一个正方形。
�� 课后小任务
• 基础题:编写程序,让无人机起飞后向右飞 30 厘米,然后降落。
• 进阶题:编写程序,让无人机飞一个长方形(长 60 厘米,宽 30 厘米)。
• 挑战题:编写程序,让无人机飞一个 “Z” 形路线。
• 创意题:设计一条你自己喜欢的飞行路线,画出来,再编写程序让无人机飞出来。
�� 小飞的话
“我发现编程控制无人机真的很有成就感!虽然要等一会儿,但看着无人机按照我的指令飞起来,就像魔法一样!”
码码说:”魔法的本质就是编程。不过你有没有发现,飞正方形的时候,我们重复写了 4 次一样的代码?下一章,我们要学习一种让代码变简洁的’超能力’——循环!”
第 4 章 循环的力量
�� 本章目标:理解循环的概念,掌握”重复 N 次”和”重复执行”积木,用循环让无人机飞各种图形,体验循环嵌套。
�� 趣味导入
【小飞和码码的故事】
“码码,我昨天让无人机飞了一个正方形路线!”小飞骄傲地说。
“太棒了!那你用了多少块积木?”码码问。
“呃……让我数数……起飞、前进、转弯、前进、转弯、前进、转弯、前进、转弯、降落……哇,好多块!”
“哈哈,是不是觉得很麻烦?如果让你飞一个八边形,要写 8 次’前进+转弯’,十六边形要写 16 次……”
“天哪,那不得写到手酸?”
“所以今天我要教你一个’超能力’——循环!有了循环,飞正方形只需要写一次’前进+转弯’,然后告诉 Scratch’重复 4 次’就好了!”
“真的吗?这也太神奇了吧!快教教我!”
4.1 什么是循环?
生活中的循环
其实循环就在你身边,你每天都在经历循环!
�� 每天早上起床后的流程:
• 起床
• 刷牙
• 洗脸
• 穿衣服
• 吃早饭
周一重复、周二重复、周三重复……周一到周五,每天都在重复同样的事情! 这就是循环!
�� 时钟的指针:
秒针走 60 秒回到原点,分针走 60 分钟回到原点,时针走 12 小时回到原点……时间就是在一圈一圈的循环中流逝的。
�� 四季更替:
春天 → 夏天 → 秋天 → 冬天 → 春天 → 夏天 → 秋天 → 冬天……年复一年,四季不断循环。
编程中的循环
在编程里,循环就是让一段代码重复执行多次。
上一章我们写正方形飞行的程序时,”前进 + 右转90度”这个组合重复了 4 次。在 Scratch 里,我们不需要写 4 遍,而是用一个”重复”积木把它包起来:
不用循环(笨办法):
Tello 向前飞行 (50) 厘米
等待 (3) 秒
Tello 向右旋转 (90) 度
等待 (2) 秒
Tello 向前飞行 (50) 厘米
等待 (3) 秒
Tello 向右旋转 (90) 度
等待 (2) 秒
Tello 向前飞行 (50) 厘米
等待 (3) 秒
Tello 向右旋转 (90) 度
等待 (2) 秒
Tello 向前飞行 (50) 厘米
等待 (3) 秒
Tello 向右旋转 (90) 度
等待 (2) 秒
用循环(聪明办法):
重复 (4) 次
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
�� 看!用循环后,原来 16 行代码变成了 4 行!
这就是循环的魅力——用更少的代码,做更多的事!
4.2 重复积木讲解
两种重复积木
Scratch 的 ��橙色”控制”类别里有两种常用的重复积木:
�� 重复 N 次(固定次数循环)
重复 (10) 次
→ [要重复执行的积木]
这个积木就像老师说:”把这段课文读 10 遍!” 你知道要读多少遍——10 遍,不多不少。
�� 重复执行(无限循环)
重复执行
→ [要重复执行的积木]
这个积木没有数字,意思就是”一直重复下去,永远不会自己停下来”。除非你点击 �� 红色停止按钮。
�� 注意:在控制无人机时,我们通常用”重复 N 次”,因为无人机不能无限飞下去(电池会耗尽的!)。”重复执行”一般用在不需要让无人机停止的演示场景中。
认识”重复 N 次”积木
“重复 ( ) 次”积木长得像一个 C 形的夹子,可以把其他积木”夹”在里面:
┌─────────────────────┐
│ 重复 ( 4 ) 次 │
│ ┌─────────────────┐ │
│ │ [被夹住的积木] │ │
│ │ [被夹住的积木] │ │
│ └─────────────────┘ │
└─────────────────────┘
• 括号里的数字可以修改——想重复几次就改成几。
• 被”夹住”的积木会在每次循环中全部执行一遍。
[配图:重复 N 次积木的截图,标注各个部分]
4.3 让无人机飞正方形
让我们用循环来重新编写正方形飞行程序!
完整程序
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (4) 次
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ Tello 降落
[配图:使用循环的正方形飞行程序积木截图]
程序解析
让我们来看看 Scratch 是怎么执行这个程序的:
| 步骤 | 动作 | 说明 |
| 1 | 连接 Tello | 建立通信连接 |
| 2 | 等待 2 秒 | 准备时间 |
| 3 | 起飞 | 飞到 1 米高度 |
| 4 | 等待 2 秒 | 稳定悬停 |
| 5 | 循环第 1 次 | 前进 50cm → 等待 → 右转 90° → 等待 |
| 6 | 循环第 2 次 | 前进 50cm → 等待 → 右转 90° → 等待 |
| 7 | 循环第 3 次 | 前进 50cm → 等待 → 右转 90° → 等待 |
| 8 | 循环第 4 次 | 前进 50cm → 等待 → 右转 90° → 等待 |
| 9 | 降落 | 安全着陆 |
4 次循环,每次前进 50cm + 右转 90°,总共转了 4 × 90° = 360°(一圈),刚好回到起点!
�� 数学小发现
正方形有 4 条边,每条边之间的夹角是 90°。
4 × 90° = 360°(一整圈)。
这个规律对所有的封闭图形都适用:
– 三角形:3 × 120° = 360° ✅
– 正方形:4 × 90° = 360° ✅
– 五边形:5 × 72° = 360° ✅
– 六边形:6 × 60° = 360° ✅
– N 边形:N × (360°/N) = 360° ✅
记住这个规律:每次旋转的角度 = 360° ÷ 边数
4.4 飞三角形、飞五角星
飞三角形
三角形有 3 条边,每次旋转 360° ÷ 3 = 120°。
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (3) 次
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 向右旋转 (120) 度
→ 等待 (2) 秒
→ Tello 降落
飞五边形
五边形有 5 条边,每次旋转 360° ÷ 5 = 72°。
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (5) 次
→ Tello 向前飞行 (40) 厘米
→ 等待 (3) 秒
→ Tello 向右旋转 (72) 度
→ 等待 (2) 秒
→ Tello 降落
飞六边形
六边形有 6 条边,每次旋转 360° ÷ 6 = 60°。
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (6) 次
→ Tello 向前飞行 (40) 厘米
→ 等待 (3) 秒
→ Tello 向右旋转 (60) 度
→ 等待 (2) 秒
→ Tello 降落
�� 用变量控制边数(预告)
你有没有发现,飞不同图形时,只需要改两个数字——重复次数和旋转角度?
如果我们可以用一个”盒子”来存放这两个数字,每次只需要改”盒子”里的值就好了。这个”盒子”就是变量,我们在第 6 章会详细学习!
�� 动脑筋
用循环来控制无人机飞不同图形,你觉得边数越多,图形越像什么?
答案:边数越多,图形越接近圆形!如果边数是 36,每次前进 20cm、旋转 10°,飞出来的就是一个近似的圆形!
4.5 连续翻滚动作
现在让我们试试更酷的动作——翻滚!
Tello EDU 可以做前滚翻、后滚翻、左滚翻、右滚翻。想象一下,无人机在空中连续翻了 4 个跟头,是不是超级酷?
连续前翻滚
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (4) 次
→ Tello 向前翻滚
→ 等待 (2) 秒
→ Tello 降落
[配图:连续翻滚程序积木截图]
混合翻滚
不只翻同一个方向!我们可以让无人机前后左右都翻一遍:
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ Tello 向前翻滚
→ 等待 (2) 秒
→ Tello 向右翻滚
→ 等待 (2) 秒
→ Tello 向后翻滚
→ 等待 (2) 秒
→ Tello 向左翻滚
→ 等待 (2) 秒
→ Tello 降落
这样无人机就像在跳”翻滚舞”一样,前、右、后、左各翻一个跟头!
⚠️ 安全小卫士提醒
翻滚时无人机会下降一些高度,所以:
– 确保飞行高度足够(至少在 1.5 米以上)
– 翻滚动作之间要留够等待时间(至少 2 秒)
– 飞行区域上方不能有障碍物
4.6 循环嵌套初体验
循环嵌套就是在一个循环里面再套一个循环,就像俄罗斯套娃一样!
什么是嵌套?
举个例子,你想让无人机飞一个”花形”图案——飞一个正方形,然后在每个顶点翻一个跟头。
这可以分解为:
• 外层循环:重复 4 次(正方形的 4 个边)
• 内层动作 1:前进 50cm
• 内层动作 2:翻滚一次
• 内层动作 3:右转 90°
但是如果我们想让这个”花形”重复 3 圈呢?
重复 (3) 次 ← 外层循环:飞 3 圈
→ 重复 (4) 次 ← 内层循环:每圈飞 4 条边
→ Tello 向前飞行 (40) 厘米
→ 等待 (2) 秒
→ Tello 向前翻滚
→ 等待 (2) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
这里:
• 外层循环执行 3 次
• 每次外层循环时,内层循环执行 4 次
• 总共飞了 3 × 4 = 12 条边!
[配图:循环嵌套的积木截图,用颜色标注外层和内层循环]
�� 小贴士
循环嵌套是很强大的编程技巧,但也要注意不要嵌套太多层,否则程序会变得很复杂,无人机可能来不及执行。对于 Tello EDU,建议嵌套不超过 2 层。
螺旋飞行
用循环嵌套可以做出螺旋飞行的效果——每一圈比上一圈飞得更高!
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (4) 次
→ 重复 (4) 次
→ Tello 向前飞行 (30) 厘米
→ 等待 (2) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ Tello 向上飞行 (15) 厘米
→ 等待 (2) 秒
→ Tello 降落
效果:无人机每飞完一个正方形,就上升 15 厘米,再飞下一个正方形,形成螺旋上升的轨迹!
[配图:螺旋飞行轨迹示意图]
4.7 挑战任务:设计你自己的循环飞行图案
现在是自由创作时间!用你学到的循环知识,设计一个独特的飞行图案。
灵感库
这里有几个创意方向供你参考:
创意 1:螺旋上升圆形
重复 (8) 次
→ Tello 向前飞行 (20) 厘米
→ 等待 (2) 秒
→ Tello 向右旋转 (45) 度
→ 等待 (1) 秒
→ Tello 向上飞行 (5) 厘米
→ 等待 (1) 秒
(8 次,每次转 45° = 360°,画一个圆;每圈上升 5cm,螺旋上升 40cm)
创意 2:之字形前进
重复 (5) 次
→ Tello 向右旋转 (45) 度
→ 等待 (1) 秒
→ Tello 向前飞行 (30) 厘米
→ 等待 (2) 秒
→ Tello 向左旋转 (90) 度
→ 等待 (1) 秒
→ Tello 向前飞行 (30) 厘米
→ 等待 (2) 秒
→ Tello 向右旋转 (45) 度
→ 等待 (1) 秒
创意 3:跳舞的无人机
重复 (3) 次
→ Tello 向前翻滚
→ 等待 (2) 秒
→ Tello 向上飞行 (10) 厘米
→ 等待 (1) 秒
→ Tello 向右旋转 (180) 度
→ 等待 (2) 秒
→ Tello 向后翻滚
→ 等待 (2) 秒
→ Tello 向下飞行 (10) 厘米
→ 等待 (1) 秒
→ Tello 向右旋转 (180) 度
→ 等待 (2) 秒
设计步骤
第一步:画草图
先在纸上画出你想要的飞行路线。标注每一段的距离和转弯角度。
第二步:分解动作
把飞行路线分解成一个一个的动作:前进多少、转多少度、翻滚等。
第三步:找规律
看看有没有重复的部分?有的话就用循环包起来。
第四步:编写程序
把分解好的动作写成 Scratch 积木程序。
第五步:测试修改
运行程序,看看效果。不满意的地方调整数字再试。
[配图:设计流程示意图——画草图→分解动作→找规律→编写程序→测试修改]
�� 小妙招
编写循环程序时,先在纸上写出来,算一算需要多少步。特别是计算旋转角度时,记住公式:
每次旋转角度 = 360° ÷ 重复次数
比如想转 8 次画一个八角形:360° ÷ 8 = 45°。
想转 12 次画一个十二边形:360° ÷ 12 = 30°。
�� 本章小结
恭喜你掌握了循环这个强大的编程工具!
✅ 知识清单
| 知识点 | 你学会了吗? |
| 循环的概念(重复执行一段代码) | ⬜ |
| “重复 N 次”积木的使用 | ⬜ |
| “重复执行”积木的使用 | ⬜ |
| 用循环飞正方形(4次,转90°) | ⬜ |
| 用循环飞三角形(3次,转120°) | ⬜ |
| 用循环飞五边形、六边形 | ⬜ |
| 连续翻滚动作 | ⬜ |
| 循环嵌套的概念 | ⬜ |
| 设计自己的循环飞行图案 | ⬜ |
�� 本章重点回顾
• 循环就是让一段代码重复执行多次,可以大大简化程序。
• “重复 N 次”:执行固定次数的循环,最常用。
• “重复执行”:无限循环,一直执行直到手动停止。
• 封闭图形规律:每次旋转角度 = 360° ÷ 边数。
• 循环嵌套:循环里面套循环,可以做更复杂的动作。
• 设计流程:画草图 → 分解动作 → 找规律 → 编写程序 → 测试修改。
�� 课后小任务
• 基础题:用循环编写程序,让无人机飞一个正八边形(8条边)。
• 进阶题:用循环嵌套,让无人机飞 3 个正方形,每个正方形之间旋转 30°。
• 挑战题:设计一个”8 字形”(像数字 8)的飞行路线。提示:先飞一个圆(转36次,每次10°),然后转向,再飞一个圆。
• 创意题:自由设计一个飞行图案,画出来并编写程序,在下节课上和同学们分享!
�� 码码的提示
“循环是编程中最重要的概念之一。以后你会在各种程序中看到循环的身影——游戏、动画、APP,哪里都有它!现在你已经会用循环控制无人机了,这是一个很棒的开始!”
“不过,你有没有想过——如果无人机能自己判断’前方有障碍物’然后自动转弯,那该多好啊?这就需要用到另一种’超能力’——条件判断。准备好进入下一章了吗?”
第 5 章 聪明的判断
�� 本章目标:理解条件判断的概念,掌握”如果…那么…”和”如果…那么…否则…”积木,学会用传感器数据做出智能决策。
�� 趣味导入
【小飞和码码的故事】
“码码,我觉得无人机还不太聪明。”小飞皱着眉头说。
“为什么这么说?”码码好奇地问。
“你看,我们让它前进50厘米,它就前进50厘米。但如果前方有一堵墙呢?它还是会傻傻地撞上去!”
“哈!你说得对!”码码笑了,”这是因为我们的程序只告诉无人机’前进’,没有告诉它’如果遇到障碍就停下’。”
“那怎么让它变聪明呢?”
“我们需要教它学会判断!就像你过马路时,看到红灯就停,看到绿灯就走。无人机也需要学会’如果…那么…’的思考方式。”
“‘如果前面有墙,那么转弯’——是这样吗?”
“完全正确!这就是条件判断——给程序加上’如果’,让无人机学会自己思考和决策!”
5.1 什么是条件判断?
生活中的条件判断
你每天都在做判断,只是可能没注意到:
• 如果明天下雨,那么我带伞。
• 如果作业写完了,那么我可以看动画片。
• 如果肚子饿了,那么我去吃饭。
• 如果闹钟响了,那么我起床。否则我继续睡。
这就是条件判断——先检查某个条件是否满足,然后根据结果决定做什么。
Scratch 中的条件判断积木
在 Scratch 的 ��橙色”控制”类别中,有两种条件判断积木:
�� 如果…那么…(单条件)
如果 <条件> 那么
→ [要做的事]
先检查”条件”是否成立。如果成立(为”真”),就执行”要做的事”;如果不成立(为”假”),就跳过,什么都不做。
�� 如果…那么…否则…(双条件)
如果 <条件> 那么
→ [条件成立时做的事]
否则
→ [条件不成立时做的事]
先检查”条件”是否成立。如果成立,执行”条件成立时做的事”;如果不成立,执行”条件不成立时做的事”。两种情况一定会执行其中一种!
[配图:两种条件判断积木的截图]
条件是什么?
条件是一个可以判断对错(真假)的表达式。
比如:
• 电池电量 < 20——这个条件可以是对的(电量真的低于20)或错的(电量高于20)。
• 高度 > 100——高度真的超过 100 厘米吗?
• 距离 < 30——离障碍物真的不到 30 厘米吗?
�� 小贴士
条件积木是菱形的(尖尖的角),和方方的动作积木不一样。在 Scratch 里,看形状就能分清:
– 方形积木 = 做一件事(命令)
– 菱形积木 = 判断一个条件(结果是”真”或”假”)
– 圆角积木 = 一个数值(数字或文字)
5.2 如果碰到障碍物就转向
这是最实用的条件判断应用之一!
原理
Tello EDU 底部有一个 ToF 距离传感器(ToF = Time of Flight,飞行时间),它可以测量无人机到下方地面的距离。我们可以在程序中判断:
• 如果距离小于某个值(说明靠近了障碍物),那么就转弯避开。
程序
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (10) 次
→ 如果 <(Tello 距离) < (30)> 那么
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ Tello 向前飞行 (30) 厘米
→ 等待 (2) 秒
→ Tello 降落
程序解析
• 无人机起飞。
• 进入循环(重复 10 次)。
• 每次循环时,先检查距离传感器的值:
• 如果距离 < 30 厘米(说明靠近了障碍物),就右转 90° 避开。
• 如果距离 ≥ 30 厘米,什么都不做,直接继续前进。
• 前进 30 厘米。
• 循环 10 次后降落。
�� 动脑筋
上面的程序中,”距离”是指无人机到下方地面的距离。但在实际避障中,我们更关心的是无人机到前方墙壁的距离。Tello EDU 只有向下的 ToF 传感器,没有前方的传感器。
不过我们可以用一种”聪明”的方法来模拟前方避障——让无人机在固定时间内前进固定距离,如果电池消耗突然加快(速度变慢),可能是碰到了障碍物。当然,这比较复杂。
更简单的方法是:通过设定合适的飞行距离,确保无人机不会飞到障碍物附近。比如在 3 米 × 3 米的房间里,每次前进不超过 50 厘米,配合多次转弯,就能安全地”探索”房间了。
5.3 如果高度超过 1 米就下降
这个程序让无人机保持在一个安全的高度范围内飞行。
程序
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (8) 次
→ 如果 <(Tello 高度) > (100)> 那么
→ Tello 向下飞行 (20) 厘米
→ 等待 (2) 秒
→ 说 [太高了!降一点…] (2) 秒
→ 如果 <(Tello 高度) < (50)> 那么
→ Tello 向上飞行 (20) 厘米
→ 等待 (2) 秒
→ 说 [太低了!升一点…] (2) 秒
→ Tello 向前飞行 (30) 厘米
→ 等待 (2) 秒
→ Tello 降落
程序解析
这个程序有两个条件判断:
判断 1:如果高度 > 100 厘米(超过 1 米),就下降 20 厘米。
判断 2:如果高度 < 50 厘米(低于 0.5 米),就上升 20 厘米。
这样无人机就会自动保持在 50-100 厘米的高度范围内飞行,像一个自动高度调节器!
�� 你知道吗?
真正的无人机(比如大疆的无人机)也有类似的功能,叫做”自动高度保持“。它通过气压计和超声波传感器不断测量高度,然后自动调整油门来保持高度不变。我们的程序做的就是同样的事情,只是更简单一些!
5.4 “如果…否则”的应用
让我们用”如果…否则”让无人机做出更丰富的反应。
电池电量提醒程序
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (5) 次
→ 如果 <(Tello 电池电量) < (30)> 那么
→ 说 [电量不足!准备降落!] (3) 秒
→ Tello 降落
→ 否则
→ 说 [电量充足,继续飞行!] (2) 秒
→ Tello 向前飞行 (40) 厘米
→ 等待 (3) 秒
→ Tello 降落
温度提醒程序
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ 如果 <(Tello 温度) > (40)> 那么
→ 说 [温度太高了!让我休息一下…] (3) 秒
→ 否则
→ 如果 <(Tello 温度) < (10)> 那么
→ 说 [好冷啊!让我热热身…] (3) 秒
→ 否则
→ 说 [温度刚刚好,准备起飞!] (3) 秒
→ Tello 起飞
�� 注意:这个程序展示了”条件的嵌套”——在一个”如果…否则”的”否则”里面,又放了一个”如果…否则”。这在编程中很常见,但嵌套太深会让程序很难读懂,要注意保持清晰。
5.5 简单迷宫飞行程序
让我们来做一个更有趣的项目——让无人机在一个简单的”迷宫”中飞行!
设计迷宫
我们用一个 2 米 × 2 米的空地作为”迷宫”,在几个位置放上纸箱子作为”墙壁”。
[配图:简单迷宫平面图,标注起点、终点和纸箱位置]
迷宫飞行策略
一个简单但有效的迷宫飞行策略是:
• 无人机起飞。
• 前进一段距离。
• 如果检测到障碍物(用距离传感器判断),右转 90° 避开。
• 重复以上步骤,直到到达终点。
程序
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 说 [开始迷宫探险!] (2) 秒
→ 重复 (15) 次
→ 如果 <(Tello 距离) < (25)> 那么
→ 说 [发现障碍物!右转!] (2) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ Tello 向上飞行 (5) 厘米
→ 等待 (1) 秒
→ Tello 向前飞行 (25) 厘米
→ 等待 (2) 秒
→ 说 [到达终点!] (3) 秒
→ Tello 降落
�� 小贴士
迷宫飞行是最考验耐心和挑战精神的项目!因为每次飞行时,无人机的起始位置和方向可能不完全一样,所以程序可能需要多次调试才能完美通过迷宫。
不要怕失败,每次失败都是学习的机会!
5.6 小挑战:让无人机在房间里”探险”
探险任务
设定一个目标:让无人机在一个 3 米 × 3 米的房间里,尽可能多地”探索”不同的区域。
探险策略
策略 1:网格探索
让无人机按照网格路线飞行,像扫地机器人一样系统地覆盖每个区域。
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (3) 次
→ 重复 (3) 次
→ Tello 向前飞行 (60) 厘米
→ 等待 (3) 秒
→ 如果 <(Tello 距离) < (20)> 那么
→ Tello 向后飞行 (20) 厘米
→ 等待 (2) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ Tello 向前飞行 (60) 厘米
→ 等待 (3) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ Tello 降落
策略 2:随机漫步
利用随机数让无人机做出”随机”的决策——有时候前进,有时候转弯,像一个好奇的小探险家。
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (12) 次
→ 如果 <(在 1 和 3 之间取随机数) = (1)> 那么
→ Tello 向前飞行 (30) 厘米
→ 等待 (2) 秒
→ 如果 <(在 1 和 3 之间取随机数) = (2)> 那么
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ 如果 <(在 1 和 3 之间取随机数) = (3)> 那么
→ Tello 向左旋转 (90) 度
→ 等待 (2) 秒
→ 如果 <(Tello 高度) > (120)> 那么
→ Tello 向下飞行 (20) 厘米
→ 等待 (2) 秒
→ 如果 <(Tello 高度) < (50)> 那么
→ Tello 向上飞行 (20) 厘米
→ 等待 (2) 秒
→ Tello 降落
�� 动脑筋
随机漫步的策略看起来不太”聪明”,但在某些情况下,它反而能探索到更多区域!这是因为随机数让无人机不会重复走同样的路线。
在计算机科学中,有一种叫做”随机搜索算法“的方法,就是利用随机性来解决问题。很多高级的人工智能系统也会使用随机搜索的思想!
�� 本章小结
你已经让无人机学会了”思考”!
✅ 知识清单
| 知识点 | 你学会了吗? |
| 条件判断的概念 | ⬜ |
| “如果…那么…”积木 | ⬜ |
| “如果…那么…否则…”积木 | ⬜ |
| 用距离传感器做避障判断 | ⬜ |
| 用高度数据做自动调节 | ⬜ |
| 用电池电量做降落决策 | ⬜ |
| 迷宫飞行程序 | ⬜ |
| 随机探索策略 | ⬜ |
�� 本章重点回顾
• 条件判断让程序能够根据不同情况做不同的事。
• “如果…那么…”:条件成立才执行,不成立就跳过。
• “如果…否则…”:两种情况必选其一。
• 条件的值是”真”或”假”,用菱形积木表示。
• 结合传感器数据,无人机可以做出更智能的决策。
• 随机数可以让无人机的行为更灵活多样。
�� 课后小任务
• 基础题:写一个程序,让无人机起飞后,如果电量大于 50% 就前进 50 厘米,否则直接降落。
• 进阶题:写一个程序,让无人机在飞行时,如果高度超过 80 厘米就下降,如果低于 40 厘米就上升,保持在 40-80 厘米之间。
• 挑战题:设计一个更复杂的迷宫(可以画在纸上),并编写通过迷宫的程序。
• 创意题:用条件判断和循环结合,设计一个”智能巡逻”程序——无人机在一个区域内自动巡逻,遇到边界就转弯。
�� 小飞的感悟
“加了条件判断以后,无人机变得聪明多了!它不再只是一个’听话的工具’,更像一个’会思考的伙伴’!”
码码说:”没错!条件判断是编程中最核心的概念之一。几乎每一个有用的程序都会用到条件判断。不过,要让无人机更聪明,我们还需要一种能力——把数据存起来、计算和比较。这就需要用到变量。下一章见!”
第 6 章 变量与计分
�� 本章目标:理解变量的概念,学会创建和使用变量,用变量实现计时器、计分板和游戏逻辑。
�� 趣味导入
【小飞和码码的故事】
“码码,我有一个问题。”小飞歪着头说。
“什么问题?”
“我想让无人机记录它飞了多长时间,还想让它做一个小游戏——在飞行过程中’收集’目标。可是,我怎么知道飞了多久?又怎么知道收集了多少个目标?这些数据存在哪里?”
码码的屏幕亮了起来:”好问题!这些需要一个’盒子’来存放——这个盒子就叫做变量!”
“变量?听起来很数学的样子……”
“别怕!变量其实就是你家的储物盒——你可以给它贴标签,把东西放进去,也可以随时拿出来看看里面有什么,甚至把里面的东西换掉。”
“好像没那么难了!”
6.1 什么是变量?
用”盒子”理解变量
想象你有一堆储物盒,每个盒子上贴着一个标签:
• 一个盒子标签写着”飞行时间”,里面装着数字 30(表示飞了 30 秒)
• 一个盒子标签写着”分数”,里面装着数字 100(表示得了 100 分)
• 一个盒子标签写着”名字”,里面装着文字 “小飞”(表示名字是小飞)
在编程里,变量就是一个带标签的盒子。标签就是变量的名字,盒子里装的东西就是变量的值。
而且这个盒子有一个特别的功能:你可以随时更换盒子里的东西!
比如飞行时间刚开始是 0,飞了 1 秒变成 1,飞了 2 秒变成 2……盒子(变量)没变,但里面的数字一直在变。这就是”变”量的含义——值可以变化的量。
Scratch 中的变量积木
在 Scratch 的 ��天蓝色”变量”类别中,你可以找到变量相关的积木:
| 积木 | 功能 |
| 新建变量 [变量名] | 创建一个新变量 |
| 将 [变量] 设为 (0) | 给变量赋值(把东西放进盒子) |
| 将 [变量] 增加 (1) | 让变量增加一个值 |
| 显示变量 [变量] | 在舞台上显示变量的值 |
| 隐藏变量 [变量] | 隐藏变量的显示 |
| (变量) | 读取变量的值(使用盒子里的东西) |
[配图:变量类别的所有积木截图]
创建变量的步骤
第一步: 在 Scratch 积木区左侧,点击 ��天蓝色的”变量”类别。
第二步: 点击”建立一个变量”按钮。
第三步: 在弹出的对话框中,输入变量名称(比如”飞行时间”),然后点击”确定”。
第四步: 舞台上会出现一个小方框,显示 “飞行时间: 0″。这就是变量在舞台上的显示!
[配图:创建变量的步骤截图]
�� 小贴士
变量的名字要起得有意义,让人一看就知道它装的是什么。
– ✅ 好名字:”飞行时间””分数””高度记录”
– ❌ 差名字:”a””bb””变量1″
6.2 创建变量:飞行计时器
让我们创建一个飞行计时器——记录无人机已经飞了多长时间!
程序设计
当 �� 被点击
→ 将 [飞行时间] 设为 (0)
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 显示变量 [飞行时间]
→ 重复 (10) 次
→ 将 [飞行时间] 增加 (1)
→ 等待 (1) 秒
→ Tello 向前飞行 (20) 厘米
→ 等待 (2) 秒
→ 说 [飞行总时间:] 和 (飞行时间) 和 [秒] (3) 秒
→ Tello 降落
程序解析
• 先把”飞行时间”归零(就像比赛开始前,计时器归零一样)。
• 连接无人机并起飞。
• 显示变量,在舞台上看到”飞行时间: 0″。
• 进入循环 10 次:
• 每次循环,”飞行时间”加 1(表示过了 1 秒)。
• 等待 1 秒(真正的等待 1 秒)。
• 向前飞 20 厘米。
• 等待 2 秒(等飞行完成)。
• 飞行结束后,用”说”积木显示总飞行时间。
• 降落。
�� 注意:这个计时器是”大概”的时间,因为每次飞行动作也需要时间。如果你想更精确地计时,可以用 Scratch 的”当前时间”积木来实现。
6.3 高度计分板
让我们来做一个高度记录器——记录无人机飞行过程中到达过的最高高度!
需要的变量
• 当前高度:实时显示无人机的高度。
• 最高高度:记录飞行过程中达到过的最高值。
程序
当 �� 被点击
→ 将 [最高高度] 设为 (0)
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 显示变量 [最高高度]
→ 重复 (6) 次
→ Tello 向上飞行 (20) 厘米
→ 等待 (2) 秒
→ 如果 <(Tello 高度) > (最高高度)> 那么
→ 将 [最高高度] 设为 (Tello 高度)
→ 说 [当前高度:] 和 (Tello 高度) 和 [厘米] (2) 秒
→ Tello 向前飞行 (30) 厘米
→ 等待 (2) 秒
→ 说 [最高高度记录:] 和 (最高高度) 和 [厘米!] (3) 秒
→ Tello 降落
程序解析
这个程序的关键是这段代码:
如果 <(Tello 高度) > (最高高度)> 那么
→ 将 [最高高度] 设为 (Tello 高度)
每次循环时,它会比较”当前高度”和”最高高度”:
• 如果当前高度 > 已记录的最高高度,就更新最高高度。
• 如果当前高度 ≤ 已记录的最高高度,什么都不做。
这样,”最高高度”变量里永远存着飞行过程中达到的最高值!
�� 动脑筋
这个”找最大值”的思路在编程中非常常见!比如:
– 找全班同学的最高分
– 找一周中的最高气温
– 找游戏中获得的最高分数
方法都是一样的——用一个变量记住”目前为止最大的值”,每次遇到新的值就比一比,如果更大就更新!
6.4 收集物品小游戏(模拟)
让我们来做一个有趣的”飞行收集”小游戏!
游戏规则
• 在 Scratch 舞台上,随机出现”目标”(比如星星图标)。
• 无人机在真实空间中飞行。
• 我们用程序模拟”收集”——无人机每完成一个特定动作(比如成功转弯一次),就得 10 分。
• 如果无人机电量低于 30%,游戏结束。
程序设计
当 �� 被点击
→ 将 [分数] 设为 (0)
→ 将 [剩余电量] 设为 (100)
→ 显示变量 [分数]
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 说 [收集游戏开始!] (2) 秒
→ 重复执行
→ 如果 <(Tello 电池电量) < (30)> 那么
→ 说 [电量不足!游戏结束!] (3) 秒
→ 停止 [全部脚本]
→ Tello 向前飞行 (30) 厘米
→ 等待 (2) 秒
→ 将 [分数] 增加 (10)
→ 说 [+10分!当前分数:] 和 (分数) (2) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ 将 [分数] 增加 (5)
→ 说 [转弯奖励+5!当前分数:] 和 (分数) (2) 秒
→ 如果 <(在 1 和 4 之间取随机数) = (1)> 那么
→ Tello 向前翻滚
→ 等待 (2) 秒
→ 将 [分数] 增加 (20)
→ 说 [翻滚奖励+20!] (2) 秒
�� 注意:这个游戏使用”重复执行”(无限循环),但当电量低于 30% 时会用”停止全部脚本”来终止程序,确保安全。
6.5 最高分记录
让我们来加一个”最高分”功能——看看每次飞行的最高得分!
需要的变量
• 分数:当前游戏的分数。
• 最高分:所有游戏中的最高分数。
程序核心逻辑
当 �� 被点击
→ 如果 <(分数) > (最高分)> 那么
→ 将 [最高分] 设为 (分数)
→ 说 [新纪录!最高分:] 和 (最高分) (3) 秒
→ 否则
→ 说 [本次分数:] 和 (分数) 和 [,最高分:] 和 (最高分) (3) 秒
完整游戏程序
当 �� 被点击
→ 将 [分数] 设为 (0)
→ 显示变量 [分数]
→ 显示变量 [最高分]
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 说 [飞行挑战开始!] (2) 秒
→ 重复 (8) 次
→ 如果 <(Tello 电池电量) < (25)> 那么
→ 说 [电量不足,提前结束!] (3) 秒
→ Tello 降落
→ 停止 [全部脚本]
→ 将 [动作选择] 设为 (在 1 和 3 之间取随机数)
→ 如果 <(动作选择) = (1)> 那么
→ Tello 向前飞行 (30) 厘米
→ 等待 (2) 秒
→ 将 [分数] 增加 (10)
→ 如果 <(动作选择) = (2)> 那么
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ 将 [分数] 增加 (15)
→ 如果 <(动作选择) = (3)> 那么
→ Tello 向前翻滚
→ 等待 (2) 秒
→ 将 [分数] 增加 (25)
→ 说 [当前分数:] 和 (分数) (1) 秒
→ Tello 降落
→ 等待 (2) 秒
→ 如果 <(分数) > (最高分)> 那么
→ 将 [最高分] 设为 (分数)
→ 说 [�� 新纪录!] (3) 秒
→ 说 [本次:] 和 (分数) 和 [分,最高:] 和 (最高分) 和 [分] (5) 秒
�� 小妙招
注意 Scratch 中的变量默认是”适用于所有角色”的。如果你只有一个角色(比如就显示信息),这没问题。但如果你的游戏有多个角色,每个角色有自己的分数,你需要创建”仅限此角色”的变量。
6.6 挑战:做一个”飞行英雄”积分游戏
游戏设计
故事背景:你是一位”飞行英雄”,驾驶无人机在空中执行任务。每完成一个动作就获得积分,但要小心电量!电量耗尽前尽可能多地获取积分!
计分规则:
| 动作 | 得分 |
| 前进 30 厘米 | 10 分 |
| 转弯 90 度 | 15 分 |
| 翻滚一次 | 30 分 |
| 上升 20 厘米 | 10 分 |
| 连续动作(前进+转弯) | 额外 +20 分 |
| 电量低于 30% 时安全降落 | 额外 +50 分 |
完整程序
当 �� 被点击
→ 将 [分数] 设为 (0)
→ 将 [连续前进次数] 设为 (0)
→ 将 [游戏状态] 设为 [进行中]
→ 显示变量 [分数]
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 说 [飞行英雄,出发!] (2) 秒
→ 重复执行
→ 如果 <(Tello 电池电量) < (25)> 那么
→ 将 [游戏状态] 设为 [结束]
→ 如果 <(游戏状态) = [结束]> 那么
→ 说 [电量警报!快速降落!] (3) 秒
→ Tello 降落
→ 等待 (2) 秒
→ 将 [分数] 增加 (50)
→ 说 [安全降落奖励+50!] (2) 秒
→ 停止 [全部脚本]
→ 将 [动作] 设为 (在 1 和 5 之间取随机数)
→ 如果 <(动作) = (1)> 那么
→ Tello 向前飞行 (30) 厘米
→ 等待 (3) 秒
→ 将 [分数] 增加 (10)
→ 将 [连续前进次数] 增加 (1)
→ 如果 <(连续前进次数) > (2)> 那么
→ 将 [分数] 增加 (20)
→ 说 [连续前进奖励+20!] (2) 秒
→ 如果 <(动作) = (2)> 那么
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ 将 [分数] 增加 (15)
→ 将 [连续前进次数] 设为 (0)
→ 如果 <(动作) = (3)> 那么
→ Tello 向左旋转 (90) 度
→ 等待 (2) 秒
→ 将 [分数] 增加 (15)
→ 将 [连续前进次数] 设为 (0)
→ 如果 <(动作) = (4)> 那么
→ Tello 向前翻滚
→ 等待 (2) 秒
→ 将 [分数] 增加 (30)
→ 将 [连续前进次数] 设为 (0)
→ 如果 <(动作) = (5)> 那么
→ Tello 向上飞行 (15) 厘米
→ 等待 (2) 秒
→ 将 [分数] 增加 (10)
→ 如果 <(Tello 高度) > (150)> 那么
→ Tello 向下飞行 (20) 厘米
→ 等待 (2) 秒
→ 说 [分数:] 和 (分数) (1) 秒
游戏规则解释
• 随机动作:程序从 5 种动作中随机选一种执行,增加趣味性。
• 连续前进奖励:如果连续前进超过 2 次,额外加 20 分。这鼓励有策略的飞行。
• 转弯清零:转弯动作会重置”连续前进次数”,让玩家规划路线。
• 安全降落奖励:当电量低于 25% 时,程序自动结束游戏并降落,安全降落加 50 分。
• 高度保护:如果高度超过 150 厘米,自动下降,确保安全。
�� 小妙招
你可以根据实际情况调整积分规则和动作种类。比如加入”向后翻滚 +40 分””下降 -5 分”等更丰富的规则。
�� 本章小结
你已经掌握了变量这个重要的编程工具!
✅ 知识清单
| 知识点 | 你学会了吗? |
| 变量的概念(带标签的盒子) | ⬜ |
| 创建变量 | ⬜ |
| 设置变量值(设为) | ⬜ |
| 修改变量值(增加) | ⬜ |
| 显示和隐藏变量 | ⬜ |
| 飞行计时器 | ⬜ |
| 高度记录器(找最大值) | ⬜ |
| 积分游戏 | ⬜ |
| 最高分记录 | ⬜ |
�� 本章重点回顾
• 变量就像一个带标签的盒子,可以存放数字或文字。
• “设为”是往盒子里放东西,“增加”是把盒子里的数字变大。
• 显示变量可以在舞台上实时看到变量的值。
• 找最大值的方法:用变量记住当前最大值,每次遇到新的值就比较并更新。
• 积分游戏结合了变量、条件判断、循环等多种编程概念。
• 好的变量名让人一看就懂它的用途。
�� 课后小任务
• 基础题:创建一个变量”飞行次数”,让无人机每完成一次起飞降落,次数加 1。
• 进阶题:创建一个”最低电量”变量,记录飞行过程中出现过的最低电量值。
• 挑战题:设计一个”飞行闯关”游戏——第 1 关需要获得 50 分才能”过关”,第 2 关需要 100 分,依此类推。
• 创意题:设计一个你自己的积分规则,至少包含 5 种不同的动作和对应的分数。
�� 码码的鼓励
“变量是编程中非常重要的概念!几乎所有程序都会用到变量——存分数、存名字、存时间……没有变量,程序就无法’记住’任何东西。”
“现在你已经会飞、会循环、会判断、还会用变量了!接下来,我们要深入了解 Tello EDU 身上的’感觉器官’——传感器,让无人机真正’感知’周围的世界!”
第 7 章 传感器大探险
�� 本章目标:了解 Tello EDU 的传感器种类,学会读取传感器数据,用传感器数据控制飞行行为,完成趣味传感器实验。
�� 趣味导入
【小飞和码码的故事】
“码码,我有个问题——无人机怎么知道自己飞了多高?怎么知道离地面有多远?”小飞好奇地问。
“问得好!”码码说,”这要感谢无人机身上的传感器!”
“传感器?是什么?”
“传感器就像无人机的’感觉器官’。你有眼睛能看、耳朵能听、皮肤能感受到温度——无人机也有类似的’器官’!”
“真的吗?让我看看无人机的’眼睛’和’耳朵’在哪里!”
“哈哈,它们藏得比较深。来,我给你一个个介绍!”
7.1 Tello 有哪些传感器?
四大传感器
Tello EDU 身上藏着四个重要的传感器,它们各司其职:
�� 传感器一:ToF 距离传感器
ToF = Time of Flight(飞行时间)
位置:机身底部
功能:测量无人机到正下方地面的距离
工作原理(简化版):
传感器向地面发射一束红外光,光碰到地面后反弹回来。传感器测量光”去”和”回”用了多少时间,就可以算出距离了。
光速非常快(约 30 万公里/秒),但在这么短的距离内,还是可以精确测量的。
距离 = 光速 × 时间 ÷ 2(因为光走了”去 + 回”两倍距离)
测量范围:约 10 厘米到 800 厘米(8 米)
用途:定高飞行、着陆检测、距离预警
[配图:ToF 传感器工作原理示意图——发射红外光→碰到地面→反弹回来]
��️ 传感器二:气压计
位置:机身内部
功能:测量大气压力,间接计算高度
工作原理(简化版):
你知道越高(海拔越高)空气越稀薄吗?气压计就是利用这个道理——大气压力越低,说明海拔越高。通过测量气压的变化,就能算出高度的变化。
�� 小知识:海平面的大气压约为 1013 百帕(hPa)。海拔每升高 100 米,气压大约降低 12 百帕。
用途:精确的高度测量、定高悬停
�� 传感器三:摄像头
位置:机身正面
功能:拍摄照片和视频,实时传回画面
技术参数:
• 照片分辨率:720P(1280 × 720 像素)
• 视频分辨率:1080P(1920 × 1080 像素)
• 视角:约 82.6°
用途:航拍、人脸识别、视觉跟踪、拍照记录
�� 你知道吗?
720P 的照片大约有 92 万个像素点(1280 × 720 = 921,600)。每个像素点都有红、绿、蓝三种颜色值。也就是说,一张照片包含了大约 276 万个数据!这就是”数字图像”的本质——无数个小小的颜色方块拼在一起。
⚡ 传感器四:加速度计(IMU 惯性测量单元)
位置:机身内部
功能:测量无人机在三个方向上的加速度和姿态
工作原理(简化版):
加速度计就像你耳朵里的”前庭系统”(帮助你保持平衡的器官)。当无人机加速、减速、倾斜或旋转时,加速度计能感受到这些变化。
Tello 的 IMU 包含:
• 加速度计:测量三个方向(x、y、z)的加速度
• 陀螺仪:测量三个方向的旋转角速度
用途:保持飞行稳定、检测姿态、翻滚动作控制
[配图:Tello EDU 四个传感器的位置标注图]
�� 你知道吗?
你的手机里也有这些传感器!加速度计让手机知道你是在竖着拿还是横着拿;气压计让天气 APP 知道海拔高度;摄像头就更不用说了。你的手机其实就是一个小型”机器人”!
7.2 读取传感器数据
现在让我们学会在 Scratch 中读取这些传感器的数据。
Tello 扩展的传感器积木
Tello 扩展提供了以下数据查询积木(在 ��变量类或专门的 Tello 数据类别中):
| 积木名称 | 返回值 | 说明 |
| Tello 高度 | 数字(厘米) | 当前飞行高度 |
| Tello 距离 | 数字(厘米) | 到下方地面的距离 |
| Tello 飞行时间 | 数字(秒) | 已飞行时间 |
| Tello 电池电量 | 数字(%) | 电池剩余百分比 |
| Tello 温度 | 数字(°C) | 机身温度 |
| Tello 气压 | 数字(hPa) | 大气压力 |
| Tello 加速度 x | 数字 | x 方向加速度 |
| Tello 加速度 y | 数字 | y 方向加速度 |
| Tello 加速度 z | 数字 | z 方向加速度 |
| Tello 速度 x | 数字(厘米/秒) | x 方向速度 |
| Tello 速度 y | 数字(厘米/秒) | y 方向速度 |
| Tello 速度 z | 数字(厘米/秒) | z 方向速度 |
[配图:传感器数据查询积木截图]
实时显示传感器数据
让我们做一个”仪表盘”,在舞台上实时显示无人机的各项数据:
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 将 [显示模式] 设为 [仪表盘]
→ 重复执行
→ 如果 <(显示模式) = [仪表盘]> 那么
→ 说 [高度:] 和 (Tello 高度) 和 [cm] 换行
和 [距离:] 和 (Tello 距离) 和 [cm] 换行
和 [电量:] 和 (Tello 电池电量) 和 [%] 换行
和 [温度:] 和 (Tello 温度) 和 [°C] 换行
和 [时间:] 和 (Tello 飞行时间) 和 [秒] (0.5) 秒
这个程序让无人机起飞后,持续在屏幕上显示各种传感器数据,就像汽车的仪表盘一样!
�� 注意:实际使用时,需要根据 Scratch 的积木能力调整显示方式。如果”换行”不容易实现,可以分多个角色分别显示不同数据,或者每隔几秒轮流显示。
7.3 根据高度改变飞行速度
让我们写一个”智能飞行”程序——根据当前高度自动调整飞行行为:
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (10) 次
→ 如果 <(Tello 高度) > (120)> 那么
→ 说 [高度太高!慢速前进] (2) 秒
→ Tello 向前飞行 (20) 厘米
→ 等待 (3) 秒
→ Tello 向下飞行 (10) 厘米
→ 等待 (2) 秒
→ 如果 <((Tello 高度) > (60)) 且 ((Tello 高度) < (120))> 那么
→ 说 [高度适中!正常前进] (2) 秒
→ Tello 向前飞行 (40) 厘米
→ 等待 (3) 秒
→ 如果 <(Tello 高度) < (60)> 那么
→ 说 [高度太低!快速前进并上升] (2) 秒
→ Tello 向前飞行 (50) 厘米
→ 等待 (3) 秒
→ Tello 向上飞行 (15) 厘米
→ 等待 (2) 秒
→ Tello 降落
程序逻辑
这个程序根据高度把飞行分为三个区域:
| 高度范围 | 行为 | 前进距离 |
| > 120cm(太高) | 慢速前进 + 下降 | 20cm |
| 60-120cm(适中) | 正常前进 | 40cm |
| < 60cm(太低) | 快速前进 + 上升 | 50cm |
这就好像无人机有了”高度感”——它知道自己飞得太高还是太低,自动调整飞行策略!
7.4 根据距离发出警报
让我们做一个”安全卫士”程序——当无人机距离地面太近时发出警报!
程序
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复执行
→ 如果 <(Tello 距离) < (20)> 那么
→ 说 [�� 危险!距离太近!] (2) 秒
→ Tello 向上飞行 (20) 厘米
→ 等待 (2) 秒
→ 播放声音 [警报声]
→ 如果 <((Tello 距离) > (20)) 且 ((Tello 距离) < (50))> 那么
→ 说 [⚠️ 注意:距离较近] (1) 秒
→ 如果 <(Tello 距离) > (50)> 那么
→ 说 [✅ 距离安全] (0.5) 秒
→ 等待 (1) 秒
→ 如果 <(Tello 电池电量) < (20)> 那么
→ 说 [电量不足,自动降落!] (3) 秒
→ Tello 降落
→ 停止 [全部脚本]
三级警报系统
这个程序实现了一个三级警报系统:
| 级别 | 距离范围 | 警报级别 | 动作 |
| �� 红色 | < 20cm | 危险! | 立即上升 + 警报声 |
| �� 黄色 | 20-50cm | 注意 | 文字提醒 |
| �� 绿色 | > 50cm | 安全 | 正常显示 |
�� 小妙招
这个三级警报的思路在很多领域都有应用:
– 天气预报:蓝色预警、黄色预警、橙色预警、红色预警
– 空气质量:优、良、轻度污染、重度污染
– 考试成绩:不及格、及格、良好、优秀
把连续的数据分成几个”等级”,每个等级对应不同的反应——这是一种非常重要的编程思维!
7.5 趣味实验:无人机”测身高”
实验原理
你能用无人机来测量你的身高吗?当然可以!原理很简单:
• 让无人机飞到你头顶上方。
• 读取无人机到地面的距离(通过 ToF 传感器)。
• 你的身高 = 无人机到地面的距离 – 无人机到你头顶的距离。
当然,更简单的方法是:
• 先让无人机在地面上,读取距离(设为 D1)。
• 然后把无人机升到你的头顶高度,读取距离(设为 D2)。
• 你的身高大约是 D1 – D2 的差值。
不过这个方法需要比较精确的控制。让我们用更简单的方式来做——
“大概”测身高实验
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ 说 [实验开始!请站在无人机下方] (3) 秒
→ 等待 (2) 秒
→ 说 [无人机在地面上,测量地面距离…] (3) 秒
→ 将 [地面距离] 设为 (Tello 距离)
→ 等待 (2) 秒
→ 说 [无人机开始上升,请保持不动…] (3) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 说 [测量头顶距离…] (3) 秒
→ 将 [头顶距离] 设为 (Tello 距离)
→ Tello 降落
→ 等待 (2) 秒
→ 将 [估算身高] 设为 ((地面距离) – (头顶距离))
→ 说 [估算身高约:] 和 (估算身高) 和 [厘米] (5) 秒
⚠️ 安全小卫士提醒
这个实验中,无人机会在人头顶上方飞行,请特别注意:
– 确保螺旋桨保护罩已安装
– 人不要乱动,保持站立稳定
– 如果感觉不安全,可以随时用手动方式让无人机降落
– 建议在爸爸妈妈的陪伴下进行
�� 你知道吗?
这种利用传感器间接测量目标尺寸的方法,在实际应用中很常见!比如:
– 农业无人机通过传感器测量作物高度,判断生长情况
– 建筑工人用激光测距仪测量楼层高度
– 自动驾驶汽车用雷达测量与前车的距离
7.6 综合实验:传感器数据记录器
让我们来做一个”数据记录器”——记录飞行过程中的各种数据,看看数据是怎么变化的!
程序
当 �� 被点击
→ 将 [记录次数] 设为 (0)
→ 将 [最大高度] 设为 (0)
→ 将 [最小高度] 设为 (999)
→ 将 [平均温度] 设为 (0)
→ 将 [温度总和] 设为 (0)
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (12) 次
→ 将 [记录次数] 增加 (1)
→ 如果 <(Tello 高度) > (最大高度)> 那么
→ 将 [最大高度] 设为 (Tello 高度)
→ 如果 <(Tello 高度) < (最小高度)> 那么
→ 将 [最小高度] 设为 (Tello 高度)
→ 将 [温度总和] 增加 (Tello 温度)
→ Tello 向前飞行 (25) 厘米
→ 等待 (2) 秒
→ Tello 向右旋转 (30) 度
→ 等待 (1) 秒
→ Tello 降落
→ 等待 (2) 秒
→ 将 [平均温度] 设为 ((温度总和) / (记录次数))
→ 说 [飞行报告:] 换行
和 [记录次数:] 和 (记录次数) 换行
和 [最大高度:] 和 (最大高度) 和 [cm] 换行
和 [最小高度:] 和 (最小高度) 和 [cm] 换行
和 [平均温度:] 和 (平均温度) 和 [°C] (10) 秒
数据分析
飞行结束后,你可以把数据记录下来,在纸上画成图表:
[配图:传感器数据变化折线图示例——横轴是时间,纵轴是高度/温度]
�� 动脑筋
1. 为什么飞行过程中温度会变化?(提示:电机会发热!)
2. 为什么高度在不断变化?(提示:每次转弯时高度可能变化)
3. 如果把平均温度乘以飞行次数,能得到什么?
�� 本章小结
你已经了解了无人机的”感觉器官”!
✅ 知识清单
| 知识点 | 你学会了吗? |
| Tello 的四种传感器(ToF、气压计、摄像头、IMU) | ⬜ |
| ToF 距离传感器的工作原理 | ⬜ |
| 读取传感器数据的方法 | ⬜ |
| 根据高度调整飞行策略 | ⬜ |
| 根据距离发出警报 | ⬜ |
| 三级警报系统的设计 | ⬜ |
| 用传感器做趣味实验 | ⬜ |
| 数据记录与分析 | ⬜ |
�� 本章重点回顾
• ToF 传感器通过测量红外光的往返时间来计算距离。
• 气压计通过测量大气压力来间接测量高度。
• 摄像头可以拍照、录像,还支持图像识别。
• IMU(加速度计+陀螺仪)测量无人机的加速度和姿态,保持飞行稳定。
• 读取传感器数据可以让无人机做出更智能的决策。
• 把连续数据分级处理是一种重要的编程思维。
�� 课后小任务
• 基础题:写一个程序,实时显示无人机的高度和电量。
• 进阶题:设计一个”温度监测”程序,当温度超过 40°C 时自动降落并提醒。
• 挑战题:用传感器数据做一个”飞行日记”——每次飞行结束后,显示本次飞行的最大高度、最小高度、平均温度等数据。
• 创意题:设计一个你自己的传感器实验(比如用无人机测量桌子的高度、窗户的宽度等),写下实验步骤和结果。
�� 小飞的话
“原来无人机有这么多’感觉器官’!难怪它能飞得那么稳、那么准。”
码码说:”而且,摄像头这个’器官’特别厉害——它不只是拍照那么简单,还能’认出’人脸!下一章,我们就来学习用摄像头做人脸识别!”
第 8 章 拍照与人脸识别
�� 本章目标:学会调用 Tello 摄像头,在 Scratch 中显示摄像头画面,实现拍照功能,了解简单的人脸检测和视频侦测技术。
�� 趣味导入
【小飞和码码的故事】
“码码码码!”小飞兴奋地跑过来,”你知道吗?无人机还能’认’出人脸!”
“当然啦!”码码一点也不意外,”Tello EDU 有一个摄像头,就像无人机的’眼睛’。通过摄像头看到的画面,配合一些特殊的算法,就能’认出’人脸。”
“算法?又是什么新东西?”
“算法就是解决问题的步骤和方法。比如’找人脸’的算法,就是一步一步地在画面中搜索’像人脸的图案’。”
“听起来好厉害!快教我怎么做!”
8.1 调用 Tello 摄像头
摄像头的工作原理
Tello EDU 的摄像头通过 WiFi 将视频画面实时传回电脑。你电脑上看到的画面并不是”直接”看到的,而是无人机拍下来,通过 WiFi 传到电脑上显示的。
这就像视频通话——你的手机摄像头拍到你,画面通过网络传到对方的手机上显示。
在 Scratch 中显示摄像头画面
Tello 扩展提供了摄像头相关的积木。连接成功后,可以在舞台上显示无人机摄像头拍摄到的实时画面。
基本步骤:
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 摄像头开启
→ 显示 Tello 摄像头画面
[配图:摄像头画面在 Scratch 舞台上显示的截图]
�� 注意:摄像头画面的显示位置可能需要调整。在 Scratch 中,你可以通过设置角色位置和大小来控制画面的显示区域。
8.2 拍照功能
基础拍照程序
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 摄像头开启
→ Tello 起飞
→ 等待 (2) 秒
→ 说 [3…] (1) 秒
→ 说 [2…] (1) 秒
→ 说 [1…茄子!] (1) 秒
→ Tello 拍照
→ 说 [照片已拍摄!] (2) 秒
→ Tello 降落
定时拍照程序
让无人机每隔几秒自动拍一张照片:
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 摄像头开启
→ 将 [照片数量] 设为 (0)
→ Tello 起飞
→ 等待 (2) 秒
→ 重复 (5) 次
→ Tello 向前飞行 (30) 厘米
→ 等待 (2) 秒
→ Tello 拍照
→ 将 [照片数量] 增加 (1)
→ 说 [第] 和 (照片数量) 和 [张照片已拍摄!] (2) 秒
→ Tello 向右旋转 (72) 度
→ 等待 (2) 秒
→ 说 [共拍摄] 和 (照片数量) 和 [张照片!] (3) 秒
→ Tello 降落
�� 小妙招
这个程序让无人机在 5 个不同角度各拍一张照片,就像拍了一组 360° 环绕照片!每次前进 30cm 然后右转 72°(360°÷5=72°),5 次刚好转一圈。
8.3 Scratch 视频侦测功能
什么是视频侦测?
Scratch 自带一个”视频侦测”(Video Sensing)扩展,可以通过电脑的摄像头(或者通过 Tello 传回的画面)来检测运动。
视频侦测可以做什么:
• 检测运动:画面中有东西在动吗?动了多少?
• 检测边缘:某个角色是否碰到了画面中运动的部分?
• 复制画面:把摄像头画面显示在舞台上
添加视频侦测扩展
• 在 Scratch 左下角点击扩展按钮。
• 找到”视频侦测”(Video Sensing)扩展。
• 点击添加。
添加后,积木区会出现一个绿色的”视频侦测”类别。
[配图:视频侦测扩展的添加步骤截图]
视频侦测积木一览
| 积木 | 功能 |
| 当视频运动 > (10) | 当画面中检测到的运动量超过设定值时触发 |
| 在 [舞台] 上的视频 [运动] | 获取指定区域的运动量 |
| 将视频 [透明度] 设为 (50) | 设置摄像头画面的透明度 |
| 将视频切换为 [打开] | 打开/关闭摄像头画面 |
[配图:视频侦测类别积木截图]
8.4 简单人脸检测
简化版”人脸检测”
真正的”人脸识别”需要复杂的 AI 算法。但在 Scratch 中,我们可以用一种简化的方法来”模拟”人脸检测:
思路:利用视频侦测积木检测画面中的运动。当有人靠近摄像头并移动时,运动量会变化。我们可以通过运动量的变化来判断”画面中是否有人”。
程序
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 摄像头开启
→ Tello 起飞
→ 等待 (2) 秒
→ 将视频切换为 [打开]
→ 将视频 [透明度] 设为 (50)
→ 重复执行
→ 如果 <(在 [舞台] 上的视频 [运动]) > (30)> 那么
→ 说 [�� 检测到有人!] (1) 秒
→ 将视频 [透明度] 设为 (0)
→ 否则
→ 说 [�� 画面中没有检测到运动] (0.5) 秒
→ 将视频 [透明度] 设为 (80)
→ 等待 (0.5) 秒
�� 说明
这个程序并不是真正的”人脸识别”,而是”运动检测”。但它展示了一个重要概念:通过摄像头获取画面 → 分析画面内容 → 做出反应。真正的 AI 人脸识别也是这个流程,只是”分析”那一步用了更复杂的算法。
8.5 “追脸”飞行器小游戏
游戏创意
让我们做一个”追脸”小游戏——无人机尝试”追”着你的脸飞行!
当然,由于 Tello 的运动是离散的(每次飞一段固定距离),不是完全实时的跟踪,所以这个”追脸”更像是一个”朝目标飞过去”的简化版本。
程序设计
思路:利用 Scratch 角色的位置来模拟——创建一个”目标”角色,玩家通过移动身体(在摄像头前移动)来控制目标位置,无人机则尝试飞向目标。
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 摄像头开启
→ Tello 起飞
→ 等待 (2) 秒
→ 将视频切换为 [打开]
→ 将视频 [透明度] 设为 (50)
→ 说 [追脸游戏开始!在摄像头前移动,我会跟着你!] (3) 秒
→ 重复 (15) 次
→ 将 [运动量] 设为 (在 [舞台] 上的视频 [运动])
→ 如果 <(运动量) > (20)> 那么
→ 说 [检测到运动!调整方向…] (1) 秒
→ 如果 <(在 [舞台] 上的视频 [运动]) 在 [x 方向]> 那么
→ Tello 向左飞行 (15) 厘米
→ 等待 (1) 秒
→ Tello 向前飞行 (20) 厘米
→ 等待 (2) 秒
→ 否则
→ 说 [保持不动…] (1) 秒
→ 如果 <(Tello 高度) > (120)> 那么
→ Tello 向下飞行 (10) 厘米
→ 等待 (1) 秒
→ 如果 <(Tello 高度) < (50)> 那么
→ Tello 向上飞行 (10) 厘米
→ 等待 (1) 秒
→ 说 [游戏结束!] (2) 秒
→ Tello 降落
⚠️ 安全小卫士提醒
“追脸”游戏中,无人机可能会朝人的方向飞行。请:
– 务必安装保护罩
– 保持安全距离(至少 1 米)
– 飞行速度不要太快
– 手边准备好随时手动降落的方法
8.6 挑战:给无人机加一个”笑脸识别”
挑战说明
虽然 Scratch 没有内置的”笑脸识别”功能,但我们可以用一种创造性的方法来实现类似的效果!
思路
• 在 Scratch 中创建一个”笑脸”造型的角色。
• 利用视频侦测检测运动。
• 当检测到运动时(代表有人在摄像头前),笑脸角色出现。
• 当运动停止时,笑脸角色消失。
程序
主程序(无人机控制):
当 �� 被点击
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 摄像头开启
→ Tello 起飞
→ 等待 (2) 秒
→ 广播 [开始检测]
→ 将视频切换为 [打开]
→ 将视频 [透明度] 设为 (30)
→ 重复 (10) 次
→ Tello 向前飞行 (20) 厘米
→ 等待 (2) 秒
→ Tello 向右旋转 (36) 度
→ 等待 (1) 秒
→ Tello 拍照
→ Tello 降落
→ 广播 [检测结束]
笑脸角色程序:
当接收到 [开始检测]
→ 隐藏
→ 重复执行
→ 如果 <(在 [舞台] 上的视频 [运动]) > (25)> 那么
→ 显示
→ 移到 [鼠标指针]
→ 说 [�� 检测到笑脸!] (1) 秒
→ 否则
→ 隐藏
→ 等待 (0.5) 秒
当接收到 [检测结束]
→ 停止 [这个角色的其他脚本]
→ 隐藏
�� 小妙招
这个程序用了”广播”功能来实现两个角色之间的通信:
– 主程序广播”开始检测”→笑脸角色收到后开始工作
– 主程序广播”检测结束”→笑脸角色收到后停止工作
“广播”是 Scratch 中角色之间传递信息的方式,就像对讲机一样——一个人喊话,所有人都能听到!
进阶想法
如果你有编程基础,可以在电脑上运行 Python 程序,用 OpenCV(一个计算机视觉库)来做真正的”人脸检测”,然后通过 Socket 通信把检测结果发送给 Scratch。这需要爸爸妈妈帮忙,但这是真正的 AI 技术!
[配图:OpenCV 人脸检测效果示意——画面中人脸被绿色方框标注]
�� 你知道吗?
你手机上的”人脸解锁”功能,用的就是类似的技术!手机前置摄像头拍到你→ 检测画面中是否有人脸 → 比对是不是你的脸 → 如果是就解锁。整个过程不到 1 秒!
人脸识别技术已经被广泛应用在:手机解锁、门禁系统、支付验证、相册自动分类、安防监控等领域。
�� 本章小结
你已经学会了无人机的”视觉”功能!
✅ 知识清单
| 知识点 | 你学会了吗? |
| 调用 Tello 摄像头 | ⬜ |
| 在 Scratch 中显示摄像头画面 | ⬜ |
| 拍照功能 | ⬜ |
| 定时拍照 | ⬜ |
| 视频侦测扩展 | ⬜ |
| 运动检测 | ⬜ |
| “追脸”飞行器 | ⬜ |
| “笑脸识别”模拟 | ⬜ |
| “广播”实现角色通信 | ⬜ |
�� 本章重点回顾
• 摄像头是无人机的”眼睛”,通过 WiFi 把画面传回电脑。
• 拍照可以用代码控制,配合飞行动作可以拍多角度照片。
• 视频侦测可以检测画面中的运动,用于判断画面是否发生变化。
• 人脸检测需要复杂的 AI 算法,但可以用运动检测来”模拟”。
• 广播是角色之间通信的方式,可以实现协同工作。
• 真正的 AI 视觉(如人脸识别)需要 Python + OpenCV 等工具。
�� 课后小任务
• 基础题:写一个程序,让无人机起飞后,每隔 3 秒拍一张照片,共拍 5 张。
• 进阶题:做一个”拍照打卡”游戏——无人机飞到指定位置拍照,然后换位置再拍。
• 挑战题:用视频侦测做一个”动作捕捉”程序——根据你在摄像头前的动作来控制屏幕上的角色。
• 创意题:设计一个”无人机摄影师”程序——无人机按照规划好的路线飞行,在每个位置拍照,最后做一个”相册展示”。
�� 码码的话
“视觉是人工智能中非常重要的一个领域。你现在做的虽然只是最基础的尝试,但已经是走在 AI 的路上了!”
“不过,一个人操控一架无人机已经很酷了,如果能同时操控好几架呢?让它们排成队形一起飞,像表演一样——这就是下一章要学的编队飞行!”
第 9 章 编队飞行小表演
�� 本章目标:了解多架 Tello 协同飞行的概念,理解编队通信原理,设计编队队形,完成综合编队飞行表演项目。
�� 趣味导入
【小飞和码码的故事】
“码码,你看过无人机编队表演吗?”小飞激动地说,”几百架无人机在夜空中组成各种图案——星星、花朵、文字……太壮观了!”
“看过看过!”码码的眼睛也亮了起来,”那叫’无人机灯光秀’,是用成百上千架无人机协同飞行完成的。”
“我们能用 Tello EDU 也做一个小型的编队表演吗?”
“当然可以!虽然 Tello EDU 的数量可能没有那么多,但原理是一样的!我们可以让 3 架、5 架甚至更多 Tello 一起飞行,按照预先编好的程序排成各种队形!”
“3 架 Tello 同时飞?那得怎么写程序?每架无人机一个程序吗?”
“哈哈,这就是编队飞行的秘密了!让我慢慢告诉你……”
9.1 多架 Tello 协同飞行概念
什么是编队飞行?
编队飞行就是多架无人机按照预定的位置和路线同时飞行,形成一个整体的”图案”或”表演”。
就像学校运动会上的团体操表演——很多同学按照预定的动作一起表演,形成一个壮观的图案。编队飞行就是”空中的团体操”!
为什么编队飞行很难?
单人飞行很简单:你只需要告诉一架无人机”飞到 A 点”。但编队飞行需要考虑更多问题:
�� 问题 1:位置关系
每架无人机在编队中的位置是不同的。比如 3 架无人机排成一条线,它们的位置分别是:
• 1 号机:x=0, y=0
• 2 号机:x=100, y=0(在 1 号右边 100 厘米)
• 3 号机:x=200, y=0(在 2 号右边 100 厘米)
每架无人机飞行的路线虽然类似,但起点和终点不同!
�� 问题 2:同步问题
如果 1 号机飞得快,3 号机飞得慢,队形就会乱掉。所以必须确保所有无人机同时开始、同时完成每个动作。
�� 问题 3:防撞
无人机之间的距离不能太近,否则会相撞。Tello EDU 建议两机之间至少保持 1 米的距离。
�� 问题 4:WiFi 干扰
每架 Tello EDU 都有自己的 WiFi 信号。如果多架无人机离得太近,WiFi 信号可能会互相干扰。这就是为什么需要专门的”编队模式”。
[配图:多架 Tello 编队飞行的示意图]
Tello EDU 编队的两种模式
模式一:AP 模式(接入点模式)
• 每架 Tello 连接到一个共同的路由器
• 电脑也连接到同一个路由器
• 通过局域网统一控制所有无人机
• 优点:控制更稳定
• 需要:一个路由器
模式二:STA 模式(站模式)
• 每架 Tello 连接到一个指定的 WiFi
• 更灵活,但设置更复杂
• 适合更专业的编队应用
对于我们的学习项目,我们可以用简化版的方式:
• 用一个路由器把所有 Tello 和电脑连起来
• 用 Python 程序(需要爸爸妈妈帮忙)分别控制每架无人机
• 或者,用 Scratch 的”广播”功能来模拟编队效果
9.2 编队通信原理(简化版)
通信模型
在多架无人机的编队中,通信就像一场”交响乐”:
• 指挥家(电脑/主控程序):发出指令给每个乐手
• 乐手们(每架无人机):收到指令后各自演奏
电脑(指挥家)
├── → Tello 1号(小提琴)
├── → Tello 2号(长笛)
└── → Tello 3号(鼓)
编号与地址
每架 Tello EDU 都有一个独特的 WiFi 名称(SSID),格式是 “TELLO-XXXXXX”。在编队飞行中,我们需要:
• 给每架无人机一个编号(比如 1 号、2 号、3 号)
• 电脑通过不同的 WiFi 地址向每架无人机发送指令
• 每架无人机只响应给自己的指令
简化的”编队脚本”
在实际编队中,我们通常会写一个主脚本(Master Script),里面定义了每架无人机在每个时间点的动作:
时间 0 秒:
1 号机 → 起飞
2 号机 → 起飞
3 号机 → 起飞
时间 3 秒:
1 号机 → 向前飞 50cm
2 号机 → 向前飞 50cm
3 号机 → 向前飞 50cm
时间 6 秒:
1 号机 → 向左转 45°
2 号机 → 不动
3 号机 → 向右转 45°
时间 9 秒:
所有 → 降落
[配图:编队飞行的时间-动作表,横轴是时间,纵轴是每架无人机的动作]
�� 你知道吗?
2018 年,英特尔用 2000 架无人机完成了编队飞行表演,创造了吉尼斯世界纪录!2019 年,这个数字被中国的一家公司提升到了 2500 架!
控制这么多无人机同时飞行,需要:
– 高精度的 GPS 定位系统
– 专门的编队控制软件
– 强大的通信网络
– 严格的安全措施
我们现在用 3 架 Tello EDU 就能体验编队的基本原理了!
9.3 编队队形设计
让我们来设计几种经典的编队队形!
队形一:一字形
3 架无人机排成一条直线。
1号 2号 3号
位置: (0,0) (100,0) (200,0)
飞行程序思路:
起飞后:
1 号机 → 飞到 (0, 0)(原地不动)
2 号机 → 飞到 (100, 0)(向右 100cm)
3 号机 → 飞到 (200, 0)(向右 200cm)
变队形时:
同时向前飞行相同距离 → 保持一字形前进
队形二:V 字形
3 架无人机排成 V 字形(像大雁南飞的队形!)。
2号
/
1号—
\
3号
位置:
1 号机:(0, 0) —— V 字的尖角
2 号机:(-50, 80) —— V 的左翼
3 号机:(50, 80) —— V 的右翼
飞行程序思路:
起飞后:
1 号机 → 飞到 (0, 0)
2 号机 → 向左飞 50cm,再向前飞 80cm
3 号机 → 向右飞 50cm,再向前飞 80cm
队形三:三角形
3 架无人机排成等边三角形。
1号
/ \
/ \
2号—3号
位置:
1 号机:(0, 0) —— 顶点
2 号机:(-50, 87) —— 左下(87 ≈ 50√3)
3 号机:(50, 87) —— 右下
�� 动脑筋
等边三角形的高 = 边长 × √3 ÷ 2 ≈ 边长 × 0.866
如果边长是 100cm,高就是 86.6cm ≈ 87cm
所以左下位置是 (-50, 87),右下位置是 (50, 87)
队形四:圆形
3 架无人机排成一个圆形(3 个点均匀分布在圆上)。
1号
/ \
/ \
3号—2号
位置(圆心在 (100, 100),半径 80cm):
1 号机:(100, 20) —— 正上方
2 号机:(169, 140) —— 右下方(100+80×sin(120°), 100-80×cos(120°))
3 号机:(31, 140) —— 左下方
[配图:四种编队队形的俯视图,标注每架无人机的位置坐标]
�� 小贴士
设计队形时,先在纸上画出俯视图(从上方看),标注每架无人机的位置。这样就能清楚地看到队形是什么样子,也方便计算每架无人机应该飞到哪里。
9.4 音乐同步飞行表演
让我们给编队飞行加上音乐,做一个有声有色的飞行表演!
音乐与飞行的同步
思路:把飞行动作和音乐节拍对应起来。比如每 2 秒一个节拍,每个节拍做一次飞行动作。
Scratch 中的音乐积木
Scratch 有内置的”音乐”扩展,可以演奏音符:
| 积木 | 功能 |
| 演奏音符 (60) (0.5) 拍 | 演奏一个音符 |
| 将乐器设为 (1) | 选择乐器(1=钢琴, 2=电钢琴…) |
| 将速度设为 (60) 拍/分钟 | 设置演奏速度 |
同步飞行程序
当 �� 被点击
→ 将速度设为 (120) 拍/分钟
→ 连接 Tello
→ 等待 (2) 秒
→ 说 [表演开始!] (2) 秒
→ Tello 起飞
→ 演奏音符 (60) (1) 拍 —— C 音
→ 等待 (1) 秒
→ Tello 向前飞行 (30) 厘米
→ 演奏音符 (62) (1) 拍 —— D 音
→ 等待 (1) 秒
→ Tello 向右旋转 (90) 度
→ 演奏音符 (64) (1) 拍 —— E 音
→ 等待 (1) 秒
→ Tello 向前飞行 (30) 厘米
→ 演奏音符 (65) (1) 拍 —— F 音
→ 等待 (1) 秒
→ Tello 向右旋转 (90) 度
→ 演奏音符 (67) (1) 拍 —— G 音
→ 等待 (1) 秒
→ Tello 向前飞行 (30) 厘米
→ 演奏音符 (69) (1) 拍 —— A 音
→ 等待 (1) 秒
→ Tello 向右旋转 (90) 度
→ 演奏音符 (71) (1) 拍 —— B 音
→ 等待 (1) 秒
→ Tello 向前飞行 (30) 厘米
→ 演奏音符 (72) (1) 拍 —— 高音 C
→ Tello 降落
→ 说 [表演结束!谢谢!] (3) 秒
加上灯光效果
Tello EDU 有 LED 灯,可以通过编程控制 LED 的颜色变化。配合音乐和飞行动作,可以创造出非常炫酷的效果!
→ 重复 (4) 次
→ 设置 LED 颜色为 [红色]
→ Tello 向前飞行 (30) 厘米
→ 演奏音符 (60) (1) 拍
→ 等待 (1) 秒
→ 设置 LED 颜色为 [蓝色]
→ Tello 向右旋转 (90) 度
→ 演奏音符 (64) (1) 拍
→ 等待 (1) 秒
�� 小妙招
设计音乐飞行表演时,可以先选好一首简单的曲子(比如《小星星》《欢乐颂》),然后按照曲子的节拍来安排飞行动作。每个音符对应一个动作,旋律就是飞行路线!
9.5 综合项目:设计一场 3 机编队表演
项目目标
设计一场由 3 架 Tello EDU 完成的编队飞行表演,时长约 2-3 分钟。
表演流程设计
第一幕:出场(30 秒)
– 3 架无人机依次起飞
– 飞到各自的起始位置
– 形成 V 字形队形
第二幕:变换队形(30 秒)
– V 字形 → 一字形
– 一字形 → 三角形
– 每次变换配合音乐
第三幕:飞行表演(60 秒)
– 编队前进
– 编队旋转
– 高度变化
– 同步翻滚
第四幕:谢幕(30 秒)
– 回到初始位置
– 依次降落
– LED 灯光闪烁”致谢”
每架无人机的飞行路线
[配图:3 架无人机在整个表演中的飞行路线俯视图]
1 号机(V 字尖端)路线:
起飞 → (0, 0) → 前进 50cm → 左转 45° → 前进 30cm → 右转 90° → 前进 30cm → 回到 (0, 0) → 降落
2 号机(V 字左翼)路线:
起飞 → (-50, 80) → 前进 50cm → 左转 45° → 前进 30cm → 右转 90° → 前进 30cm → 回到 (-50, 80) → 降落
3 号机(V 字右翼)路线:
起飞 → (50, 80) → 前进 50cm → 左转 45° → 前进 30cm → 右转 90° → 前进 30cm → 回到 (50, 80) → 降落
�� 注意:3 架无人机的”相对动作”是相同的(都是前进 50cm、左转 45°…),只是各自的”绝对位置”不同。这就是编队飞行的关键——每架无人机执行相同的相对动作,但起点不同。
实现方式
方式一:简化模拟(推荐初学者)
如果只有一架 Tello EDU,可以用 Scratch 的多个角色来模拟编队效果:
• 创建 3 个角色,分别代表 3 架无人机(用不同颜色区分)。
• 每个角色按照预定的路线移动。
• 真实无人机只飞其中一个角色的路线(作为”演示机”)。
• 舞台上的 3 个角色模拟显示整体编队效果。
方式二:真实编队(需要 3 架 Tello EDU)
如果有 3 架 Tello EDU,可以用 Python 程序(爸爸妈妈帮忙)实现真实的多机控制:
# 简化版编队控制程序
import time
# 定义三架无人机的初始位置
positions = {
‘drone1’: {‘x’: 0, ‘y’: 0},
‘drone2’: {‘x’: -50, ‘y’: 80},
‘drone3’: {‘x’: 50, ‘y’: 80}
}
# 起飞
for drone in positions:
drone.takeoff()
time.sleep(2)
# 前进 50cm
for drone in positions:
drone.forward(50)
time.sleep(1)
# 左转 45°
for drone in positions:
drone.rotate_ccw(45)
time.sleep(1)
# 降落
for drone in positions:
drone.land()
time.sleep(1)
表演评分标准
| 评分项 | 说明 | 分值 |
| 队形准确度 | 编队队形是否整齐 | 20 分 |
| 同步性 | 3 架无人机动作是否同步 | 20 分 |
| 创意性 | 队形变换是否有创意 | 20 分 |
| 安全性 | 是否有安全措施,飞行是否稳定 | 20 分 |
| 音乐配合 | 飞行动作与音乐是否配合 | 20 分 |
�� 本章小结
你已经了解了编队飞行的基本概念!
✅ 知识清单
| 知识点 | 你学会了吗? |
| 编队飞行的概念 | ⬜ |
| 编队飞行的难点(位置、同步、防撞、WiFi) | ⬜ |
| 编队通信的基本原理 | ⬜ |
| 一字形编队 | ⬜ |
| V 字形编队 | ⬜ |
| 三角形编队 | ⬜ |
| 圆形编队 | ⬜ |
| 音乐同步飞行 | ⬜ |
| 3 机编队表演设计 | ⬜ |
�� 本章重点回顾
• 编队飞行是多架无人机按照预定队形同时飞行。
• 编队的难点在于位置控制、时间同步、防撞和通信。
• 每架无人机执行相同的相对动作,但起点位置不同。
• 四种经典队形:一字形、V 字形、三角形、圆形。
• 音乐同步可以让表演更有趣——每个节拍对应一个动作。
• 编队表演的设计分为四幕:出场、变换、表演、谢幕。
�� 课后小任务
• 基础题:在纸上画出 4 架无人机的”菱形”编队,标注每架的位置。
• 进阶题:设计一个 V 字形编队飞行的 Scratch 模拟程序(用 3 个角色模拟 3 架无人机)。
• 挑战题:为一首你喜欢的歌曲(比如《小星星》)编排飞行+音乐表演。
• 创意题:设计一个 5 架无人机的编队表演方案,至少包含 3 种队形变换。
�� 小飞和码码的对话
小飞:”编队飞行太酷了!3 架无人机一起飞,比 1 架好看多了!”
码码:”是的!而且这还只是 3 架,真正的灯光秀可以用上千架!”
小飞:”我已经迫不及待想要设计我自己的编队表演了!”
码码:”别急!我们还剩最后一章——你的飞行创意项目。在这章里,你要把前面学的所有知识都用上,做一个完整的创意项目!”
小飞:”好!我要做一个最酷的!”
第 10 章 我的飞行创意项目
�� 本章目标:综合运用所学知识,用”项目设计五步法”完成一个完整的无人机创意项目,总结编程思维,为未来的创客之路奠定基础。
�� 趣味导入
【小飞和码码的故事】
“码码,我们已经学了这么多东西!”小飞掰着手指头数,”Scratch 编程、控制无人机飞行、循环、条件判断、变量、传感器、摄像头、编队……感觉学会了好多超能力!”
“没错!”码码笑着说,”学了这么多,是时候展示你的实力了!”
“展示实力?怎么做?”
“做一个你自己的创意项目!把前面学的所有知识都用上,设计一个独一无二的无人机项目!”
“哇……我有点紧张,又有点兴奋!”
“别紧张!我来教你’项目设计五步法’,跟着这五步走,你一定能做出一个超棒的项目!”
“那我们开始吧!”
10.1 项目设计五步法
五步法总览
无论是做一个小玩具还是开发一个大软件,好的项目都遵循类似的过程。我们把它总结为“五步法”:
第 1 步:选题 → 我要做什么?
第 2 步:设计 → 怎么做的?画个计划
第 3 步:编程 → 动手写代码
第 4 步:测试 → 检查对不对
第 5 步:展示 → 给别人看看
[配图:项目设计五步法的流程图]
第 1 步:选题——我要做什么?
选题是项目的起点。好的选题应该是:
• 你感兴趣的:做自己喜欢的事情才有动力!
• 你能做到的:不要选太难的目标,先从小项目开始。
• 有意义的:能解决一个小问题,或者展示一个有趣的想法。
选题 brainstorming(头脑风暴):
不要只想一个方案!先列出 5-10 个想法,然后从中选一个最好的。
比如:
• 无人机自动巡逻系统
• 无人机航拍助手
• 无人机”寻宝”游戏
• 无人机灯光秀
• 无人机”快递员”(模拟)
• 无人机障碍物挑战赛
• 无人机”跟拍”助手
• 无人机”画板”(在空中画画)
• 无人机气象站
• 无人机编队舞蹈
�� 小妙招
选题时可以用”如果…会怎样”的方法:
– 如果无人机能自动巡逻,会怎样?
– 如果无人机能帮人拍照,会怎样?
– 如果多架无人机能跳舞,会怎样?
每一个”如果”都是一个项目灵感!
第 2 步:设计——怎么做的?
选定题目后,不要急着写代码!先做设计:
设计文档包括:
• 项目名称:给你的项目取个响亮的名字。
• 项目描述:用 2-3 句话说清楚你要做什么。
• 功能列表:列出项目要实现的所有功能。
• 流程图:画出程序的执行流程。
• 变量清单:列出需要哪些变量。
• 界面设计:画出舞台上的角色和布局。
设计模板:
�� 项目设计文档
项目名称:____________________
项目描述:
_____________________________
_____________________________
功能列表:
1. ___________________________
2. ___________________________
3. ___________________________
程序流程:
开始 → ______ → ______ → ______ → 结束
需要的变量:
1. ___________________________
2. ___________________________
角色列表:
1. ___________________________
2. ___________________________
[配图:一个填写好的设计文档示例]
第 3 步:编程——动手写代码
按照设计文档,一步一步地在 Scratch 中编写程序。
编程原则:
• 分块编写:不要一次写完所有代码。先把程序分成几个”块”,一块一块地写。
• 先简单后复杂:先让核心功能跑起来,再添加高级功能。
• 边写边测试:每写完一块就测试一下,不要等全部写完再测试。
• 写注释:在积木旁边用文字标注这段代码是做什么的(可以用 Scratch 的”注释”功能)。
第 4 步:测试——检查对不对
测试是最容易被忽视但最重要的步骤!
测试清单:
• ✅ 程序能正常运行吗?
• ✅ 所有功能都实现了吗?
• ✅ 有没有 bug(错误)?
• ✅ 无人机飞行安全吗?
• ✅ 如果电量不足会怎样?
• ✅ 如果连接断开会怎样?
测试方法:
• 桌面测试:不连无人机,在 Scratch 中检查积木逻辑是否正确。
• 模拟测试:连上无人机,但在安全环境下逐步测试每个功能。
• 完整测试:在正式环境中运行完整程序。
• 多次测试:至少测试 3 次,看看每次结果是否一致。
�� 小妙招
发现 bug 不要慌!bug 是编程的”常客”,连最专业的程序员也会写出有 bug 的代码。关键是:
1. 冷静分析问题出在哪里
2. 缩小问题范围(从最后运行的代码开始检查)
3. 尝试修改并重新测试
4. 如果实在解决不了,可以问老师或同学
第 5 步:展示——给别人看看
项目完成后,把你的成果展示给别人看!
展示内容:
• 项目介绍:你做了什么?为什么要做这个?
• 功能演示:现场运行程序,展示效果。
• 技术说明:你用了哪些编程技术?(循环?变量?条件判断?)
• 遇到的困难:开发过程中遇到了什么问题?怎么解决的?
• 未来改进:如果有更多时间,你想怎么改进这个项目?
展示形式:
• 课堂演讲 + 现场演示
• 录制视频展示
• 制作海报展示
• 写成小论文
10.2 创意项目灵感库
如果你还在为选题发愁,这里有 10 个创意方向供你参考:
灵感 1:�� 无人机自动巡逻系统
描述:让无人机按照固定路线自动巡逻一个区域,遇到”异常”(比如高度突然变化)就发出警报。
用到知识:循环 + 条件判断 + 传感器 + 变量
难度:⭐⭐⭐
灵感 2:�� 无人机航拍助手
描述:无人机自动飞到多个预设位置,每个位置拍照,并在拍照前倒计时。
用到知识:基础飞行 + 拍照 + 等待 + 循环
难度:⭐⭐
灵感 3:��️ 无人机”寻宝”游戏
描述:在房间的几个位置放置”宝藏”标记,无人机按照程序依次飞到每个位置”收集”宝藏。
用到知识:基础飞行 + 变量(收集计数)+ 条件判断
难度:⭐⭐⭐
灵感 4:�� 无人机灯光秀
描述:利用 Tello 的 LED 灯,配合飞行动作和音乐,做一个小型灯光秀。
用到知识:LED 控制 + 音乐 + 循环 + 飞行动作
难度:⭐⭐⭐⭐
灵感 5:�� 无人机”快递员”(模拟)
描述:模拟无人机快递——从”仓库”起飞,飞到”收件人”位置,”投递”物品(模拟),然后返回。
用到知识:基础飞行 + 循环 + 变量(包裹数量)
难度:⭐⭐
灵感 6:�� 无人机障碍物挑战赛
描述:设计一个有障碍物的飞行路线,无人机需要穿越障碍物到达终点。
用到知识:基础飞行 + 条件判断 + 传感器
难度:⭐⭐⭐
灵感 7:�� 无人机”跟拍”助手
描述:无人机保持与”目标”(摄像头前的人)的固定距离,自动调整位置。
用到知识:视频侦测 + 条件判断 + 传感器 + 变量
难度:⭐⭐⭐⭐
灵感 8:�� 无人机”画板”
描述:结合 Scratch 的画笔功能,无人机的飞行动作和屏幕上的画笔同步,在空中”画画”。
用到知识:画笔扩展 + 循环 + 基础飞行
难度:⭐⭐⭐
灵感 9:��️ 无人机气象站
描述:无人机在不同高度飞行,记录每个高度的温度、气压等数据,生成”气象报告”。
用到知识:传感器 + 变量 + 循环 + 数据分析
难度:⭐⭐⭐
灵感 10:�� 无人机编队舞蹈
描述:多架无人机(或 Scratch 角色模拟)配合音乐,表演一段”舞蹈”。
用到知识:编队飞行 + 音乐 + 循环 + LED + 飞行动作
难度:⭐⭐⭐⭐⭐
�� 小贴士
这些灵感只是起点!你可以在这些基础上加入自己的想法,创造出独一无二的项目。最好的项目往往是把两三个灵感组合在一起。
比如:”无人机寻宝” + “灯光秀” = 无人机在寻宝过程中 LED 灯不断变化颜色,找到宝藏时灯光闪烁庆祝!
10.3 优秀作品案例展示
案例一:��️ 无人机”森林探险家”
项目描述:无人机模拟在”森林”(用纸箱模拟树木)中探险,自动避开障碍物,记录探索过的区域。
功能列表:
• 无人机自动起飞
• 前进一段距离
• 检测”障碍物”(用距离传感器模拟)
• 遇到障碍右转 90°,继续前进
• 用变量记录”探索距离”
• 电量不足时自动返回并降落
核心代码:
当 �� 被点击
→ 将 [探索距离] 设为 (0)
→ 将 [转弯次数] 设为 (0)
→ 显示变量 [探索距离]
→ 显示变量 [转弯次数]
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 说 [森林探险开始!] (2) 秒
→ 重复执行
→ 如果 <(Tello 电池电量) < (25)> 那么
→ 说 [电量不足,返回基地!] (3) 秒
→ Tello 降落
→ 停止 [全部脚本]
→ 如果 <(Tello 距离) < (25)> 那么
→ 说 [�� 发现树木!右转!] (2) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ 将 [转弯次数] 增加 (1)
→ Tello 向前飞行 (20) 厘米
→ 等待 (2) 秒
→ 否则
→ Tello 向前飞行 (30) 厘米
→ 等待 (3) 秒
→ 将 [探索距离] 增加 (30)
→ 说 [已探索:] 和 (探索距离) 和 [厘米] (1) 秒
→ 如果 <(转弯次数) > (8)> 那么
→ 说 [�� 探险完成!] (3) 秒
→ Tello 降落
→ 停止 [全部脚本]
用到的编程知识:
• ✅ 循环(重复执行)
• ✅ 条件判断(如果距离 < 25 则转弯)
• ✅ 变量(探索距离、转弯次数)
• ✅ 传感器(距离、电池电量)
• ✅ 安全保护(电量低于 25% 自动降落)
项目亮点:
• 结合了条件判断和传感器数据,实现了”自动避障”
• 用变量记录了探索数据
• 有完善的安全保护机制
案例二:�� 无人机”节奏大师”
项目描述:无人机配合音乐节拍飞行,每个音符对应一个飞行动作和 LED 颜色变化。
功能列表:
• 起飞后配合《欢乐颂》旋律飞行
• 每个音符对应一个动作(前进、转弯、上升等)
• LED 颜色随节拍变化
• 高潮部分加入翻滚动作
• 结束时 LED 闪烁 + 降落
核心代码片段:
→ Tello 起飞
→ 将速度设为 (120) 拍/分钟
→ 设置 LED 颜色为 [红色]
→ 演奏音符 (64) (0.5) 拍 —— E
→ Tello 向前飞行 (15) 厘米
→ 设置 LED 颜色为 [橙色]
→ 演奏音符 (64) (0.5) 拍 —— E
→ Tello 向右旋转 (30) 度
→ 设置 LED 颜色为 [黄色]
→ 演奏音符 (65) (0.5) 拍 —— F
→ Tello 向前飞行 (15) 厘米
→ 设置 LED 颜色为 [绿色]
→ 演奏音符 (67) (0.5) 拍 —— G
→ Tello 向左旋转 (30) 度
→ 设置 LED 颜色为 [蓝色]
→ 演奏音符 (67) (0.5) 拍 —— G
→ Tello 向前飞行 (15) 厘米
→ 设置 LED 颜色为 [紫色]
→ 演奏音符 (65) (0.5) 拍 —— F
→ Tello 向上飞行 (10) 厘米
→ 设置 LED 颜色为 [白色]
→ 演奏音符 (64) (0.5) 拍 —— E
→ Tello 向下飞行 (10) 厘米
→ 设置 LED 颜色为 [红色]
→ 演奏音符 (62) (0.5) 拍 —— D
→ Tello 向前翻滚
→ 设置 LED 颜色为 [彩虹]
→ 演奏音符 (60) (1) 拍 —— C
→ 等待 (1) 秒
用到的编程知识:
• ✅ 音乐扩展(演奏音符)
• ✅ LED 控制(颜色变化)
• ✅ 基础飞行动作
• ✅ 顺序执行
• ✅ 循环(副歌部分重复)
项目亮点:
• 音乐、灯光、飞行三者完美同步
• 每个元素都有精心设计
• 观赏性很强
案例三:�� 无人机”飞行英雄”积分挑战赛
项目描述:设计一个综合性的积分飞行游戏,包含多种动作和挑战。
功能列表:
• 起飞后进入”挑战模式”
• 随机生成挑战动作(前进、转弯、翻滚、升降等)
• 完成动作获得积分
• 连续完成同种动作有额外奖励
• 电量低于 30% 时进入”紧急返航”模式
• 安全降落获得额外分数
• 显示最终得分和历史最高分
核心代码:
当 �� 被点击
→ 将 [分数] 设为 (0)
→ 将 [最高分] 设为 (0)
→ 将 [连续次数] 设为 (0)
→ 将 [上次动作] 设为 (0)
→ 显示变量 [分数]
→ 显示变量 [最高分]
→ 连接 Tello
→ 等待 (2) 秒
→ Tello 起飞
→ 等待 (2) 秒
→ 说 [�� 飞行英雄挑战赛开始!] (3) 秒
→ 重复执行
→ 如果 <(Tello 电池电量) < (30)> 那么
→ 说 [⚡ 电量警报!紧急返航!] (3) 秒
→ Tello 降落
→ 等待 (2) 秒
→ 将 [分数] 增加 (50)
→ 说 [安全降落 +50 分!] (2) 秒
→ 如果 <(分数) > (最高分)> 那么
→ 将 [最高分] 设为 (分数)
→ 说 [最终得分:] 和 (分数) 和 [分] (5) 秒
→ 停止 [全部脚本]
→ 将 [当前动作] 设为 (在 1 和 6 之间取随机数)
→ 如果 <(当前动作) = (1)> 那么
→ 说 [挑战:前进!] (1) 秒
→ Tello 向前飞行 (40) 厘米
→ 等待 (3) 秒
→ 将 [分数] 增加 (10)
→ 如果 <(当前动作) = (2)> 那么
→ 说 [挑战:右转!] (1) 秒
→ Tello 向右旋转 (90) 度
→ 等待 (2) 秒
→ 将 [分数] 增加 (15)
→ 如果 <(当前动作) = (3)> 那么
→ 说 [挑战:翻滚!] (1) 秒
→ Tello 向前翻滚
→ 等待 (2) 秒
→ 将 [分数] 增加 (30)
→ 如果 <(当前动作) = (4)> 那么
→ 说 [挑战:上升!] (1) 秒
→ Tello 向上飞行 (20) 厘米
→ 等待 (2) 秒
→ 将 [分数] 增加 (10)
→ 如果 <(当前动作) = (5)> 那么
→ 说 [挑战:下降!] (1) 秒
→ Tello 向下飞行 (20) 厘米
→ 等待 (2) 秒
→ 将 [分数] 增加 (10)
→ 如果 <(当前动作) = (6)> 那么
→ 说 [�� 特殊挑战:连续翻滚!] (2) 秒
→ 重复 (3) 次
→ Tello 向右翻滚
→ 等待 (2) 秒
→ 将 [分数] 增加 (50)
→ 如果 <(当前动作) = (上次动作)> 那么
→ 将 [连续次数] 增加 (1)
→ 如果 <(连续次数) > (1)> 那么
→ 将 [分数] 增加 ((连续次数) × (10))
→ 说 [连续奖励 +] 和 ((连续次数) × (10)) 和 [分!] (2) 秒
→ 否则
→ 将 [连续次数] 设为 (1)
→ 将 [上次动作] 设为 (当前动作)
→ 说 [当前分数:] 和 (分数) (1) 秒
→ 如果 <(Tello 高度) > (150)> 那么
→ Tello 向下飞行 (20) 厘米
→ 等待 (2) 秒
→ 如果 <(Tello 高度) < (40)> 那么
→ Tello 向上飞行 (15) 厘米
→ 等待 (2) 秒
用到的编程知识:
• ✅ 循环(重复执行)
• ✅ 条件判断(多个 if-else)
• ✅ 变量(分数、最高分、连续次数等)
• ✅ 随机数
• ✅ 传感器(电量、高度)
• ✅ 安全保护
项目亮点:
• 融合了所有学过的编程知识
• 游戏性强,有积分、奖励、最高分等机制
• 安全机制完善
10.4 编程思维总结
恭喜你走到这里!在这一章的最后,让我们回顾一下学习编程过程中培养的重要思维能力。
计算思维(Computational Thinking)
计算思维不是”像计算机一样思考”,而是用解决问题的方法来思考问题。它包括四个核心能力:
�� 能力一:分解(Decomposition)
把一个大的、复杂的问题拆分成小的、简单的部分。
例子:
• “设计编队表演”太大了 → 拆分成”设计队形””编写每架机的路线””添加音乐””测试修改”
• “画一个房子”太大了 → 拆分成”画墙壁””画屋顶””画门””画窗户”
�� 记住:再复杂的问题,拆成小块后,每一小块都很简单!
�� 能力二:模式识别(Pattern Recognition)
在问题中找到重复出现的规律或模式。
例子:
• 飞正方形:发现”前进+转弯”重复了 4 次 → 用循环
• 传感器数据:发现”检查→判断→行动”重复出现 → 用条件判断
• 编队飞行:发现每架机的相对动作相同 → 提取公共代码
�� 记住:找到规律就能简化问题!循环就是模式识别的最好例子。
�� 能力三:抽象(Abstraction)
忽略不重要的细节,抓住问题的本质。
例子:
• 设计迷宫飞行程序时,不需要关心墙壁是什么颜色的,只需要关心”哪里有障碍物”
• 编队飞行时,不需要关心每架无人机的具体型号,只需要关心”它在编队中的位置”
�� 记住:抽象就是”抓住重点,忽略细节”。就像画地图不需要画出每一棵树。
�� 能力四:算法(Algorithm)
设计一步一步的解决方案。
例子:
• 做早餐的算法:① 起床 → ② 刷牙 → ③ 煮面 → ④ 等水烧开 → ⑤ 下面条 → ⑥ 等 3 分钟 → ⑦ 盛出来
• 无人机起飞的算法:① 检查电量 → ② 检查环境 → ③ 连接 WiFi → ④ 起飞 → ⑤ 悬停稳定 → ⑥ 执行任务
�� 记住:算法就是”做事的步骤清单”。你写的每一段 Scratch 程序都是一个算法!
编程思维的日常生活应用
计算思维不只用在编程中,它在日常生活中也很有用:
| 思维能力 | 在编程中 | 在生活中 |
| 分解 | 把大程序拆成小模块 | 把大作业分成小任务 |
| 模式识别 | 发现重复的代码用循环 | 发现每天重复的习惯可以优化 |
| 抽象 | 忽略无关细节 | 考试时抓住题目重点 |
| 算法 | 编写程序步骤 | 按照菜谱做菜 |
10.5 给未来创客的话
你已经走了很远了!
让我们看看你的成长之路:
第 1 章:认识无人机 → 知道了无人机是什么
第 2 章:学习 Scratch → 学会了”搭积木”编程
第 3 章:连接无人机 → 第一次用代码控制飞行
第 4 章:循环的力量 → 让代码变简洁
第 5 章:条件判断 → 让无人机学会思考
第 6 章:变量与计分 → 让程序学会记忆
第 7 章:传感器探险 → 让无人机感知世界
第 8 章:拍照与识别 → 让无人机有了”眼睛”
第 9 章:编队飞行 → 让多架无人机协作
第10章:创意项目 → 综合运用,展示实力
从”完全不知道编程是什么”到”能用代码控制无人机编队飞行”,你已经完成了一次了不起的学习旅程!
未来的路
编程和无人机的世界非常大,你现在学到的只是冰山一角。如果你对这方面感兴趣,未来还有很多可以探索的方向:
�� Python 编程
Python 是更强大的编程语言,可以做出比 Scratch 更复杂的项目。用 Python 可以控制无人机做更高级的动作,甚至可以写人工智能程序!
�� 人工智能(AI)
AI 让计算机学会”思考”——识别人脸、理解语言、做出决策。如果你对第 8 章的人脸识别感兴趣,可以进一步学习 AI 知识!
�� 机器人技术
无人机是一种”会飞的机器人”。除了无人机,还有很多种类的机器人——轮式机器人、机械臂、人形机器人……每一种都很有趣!
�� 3D 打印与创客
你可以用 3D 打印机制作无人机的外壳、保护罩、创意配件。把你的设计从电脑变成实物!
�� 参加比赛
有很多适合青少年的编程和无人机比赛,比如:
• 全国青少年无人机竞赛
• Scratch 创意编程大赛
• 各类 STEM 创新挑战赛
参加比赛不仅能检验你的水平,还能认识很多志同道合的小伙伴!
保持好奇心
�� 码码的寄语
小朋友,编程最重要的不是记住多少积木、多少语法,而是保持好奇心。
每当你看到一个有趣的东西,问问自己:”这是怎么做的?我能做一个吗?”
每当你遇到一个问题,不要急着放弃,想想:”有没有别的方法?能不能拆成更小的问题?”
每当你完成一个项目,想想:”还能怎么改进?有没有更酷的想法?”
好奇心是创造力的源泉,而创造力是改变世界的力量。
你已经证明了自己有能力学习编程、控制无人机、创造有趣的项目。这只是开始——未来的世界等着你去探索和创造!
小飞和码码的故事(结局)
【小飞和码码的故事·终章】
阳光洒在书桌上,小飞看着眼前正在平稳飞行的 Tello EDU,嘴角露出了微笑。
“码码,你知道吗?一个月前我还不知道编程是什么。现在我能用代码让无人机飞正方形、翻跟头、甚至编队表演!”
“你进步很快!”码码的屏幕上显示着大大的笑脸。
“我决定了!”小飞的眼睛里闪着光,”我以后要造一架真正有用的无人机!帮农民伯伯喷洒农药,帮救援队搜救迷路的人,帮科学家去那些危险的地方探险!”
“很好的梦想!”码码说,”记住——每一个伟大的发明,都是从’如果…会怎样’开始的。”
“嗯!我会一直问’如果…会怎样’,一直创造,一直学习!”
“那就继续加油吧!”码码的屏幕上出现了一行字——
“编程的世界没有终点,每一行代码都是新的起点。”
[配图:小飞和码码一起看着无人机在阳光中飞行的温馨画面]
�� 本章小结
✅ 知识清单
| 知识点 | 你学会了吗? |
| 项目设计五步法(选题→设计→编程→测试→展示) | ⬜ |
| 创意项目灵感(10 个方向) | ⬜ |
| 项目设计文档的编写 | ⬜ |
| 编程原则(分块编写、先简后繁) | ⬜ |
| 测试方法与测试清单 | ⬜ |
| 展示方法与展示内容 | ⬜ |
| 计算思维四大能力(分解、模式识别、抽象、算法) | ⬜ |
| 编程思维在日常生活中的应用 | ⬜ |
�� 本章重点回顾
• 项目设计五步法是做任何项目的基本流程。
• 好的选题应该是感兴趣的、能做到的、有意义的。
• 设计先行——先想清楚再动手,不要急着写代码。
• 分块编程、逐步测试是最有效的编程方法。
• 计算思维包括分解、模式识别、抽象、算法四大能力。
• 保持好奇心是持续进步的关键。
�� 毕业设计任务
任务:设计并完成一个综合创意项目!
要求:
• 提交项目设计文档(包括名称、描述、功能列表、流程图)
• 提交完整的 Scratch 程序
• 提交至少 3 次飞行测试的记录(照片或视频)
• 写一篇 300 字左右的项目总结(包括遇到的困难和解决方法)
• 准备 3 分钟的课堂展示
评分标准:
| 评分项 | 说明 | 分值 |
| 创意性 | 项目是否有新意 | 20 分 |
| 完整性 | 是否包含设计、编程、测试、展示 | 20 分 |
| 技术运用 | 是否综合运用了所学知识 | 20 分 |
| 安全性 | 是否有安全措施 | 15 分 |
| 展示效果 | 现场展示是否清晰流畅 | 15 分 |
| 文档质量 | 设计文档和总结是否完整 | 10 分 |
附录
附录 A:Scratch 积木速查表
运动类(蓝色)
| 积木 | 说明 |
| 移动 (10) 步 | 角色向前走 |
| 右转 (15) 度 | 角色向右转 |
| 左转 (15) 度 | 角色向左转 |
| 移到 x: (0) y: (0) | 移到指定坐标 |
| 在 (1) 秒内滑行到 x: (0) y: (0) | 缓慢滑行到指定位置 |
外观类(紫色)
| 积木 | 说明 |
| 说 [Hello!] (2) 秒 | 角色说话 |
| 将大小设为 (100) % | 设置角色大小 |
| 将 [颜色] 效果增加 (25) | 改变颜色效果 |
| 显示 / 隐藏 | 显示或隐藏角色 |
| 下一个造型 | 切换到下一个造型 |
声音类(粉色)
| 积木 | 说明 |
| 播放声音 [喵] | 播放一个声音 |
| 将音量设为 (100) % | 设置音量 |
事件类(黄色)
| 积木 | 说明 |
| 当 �� 被点击 | 程序开始 |
| 当按下 [空格] 键 | 按键触发 |
| 广播 [消息1] | 发送消息 |
| 当接收到 [消息1] | 接收消息 |
控制类(橙色)
| 积木 | 说明 |
| 等待 (1) 秒 | 暂停等待 |
| 重复 (10) 次 | 循环 N 次 |
| 重复执行 | 无限循环 |
| 如果 <条件> 那么 | 条件判断 |
| 如果 <条件> 那么 … 否则 | 条件判断(带否则) |
| 停止 [全部脚本] | 停止所有程序 |
侦测类(红色)
| 积木 | 说明 |
| 碰到 [边缘]? | 检测碰撞 |
| 碰到颜色 [红色]? | 检测颜色 |
| 按下 [空格] 键? | 检测按键 |
| 在 (1) 和 (10) 之间取随机数 | 生成随机数 |
运算类(绿色)
| 积木 | 说明 |
| ( ) + ( ) | 加法 |
| ( ) – ( ) | 减法 |
| ( ) × ( ) | 乘法 |
| ( ) / ( ) | 除法 |
| ( ) > ( ) | 大于比较 |
| <( ) 且 ( )> | 与运算 |
| <( ) 或 ( )> | 或运算 |
变量类(天蓝色)
| 积木 | 说明 |
| 将 [变量] 设为 (0) | 赋值 |
| 将 [变量] 增加 (1) | 增加 |
| 显示变量 [变量] | 显示 |
| 隐藏变量 [变量] | 隐藏 |
附录 B:Tello EDU 指令速查表
基础飞行指令
| 指令 | 参数范围 | 说明 |
| 起飞 | — | 起飞悬停(约 1m 高) |
| 降落 | — | 降落着地 |
| 向前飞行 | 20-500 厘米 | 向机头方向飞行 |
| 向后飞行 | 20-500 厘米 | 向机尾方向飞行 |
| 向左飞行 | 20-500 厘米 | 向左侧飞行 |
| 向右飞行 | 20-500 厘米 | 向右侧飞行 |
| 向上飞行 | 20-500 厘米 | 升高 |
| 向下飞行 | 20-500 厘米 | 降低 |
| 向左旋转 | 1-360 度 | 逆时针旋转 |
| 向右旋转 | 1-360 度 | 顺时针旋转 |
翻滚指令
| 指令 | 说明 |
| 向前翻滚 | 向机头方向翻滚 |
| 向后翻滚 | 向机尾方向翻滚 |
| 向左翻滚 | 向左侧翻滚 |
| 向右翻滚 | 向右侧翻滚 |
传感器数据
| 数据 | 单位 | 说明 |
| 高度 | 厘米 | 当前飞行高度 |
| 距离 | 厘米 | 到地面的距离 |
| 飞行时间 | 秒 | 已飞行时间 |
| 电池电量 | % | 剩余电量百分比 |
| 温度 | °C | 机身温度 |
| 气压 | hPa | 大气压力 |
| 加速度 x/y/z | — | 三轴加速度 |
| 速度 x/y/z | cm/s | 三轴速度 |
Tello EDU 技术参数
| 参数 | 数值 |
| 重量 | 约 80g(含电池) |
| 尺寸 | 98 × 92.5 × 41 mm |
| 最大飞行距离 | 约 100m |
| 最大飞行速度 | 8m/s |
| 最大飞行高度 | 30m |
| 续航时间 | 约 13 分钟 |
| 电池容量 | 1100mAh |
| 摄像头 | 720P 照片 / 1080P 视频 |
| WiFi | 2.4GHz |
| 悬停精度 | 垂直 ±0.1m,水平 ±0.3m |
附录 C:常见问题解答
Q1:Scratch 连不上 Tello 怎么办?
A:检查以下几点:
• Tello 是否已开机(指示灯是否闪烁)
• 电脑是否已连接到 Tello 的 WiFi(TELLO-XXXXXX)
• Tello Scratch Link 是否在后台运行
• 尝试关闭防火墙或添加 Scratch 到白名单
• 重启 Tello 和 Scratch
Q2:无人机飞不稳怎么办?
A:可能的原因:
• 螺旋桨没有安装正确(检查 A/B 标记)
• 飞行环境有风(Tello 不适合在户外有风环境飞行)
• 电池电量不足(充满电再试)
• 飞行区域太小(需要至少 2m × 2m 的空间)
Q3:程序执行到一半无人机突然降落?
A:可能是以下原因:
• 电量不足——Tello 电量过低时会自动降落保护
• 连接中断——WiFi 信号不稳定导致连接断开
• 超时保护——长时间没有发送指令,Tello 会自动降落
• 信号干扰——附近有其他 WiFi 设备干扰
Q4:怎么让无人机飞得更精确?
A:
• 在室内无风环境飞行
• 使用较小的飞行距离(30-50cm 比 200cm 更精确)
• 每个动作之间加足够的等待时间
• 飞行前确保电量充足
• 多次测试,取最佳结果
Q5:编队飞行时 WiFi 互相干扰怎么办?
A:
• 使用 AP 模式,所有 Tello 连接同一个路由器
• 增加无人机之间的距离(至少 1.5m)
• 减少同时通信的频率
• 使用专门的编队控制软件
附录 D:安全指南汇总
飞行前检查清单
• [ ] 螺旋桨安装正确(A 对 A,B 对 B)
• [ ] 保护罩已安装并固定
• [ ] 电池电量充足(≥50%)
• [ ] 飞行区域已清理(无障碍物)
• [ ] 飞行区域足够大(≥2m × 2m)
• [ ] 周围没有围观人员(至少 1m 距离)
• [ ] 头发扎好,衣物整齐
• [ ] 家长或老师在场
飞行中注意事项
• [ ] 不要让手指靠近旋转的螺旋桨
• [ ] 注意观察电量(<30% 准备降落,<20% 立即降落)
• [ ] 注意机身温度(过烫时休息)
• [ ] 不要在头顶上方长时间飞行
• [ ] 不要在水源附近飞行
飞行后注意事项
• [ ] 等待电机冷却后再充电
• [ ] 不要在无人看管时充电
• [ ] 使用 5V/1A 充电器
• [ ] 电池不要放在高温环境中
• [ ] 长时间不使用时,电池保持 50% 左右电量存放
附录 E:术语表
| 术语 | 英文 | 解释 |
| 无人机 | Drone / UAV | 无人驾驶飞行器 |
| 旋翼 | Rotor | 旋转的桨叶,提供升力 |
| 螺旋桨 | Propeller | 旋翼的叶片 |
| 悬停 | Hover | 在空中保持不动 |
| 编程 | Programming | 用代码告诉计算机做什么 |
| 程序 | Program | 一组指令的集合 |
| 积木 | Block | Scratch 中的编程元素 |
| 循环 | Loop | 重复执行一段代码 |
| 条件判断 | Condition | 根据条件决定做什么 |
| 变量 | Variable | 存放数据的”盒子” |
| 传感器 | Sensor | 感知环境信息的器件 |
| ToF | Time of Flight | 飞行时间(测距技术) |
| IMU | Inertial Measurement Unit | 惯性测量单元 |
| WiFi | Wireless Fidelity | 无线通信技术 |
| 算法 | Algorithm | 解决问题的步骤 |
| 调试 | Debug | 找出并修复程序中的错误 |
| 扩展 | Extension | Scratch 的额外功能包 |
�� 后记
亲爱的小朋友,恭喜你读完了这本书!
从翻开第一页时的”无人机是什么”,到现在能够设计自己的飞行创意项目,你已经完成了一段了不起的旅程。
记住,编程不是目的,而是一种工具——一种帮你实现创意、解决问题、探索世界的工具。无人机也不只是玩具,它是一个让你把想象力变成现实的载体。
未来,你可以用编程做更多更多有趣的事情——做游戏、做动画、做机器人、做网站、做 APP……只要你愿意学,没有什么是做不到的。
保持好奇心,保持勇气,保持对世界的热爱。
你已经是一个小小的创客了。
去创造属于你自己的未来吧! ��
—— 全书完 ——









暂无评论内容