Show Posts
Pages: 1 ... 108 109 [110] 111 112 ... 216
1636  International / Portugues / Re: enviar sms - numero como variavel on: October 29, 2012, 04:20:58 am
Não fizeste referência se o programa funciona quando não usas o número de telefone como uma variável. Eu assumo que sim, mas não faço ideia.

Outra coisa, este código que deixaste tem coisas estranhas.

Para que serve esta linha:

Code:
mySerial.print("\r");
??

Porquê os delays entre envios de dados para o módulo GSM? Já apareceram aqui vários exemplos sem delays que aparentemente estavam a funcionar.

Finalmente, não me parece correcto que coloques o código a enviar SMSs sem condições no loop... de 4 em 4 segundos o módulo GSM vai tentar mandar SMSs... já viste se tens saldo no cartão? Coloca algo como:


Code:
if (Serial.available() > 0) {
    if (Serial.read() == 'S') {
        //Código para envio de mensagens...
    }
}
Assim sempre que enviares um S pela Serial, o módulo manda a SMS. Muito mais controlado e simples.

Ahh e experimenta o programa depois de teres desligado tudo e voltado a ligar.
1637  International / Portugues / Re: Montei uma coisa legal, e agora? on: October 28, 2012, 03:31:33 pm
Depende... Se precisares de comunicação usb, é provavelmente melhor ficar a placa toda, senão basta o microcontrolador.
1638  International / Portugues / Re: Montei uma coisa legal, e agora? on: October 28, 2012, 01:26:41 pm
Se pretenderes reutilizar o arduino, podes montar uma placa semelhante ao arduino para continuar o projecto a correr.

O objectivo do arduino é mesmo o de prototipagem.
1639  International / Portugues / Re: Acionar portas digitais simultaneamente on: October 28, 2012, 01:23:36 pm
Não.

Ou seja, pode até haver algo assim em C, mas o processo de compilação vai passar isso para mais instruções. 

Tenta ver como se faz em assembly, aí não existe problemas de optimização de compilação, e podes fazer isso com C também.

Ou então, outro método de output como um l297 ou um chip da alegromicro.
Ou serial in, parallel out...

1640  International / Portugues / Re: Acionar portas digitais simultaneamente on: October 27, 2012, 11:05:18 am
Hugo,

O digitalWrite é lentíssimo e ao fim de algumas activações, começa-se a notar a diferença.

O mais rápido possível é escrevendo directamente para o registo PORT directamente.

Mas qual é mesmo a aplicação que necessita de ser realizada num espaço tão curto?
1641  International / Portugues / Re: Problema ao usar portas seriais (TX e RX) on: October 27, 2012, 11:01:39 am
E o módilo vem num shield ou estás a fazer as ligações em breadboard?
1642  International / Portugues / Re: Arduino Uno + Icomsat 1.1 SIM900 on: October 26, 2012, 11:16:32 am
Depende de quanto o sensor consome. Diria que para a maior parte dos sensores que se usam com breadboard isso pode ser feito na boa, senão é adicionar um transistor. Mas porque quererias fazer isso? O projecto funciona a pilhas? Estás ciente que os sensores podem ter tempos de arranque até darem dados fiáveis?

Assim de repente...

Code:

const int pino_SMS = XXXX; //mete tu o pino...

....


loop() {


if (HIGH == digitalWrite(pino_SMS)) { //escolhe a polaridade do botão aqui...
   //se botão ou sensor activado...
   gsm.println("AT+CMGS=939393933\nACTIVADO");
   gsm.print(0x1a); // isto é equivalente ao Ctrl + Z
}


}


Não me parece que colocar uma interrupção seja bom neste caso. Apenas tens de garantir que o programa passa pela parte de testar o pino de x em x milisegundos e isso por si só garante que não vais ter o sistema a mandar SMSs a torto e a direito. A propósito, seria benéfico colocares um tipo de lógica desses aqui para evitar que mandes SMSs devido a bouncing dos contactos. smiley

Era isto que tinhas dúvidas?
1643  International / Portugues / Re: Arduino Uno + Icomsat 1.1 SIM900 on: October 26, 2012, 06:42:43 am
Acho que temos de primeiro definir os termos.

Um sensor não pode ser activado. Pode ser lido. Um actuador, pode ser activado mas não pode (normalmente) ser lido.

Dito isto, queres mandar um SMS e activar um LED. Isto já funciona?

Para receberes uma mensagem quando o sensor ser activado, como é o sensor? É digital ou analógico? Já fizeste um programa só para enviar SMSs?
1644  Using Arduino / Programming Questions / Re: Seeedstudio temperature and humidity code on: October 26, 2012, 05:27:44 am
Pin A0 is different than pin 0 in the Arduino...

http://www.arduino.cc/en/Hacking/PinMapping168

if you look at the link above, you'll see that the Arduino has 13 pins... and then the analog pins. I'd say that the analog pins can be used with 14,15,16... when used as digital. But I'm not completely sure.

In the Mega, chances are that the pin numbering is different.

1645  Using Arduino / Programming Questions / Re: Xbee remote sensor to XBee/SD card on: October 26, 2012, 05:24:34 am
I noticed something strange...

You shouldn't open the file every time you use it.

You should open the file on setup and write to it in the loop() function. Once the size of the file gets big or some other condition, close it, and create or open a new one. This is nt the problem you're having, but it may lead to problems once you test it.

Try declaring the File variable as global....

Code:
/*
 * Xbee wireless PIR sensor to datalogger with Arduino 1.0.1
 */
 #include <SD.h>
 #include <SoftwareSerial.h>
 SoftwareSerial mySerial = SoftwareSerial(0,1);
 const int chipSelect = 10;
unsigned long time;
const int ledPin = 8;                // choose the pin for the LED
const int inputPin = 7;               // choose the input pin (for PIR sensor)
int pirState = LOW;             // we start, assuming no motion detected
 
File dataFile;<--------------------------------CHANGED

void setup()
{
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(inputPin, INPUT);     // declare sensor as input
 
  Serial.begin(9600);
  Serial.print("Initializing SD Card...");
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    return;
  }
 Serial.println("card initialized");
 Serial.print("Goodnight Moon");
 mySerial.begin(9600);
 mySerial.println("Hello World");
 
}
void loop()
{                                                         
  delay(6000);
  float time = millis();
 
  pirState = digitalRead(inputPin);  // read input value
 
    if (pirState == HIGH) {         // check if the input is HIGH
    digitalWrite(ledPin, HIGH);    //LED on
    delay (500);
    digitalWrite(ledPin, LOW);     //LED OFF
     
   dataFile = SD.open("datalog.txt", FILE_WRITE); <------------- CHANGED
    do {
     Serial.print(" ");     // this is just to check on the serial monitor
      Serial.print(time/60000);
      Serial.print(",  ");
      Serial.println("1");
      mySerial.read();
    }
    while (mySerial.available()==0);
   
    do {   
     
     mySerial.print (" ");
     mySerial.print(time/60000);
     mySerial.print(", ");
     mySerial.println("1");
     Serial.read();
    }
     while (Serial.available()==0);
   
    do {
    dataFile.print("");
    dataFile.print(time/6000);
    dataFile.print (", ");
    dataFile.println('1');
    mySerial.read();            //would this work?
    }
    while (mySerial.available()==0);
   
    }                             //Closes "if" statement
   
 else {
    do {                         //omitted Serial.pring list
      mySerial.print(" ");
      mySerial.print(time/60000);
      mySerial.print(" ");
      mySerial.println("0");
      Serial.read();
    }     
     
      while (Serial.available()==0);
   
    do {
      dataFile.print(" ");
      dataFile.print(time/60000);
      dataFile.print(" ");
      dataFile.println("0");
      mySerial.read();          //again, will this work?
 }
     while mySerial.available()==0);   //would this work?
       
    }                          //Closes "else" statwement           
     if (pirState == HIGH) {
      // We only want to print on the output change, not state
      pirState = LOW;
     }
 
                                //Closes loop
}
1646  International / Portugues / Re: Problema ao usar portas seriais (TX e RX) on: October 26, 2012, 03:08:10 am
Há algo que me irrita solenemente... perguntar algo e não ser respondido. Já tens o módulo a funcionar?

Acerca da power supply:

http://www.arduino.cc/playground/Learning/WhatAdapter

Onde diz:

The long answer is that an off-the shelf Arduino adapter:
- must be a DC adapter (i.e. it has to put out DC, not AC);
- should be between 9V and 12V DC (see note below);
- must be rated for a minimum of 250mA current output, although you will likely want something more like 500mA or 1A output, as it gives you the current necessary to power a servo or twenty LEDs if you want to.
- must have a 2.1mm power plug on the Arduino end, and
- the plug must be "centre positive", that is, the middle pin of the plug has to be the + connection.

O ICSP é um método para gravar os programas no Arduino. Agora usas algo chamado bootloader, para usar o método de ICSP, tens de arranjar outro Arduino ou comprar um gravador dedicado como estes:

http://www.atmel.com/tools/AVRISPMKII.aspx  o original... custa cerca de 36 euro.

Ou algo assim:

http://www.ebay.co.uk/itm/USBASP-USBISP-AVR-Programmer-USB-ATMEGA8-ATMEGA128-New-/320955542418?pt=UK_Computing_Other_Computing_Networking&hash=item4aba70eb92

No entanto, se não sabes muito, deixa-te ficar pelo bootloader. É mais simples, barato e não arriscas estragar o chip.
1647  International / Portugues / Re: RASTREADOR SOLAR!!! URGENTE... on: October 26, 2012, 02:59:34 am
O que é que já fizeste?

Nós estamos aqui para ajudar, não para te fazer o trabalho. Se disseres o que já fizeste e qual a dúvida em específico que encontraste, certamente que alguém aqui te ajudará.

Ser urgente não nos interessa para nada. smiley-razz
1648  International / Portugues / Re: Problema ao usar portas seriais (TX e RX) on: October 25, 2012, 10:56:04 am
E o esquema do módulo?

Tens aí um manual ou esquema de ligação?

Esse código não comunica com o módulo, como já percebeste... o ideal será ver como funciona o módulo (e se está num shield) para ver como comunicar com ele.

1649  International / Portugues / Re: Arduino Uno + Icomsat 1.1 SIM900 on: October 25, 2012, 08:32:48 am
E o que é que o teu programa não faz?

1650  International / Portugues / Re: Problema ao usar portas seriais (TX e RX) on: October 25, 2012, 05:36:53 am
É preciso ter em atenção que por vezes os LEDs de TX e RX estão "ligados" à entrada e saída USB. Ou seja, se ligares algo ao TX e RX do micro, os LEDs não são activados. Isto depende da placa, creio... mas já me chamaram à atenção para isso.
Pages: 1 ... 108 109 [110] 111 112 ... 216