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
沒有留言:
張貼留言