Etape 5: Programmation arduino
Image de mon installation complète phonoduino (téléphone + arduino) est donnée ci-dessus. Les entrées DTMF ne sont pas donnée à l’arduino maintenant. Nous verrons cela plus tard de ce projet. Laissez-nous maintenant écrire du code pour donner la vie de la phonoduino. Code pour les appels automatiques pour n’importe quel nombre donné est attaché.
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}; void setup() { // initialize the digital pin as an output. for(int i=2; i<20; i++) pinMode(i, OUTPUT); holdClear(); unlockPhone(); delay(2000); holdClear(); delay(1000); // call 0123456789 pressDigit(0); pressDigit(1); pressDigit(2); pressDigit(3); pressDigit(4); pressDigit(5); pressDigit(6); pressDigit(7); pressDigit(8); pressDigit(9); delay(100); pressOk(); delay(5000); } // the loop routine runs over and over again forever: void loop() { } 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(); }
Vous voulez appeler n’importe quel nombre de serial monitor ?
Code pour les appels de serial monitor est également joint. Numéro de téléphone il suffit de taper dans le terminal se terminant avec un coma (en), puis appuyez sur Entrez. Phonoduino compose immédiatement le numéro. Coma vous indique le nombre de frappe juste terminée et que vous souhaitez appeler. Si vous voulez effacer n’importe quel nombre à tort les tapez simplement typé point virgule (;) et appuyez sur entrée. Resaisissez votre numéro.
Vous voulez envoyer le message de la série monitor ?
Dactylographie message du téléphone mobile est ennuyeux et fastidieux. Il sera facile de taper des sms à partir de clavier d’ordinateur et permettra d’économiser beaucoup de temps. Une esquisse d’arduino d’échantillon est donnée aux sms envoyé de serial monitor. Juste télécharger le programme sur votre arduino, ouvrir le moniteur de la série, tapez votre message, tapez colon(:), tapez le numéro, tapez le numéro de téléphone portable ou n’importe quel nombre que vous voulez envoyer votre sms et appuyez sur entrent la clé. Votre phonoduino sera envoyé le message à votre nombre désiré.
Exemple : Bonjour, je suis de phonoduino.:123456789 *
La commande ci-dessus est envoyés « Bonjour, je suis de phonoduino. » au numéro « 123456789 »
<code> int pressTime = 100; int pressDelay = 300; int holdTime = 1000; int typeTime = 100; int typeDelay = 400; int value[16] = {16,6,12,9,5,15,10,14,13,18,17,11,3,4,8,2}; char number[12]; char massegeChar[160]; int count = 0; int numCount = 0; int charDelay = 300; int numberState = 0; void setup() { // initialize the digital pin as an output. for(int i=2; i<20; i++) pinMode(i, OUTPUT); Serial.begin(9600); holdClear(); } // the loop routine runs over and over again forever: void loop() { while (Serial.available()>0){ char character = Serial.read(); if(character == '*'){ sentSMS(); count = 0; numCount = 0; numberState = 0; } if(character == ':'){ numberState = 1; numCount = 0; //delay(10); } if(numberState == 1){ number[numCount] = character; numCount++; } if(numberState == 0){ massegeChar[count] = character; count++; } if(character == '#'){ count = 0; numberState = 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 typeA(){ digitalWrite(key2, HIGH); delay(typeTime); digitalWrite(key2, LOW); delay(typeDelay); } void typeB(){ typeA(); typeA(); } void typeC(){ typeA(); typeA(); typeA(); } void typeD(){ digitalWrite(key3, HIGH); delay(typeTime); digitalWrite(key3, LOW); delay(typeDelay); } void typeE(){ typeD(); typeD(); } void typeF(){ typeD(); typeD(); typeD(); } void typeG(){ digitalWrite(key4, HIGH); delay(typeTime); digitalWrite(key4, LOW); delay(typeDelay); } void typeH(){ typeG(); typeG(); } void typeI(){ typeG(); typeG(); typeG(); } void typeJ(){ digitalWrite(key5, HIGH); delay(typeTime); digitalWrite(key5, LOW); delay(typeDelay); } void typeK(){ typeJ(); typeJ(); } void typeL(){ typeJ(); typeJ(); typeJ(); } void typeM(){ digitalWrite(key6, HIGH); delay(typeTime); digitalWrite(key6, LOW); delay(typeDelay); } void typeN(){ typeM(); typeM(); } void typeO(){ typeM(); typeM(); typeM(); } void typeP(){ digitalWrite(key7, HIGH); delay(typeTime); digitalWrite(key7, LOW); delay(typeDelay); } void typeQ(){ typeP(); typeP(); } void typeR(){ typeP(); typeP(); typeP(); } void typeS(){ typeP(); typeP(); typeP(); typeP(); } void typeT(){ digitalWrite(key8, HIGH); delay(typeTime); digitalWrite(key8, LOW); delay(typeDelay); } void typeU(){ typeT(); typeT(); typeT(); } void typeV(){ typeT(); typeT(); typeT(); } void typeW(){ digitalWrite(key9, HIGH); delay(typeTime); digitalWrite(key9, LOW); delay(typeDelay); } void typeX(){ typeW(); typeW(); } void typeY(){ typeW(); typeW(); typeW(); } void typeZ(){ typeW(); typeW(); typeW(); typeW(); } void space(){ digitalWrite(key0, HIGH); delay(typeTime); digitalWrite(key0, LOW); delay(typeDelay); } void sentSMS(){ holdClear(); holdClear(); pressOk(); pressOk(); pressOk(); for(int i = 0; i< 160; i++){ switch(massegeChar[i]){ case 'A': case 'a': typeA(); delay(charDelay); break; case 'B': case 'b': typeB(); delay(charDelay); break; case 'C': case 'c': typeC(); delay(charDelay); break; case 'D': case 'd': typeD(); delay(charDelay); break; case 'E': case 'e': typeE(); delay(charDelay); break; case 'F': case 'f': typeF(); delay(charDelay); break; case 'G': case 'g': typeG(); delay(charDelay); break; case 'H': case 'h': typeH(); delay(charDelay); break; case 'I': case 'i': typeI(); delay(charDelay); break; case 'J': case 'j': typeJ(); delay(charDelay); break; case 'K': case 'k': typeK(); delay(charDelay); break; case 'L': case 'l': typeL(); delay(charDelay); break; case 'M': case 'm': typeM(); delay(charDelay); break; case 'N': case 'n': typeN(); delay(charDelay); break; case 'O': case 'o': typeO(); delay(charDelay); break; case 'P': case 'p': typeP(); delay(charDelay); break; case 'Q': case 'q': typeQ(); delay(charDelay); break; case 'R': case 'r': typeR(); delay(charDelay); break; case 'S': case 's': typeS(); delay(charDelay); break; case 'T': case 't': typeT(); delay(charDelay); break; case 'U': case 'u': typeU(); delay(charDelay); break; case 'V': case 'v': typeV(); delay(charDelay); break; case 'W': case 'w': typeW(); delay(charDelay); break; case 'X': case 'x': typeX(); delay(charDelay); break; case 'Y': case 'y': typeY(); delay(charDelay); break; case 'Z': case 'z': typeZ(); delay(charDelay); break; case ' ': space(); break; } delay(300); } pressOk(); pressOk(); callNumber(); } void callNumber(){ for(int i=1; i<12; i++){ pressDigit(number[i]-'0'); // number[i] - '0' is for converting character into intiger } pressOk(); holdClear(); holdClear(); }
J’ai publiera plus tard une esquisse d’arduino plus efficace.