断电后,Arduino uno草图无法正常工作
我对Arduino比较陌生,以下是我想做的 我想使用断电后,Arduino uno草图无法正常工作,arduino,arduino-uno,arduino-ide,arduino-yun,arduino-due,Arduino,Arduino Uno,Arduino Ide,Arduino Yun,Arduino Due,我对Arduino比较陌生,以下是我想做的 我想使用IR(InfarRet)remote控制继电器电路。下面是我正在使用的代码: #include <IRremote.h> int RECV_PIN = 6; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { // put your setup code here, to run once: Serial.begin(9600); irrecv
IR(InfarRet)
remote控制继电器电路。下面是我正在使用的代码:
#include <IRremote.h>
int RECV_PIN = 6;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
irrecv.enableIRIn();
pinMode (5 ,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if (irrecv.decode(&results)){
Serial.println(results.value,DEC);
irrecv.resume();
switch (results.value){
case 3150073167:
digitalWrite(5,HIGH);
break;
case 68850955:
digitalWrite (5,LOW);
break;
}
}
}
#包括
int RECV_引脚=6;
IRrecv IRrecv(RECV_引脚);
解码_结果;
无效设置(){
//将安装代码放在此处,以便运行一次:
Serial.begin(9600);
依那普利();
pinMode(5,输出);
}
void循环(){
//将主代码放在此处,以便重复运行:
if(解码和结果)){
序列打印项次(结果值,DEC);
简历();
开关(结果值){
判例3150073167:
数字写入(5,高);
打破
判例68850955:
数字写入(5,低);
打破
}
}
}
电路工作正常
但重新启动电源后,它无法正常工作,这是一个简单的问题:
错误:
如何修复此错误?RAM是易失性内存,断电后也会丢失(IO端口在没有上拉的情况下重置为输入模式) 您可以使用EEPROM存储上一个状态,并在setup()函数中恢复它 对于基于AVR的arduinos,可以使用类似的方式:
#include <EEPROM.h>
#include <IRremote.h>
const int RELAY_PIN = 5;
const int RECV_PIN = 6;
const int address = 0;
byte state = 0;
decode_results results;
IRrecv irrecv(RECV_PIN);
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
state = EEPROM.read(address);
pinMode (RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, state);
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value,DEC);
irrecv.resume();
switch (results.value){
case 3150073167LU:
if (state == LOW) {
state = HIGH;
EEPROM.write(address, state);
}
break;
case 68850955LU:
if (state == HIGH) {
state = LOW;
EEPROM.write(address, state);
}
break;
default:
break;
}
digitalWrite(RELAY_PIN, state);
}
}
#包括
#包括
常数int继电器_引脚=5;
const int RECV_PIN=6;
常量int地址=0;
字节状态=0;
解码_结果;
IRrecv IRrecv(RECV_引脚);
无效设置(){
Serial.begin(9600);
依那普利();
状态=EEPROM读取(地址);
引脚模式(继电器引脚,输出);
数字写入(继电器引脚,状态);
}
void循环(){
if(解码和结果)){
序列打印项次(结果值,DEC);
简历();
开关(结果值){
案例3150073167LU:
如果(状态==低){
状态=高;
EEPROM写入(地址、状态);
}
打破
案例68850955LU:
如果(状态==高){
状态=低;
EEPROM写入(地址、状态);
}
打破
违约:
打破
}
数字写入(继电器引脚,状态);
}
}
RAM是易失性存储器,断电后也会丢失(IO端口在没有上拉的情况下重置为输入模式)
您可以使用EEPROM存储上一个状态,并在setup()函数中恢复它
对于基于AVR的arduinos,可以使用类似的方式:
#include <EEPROM.h>
#include <IRremote.h>
const int RELAY_PIN = 5;
const int RECV_PIN = 6;
const int address = 0;
byte state = 0;
decode_results results;
IRrecv irrecv(RECV_PIN);
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
state = EEPROM.read(address);
pinMode (RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, state);
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value,DEC);
irrecv.resume();
switch (results.value){
case 3150073167LU:
if (state == LOW) {
state = HIGH;
EEPROM.write(address, state);
}
break;
case 68850955LU:
if (state == HIGH) {
state = LOW;
EEPROM.write(address, state);
}
break;
default:
break;
}
digitalWrite(RELAY_PIN, state);
}
}
#包括
#包括
常数int继电器_引脚=5;
const int RECV_PIN=6;
常量int地址=0;
字节状态=0;
解码_结果;
IRrecv IRrecv(RECV_引脚);
无效设置(){
Serial.begin(9600);
依那普利();
状态=EEPROM读取(地址);
引脚模式(继电器引脚,输出);
数字写入(继电器引脚,状态);
}
void循环(){
if(解码和结果)){
序列打印项次(结果值,DEC);
简历();
开关(结果值){
案例3150073167LU:
如果(状态==低){
状态=高;
EEPROM写入(地址、状态);
}
打破
案例68850955LU:
如果(状态==高){
状态=低;
EEPROM写入(地址、状态);
}
打破
违约:
打破
}
数字写入(继电器引脚,状态);
}
}
通常,控制器意味着永远运行(“24/7”)。
在罕见的重启情况下,应将整个系统设置为定义的初始安全状态。(通常应与断电时相同)
为什么在arduino关闭时,你的继电器仍保持开启状态
如果您真的想存储以前的状态,EEPROM是一个好地方。
(完全同意KIIV)通常,控制器意味着永远运行(“24/7”)。 在罕见的重启情况下,应将整个系统设置为定义的初始安全状态。(通常应与断电时相同) 为什么在arduino关闭时,你的继电器仍保持开启状态 如果您真的想存储以前的状态,EEPROM是一个好地方。
(完全同意基辅)基辅已经比我做了更多的填鸭式喂食。祝他的建议好运谢谢您的阅读和推荐,在您的帮助下终于解决了问题,但它只适用于一个继电器(只有一个LED)。。所以,请看一下我的代码,帮我制作两个或更多的(LED)…听说是我的代码:基辅已经做了比我更多的填鸭式喂食。祝他的建议好运谢谢您的阅读和推荐,在您的帮助下终于解决了问题,但它只适用于一个继电器(只有一个LED)。。所以,请看一下我的代码,帮助我制作两个或更多的(LED)…Hear是我的代码:这可能不是一个错误。很高兴继电器在电源关闭时进入安全状态。请尊重将正确阅读您的问题和格式的人。感谢您的阅读和推荐,在您的帮助下最终解决了问题,但它仅适用于一个继电器(仅一个LED)。。所以,请看一下我的代码,帮助我制作两个或更多的(LED)…Hear是我的代码:这可能不是一个错误。很高兴继电器在电源关闭时进入安全状态。请尊重将正确阅读您的问题和格式的人。感谢您的阅读和推荐,在您的帮助下最终解决了问题,但它仅适用于一个继电器(仅一个LED)。。所以,请看一下我的代码,帮我把它做成两个或更多的(LED)…听是我的代码:谢谢您阅读和推荐,在您的帮助下,终于解决了它,但它只适用于一个继电器(只有一个LED)。。因此,请看一下我的代码,并帮助我制作两人及以上(LED)…听到的是我的代码:感谢您阅读和推荐,在您的帮助下,最终解决了它,但它只