now here is what I am trying to actually do:
#include <Keypad.h>
#include <Password.h>
int IOXpin =2;
Password Disp1 = Password( "20" );
Password Disp2 = Password( "40" );
Password Disp3 = Password( "60" );
Password Disp4 = Password( "80" );
Password Disp5 = Password( "100" );
Password Disp6 = Password( "120" );
Password Disp7 = Password( "140" );
Password Disp8 = Password( "160" );
Password Disp9 = Password( "180" );
Password Disp10 = Password( "200" );
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
{
'1','2','3' }
,
{
'4','5','6' }
,
{
'7','8','9' }
,
{
'*','0','#' }
};
byte rowPins[ROWS] = {
5, 4, 3, 12}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {
8, 7, 6}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
pinMode(IOXpin, OUTPUT);
Serial.begin(9600);
keypad.addEventListener(keypadEvent); //add an event listener for this keypad
}
void loop(){
digitalWrite(IOXpin, HIGH);
keypad.getKey();
}
//take care of some special events
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){
case PRESSED:
Serial.print("Pressed: ");
Serial.println(eKey);
switch (eKey){
case '*':
checkDisp1();
checkDisp2();
checkDisp3();
checkDisp4();
checkDisp5();
checkDisp6();
checkDisp7();
checkDisp8();
checkDisp9();
checkDisp10();
break;
case '1':
Disp1.reset();
Disp2.reset();
Disp3.reset();
Disp4.reset();
Disp5.reset();
Disp6.reset();
Disp7.reset();
Disp8.reset();
Disp9.reset();
Disp10.reset();
break;
default:
Disp1.append(eKey);
Disp2.append(eKey);
Disp3.append(eKey);
Disp4.append(eKey);
Disp5.append(eKey);
Disp6.append(eKey);
Disp7.append(eKey);
Disp8.append(eKey);
Disp9.append(eKey);
Disp10.append(eKey);
}
}
}
void checkDisp1(){
if (Disp1.evaluate()){
Serial.println("Dispensing 20 uL");
//Add code to run if it works
while(1)
{
keypad.getKey ();
if (keypad.getState() == PRESSED)
break; // leave the loop
digitalWrite(IOXpin, LOW);
delay(1000);
digitalWrite(IOXpin, HIGH);
delay(5000);
}
}
else{
Serial.println("Not Available, Reset!");
//add code to run if it did not work
digitalWrite(IOXpin, HIGH);
}
}
void checkDisp2(){
if (Disp2.evaluate()){
Serial.println("Dispensing 40 uL");
//Add code to run if it works
while(1)
{
keypad.getKey ();
if (keypad.getState() == PRESSED)
break; // leave the loop
digitalWrite(IOXpin, LOW);
delay(1000);
digitalWrite(IOXpin, HIGH);
delay(5000);
}
}
else{
Serial.println("Not Available, Reset!");
//add code to run if it did not work
digitalWrite(IOXpin, HIGH);
}
}
void checkDisp3(){
if (Disp2.evaluate()){
Serial.println("Dispensing 60 uL");
//Add code to run if it works
while(1)
{
keypad.getKey ();
if (keypad.getState() == PRESSED)
break; // leave the loop
digitalWrite(IOXpin, LOW);
delay(1000);
digitalWrite(IOXpin, HIGH);
delay(5000);
}
}
else{
Serial.println("Not Available, Reset!");
//add code to run if it did not work
digitalWrite(IOXpin, HIGH);
}
}
void checkDisp4(){
if (Disp2.evaluate()){
Serial.println("Dispensing 80 uL");
//Add code to run if it works
while(1)
{
keypad.getKey ();
if (keypad.getState() == PRESSED)
break; // leave the loop
digitalWrite(IOXpin, LOW);
delay(1000);
digitalWrite(IOXpin, HIGH);
delay(5000);
}
}
else{
Serial.println("Not Available, Reset!");
//add code to run if it did not work
digitalWrite(IOXpin, HIGH);
}
}
void checkDisp5(){
if (Disp2.evaluate()){
Serial.println("Dispensing 100 uL");
//Add code to run if it works
while(1)
{
keypad.getKey ();
if (keypad.getState() == PRESSED)
break; // leave the loop
digitalWrite(IOXpin, LOW);
delay(1000);
digitalWrite(IOXpin, HIGH);
delay(5000);
}
}
else{
Serial.println("Not Available, Reset!");
//add code to run if it did not work
digitalWrite(IOXpin, HIGH);
}
}
void checkDisp6(){
if (Disp2.evaluate()){
Serial.println("Dispensing 120 uL");
//Add code to run if it works
while(1)
{
keypad.getKey ();
if (keypad.getState() == PRESSED)
break; // leave the loop
digitalWrite(IOXpin, LOW);
delay(1000);
digitalWrite(IOXpin, HIGH);
delay(5000);
}
}
else{
Serial.println("Not Available, Reset!");
//add code to run if it did not work
digitalWrite(IOXpin, HIGH);
}
}
void checkDisp7(){
if (Disp2.evaluate()){
Serial.println("Dispensing 140 uL");
//Add code to run if it works
while(1)
{
keypad.getKey ();
if (keypad.getState() == PRESSED)
break; // leave the loop
digitalWrite(IOXpin, LOW);
delay(1000);
digitalWrite(IOXpin, HIGH);
delay(5000);
}
}
else{
Serial.println("Not Available, Reset!");
//add code to run if it did not work
digitalWrite(IOXpin, HIGH);
}
}
void checkDisp8(){
if (Disp2.evaluate()){
Serial.println("Dispensing 160 uL");
//Add code to run if it works
while(1)
{
keypad.getKey ();
if (keypad.getState() == PRESSED)
break; // leave the loop
digitalWrite(IOXpin, LOW);
delay(1000);
digitalWrite(IOXpin, HIGH);
delay(5000);
}
}
else{
Serial.println("Not Available, Reset!");
//add code to run if it did not work
digitalWrite(IOXpin, HIGH);
}
}
void checkDisp9(){
if (Disp2.evaluate()){
Serial.println("Dispensing 180 uL");
//Add code to run if it works
while(1)
{
keypad.getKey ();
if (keypad.getState() == PRESSED)
break; // leave the loop
digitalWrite(IOXpin, LOW);
delay(1000);
digitalWrite(IOXpin, HIGH);
delay(5000);
}
}
else{
Serial.println("Not Available, Reset!");
//add code to run if it did not work
digitalWrite(IOXpin, HIGH);
}
}
void checkDisp10(){
if (Disp2.evaluate()){
Serial.println("Dispensing 200 uL");
//Add code to run if it works
while(1)
{
keypad.getKey ();
if (keypad.getState() == PRESSED)
break; // leave the loop
digitalWrite(IOXpin, LOW);
delay(1000);
digitalWrite(IOXpin, HIGH);
delay(5000);
}
}
else{
Serial.println("Not Available, Reset!");
//add code to run if it did not work
digitalWrite(IOXpin, HIGH);
}
}
And here is the problems when I use one case for a bunch of functions.
Pressed: 2
Pressed: 0
Pressed: *
Dispensing 20 uL
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Pressed: 2
Pressed: 0
Pressed: 0
Pressed: *
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Pressed: 1
Pressed: 2
Pressed: 0
Pressed: 0
Pressed: *
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Pressed: 1
Pressed: 1
Pressed: 2
Pressed: 0
Pressed: 0
Pressed: *
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Pressed: 4
Pressed: 0
Pressed: *
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Not Available, Reset!
Pressed: 1
Pressed: 4
Pressed: 0
Pressed: *
Not Available, Reset!
Dispensing 40 uL
Dispensing 60 uL
Dispensing 80 uL
Dispensing 100 uL
Dispensing 120 uL
Dispensing 140 uL
I am getting a lot of prints that I don't need. Another thing is when I pressed 4 and 0 and * to validate I got what I have in the print screen and the key don't print anything after this. Also the Disp2() function in my code does not work.
I know I asked a lot of questions but hopefully this will be my last question. I am working on a project and it's due soon. Thanks