在本文中,我们将学习如何制作一个简单的两步Arduino可编程定时器电路,它可以用于开关一个电气负载的独立可调的ON和OFF定时。
例如,如果你想让一盏灯保持开24小时,关2小时,你可以简单地通过快速修改程序代码来做到这一点。以同样的方式,您可以通过适当地更改代码来根据任何其他所需的时间间隔集定制输出计时。
你只需要188app彩票 将下面的代码发送到Arduino板,并根据具体的应用程序需要启动计时器功能。
程序代码
void setup(){pinMode(13,输出);} void loop(){digitalWrite(13, HIGH);延迟(86400000);低digitalWrite(13日);延迟(3600000);}
在上面的示例代码行延迟(86400000);和延迟(3600000);分别确定输出ON和OFF延时时间间隔,单位为毫秒。在这里,图86400000毫秒对应24小时,而3600000展品延迟1小时。
您可以根据自己的偏好定制这两个值,以获得所需的输出延迟。
一旦设置并通电,Arduino将继续在两个步骤的ON/OFF时序之间切换。只要系统还在供电。
线路图
完整的电路图以及Arduino的连接可以在下图中看到:
Arduino一次性定时器电路
如果你不想让计时器通过两个步进计时器循环,而是希望计时器是一个一次性类型,这将在设置的延迟后永久关闭,你可以应用以下代码:
Int led = 13;// Pin 13在大多数Arduino板上都有一个LED连接。unsigned long DELAY_TIME = 10000;// 10秒unsigned long delayStart = 0;//延迟开始的时间bool delayRunning = false;//如果仍然等待延迟完成无效设置(){pinMode(led, OUTPUT);//初始化数字引脚作为输出。digitalWrite(领导、高);//打开led //启动延时delayStart = millis();delayRunning = true; } void loop() { // check if delay has timed out if (delayRunning && ((millis() - delayStart) >= DELAY_TIME)) { delayRunning = false; // finished delay -- single shot, once only digitalWrite(led, LOW); // turn led off } }
如果你想要一个相同的可编程定时器电路的离散设计版本,你可以选择这个电路
Arduino可编程定时器电路所需零件
- Arduino UNO板= 1
- IC 7809 = 1
- BC547 = 1
- 1N4007二极管= 1
- 10k 1/4 w电阻= 1
- 继电器12V/400欧姆/SPDT/5安培= 1
- 12V AC到DC适配器= 1
丹说
先生,非常感谢您的快速回复。这正是我所需要的。
Swagatam说
不客气,丹!
丹说
哇,非常感谢Swagatam的代码(草图)工作得非常好。
Swagatam说
很高兴能成功,丹,希望你的项目能成功。
丹说
先生,您能详细说明一下如何将引导程序加载到atmega328上吗?
谢谢你!
Swagatam说
对不起,丹,我不知道。
桑吉夫•库马尔Mohbansi说
亲爱的先生;
我需要Arduino控制的反向和向前继电器控制的项目细节。
以下是步骤:-
1.上电后,只有按ON按钮(PB1)后,15秒后,relay1 (Motor1)和relay2 (Motor2)将同时自动启动和同时停止,按OFF按钮(PB2)。
2.继电器3(电机3)将保持停止状态,除非我们按下方向改变按钮(PB3)。
3.当我们按PB3时,继电器2停止,继电器3将在15秒的时间间隔后ON。继电器2和继电器3都是联锁的。直到PB2停止。
4.除了PB3之外,还提供了一个接近开关(PB3或接近开关),以按照步骤3改变方向。
5.所有三个继电器1,继电器2和继电器3将从PB1开始,停止与PB2。
6.继电器1仅用PB1和PB2控制。
提前感谢您的指导和支持。
瓦尔Mohbansi
sbmohbansi@gmail.com
Swagatam说
亲爱的Sanjiv,我不擅长Arduino编码,所以无法帮助你完成这个项目。
瓦尔说
谢谢您的回复!!
否则,根据您的看法,是否有任何选项不使用Arduino??
等待你的建议。
提前谢谢! !
Swagatam说
是的,这是可能的使用一个简单的触发电路
阳光说
您好先生…星期天快乐…请我想要熟悉arduino系统…请帮助…我如何给它一个命令或程序?谢谢同上。
Swagatam说
你好Sunshine,你可以阅读下面的文章来获得一些关于Arduino编程的基本技巧:
188app彩票
威尔逊说
你好,对不起,如果这似乎准时接,我试图让一个逆变器使用arduino uno,不好连接所以我生成的代码从一个android应用,逆变器似乎工作好,唯一的问题是如何给它所以可以稳定输出电压的反馈。
下面是生成的代码
# include
#定义HO1 12
#定义LO1 11
#定义HO2 10
#定义LO2 9
int f_sin = 50;
int f_pwm = 10000;
浮动sin_buffer [200];
浮动sampling_tot、pwm_period sin_period,美国= 1000000;
int数= 0,国旗= 0,Ampli = 1000;
无效的设置(){
Serial.begin (9600);
pinMode (HO1、输出);
pinMode (LO1、输出);
pwm_period = (* 1) / f_pwm;
sin_period = (* 1) / f_sin;
sampling_tot = (sin_period / pwm_period) / 2.0;
以pwm_period);
以sin_period);
以sampling_tot);
For (int deg=0;deg(sampling_tot) && flag==1){
国旗= 0;
数= 1;
TCCR1A = 0 b10110000;
}
If (count>(sampling_tot) && flag==0){
标志= 1;
数= 1;
TCCR1A = 0 b11100000;
}
数+ +;
如果(标志= = 0){
Timer1。pwm (HO2 sin_buffer[数]* Ampli);
Timer1。pwm (LO2 sin_buffer[数]* Ampli);
digitalWrite (HO1、高);
digitalWrite (LO1、低);
}
如果(标志= = 1){
Timer1。pwm (HO2 sin_buffer[数]* Ampli);
Timer1。pwm (LO2 sin_buffer[数]* Ampli);
digitalWrite (HO1、低);
digitalWrite (LO1、高);
}
}
Swagatam说
你好,如果逆变器是工作,意味着代码应该很好太…抱歉,就像你一样,我太不擅长编码的东西,所以不能在这方面帮助你很多。
Jix说
我能用arduino nano代替arduino nano吗?
Swagatam说
是的,你可以用它…