实例 3.8 秘密锁

作者: chenzhenlindx | 来源:发表于2018-11-18 19:10 被阅读12次
  1. 面包板


    image.png
  2. 原理图


    image.png
  3. PCB 略
  4. ArduBlock


    ardublock.png
  5. Arduino
#include <EEPROM.h>

/*******************************************************************
 * A way to write an 'int' (2 Bytes) to EEPROM 
 * EEPROM library natively supports only bytes. 
 * Note it takes around 8ms to write an int to EEPROM 
 *******************************************************************/
void eepromWriteInt(int address, int value){
  union u_tag {
    byte b[2];        //assumes 2 bytes in an int
    int INTtime;
  } 
  time;
  time.INTtime=value;

  EEPROM.write(address  , time.b[0]); 
  EEPROM.write(address+1, time.b[1]); 
}

/********************************************************
 * A way to read int (2 Bytes)from EEPROM 
 * EEPROM library natively supports only bytes
 ********************************************************/
int eepromReadInt(int address){

  union u_tag {
    byte b[2];
    int INTtime;
  } 
  time;
  time.b[0] = EEPROM.read(address);
  time.b[1] = EEPROM.read(address+1);
  return time.INTtime;
}

int _ABVAR_1_PIN2 = 0 ;
int _ABVAR_2_PIN3 = 0 ;
int _ABVAR_3_PIN4 = 0 ;
int _ABVAR_4_PIN5 = 0 ;
int _ABVAR_5_Total = 0 ;

void setup()
{
  pinMode( 2 , INPUT);
  pinMode( 3 , INPUT);
  pinMode( 4 , INPUT);
  pinMode( 5 , INPUT);
  Serial.begin(9600);
  eepromWriteInt( 20 , 9 ) ;

  Serial.print("SAVE OK!");
  Serial.println();

  delay( 5000 );

  Serial.print(eepromReadInt( 20 ) );
  Serial.println();

}

void loop()
{
  if (digitalRead(2))
  {
    _ABVAR_1_PIN2 = 1 ;
  }
  else
  {
    _ABVAR_1_PIN2 = 0 ;
  }
  if (digitalRead(3))
  {
    _ABVAR_2_PIN3 = 1 ;
  }
  else
  {
    _ABVAR_2_PIN3 = 0 ;
  }
  if (digitalRead(4))
  {
    _ABVAR_3_PIN4 = 1 ;
  }
  else
  {
    _ABVAR_3_PIN4 = 0 ;
  }
  if (digitalRead(5))
  {
    _ABVAR_4_PIN5 = 1 ;
  }
  else
  {
    _ABVAR_4_PIN5 = 0 ;
  }
  _ABVAR_5_Total = ( ( _ABVAR_1_PIN2 + _ABVAR_2_PIN3 ) + ( _ABVAR_3_PIN4 + _ABVAR_4_PIN5 ) ) ;
  if (( ( _ABVAR_5_Total ) == ( eepromReadInt( 20 )  ) ))
  {
    Serial.print("Welcome!");
    Serial.println();
  }
  else
  {
    Serial.print("Error!");
    Serial.println();
  }
  delay( 5000 );
}

相关文章

  • 实例 3.8 秘密锁

    面包板image.png 原理图image.png PCB 略 ArduBlockardublock.png Ar...

  • synchronized的用法

    静态锁跟类锁的作用类似,多个实例共用一个类锁,而普通锁只能锁一个实例。

  • 公平锁的初始化

    1、默认实例化非公平锁 2、实例化公平锁(需要传参)

  • synchronized笔记

    从被锁对象的性质上来说,synchronized加的锁分两种:实例对象锁和class对象锁。实例对象锁 这两种方式...

  • 线程锁的使用

    方式一:对该类CLASSA加线程锁,缺点:该类生成的实例共享一个线程锁,因此实例a、实例b、实例c在执行该方法时,...

  • 线程安全之读写锁

    相关API 初始化读写锁 释放读写锁 获取读锁 获取写锁 解锁 实例

  • java synchronized

    同步锁可以是 锁对象 锁实例(this) 注:如果不是同一个实例,比如new了两个Test2分别执行run,则锁失...

  • synchronized与volatile原理

    synchronized使用 修饰实例方法:锁对象是当前实例对象 修饰静态方法:锁对象是当前类的Class对象 修...

  • Synchronized总结

    锁的类型 对象锁 同步代码块锁,所有的实例化对象各自带有一把锁(this)sychronized(this) { ...

  • MySQL锁

    MySQL锁分类 全局锁 表级锁 行锁 间隙锁 next-key lock 全局锁 作用范围:对整个数据库实例加锁...

网友评论

    本文标题:实例 3.8 秘密锁

    本文链接:https://www.haomeiwen.com/subject/pmggfqtx.html