gpt4 book ai didi

c - Arduino 电机速度 LED(Led 条形图代码)

转载 作者:太空宇宙 更新时间:2023-11-04 08:57:12 27 4
gpt4 key购买 nike

嘿,我 wounderd 如果有什么。我可以继续阅读以改进此代码的突击队吗?至少它现在可以工作,但需要做一些微调:)

如您所见,代码非常困惑且难以阅读。希望有人能帮忙。

提前谢谢。

int potPin = 0;
int motorPin = 11;
int potValue = 0;
int on = 0;


int L2 = 2;
int L3 = 3;
int L4 = 4;
int L5 = 5;
int L6 = 6;
int L7 = 7;
int L8 = 8;
int L9 = 9;
int L10 = 10;


int M2 = 40;
int M3 = 75;
int M4 = 100;
int M5 = 125;
int M6 = 150;
int M7 = 175;
int M8 = 200;
int M9 = 225;
int M10 = 250;

void setup()
{
pinMode( motorPin,OUTPUT);
pinMode( potPin, INPUT);


pinMode (L2, OUTPUT);
pinMode (L3, OUTPUT);
pinMode (L4, OUTPUT);
pinMode (L5, OUTPUT);
pinMode (L6, OUTPUT);
pinMode (L7, OUTPUT);
pinMode (L8, OUTPUT);
pinMode (L9, OUTPUT);
pinMode (L10, OUTPUT);

Serial.begin(9600);
}

void loop()
{
Monitor();
Motorspeed();
LedBar();
};

void Monitor()
{
int val = Serial.read() - '0';

if (val == 1)
{
Serial.println("Motor is ON");
on = 1;
digitalWrite(motorPin, HIGH);
}

else if (val == 0)
{
Serial.println("Motor is OFF");
on = 0;
digitalWrite(motorPin, LOW);
}

Serial.flush();
}



void Motorspeed()
{
potValue = analogRead(potPin) /4;

if(on == 1)
{
analogWrite(motorPin, potValue);
}
}

void LedBar()
{
potValue = analogRead(potPin) /4;
if(on == 1){
if (on == 1, potValue > M2) {
digitalWrite(L2, HIGH);
}
else {
digitalWrite(L2, LOW);
}
if (on == 1, potValue > M3) {
digitalWrite(L3, HIGH);
}
else {
digitalWrite(L3, LOW);
}
if (on == 1, potValue > M4) {
digitalWrite(L4, HIGH);
}
else {
digitalWrite(L4, LOW);
}

if (on == 1, potValue > M5) {
digitalWrite(L5, HIGH);
}
else {
digitalWrite(L5, LOW);
}

if (on == 1, potValue > M6) {
digitalWrite(L6, HIGH);
}
else {
digitalWrite(L6, LOW);
}

if (on == 1, potValue > M7) {
digitalWrite(L7, HIGH);
}
else {
digitalWrite(L7, LOW);
}

if (on == 1, potValue > M8) {
digitalWrite(L8, HIGH);
}
else {
digitalWrite(L8, LOW);
}

if (on == 1, potValue > M9) {
digitalWrite(L9, HIGH);
}
else {
digitalWrite(L9, LOW);
}

if (on == 1, potValue > M10) {
digitalWrite(L10, HIGH);
}

else {
digitalWrite(L10, LOW);
}}
else
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
}
}

最佳答案

简短回答:学习如何使用循环(for 和 while)和数组。

更长的一个:

这样定义 M:

int M[] = {40,75,...,250};

(将...替换为其余值)

并将 LedBar 函数更改为:

void LedBar()
{
int potValue = analogRead(potPin) /4;
if(on == 1)
for (int i=0;i<=8;i++)
if (potValue > M[i])
digitalWrite(i+2, HIGH);
else
for (int i=0;i<=8;i++)
digitalWrite(M[i+2], LOW);
}

此外,在设置中,您可以编写 pinMode (L.., OUTPUT); 行:

for (int i=2;i<=10;i++)
pinMode (i, OUTPUT);

关于c - Arduino 电机速度 LED(Led 条形图代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16363042/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com