Hi I am new to Arduino and I have been working on an Alarm system using a home made analog keypad . I have used some code from a 7 pin keypad that I was using in a different project and have adapted it to my needs. The trouble is that it keeps resetting and I am out of ideas. Please help if you can. I know that the code is a bit of a mess (sorry)
Thanks for taking the time to look.
Jezza
int NOKEY=255;
int i, k, pwcount=0;
char password[]="1234",entry[10];
int buttonPin=A0;
int val=A0;
int ldr=12;
int senseValue=0;
int led=13;
int sensePin=A1;
int buzzerPin=2;
int led2=5;
int led3=3;
int led4=4;
void setup() {
// put your setup code here, to run once:
pinMode (buttonPin,INPUT);
pinMode (sensePin,INPUT);
pinMode(ldr,OUTPUT);
pinMode (led,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode (led4,OUTPUT);
pinMode (buzzerPin,OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
for(i=6; i<=8; i++){
reset();
val=analogRead(buttonPin);
val = map(val, 0, 1023, 0, 255);
// Serial.print("Button Value ");//used for debugging
//Serial.println(val);
senseValue=analogRead(sensePin);
senseValue = map(senseValue, 0, 1023, 0, 255);
Serial.print(" Sensor Value ");//used for debugging
Serial.println(senseValue);
if (senseValue >100)triggered();
if (val==0)(val==255);//I cannot stop the program looping
if ((val >10)&&(val<18)){
entry[pwcount]='1' ;
pwcount++;
delay(250);
Serial.println('1');
}
if ((val >19)&&(val<28)){
entry[pwcount]='2' ;
pwcount++;
delay(250);
Serial.println('2');
}
if ((val >30)&&(val<40)){
entry[pwcount]='3' ;
pwcount++;
delay(250);
Serial.println('3');
}
if ((val >50)&&(val<60)){
entry[pwcount]='4' ;
pwcount++;
delay(250);
Serial.println('4');
}
if ((val >75)&&(val<90)){
entry[pwcount]='5' ;
pwcount++;
delay(250);
Serial.println('5');
}
if ((val >100)&&(val<120)){
entry[pwcount]='6' ;
pwcount++;
delay(250);
Serial.println('6');
}
if ((val >135)&&(val<155)){
entry[pwcount]='7' ;
pwcount++;
delay(250);
Serial.println('7');
}
if ((val >170)&&(val<180)){
entry[pwcount]='8' ;
pwcount++;
delay(250);
Serial.println('8');
}
if ((val >190)&&(val<205)){
entry[pwcount]='9' ;
pwcount++;
delay(250);
Serial.println('9');
}
if ((val >218)&&(val<227)){
entry[pwcount]='*' ;
pwcount++;
delay(250);
Serial.println('*');
}
if ((val >227)&&(val<236)){
entry[pwcount]='0' ;
pwcount++;
delay(250);
Serial.println('0');
}
if ((val >237)&&(val<250)){
entry[pwcount]='#' ;
pwcount++;
delay(250);
Serial.println('#');
}
pwcount=0;
for(k=0; k<=5; k++){
if(k==5){
Serial.println("Alarm Disabled");
digitalWrite(3, HIGH);
digitalWrite (4, LOW);
digitalWrite (13,LOW);
digitalWrite(ldr,LOW);
break;
}
if(password[k] != entry[k]){
digitalWrite (4, HIGH);
Serial.println("Alarm ON 2 Seconds Until Armed");
digitalWrite(3,LOW);
armed();
//delay(2000);
//digitalWrite (13,HIGH);
Serial.println("Alarm Enabled");
printing();
Serial.println("Callibrating System Please wait..");
printing();
Serial.println("System Activating...");
printing();
Serial.println("All Systems Functioning Correctly");
printing();
delay(500);
Serial.println("Alarm On");
break;
}
}
// k<10
for(k=0; k<10; k++)
entry[k]=0;
}
}
void reset(){
int j;
for(j=6; j<=8; j++)
digitalWrite(j, LOW);
}
void blinker(){
digitalWrite(3, HIGH);
delay(15);
digitalWrite(3, LOW);
}
void printing(){
delay(200);
}
void armed (){
delay(100);
digitalWrite(13,HIGH);
digitalWrite(ldr,HIGH);
}
void triggered(){
digitalWrite(buzzerPin,HIGH);
digitalWrite(13,LOW);
delay(30);
digitalWrite(buzzerPin,LOW);
digitalWrite(13,HIGH);
delay(30);
}