Min gamla telefon + arduino = phonoduino (5 / 7 steg)
Steg 5: Programmera arduino
Bilden av min komplett phonoduino (telefon + arduino) setup ges ovan. DTMF-bidrag ges inte till arduino nu. Vi kommer att se senare i detta projekt. Låt oss nu skriva lite kod för att ge livet på phonoduino. Kod för automatisk kräver ett visst antal fästas.
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();
}
Vill du ringa ett nummer från seriell övervaka?
Kod för att ringa från seriella monitor är också fäst. Skriv bara telefonnummer till terminalen avslutas med en koma (,) och tryck Ange. Phonoduino kommer att omedelbart slå numret. Koma anger du bara fullständiga skriva numret och vill ringa. Om du vill rensa alla nummer felaktigt enter skrivit bara skriva semikolon (;) och tryck. Skriv sedan ditt nummer.
Vill du skicka meddelande från seriella monitor?
Skriva meddelandet från mobiltelefon är tråkiga och tidskrävande. Det blir lätt att skriva sms från datorns tangentbord och kommer att spara massor av tid. En prov arduino skiss ges till skickade sms från seriella monitor. Bara ladda upp programmet till din arduino, öppna seriell övervaka, skriv ditt meddelande, skriv colon(:), skriv numret, ange mobilnummer eller ett tal du vill skickat ditt sms och pressa gå in nyckel. Din phonoduino kommer att skickas meddelandet till din önskat nummer.
Exempel: Hej, jag är från phonoduino.:123456789 *
Ovanstående kommando kommer skickas "Hej, jag är från phonoduino." till nummer "123456789"
< code >
int presstid = 100;
int pressDelay = 300;
int holdTime = 1000;
int typeTime = 100;
int typeDelay = 400.
int värde [16] = {16,6,12,9,5,15,10,14,13,18,17,11,3,4,8,2}.
char nummer [12].
char massegeChar [160];
int count = 0;
int numCount = 0;
int charDelay = 300;
int numberState = 0;
void setup() {
initiera digital PIN-koden som en utgång.
för (int jag = 2; jag < 20; i ++)
pinMode (i, matas);
Serial.BEGIN(9600);
holdClear();
}
loop rutinen körs för evigt om och om igen:
void loop() {
medan (Serial.available() > 0) {
char tecken = Serial.read();
om (karaktär == ' *') {
sentSMS();
Count = 0;
numCount = 0;
numberState = 0;
}
om (karaktär == ' :'){
numberState = 1;
numCount = 0;
Delay(10);
}
IF(numberState == 1) {
nummer [numCount] = karaktär;
numCount ++;
}
IF(numberState == 0) {
massegeChar [antal] = karaktär;
greve ++;
}
om (karaktär == '#') {
Count = 0;
numberState = 0;
}
}
}
void pressDigit (int tecken) {
digitalWrite (värde [siffra], hög); Tryck på siffra från 0 till 9
Delay(pressTime);
digitalWrite(value[digit],LOW);
Delay(pressDelay);
}
void pressOk() {
digitalWrite (keyOk, hög); Tryck på ok
Delay(pressTime);
digitalWrite(keyOk,LOW);
Delay(pressDelay);
}
void pressClear() {
digitalWrite (keyClear, hög); Tryck på klart
Delay(pressTime);
digitalWrite(keyClear,LOW);
Delay(pressDelay);
}
void pressStar() {
digitalWrite (keyStar, hög); Tryck stjärna
Delay(pressTime);
digitalWrite(keyStar,LOW);
Delay(pressDelay);
}
void pressUp() {
digitalWrite (keyUp, hög); Tryck på upp-
Delay(pressTime);
digitalWrite(keyUp,LOW);
Delay(pressDelay);
}
void pressDown() {
digitalWrite (TangentNed, hög); Tryck ner
Delay(pressTime);
digitalWrite(keyDown,LOW);
Delay(pressDelay);
}
void pressHash() {
digitalWrite (keyHash, hög); Tryck på hash
Delay(pressTime);
digitalWrite(keyHash,LOW);
Delay(pressDelay);
}
void pressOff() {
digitalWrite (keyOff, hög); Tryck på off
Delay(pressTime);
digitalWrite(keyOff,LOW);
Delay(pressDelay);
}
void holdOff() {
digitalWrite (keyOff, hög); hålla bort
Delay(holdTime);
digitalWrite(keyOff,LOW);
Delay(pressDelay);
}
void holdClear() {
digitalWrite (keyClear, hög); Tryck på klart
Delay(holdTime);
digitalWrite(keyClear,LOW);
Delay(pressDelay);
}
void typeA() {
digitalWrite (key2, hög);
Delay(typeTime);
digitalWrite (key2, låg);
Delay(typeDelay);
}
void typeB() {
typeA();
typeA();
}
void typeC() {
typeA();
typeA();
typeA();
}
void typeD() {
digitalWrite (key3, hög);
Delay(typeTime);
digitalWrite (key3, låg);
Delay(typeDelay);
}
void typeE() {
typeD();
typeD();
}
void typeF() {
typeD();
typeD();
typeD();
}
void typeG() {
digitalWrite (key4, hög);
Delay(typeTime);
digitalWrite (key4, låg);
Delay(typeDelay);
}
void typeH() {
typeG();
typeG();
}
void typeI() {
typeG();
typeG();
typeG();
}
void typeJ() {
digitalWrite (key5, hög);
Delay(typeTime);
digitalWrite (key5, låg);
Delay(typeDelay);
}
void typeK() {
typeJ();
typeJ();
}
void typeL() {
typeJ();
typeJ();
typeJ();
}
void typeM() {
digitalWrite (key6, hög);
Delay(typeTime);
digitalWrite (key6, låg);
Delay(typeDelay);
}
void typeN() {
typeM();
typeM();
}
void typeO() {
typeM();
typeM();
typeM();
}
void typeP() {
digitalWrite (key7, hög);
Delay(typeTime);
digitalWrite (key7, låg);
Delay(typeDelay);
}
void typeQ() {
typeP();
typeP();
}
void typeR() {
typeP();
typeP();
typeP();
}
void typeS() {
typeP();
typeP();
typeP();
typeP();
}
void typeT() {
digitalWrite (key8, hög);
Delay(typeTime);
digitalWrite (key8, låg);
Delay(typeDelay);
}
void typeU() {
typeT();
typeT();
typeT();
}
void typeV() {
typeT();
typeT();
typeT();
}
void typeW() {
digitalWrite (key9, hög);
Delay(typeTime);
digitalWrite (key9, låg);
Delay(typeDelay);
}
void typeX() {
typeW();
typeW();
}
void typeY() {
typeW();
typeW();
typeW();
}
void typeZ() {
typeW();
typeW();
typeW();
typeW();
}
void space() {
digitalWrite (key0, hög);
Delay(typeTime);
digitalWrite (key0, låg);
Delay(typeDelay);
}
void sentSMS() {
holdClear();
holdClear();
pressOk();
pressOk();
pressOk();
för (int jag = 0; jag < 160; i ++) {
Switch(massegeChar[i]) {
fallet "A":
fallet "a":
typeA();
Delay(charDelay);
bryta;
fallet "B":
fallet "b":
typeB();
Delay(charDelay);
bryta;
fallet "C":
fallet "c":
typeC();
Delay(charDelay);
bryta;
fall skulle ":
fall skulle ":
typeD();
Delay(charDelay);
bryta;
fallet "E":
fallet "e":
typeE();
Delay(charDelay);
bryta;
fallet "F":
fallet "f":
typeF();
Delay(charDelay);
bryta;
fallet "G":
fallet "g":
typeG();
Delay(charDelay);
bryta;
fallet "H":
fallet "h":
typeH();
Delay(charDelay);
bryta;
fallet "I":
fallet "i":
typeI();
Delay(charDelay);
bryta;
fallet "J":
fallet "j":
typeJ();
Delay(charDelay);
bryta;
fallet "K":
fallet "k":
typeK();
Delay(charDelay);
bryta;
fallet "L":
fallet "l":
typeL();
Delay(charDelay);
bryta;
fallet är ":
fallet är ":
typeM();
Delay(charDelay);
bryta;
fallet 'N':
fallet 'n':
typeN();
Delay(charDelay);
bryta;
fallet ' o ':
fallet ' o ':
typeO();
Delay(charDelay);
bryta;
fallet "P":
fallet "p":
typeP();
Delay(charDelay);
bryta;
fallet "Q":
fallet "q":
typeQ();
Delay(charDelay);
bryta;
fallet "R":
fallet "r":
typeR();
Delay(charDelay);
bryta;
fallet ":
fallet ":
typeS();
Delay(charDelay);
bryta;
'T i mål ":
't i mål ":
typeT();
Delay(charDelay);
bryta;
fallet "U":
fallet "u":
typeU();
Delay(charDelay);
bryta;
fallet "V":
fallet "v":
typeV();
Delay(charDelay);
bryta;
fallet "W":
fallet "w":
typeW();
Delay(charDelay);
bryta;
fallet "X":
fallet "x":
typeX();
Delay(charDelay);
bryta;
fall "Y":
fall "y":
typeY();
Delay(charDelay);
bryta;
fallet "Z":
fallet "z":
typeZ();
Delay(charDelay);
bryta;
fallet "":
Space();
bryta;
}
Delay(300);
}
pressOk();
pressOk();
callNumber();
}
void callNumber() {
för (int jag = 1; jag < 12, i ++) {
pressDigit(number[i]-'0'); [i] - är '0' för att konvertera tecken till intiger
}
pressOk();
holdClear();
holdClear();
}
Jag kommer att publiceras en effektivare arduino skiss senare.