Show Posts
Pages: [1]
1  International / Software / Hilo Sagem+Arduino 2009 Problema lettura seriale on: October 09, 2014, 03:52:49 pm
Ciao a tutti!
Tempo fa decisi di creare un cerca persone con arduino e ci sono riuscito. Oggi, dopo tanto tempo ho ritrovato un vecchio sketch ed ho deciso di riutilizzarlo.
Ho un problema però.. Il modulo si accende benissimo e se provo a chiamare la sim squilla però non ho nessuna dicitura sulla seriale e di conseguenza non mi funziona lo sketch.
Ecco il codice.
Code:
  #include "pitches.h"
const int buttonPin = 8;     // the number of the pushbutton pin
   int led = 13; //3
   int led2 = 12; // 2
   int led3 = 11; //4
   int led4 = 10; // 5
   int led5 = 9; // 1
int buttonState = 0;  
   int onModulePin = 2;        
   String ReadLine;                                

  void switchModule(){
   digitalWrite(onModulePin,HIGH);
   digitalWrite(led5, HIGH);
   delay(500);
   digitalWrite(led5, LOW);

   delay(10);
   digitalWrite(led3, HIGH);
   delay(500);
   digitalWrite(led3, LOW);

   delay(10);
   digitalWrite(led2, HIGH);
   delay(500);
   digitalWrite(led2, LOW);

   delay(10);
   digitalWrite(led, HIGH);
   delay(500);
   digitalWrite(led, LOW);

   delay(10);
   digitalWrite(led4, HIGH);
   delay(500);
   digitalWrite(led4, LOW);

   delay(10);
   delay(500);
   digitalWrite(led, LOW);
   digitalWrite(led2, LOW);
   digitalWrite(led3, LOW);
   digitalWrite(led4, LOW);
   digitalWrite(led5, LOW);
   delay(500);

   delay(10);
   digitalWrite(led, HIGH);
   digitalWrite(led2, HIGH);
   digitalWrite(led3, HIGH);
   digitalWrite(led4, HIGH);
   digitalWrite(led5, HIGH);
   delay(500);
   digitalWrite(led, LOW);
   digitalWrite(led2, LOW);
   digitalWrite(led3, LOW);
   digitalWrite(led4, LOW);
   digitalWrite(led5, LOW);

   delay(10);
   delay(2000);
   digitalWrite(onModulePin,LOW);
   }
  
 void setup(){
     pinMode(buttonPin, INPUT);
  pinMode(led, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);

  pinMode(onModulePin, OUTPUT);

  Serial.begin(9600);              
    
  switchModule();                    
 
  for (int i=0;i<2;i++){
   delay(5000);                        
  }
   Serial.println("AT+CMGF=1;");      
}

   void loop(){
     buttonState = digitalRead(buttonPin);
     int16_t c;
     if(Serial.available()){
       while(Serial.available()>0){
         delay(10);
         char c =Serial.read();
         ReadLine += (char)c;        
       }
       Serial.print(ReadLine);
       //casa led 13
       if((byte)ReadLine.indexOf("+390575999922") < 255){
         digitalWrite(led, HIGH);
         suoneria();
         delay(1000);
         digitalWrite(led, LOW);
         delay(1000);
       } else if((byte)ReadLine.indexOf("+390575999955") < 255) {
         digitalWrite(led2, HIGH);
         suoneria();
         delay(1000);
         digitalWrite(led2, LOW);
         delay(1000);
       } else if((byte)ReadLine.indexOf("+390575999977") < 255) {
         digitalWrite(led3, HIGH);
         suoneria();
         delay(1000);
         digitalWrite(led3,LOW);
         delay(1000);
       } else if((byte)ReadLine.indexOf("+39057599988") < 255) {
         digitalWrite(led4, HIGH);
         suoneria();
         delay(1000);
         digitalWrite(led4, LOW);
         delay(1000);
       } else if((byte)ReadLine.indexOf("+3905759999") < 255) {
         digitalWrite(led5, HIGH);
         suoneria();
         delay(1000);
         digitalWrite(led5, LOW);
         delay(1000);
        delay(10000);
       } else if((byte)ReadLine.indexOf("+CLIP:") < 255) {
    
       delay(10);
       digitalWrite(led, HIGH);
       digitalWrite(led2, HIGH);
       digitalWrite(led3, HIGH);
       digitalWrite(led4, HIGH);
       digitalWrite(led5, HIGH);
       delay(1000);
       digitalWrite(led, LOW);
       digitalWrite(led2, LOW);
       digitalWrite(led3, LOW);
       digitalWrite(led4, LOW);
       digitalWrite(led5, LOW);
       ReadLine="";
       } else {
       digitalWrite(led, LOW);
       digitalWrite(led2, LOW);
       digitalWrite(led3, LOW);
       digitalWrite(led4, LOW);
       digitalWrite(led5, LOW);
       ReadLine="";
       }
       ReadLine="";
     }
   }
  


void suoneria(){
int suoni[] = {
NOTE_C7, NOTE_G7,NOTE_G7, NOTE_A7, NOTE_G7,0, NOTE_B7, NOTE_C7};
int noteTempi[] = {4,8,8,4,4,4,4,4};
 
   for (int Nota = 0; Nota < 8; Nota++) {
    int noteTempo = 1000/noteTempi[Nota];
    tone(8, suoni[Nota],noteTempo);
    int pauseBetweenNotes = noteTempo * 1.30;
    delay(pauseBetweenNotes);
  }

}


Mentre pitches.h contiene le note.
Per favore sapreste dirmi dove sbaglio?. Grazie a tutti!
2  International / Software / Re: Lettura stringa un byte alla volta con concatenazione e confronto on: December 11, 2012, 12:34:48 pm
<3
3  International / Software / Lettura stringa un byte alla volta con concatenazione e confronto on: December 11, 2012, 10:55:51 am
Code:
   int led = 13;
   int onModulePin = 2;       
   String stringa;                               

  void switchModule(){
   digitalWrite(onModulePin,HIGH);
   delay(2000);
   digitalWrite(onModulePin,LOW);
   }
   
 void setup(){
   
  pinMode(led, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(onModulePin, OUTPUT);

  Serial.begin(9600);              // the GPRS baud rate
   
  switchModule();                    // swith the module ON
 
  for (int i=0;i<2;i++){
    delay(5000);                       
  }
 
   Serial.println("AT+CLIP=1;");     
   delay(5000);


}


   void loop(){
     stringa = "";
     if(Serial.available()){
       while(Serial.available()>0){
         delay(10);
        char c =Serial.read();
   

    stringa += c;             
       } 
    if(stringa =="+390575"){
         buzz(8, 4186, 100);
         delay(10);
         digitalWrite(led, HIGH);
         delay(1000);

        } else {
        digitalWrite(led, LOW);
        }
       }   
   }



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);
}
}

Qualcuno saprebbe dirmi perchè non funziona? Per favore... sto impazzendo.
4  International / Software / [GSM module] Arduino + Hilo Sagem problema numero on: December 09, 2012, 09:41:35 am
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);
}
}
Pages: [1]