极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9348|回复: 5

跪求大神 帮小弟看看

[复制链接]
发表于 2013-4-19 23:20:39 | 显示全部楼层 |阅读模式
int sensorValue0 = analogRead(A0);
int sensorValue1 = analogRead(A1);
int sensorValue2 = analogRead(A2);
int sensorValue3 = analogRead(A3);
int sensorValue4 = analogRead(A4);
int sensorValue5 = analogRead(A5);
double voltage0=sensorValue0*(1.1/1023*3.01);
double voltage1=sensorValue1*(1.1/1023*3.01);
double voltage2=sensorValue2*(1.1/1023*3.01);
double voltage3=sensorValue3*(1.1/1023*3.01);
double voltage4=sensorValue4*(1.1/1023*3.01);
double voltage5=sensorValue5*(1.1/1023*3.01);
Serial.print("Battery 1: ");
Serial.print(voltage0);
Serial.print("   Battery 2: ");
Serial.print(voltage1);
Serial.print("   Battery 3: ");
Serial.print(voltage2);
Serial.print("   Battery 4: ");
Serial.print(voltage3);
Serial.print("   Battery 5: ");
Serial.print(voltage4);
Serial.print("   Battery 6: ");
Serial.println(voltage5);
这种代码 怎么用for循环精简呢?
求解
回复

使用道具 举报

发表于 2013-4-19 23:44:50 | 显示全部楼层

  1. struct {
  2.     uint8_t pin;
  3.     const char *str;
  4. } list[] =
  5. {
  6.     {A0, "Battery 1: "},
  7.     {A1, "   Battery 2: "},
  8.     {A2, "   Battery 3: "},
  9.     {A3, "   Battery 4: "},
  10.     {A4, "   Battery 5: "},
  11.     {A5, "   Battery 6: "},
  12. };

  13. for(uint8_t i = 0; i < sizeof(list) / sizeof(list[0]); i++)
  14. {
  15.     int sensorValue = analogRead(list[i].pin);
  16.     double voltage  = sensorValue * (1.1 / 1023  * 3.01);
  17.     Serial.print(list[i].str);
  18.     Serial.print(voltage);
  19. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-19 23:45:59 | 显示全部楼层
histamine 发表于 2013-4-19 23:44

感谢先  其次是太复杂了  有点难以学习 呵呵
回复 支持 反对

使用道具 举报

发表于 2013-4-19 23:48:09 | 显示全部楼层
缪飞虎 发表于 2013-4-19 23:45
感谢先  其次是太复杂了  有点难以学习 呵呵

用C语言写程序经常会用到这种将数据和逻辑分离的方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-19 23:52:48 | 显示全部楼层
histamine 发表于 2013-4-19 23:48
用C语言写程序经常会用到这种将数据和逻辑分离的方法

新问题   串口输出的值 每一段被换行了
可以不用一句一句的方式让它完整的显示  Battery 1-Battery 6么?
回复 支持 反对

使用道具 举报

发表于 2013-4-20 11:36:31 | 显示全部楼层
缪飞虎 发表于 2013-4-19 23:52
新问题   串口输出的值 每一段被换行了
可以不用一句一句的方式让它完整的显示  Battery 1-Battery 6么? ...

不好意思,理解能力比较差,没理解您的意思

仔细看了下1L的源代码,最后一行是
Serial.println(voltage5);

所以在我那个代码for循环结束后在加一行Serial.println("");才能使得每次输出Battery 1 - Battery 6之后换一行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-14 08:59 , Processed in 0.055107 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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