int key0 = 16; int key1 = 6; int key2 = 12; int key3 = 9; int key4 = 5; int kry5 = 15; int key6 = 10; int key7 = 14; int key8 = 13; int key9 = 18; int keyStar = 17; int keyOk = 11; int keyClear = 3; int keyDown = 4; int keyUp = 8; int keyOff = 2; int keyHash = 19; int pressTime = 100; int pressDelay = 300; int holdTime = 1000; int value[16] = {16,6,12,9,5,15,10,14,13,18,17,11,3,4,8,2}; char number[12] ; //= {'0','1','2','3','4','5','6','7','8','9','\0'}; int count = 0; void setup() { // initialize the digital pin as an output. for(int i=2; i<20; i++) pinMode(i, OUTPUT); Serial.begin(9600); // enable serial communication holdClear(); // go to phone home delay(1000); holdClear(); delay(1000); } // the loop routine runs over and over again forever: void loop() { while (Serial.available()>0){ char character = Serial.read(); number[count] = character; count++; if(character == ','){ // character is coma(,) than stop receiving and call number callNumber(); delay(5000); count = 0; holdClear();} if(character == ';'){ count = 0; } } } void pressDigit(int digit){ digitalWrite(value[digit], HIGH); // press digit from 0 to 9 delay(pressTime); digitalWrite(value[digit],LOW); delay(pressDelay); } void pressOk(){ digitalWrite(keyOk, HIGH); // press ok delay(pressTime); digitalWrite(keyOk,LOW); delay(pressDelay); } void pressClear(){ digitalWrite(keyClear, HIGH); // press clear delay(pressTime); digitalWrite(keyClear,LOW); delay(pressDelay); } void pressStar(){ digitalWrite(keyStar, HIGH); // press star delay(pressTime); digitalWrite(keyStar,LOW); delay(pressDelay); } void pressUp(){ digitalWrite(keyUp, HIGH); // press up delay(pressTime); digitalWrite(keyUp,LOW); delay(pressDelay); } void pressDown(){ digitalWrite(keyDown, HIGH); // press down delay(pressTime); digitalWrite(keyDown,LOW); delay(pressDelay); } void pressHash(){ digitalWrite(keyHash, HIGH); // press hash delay(pressTime); digitalWrite(keyHash,LOW); delay(pressDelay); } void pressOff(){ digitalWrite(keyOff, HIGH); // press off delay(pressTime); digitalWrite(keyOff,LOW); delay(pressDelay); } void holdOff(){ digitalWrite(keyOff, HIGH); // hold off delay(holdTime); digitalWrite(keyOff,LOW); delay(pressDelay); } void holdClear(){ digitalWrite(keyClear, HIGH); // press clear delay(holdTime); digitalWrite(keyClear,LOW); delay(pressDelay); } void unlockPhone(){ pressOk(); pressStar(); } void callNumber(){ for(int i=0; i<11; i++){ pressDigit(number[i]-'0'); // number[i] - '0' is for converting character into intiger } pressOk(); }