Pages: [1]   Go Down
Author Topic: [GSM module] Arduino + Hilo Sagem problema numero  (Read 347 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti!
Info
Vi spiego il mio progettino smiley-grin
Con arduino 2009 e il modulo GSM Hilo sagem vorrei realizzare un cercapersone un po' particolare.

Ad arduino sono collegati 5 led (uno per pin) e un buzzer.
pin 13 = led 1
pin 12 = led 2
pin 11 = led 3
pin 10 = led 4
pin 9  = led 5
pin 8  = buzzer
gnd    = gnd

Premetto che utilizzo l'ide v23 su Windows Seven e che non ho nessun problema a comunicare con il modulo. Anche in modalità gateway.
Cosa dovrebbe succedere? Vorrei che ad ogni squillo ricevuto si deve accendere un led ed il buzzer emmettere un suono ma ogni led corrisponde ad un numero telefonico differente.
Esempio:
se mi chiama il numero 3401432*** si deve accendere il led 1 e il buzzer
se mi chiama il numero 3332344*** si deve accendere il led 3 e il buzzer
e così via per i restanti.
Ovviamente avrò solo 5 numeri ma non importa, questo è ciò che vorrei.
E invece riesco solo a far accendere il led e a far suonare il cicalino soltanto quando legge il segno '+' e ovviamente sarebbe lentissimo comunque e non riconoscerebbe i numeri chiamanti.
Vi posto il codice.. spero riusciate a capirmi e ad indicarmi la giusta via perchè sto diventanto matto.
Code:
  int led = 13;
   int onModulePin = 2;        // the pin to switch on the module (without press on button)


char lettura; // Where to store the character read


   void switchModule(){
   digitalWrite(onModulePin,HIGH);
   delay(2000);
   digitalWrite(onModulePin,LOW);
   }
  




   void setup(){
  
   Serial.begin(9600);                // the GPRS baud rate
   delay(2000);
   pinMode(8, OUTPUT);
   pinMode(led, OUTPUT);
   pinMode(onModulePin, OUTPUT);
   switchModule(); //Turn module on

   Serial.println("AT+CRC=1;");
   delay(5000);
  


   }

   void loop(){
   while (Serial.available() > 0){
  
 
   lettura = Serial.read();
  
   Serial.print(lettura);
    
    if(lettura == '+'){
      buzz(8, 4186, 100);
      delay(10);
      digitalWrite(led, HIGH);
      delay(1000);
      buzz(8, 4186, 100);
      delay(10);
      digitalWrite(led, LOW);
      delay(1000);
      
      break;
    } else {
      digitalWrite(led, LOW);
      delay(1000);
     }
  }
  
   //Serial.println();
   //reset();
}



void buzz(int targetPin, long frequency, long length) {
long delayValue = 1000000/frequency/2;
long numCycles = frequency * length/ 1000;
for (long i=0; i < numCycles; i++)
{
digitalWrite(targetPin,HIGH);
delayMicroseconds(delayValue);
digitalWrite(targetPin,LOW);
delayMicroseconds(delayValue);
}
}
« Last Edit: December 09, 2012, 09:58:08 am by efleme » Logged

Pages: [1]   Go Up
Jump to: