河山 发表于 2014-4-5 20:59:48

求个不怕掉电有记忆状态的程序(最好使用EEPROM)

三个位置传感器输入(IN1=2脚,IN2=3脚,IN3=4脚),二个数字输出(A1=5脚,A2=6脚),都是数字信号。
初始都是0,(即IN1=0,IN2=0,IN3=0;A1=0,A2=0)
条件是:
当IN1为1时翻转 A1为1, A2为0 锁定并记忆输出状态,同时清除IN3为1时的输出状态记忆;
当IN2为1时翻转 A1为0, A2为1 锁定并记忆输出状态,同时清除IN1为1时的输出状态记忆;
当IN3为1时翻转 A1为1, A2为0 锁定并记忆输出状态,同时清除IN2为1时的输出状态记忆;

求个不怕掉电有记忆状态的程序(最好使用EEPROM)用I2C也可以,会的朋友给个程序,我想了一周时间,就是不会用这个记忆,汗啊!谢谢大家!

i7456 发表于 2014-4-8 11:39:16

#include <EEPROM.h>

int address = 0;
int flag = 0;
int in1 = 2;
int in2 = 3;
int in3 = 4;
int a1 = 5;
int a2 = 6;

void setup()
{
pinMode(a1, OUTPUT);
pinMode(a2, OUTPUT);
flag = EEPROM.read(address);
}

void loop()
{
if(digitalRead(in1)==HIGH)
    flag = 1;

if(digitalRead(in2)==HIGH)
    flag = 2;

if(digitalRead(in3)==HIGH)
    flag = 3;

switch (flag) {
      case 1:
          EEPROM.write(address, flag);
          digitalWrite(a1, HIGH);
          digitalWrite(a2, LOW);
          flag = 0;
          break;

      case 2:
          EEPROM.write(address, flag);
          digitalWrite(a1, LOW);
          digitalWrite(a2, HIGH);
          flag = 0;
          break;

      case 3:
          EEPROM.write(address, flag);
          digitalWrite(a1, HIGH);
          digitalWrite(a2, LOW);
          flag = 0;
          break;

      default:
          ;// do nothing
         
    }
}

河山 发表于 2014-4-8 13:58:06

i7456 发表于 2014-4-8 11:39 static/image/common/back.gif


3Q:)i7456,非常感谢!
页: [1]
查看完整版本: 求个不怕掉电有记忆状态的程序(最好使用EEPROM)