1 前言
使用的是mind+,所以本文内容实际上均使用了mpyhton库,学习arduino参见9.3
之前的几章都是基于mpython写的,由于蓝牙未找到python的代码,尝试使用arduinoC编写.
注意,本章是使用了mpython的接口,实际上还是基于python编写,基于cpp的参见【掌控板】9.3、arduino环境搭建及led点亮
本文主要内容是:
- 数字字符的显示
- 串口打印
参考文章:
Arduino编程基础(二)——C\C++语言基础(上)
掌控板小实验:光控灯
掌控板小实验:声控灯
2 代码
//--------------------------------------------------
// func1: 显示数字及字符串
// 存疑:为什么使用cpp屏幕显示有闪频,而python没有,是不是扫描频率比较低,肉眼可以看到
//
//--------------------------------------------------
#include <MPython.h>
long int mind_n_a;
char * a[10]= {"aaaaa"};
String b ="bbbb";
int light_num = 0;
// 主程序开始
void setup() {
mPython.begin();
//Serial
Serial.begin(115200);
}
void loop() {
display.setCursorLine(1);
mind_n_a = 11;
display.printLine(mind_n_a); // in_param is long int
display.setCursorLine(2);
display.printLine(sound.read());
display.setCursorLine(3);
display.printLine(*a);
display.setCursorLine(4);
display.printLine(b);
Serial.print(light_num);
if (light_num %2 == 1)
{
rgb.write(0, 0x0000FF);
Serial.print(" light open\n");
}
else
{
rgb.write(0, 0x000000);
Serial.print(" light close\n");
}
Serial.print("loop end\n");
delay(1000);
light_num ++;
}
3 结果
4 分析
4.1 语言差异
注意两点:
- c语言和python的差异,c需要在代码行尾加上";"
- c使用参数时需要定义该参数的类型
4.2 代码主体
主体代码由2部分组成,初始化函数以及循环函数.
void setup() {
}
void loop() {
}
4.3 重点函数----显示
重点关注三个函数
光标设置在第一行
display.setCursorLine(1);
在显示屏上打印数据
display.printLine(mind_n_a);
点亮led灯
rgb.write(1, 0x0000FF);
其中0是led灯的序号,目前掌控板是0-2,三个led灯
0x0000FF是颜色参数,红绿蓝,其中FF是蓝色的最大亮度.可以尝试修改为0X00FF00,看下颜色是否为绿色.
参见代码,我定义了三种类型的变量,分别时整形int, 字符型char ,字符串String.
display.printLine()函数均可以打印出来.看来源码中应该定义了同名函数,入参不同.
4.4 串口打印
初始化串口
Serial.begin(115200);
这里115200时波特率,对应的时截图里右下角的波特率设置,如果代码中的波特率与串口设置的波特率不同,则窗口无法显示打印log,可以尝试将串口波特率设置为4800,会发现没有log打印出来.
打印串口log
Serial.print(“loop end\n”);
Serial.print(light_num);
注意截图最下方的红框,有两个图标,第一个图标是打开串口,第二个图标是关闭串口.
5 小结
存疑:为什么使用c写道时候屏幕显示有闪频,而python没有,是不是扫描频率比较低,肉眼可以看到刷新异常.