2016年1月30日 星期六

Arduino UNO學習510.密碼開關EEPROM

Arduino學習510.密碼開關EEPROM

硬體
按鍵或指撥開關*4,圖片中的開關都可以
 

UNO中有一個可複寫唯讀記憶體EEPROM,
容量1kb=1024Byte,位址由0~1023,
程式前段先顯示原本位址10中的資料於監控視窗,
再寫入自定數字密碼9並顯示,及設定初始腳位↓
 

使用2進位計算方式設定4個Pin腳為1,2,4,8,
因為是輸入負低電壓訊號,因此需設成沒訊號時為0,按通後分別為1,2,4,8,
並計算開關的總計是否符合密碼9,若不符密碼就顯示錯誤,可運用在密碼正確時啟動設備
#include <EEPROM.h>

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

void setup()
{
    pinMode( 2 , INPUT);
    pinMode( 3 , INPUT);
    pinMode( 4 , INPUT);
    pinMode( 5 , INPUT);
Serial.begin(9600);
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
Serial.print( EEPROM.read( 10 )  );
Serial.println();

    delay( 1000 );

EEPROM.write( 10 , 9 );

Serial.print( "SAVE=" );
 Serial.print( EEPROM.read( 10 )  );
Serial.println();

    delay( 2000 );


}

void loop()
{
    if (    digitalRead( 2))
    {
        _ABVAR_1_PIN2 = 0 ;
    }
    else
    {
        _ABVAR_1_PIN2 = 1 ;
    }
    if (    digitalRead( 3))
    {
        _ABVAR_2_PIN3 = 0 ;
    }
    else
    {
        _ABVAR_2_PIN3 = 2 ;
    }
    if (    digitalRead( 4))
    {
        _ABVAR_3_PIN4 = 0 ;
    }
    else
    {
        _ABVAR_3_PIN4 = 4 ;
    }
    if (    digitalRead( 5))
    {
        _ABVAR_4_PIN5 = 0 ;
    }
    else
    {
        _ABVAR_4_PIN5 = 8 ;
    }
    _ABVAR_5_Total = ( ( _ABVAR_1_PIN2 + _ABVAR_2_PIN3 ) + ( _ABVAR_3_PIN4 + _ABVAR_4_PIN5 ) ) ;
    if (( ( _ABVAR_5_Total ) == ( EEPROM.read( 10 )  ) ))
    {
    Serial.print( _ABVAR_5_Total );
Serial.println();
    Serial.print( "WELCOME" );
Serial.println();
    }
    else
    {
    Serial.print( _ABVAR_5_Total );
Serial.println();
    Serial.print( "ERROR" );
Serial.println();
    }
    delay( 5000 );
}



www.ee543.com

沒有留言:

張貼留言