想请问大佬们,这段代码是什么意思-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 591|回复: 2

[已解决] 想请问大佬们,这段代码是什么意思

[复制链接]
发表于 2022-4-20 23:38 | 显示全部楼层 |阅读模式
lcd.print("Time:  ");
String t = "";
t = rtc.getTimeStr();
t1 = t.charAt(0)-48;
t2 = t.charAt(1)-48;
t3 = t.charAt(3)-48;
t4 = t.charAt(4)-48;
t5 = t.charAt(6)-48;
t6 = t.charAt(7)-48;

lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Date: ");
lcd.print(rtc.getDateStr());

if (t1==r[0] && t2==r[1] && t3==r[2] && t4==r[3]&& t5<1 && t6<3 && feed==true)
{
  servo_test.write(100);                   //command to rotate the servo to the specified angle
   delay(400);   
  servo_test.write(55);
  feed=false;
}
发表于 2022-4-21 00:37 | 显示全部楼层
本帖最后由 topdog 于 2022-4-21 03:00 编辑

年老眼花,字要大些......

//这是用42个舵机来显示时间的软体程序

//引入LiquidCrystal库,支持多款LCD屏幕模块。这里推测使用的是最常见的LCD1602。
//已经建立lcd实体对象。
//lcd在屏幕上打印显示Time:
lcd.print("Time:  ");

//建立字符串类型 t 的存储空间。
String t = "";

//使用rtc库来驱动ds1307,ds3231,pcf8563等模块设置时间
//已经建立RTC (Real Time Clock) 实时时钟对象rtc
//rtc使用类函数getTimeStr(),获取时间的字符串给t赋值。
t = rtc.getTimeStr();


//参考串口接收十六进制代码控制点灯-Arduino中文社区 - Powered by Discuz!
//使用字符串处理函数中的字符截取函数charAt(),截取字节,为字节类型。charAt()应用时字符在字符串中的实际位置截取。
//ASCII编码是由二进制表示的,譬如'0',二进制就是0011 0000,用十进制表示就是48。
//再结合ASCII编码的序列计算出十进制值:把t1至t8转化成整数类型十进制的过程,这是由编译器自动数据转化完成的,但是你要知道t是字符串类型,t.charAt()是字符类型,字符类型减去整数48的过程是编译器把字符翻译成ASCII码再计算的。
//t1小时十位,t2小时个位 ,t3分钟十位, t4 分钟个位,t5秒钟十位, t6秒钟个位。
// 第3,6位为“:”不需要。
t1 = t.charAt(0)-48;
t2 = t.charAt(1)-48;
t3 = t.charAt(3)-48;
t4 = t.charAt(4)-48;
t5 = t.charAt(6)-48;
t6 = t.charAt(7)-48;

//lcd在屏幕上打印显示时间。输出格式是24小时制,例如12:14:30。
lcd.print(rtc.getTimeStr());
//lcd类函数setCursor()的方法来重新定位光标。移动光标,调用setCursor()设置行和列的位置。
lcd.setCursor(0,1);
//lcd在屏幕上打印显示Date:
lcd.print("Date: ");

//lcd打印rtc使用函数getDateStr(),获取日期的字符串。
lcd.print(rtc.getDateStr());

//使用Servo库,用Arduino控制舵机(伺服电机)。常见的Arduino舵机有两种,一种舵机轴可以旋转180度,还有一种舵机轴可以连续旋转。这里使用的是前者。
//一个数字用七个舵机呈现,r数组表示0至9的数字。
//前部程序没见到r,推测为整数类型的一维数组,譬如: r[10] ={0,1,2,3,4,5,6,7,8,9}; 0是r[0],序列号为0,数组的序列号起始位是0。
//&&是逻辑运算符之与:只有在小括号里面的七段条件要素都为真时才为真,花括号里面程序才会运行。
//关系运算符 等价符号==  、 小于符号<  。
//t1==r[0] ,表示 t1等价 r[0]  ,假如 t1为0,r[0]为0 ,那么 t1等价 r[0] ,为真。
//feed前面没有看到声明,应该是布尔数类型标识状态或者标志位,花括号里面feed赋值为false;if()里面运行的条件就不成立了。
if (t1==r[0] && t2==r[1] && t3==r[2] && t4==r[3]&& t5<1 && t6<3 && feed==true)
{
//已经建立舵机实体对象servo_test,命令旋转伺服到指定100角度
  servo_test.write(100);   
//阻塞性延时400毫秒(ms)               
   delay(400);   
  servo_test.write(55);
//改变标志位feed,赋值假。
  feed=false;
}




 楼主| 发表于 2022-4-21 19:46 | 显示全部楼层
topdog 发表于 2022-4-21 00:37
年老眼花,字要大些......

//这是用42个舵机来显示时间的软体程序

谢谢您,我仔细看看
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:31 , Processed in 0.080565 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表