Show Posts
Pages: [1] 2 3 ... 12
1  International / Portugues / Re: Armazenar temperatura máxima e minima on: August 31, 2014, 10:04:00 am
Olá !

Quote
Testei o código com a sua dica, e em termos de memória é igual, (20.352 bytes), no desempenho não notei diferença.

Eu estava me referindo à memória RAM. Esse número é da memória FLASH.

Você pode usar este código para testar a memória livre.

Code:
int freeRam () {
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}

Code:
Serial.println(freeRam());


Code:
const byte ROWS = 4;
const byte COLS = 4; 

char keys[ROWS][COLS] =
{
  ...
}


Code:
char keys[4][4] =
{
  ...
}

Esses códigos fazem a mesma coisa porém, no primeiro você tem duas variáveis para guardar o número 4, que na minha opinião é inútil.

Só vale a pena criar uma variável quando ela for usada muitas vezes no código ou que mude com o tempo.

Se tivesse essa variável em vários lugares seria bom usá-la pois, se precisasse mudar o valor não teria que correr o código inteiro para ficar mudando os valores. No seu caso são apenas 3 lugares e no começo do código. smiley

Abraço.
2  International / Portugues / Re: Código Funcionando teto solar- aceito críticas on: August 30, 2014, 03:31:21 pm
Não importa se tem tarefa ou não, o programa sempre vai retornar para o início do loop.

Você pode fazer qualquer coisa deste tipo.

Code:
void teto_abre_fecha(byte tarefa, int maisTarefa, float outraTarefa, boolean chega)
{
  if(tarefa == 1)
   {
    if(maisTarefa == x)
     {
     // Abre teto
     }
    }
   else if((tarefa == 0)  &&  (outraTarefa < 1.5)
    {
      // Fecha teto
    }
   else if((tarefa == 2) || (chega == false))
    {
      // Aciona alarme
    }
}

Depois passa os 4 parâmetros:

Code:
teto_abre_fecha(tarefa, maisTarefa, outraTarefa, chega);
3  International / Portugues / Re: Código Funcionando teto solar- aceito críticas on: August 30, 2014, 03:03:54 pm
Aproveitando para aprender um pouco.

Qual a razão para se fazer este tipo de declaração?

Code:
//declarando os loops externos do sistema
void teto_reseta();
void teto_fecha();
void teto_fechado();
void teto_levanta();
void teto_abre();
void teto_aberto();
void teto_abaixa();
void teto_desliga();
4  International / Portugues / Re: Código Funcionando teto solar- aceito críticas on: August 30, 2014, 02:52:36 pm
Olá!

Fuja do delay usando millis().
Veja se isto ajuda.

Code:
/* Blink without Delay
 
 Turns on and off a light emitting diode(LED) connected to a digital 
 pin, without using the delay() function.  This means that other code
 can run at the same time without being interrupted by the LED code.
 
 The circuit:
 * LED attached from pin 13 to ground.
 * Note: on most Arduinos, there is already an LED on the board
 that's attached to pin 13, so no hardware is needed for this example.
 
 
 created 2005
 by David A. Mellis
 modified 8 Feb 2010
 by Paul Stoffregen
 
 This example code is in the public domain.

 
 http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
 */

// constants won't change. Used here to
// set pin numbers:
const int ledPin =  13;      // the number of the LED pin

// Variables will change:
int ledState = LOW;             // ledState used to set the LED
long previousMillis = 0;        // will store last time LED was updated

// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long interval = 1000;           // interval at which to blink (milliseconds)

void setup() {
  // set the digital pin as output:
  pinMode(ledPin, OUTPUT);     
}

void loop()
{
  // here is where you'd put code that needs to be running all the time.

  // check to see if it's time to blink the LED; that is, if the
  // difference between the current time and last time you blinked
  // the LED is bigger than the interval at which you want to
  // blink the LED.
  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis > interval) {
    // save the last time you blinked the LED
    previousMillis = currentMillis;   

    // if the LED is off turn it on and vice-versa:
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;

    // set the LED with the ledState of the variable:
    digitalWrite(ledPin, ledState);
  }
}


A função que o amigo se refere é deste tipo:

Code:
void teto_abre_fecha(byte tarefa)
{
  if(tarefa == 1)
   {
     // Abre teto
    }
   else
    {
      // Fecha teto
    }

}

Quando for chamar a função usa uma destas opções.

Code:
teto_abre_fecha(0);
teto_abre_fecha(1);

Abraço.
Fernando Garcia
5  International / Portugues / Re: Armazenar temperatura máxima e minima on: August 30, 2014, 02:41:41 pm
Sim, eu me lembro.

A questão é que não vejo necessidade de criar 2 variáveis para usá-las apenas em 3 lugares no começo do código.

Code:
const byte ROWS = 4;
const byte COLS = 4;
6  International / Portugues / Re: Armazenar temperatura máxima e minima on: August 30, 2014, 10:47:27 am
Olá!

Meu comentário não está relacionado com a sua questão mas, acho que vale a informação.

Não sei exatamente o quanto isso influência em termos de consumo de memória e desempenho mas, deixa o código mais limpo no meu ponto de vista.

Acho este tipo de método desnecessário.

Code:
const byte ROWS = 4;
const byte COLS = 4;  

char keys[ROWS][COLS] =
{
  ...
}

byte rowPins[ROWS] = { 22, 23, 24, 25 };

byte colPins[COLS] = {26, 27, 28, 29};

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );


Poderia usar apenas:

Code:
char keys[4][4] =
{
  ...
}

byte rowPins[4] = { 22, 23, 24, 25 };

byte colPins[4] = {26, 27, 28, 29};

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, 4, 4 );

Assim teria 2 variáveis a menos no código.

Abraço.
Fernando Garcia.
7  Using Arduino / Programming Questions / Re: How use a function? on: August 18, 2014, 08:25:18 am
Hi!

Thank you by answer.

Basically what I need to do is replace "EthernetClient client;" by "UIPClientExt client;" and call this function "client.remoteIP()"?

I need of code compatible with W5100 and ENC28J60, you can help me to make a function like this?

Code:
uint8_t *EthernetClient::getRemoteIP(uint8_t remoteIP[])
{
W5100.readSnDIPR(_sock, remoteIP);
return remoteIP;
}

Best regards.

Fernando Garcia
8  International / Portugues / Re: Problema RTC on: August 15, 2014, 09:49:32 pm
Isso não é problema de software.
Você precisa verificar todas as ligações.
Teste sem a bateria para ver se após religar o relógio será ajustado para o horário de compilação.
9  International / Portugues / Re: Problema RTC on: August 15, 2014, 08:02:21 pm
Luis, eu pensei nessa possibilidade mas, o horário mostrado seria o de compilação e não o de desligamento.
10  International / Portugues / Re: Accionar 5 ledes comandados por 5 botões diferentes on: August 15, 2014, 07:11:22 pm
http://www.comofazerascoisas.com.br/projeto-arduino-led-com-botao-liga-desliga.html
11  International / Portugues / Re: Problema RTC on: August 15, 2014, 06:06:21 pm
Olá!

Lago, a bateria está do outro lado do PCB não precisa de nenhuma conexão ao BAT.

Douglas, verifique se a bateria está boa e bem conectada.

Abraço.
12  International / Portugues / Re: Ethernet shield + SD on: August 15, 2014, 05:47:29 pm
Olá!

Tente usar a "sdfat.h" para ver se o problema persiste.

Abraço.
13  International / Portugues / Re: Ligar/desligar display LCD em intervalo de tempo ou por botão on: August 14, 2014, 10:56:16 am
Olá!

Sim, se você quiser por exemplo 23:30 vai ser:

Code:
if((NumMins(hora, minuto) >  1410)  ||  (NumMins(hora, minuto) <  480))  // (8 * 60) + 0 = 480
{
  lcd.noBacklight();
}

Abraço.
14  International / Portugues / Re: Ligar/desligar display LCD em intervalo de tempo ou por botão on: August 13, 2014, 05:03:12 pm
Olá!

Para desligar na hora que quer, pode usar este método:

Code:

if(NumMins(hora, minuto) <  480) // (8 * 60) + 0 = 480
{
  lcd.noBacklight();
}

int NumMins(uint8_t ScheduleHour, uint8_t ScheduleMinute)
{
  return (ScheduleHour*60) + ScheduleMinute;
}

Sendo hora e minuto as variáveis te tempo do teu programa.

Abraço
Fernando Garcia
15  International / Portugues / Re: Como calcular consumo elétrico de um projeto? on: August 11, 2014, 09:29:44 am
Olá!

Você quer medir o consumo de energia em corrente alternada?

Para medir o consumo do arduino basta colocar o multímetro em série com a fonte de alimentação.

Abraço.
Pages: [1] 2 3 ... 12