gpt4 book ai didi

c - 遍历 C 中微 Controller 上的引脚,其中占空比每小时变化一次

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:50 25 4
gpt4 key购买 nike

我有一个计时的实时时钟,我想每小时改变 10 个 PWM 输出的增量。这个想法是交错 PWM 输出,这意味着引脚 1 为 0%,引脚 2 为 25%,引脚 10 为 100%。我试图循环遍历微 Controller 上的引脚并更改占空比,以便在一小时后,引脚 1 = 100%,引脚 2 = 0%,引脚 3 = 25%,引脚 4 = 35%。

我似乎一直在搞乱逻辑,以至于引脚 1-10 都以相同的占空比结束,或者引脚 1-10 以增加的占空比结束,但无法让每小时增加某个值。任何帮助都会很棒 :)

我正在使用的代码,

    int dutyPWM[10] = {0,26,52,78,104,130,156,182,208,214};
if(Hour > 1+hour)
{
for(int pinnumber = 1; pinnumber < 11; pinnumber++)
{
for(int n=0, n <= 10; n++)
{
PWM_Write(pinnumber, n);
}
}
}

最佳答案

有一个全局变量 currentIdxStart 我正在使用 RTC 时钟来记录时间。

int sizeOfArr = 10;
int dutyPWM[sizeOfArr] = {0, 26, 52, 78, 104, 130, 156, 182, 208, 214};
unsigned long nowtime = 0;
nowtime = get_time();

if (nowtime >= num_unixtime+3600)
{
//setpwmfor10pumps();
int idx = currentIdxStart;
for (int i = 4; i <= 13; i++)
{
analogWrite(i, dutyPWM[idx]);
int duty = dutyPWM[idx];

idx ++;
if (idx >= sizeOfArr)
{
idx = 0;
}
Serial.print(i);
Serial.print(':');
Serial.print(duty);
Serial.println(" ");
}

currentIdxStart++;
if (currentIdxStart >= 10)
{
currentIdxStart = 0;
}
Serial.println(currentIdxStart);
num_unixtime = get_time();
Serial.print(num_unixtime);
Serial.println('\n');
}

希望对以后的人有所帮助,谢谢。

关于c - 遍历 C 中微 Controller 上的引脚,其中占空比每小时变化一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40622427/

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