arduino for循环 时间控制?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arduino for循环 时间控制?相关的知识,希望对你有一定的参考价值。

下面是段正在使用的arduino的代码,执行完成要20多秒,怎么改才能2秒跑完?
功能是一张128*64的BMP,从右往左到正中满屏 ,屏为128*64的屏
我代码里的延时好像起不到作用。
for (int x=106;x>-16;x--)

int k=x+18;
u8g2.drawXBMP(x,0,16,16,feiji); //16*16 图标
u8g2.drawXBMP(k,0,128,64,xx); //128*64 图标
u8g2.sendBuffer(); //显示在屏幕上
delay(1);

u8g2.clearBuffer();
//清空显示

1,你这个代码不会是20秒才能跑完的,一定是有其他部分在起作用。要查到真相,你要把全部代码发上才能分析清楚的。
2,u8g2库很费资源,这么大的图,如果是arduino uno的板子,静态显示也费劲,别说是移动了…
3,想达到图片移动显示效果,用显示屏自带的更底层的库去写,不要用u8g2,哪怕是用u8g也比它强。追问

代码里的意思,就是一个像素,一个像素的移动图片的位置,然后清掉,再下一个格子开始的位置去显示它,再清除,如此反复,代码也不复杂,可能真是如你所说,u8g2的库,导致走完的时间长了,只是不知道怎么去控制这个时间。

追答

如果你不需要精确控制他的位置。可以一步走十几个像素。这样的话速度可能提高了许多。

参考技术A 是的,是的,这是循环时间控制了他一个变量,所以呢,我们根据他的一个公司近就能够得出他的时间控制的一个恶循环的一个呃条件。 参考技术B 显示程序里面的delay函数时间偏长,你可以减少试试。 参考技术C Arduino
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。

它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。

Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是通过 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。[1]

外文名
Arduino
创始人
Massimo Banzi
分类
计算机技术->微型计算机
主控芯片
AVR单片机、ARM芯片
开发环境
Arduino IDE
快速
导航
平台特点

功能

硬件组成

版权与付费

代码示例
发展历程
Massimo Banzi之前是意大利Ivrea一家高科技设计学校的老师。他的学生们经常抱怨找不到便宜好用的微控制器。 2005年冬天, Massimo Banzi跟David Cuartielles讨论了这个问题。 David Cuartielles是一个西班牙籍晶片工程师,当时在这所学校做访问学者。两人决定设计自己的电路板,并引入了Banzi的学生David Mellis为电路板设计编程语言。两天以后,David Mellis就写出了程式码。又过了三天,电路板就完工了。Massimo Banzi喜欢去一家名叫di Re Arduino的酒吧,该酒吧是以1000年前意大利国王Arduin的名字命名的。为了纪念这个地方,他将这块电路板命名为Arduino。
随后Banzi、Cuartielles和Mellis把设计图放到了网上。版权法可以监管开源软件,却很难用在硬件上,为了保持设计的开放源码理念,他们决定采用Creative Commons(CC)的授权方式公开硬件设计图。在这样的授权下.任何人都可以生产电路板的复制品,甚至还能重新设计和销售原设计的复制品。人们不需要支付任何费用,甚至不用取得Arduino团队的许可。然而,如果重新发布了引用设计,就必须声明原始Arduino团队的贡献。如果修改了电路板,则最新设计必须使用相同或类似的Creative Commons(CC)的授权方式,以保证新版本的Arduino电路板也会一样是自由和开放的。被保留的只有Arduino这个名字,它被注册成了商标,在没有官方授权的情况下不能使用它。
Arduino发展十几年,已经有了多种型号及众多衍生控制器推出。[2]
平台特点
跨平台
Arduino IDE可以在Windows、Macintosh OS X、Linux三大主流操作系统上运行,而其他的大多数控制器只能在Windows上开发。
简单清晰
Arduino IDE基于processing IDE开发。对于初学者来说,极易掌握,同时有着足够的灵活性。Arduino语言基于wiring语言开发,是对 avr-gcc库的二次封装,不需要太多的单片机基础、编程基础,简单学习后,你也可以快速的进行开发。
开放性
Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应代码。
发展迅速
Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。Arduino简单的开发方式使得开发者更关注创意与实现,更快的完成自己的项目开发,大大节约了学习的成本,缩短了开发的周期。
因为Arduino的种种优势,越来越多的专业硬件开发者已经或开始使用Arduino来开发他们的项目、产品;越来越多的软件开发者使用Arduino进入硬件、物联网等开发领域;大学里,自动化、软件,甚至艺术专业,也纷纷开展了Arduino相关课程。[3]
功能
可以快速使用Arduino与Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider等软件结合,作出互动作品。 Arduino可以使用现有的电子元件例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。 Arduino也可以独立运行,并与软件进行交互,例如: Macromedia Flash, Processing, Max/MSP, Pure Data, VVVV或其他互动软件。 Arduino的IDE界面基于开放源代码,可以免费下载使用,开发出更多令人惊艳的互动作品。[4] [5]
硬件组成
主板
Arduino的型号有很多,如
共2张
Arduino各种型号图
Arduino Uno
Arduino Nano
Arduino LilyPad
Arduino Mega 2560
Arduino Ethernet
Arduino Due
Arduino Leonardo
ArduinoYún[6] [7]

控制流程之for循环

控制流程之for循环

一、语法

为什么有了while循环,还需要有for循环呢?因为字典也有取多个值的需求,字典可能有while循环无法使用了,for循环的循环次数受限于容器类型的长度,而while循环的循环次数需要自己控制。for循环也可以按照索引取值。

name_list = ['nick', 'jason', 'tank', 'sean']

n = 0
while n < 4:
    # while n < len(name_list):
    print(name_list[n])    #变量名后面的方括号可直接规定范围
    n += 1

nick
jason
tank
sean

也可用for循环(for循环也就是把列表中的元素循环一遍,然后赋值给i,所以有多少个元素就循环多少次)

name_list = ['nick', 'jason', 'tank', 'sean']
for i in name_list:
    print(i)

nick
jason
tank
sean

也可用fo

用 for循环字典(注意取出的是 key)

info = 'name': 'nick', 'age': 19

for item in info:
    # 取出info的keys
    print(item)

此处提到一个函数语法

python range() 函数可创建一个整数列表,一般用在 for 循环中

range(开始,停止,步长) #顾头不顾尾

列如:

>>>range(10)        # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11)     # 从 1 开始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5)  # 步长为 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3)  # 步长为 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
for i in range(0, 10):
    print(i)

1
2
3
4
5
6
7
8
9

for循环按照索引号取值

以下是 range 在 for 中的使用,循环出runoob 的每个字母:

x = 'runoob'
    for i in range(len(x)) :
        print(x[i])

u
n
o
o
b

二、for + break

for循环跳出本次循环,进入下一个循环

name_list = ['nick', 'jason', 'tank', 'sean']
for name in name_list:
    if name == 'jason':
        continue
    print(name)

nick

三、for + continue

for循环调出本次循环,进入下一次循环

# for+continue
name_list = ['nick', 'jason', 'tank', 'sean']
for name in name_list:
    if name == 'jason':
        continue
    print(name)

nick
tank
sean

四、for循环嵌套

外层循环循环一次,内层循环循环所有的。

for i in range(3):
    print(f'-----:i')
    for j in range(2):
        print(f'*****:j')

-----:0
**:0
**:1
-----:1
**:0
**:1
-----:2
**:0
**:1

五、for + else

for循环没有break的时候触发else内部代码块

# for+else
name_list = ['nick', 'jason', 'tank', 'sean']
for name in name_list:
    print(name)
else:
    print('for循环没有被break中断掉')

nick
jason
tank
sean
for循环没有break中断掉

六、for循环实现loading

import time

print('Loading', end='')
for i in range(6):
    print(".", end='')
    time.sleep(0.2)  #sleep 为一个函数,为时间延迟0.2秒

Loading......

以上是关于arduino for循环 时间控制?的主要内容,如果未能解决你的问题,请参考以下文章

arduino呼吸灯流水编程问题

Jmeter——for循环控制器和if逻辑控制器

Python学习————流程控制之for循环

JavaScript的流程控制之for循环语句和while循环语句

流程控制之for循环

python 开发 -- 08流程控制之for循环