Show Posts
Pages: [1] 2 3 ... 9
1  International / Portugues / Re: Controlador Diferencial para o meu sistema solar Térmico on: March 14, 2014, 06:22:52 am
O inversor/variador de frequência é um aparelho muito caro para lidares como hobby, talvez melhor se usares uma bomba CC ou uma bomba peristáltica, que são mais fáceis de controlar.
2  International / Portugues / Re: Ajuda com programação de estufa on: March 14, 2014, 06:20:27 am
Me explica o que o StartStatus tem que fazer que a gente já agiliza.
3  International / Portugues / Re: DMA on: March 12, 2014, 06:37:16 am
A arquitetura do ATMEGA328 e similares não provê acesso direto a memória a partir dos periféricos internos ao MCU. O DMA a que você se refere seria isso, certo?

Abraços

nu
4  International / Portugues / Re: Ajuda com controle de tempo on: March 12, 2014, 06:34:22 am
Mostre o código que você está usando no trecho em que você usa o AccelStepper.
5  International / Portugues / Re: Controlador Diferencial para o meu sistema solar Térmico on: March 12, 2014, 12:52:51 am
Que tipo de bomba estás a usar? Bomba peristáltica?
6  International / Portugues / Re: Ajuda com programação de estufa on: March 12, 2014, 12:34:26 am
Seu código original está assim:
Code:
time_t = t *60 *1000;    
    
     if (SaidaStatus == 1 && t > 0) {
      count = millis();
        digitalWrite(Saida_Pin, HIGH); //activa a saida do arduino...
            lcd.clear();
            lcd.setCursor(1, 0 );
            lcd.print(time_t);
        contagem = millis() - count;
            lcd.setCursor(12, 1);
            lcd.print(contagem);
    }
       if (contagem >= time_t){
          digitalWrite(Saida_Pin, LOW); //desactiva a saida...
E você quer que o LCD fique mostrando um tempo, certo? A passagem do tempo deve ocorrer dentro de um laço e, dentro desse laço, você mostra o valor no LCD:
Code:
time_t = t *60 *1000;

if (SaidaStatus == 1 && t > 0) {
    count = millis();
    digitalWrite(Saida_Pin, HIGH); //activa a saida do arduino…

    // fiz o laço abaixo para mostrar o tempo no LCD
    contagem = 0;
    while (contagem < time_t) {
        lcd.clear();
        lcd.setCursor(1, 0);
        lcd.print(time_t);
        contagem = millis() - count;
        lcd.setCursor(12, 1);
        lcd.print(contagem);
    }
}

digitalWrite(Saida_Pin, LOW); //desactiva a saida…
Peraí, já que você disse que está bloqueando com o while(1) do Hugo_PT, tente fazer assim:
Code:
time_t = t *60 *1000;

if (SaidaStatus == 1 && t > 0) {
    if (count == 0) {
        count = millis();
    }
    digitalWrite(Saida_Pin, HIGH); //activa a saida do arduino…
    contagem = millis() - count;
} else {
    count = 0;
    contagem = 0;
}

lcd.clear();
lcd.setCursor(1, 0);
lcd.print(time_t);
lcd.setCursor(12, 1);
lcd.print(contagem);

if (contagem >= time_t) {
    digitalWrite(Saida_Pin, LOW); //desactiva a saida...
}
7  Using Arduino / Networking, Protocols, and Devices / Re: HT12E library on: March 11, 2014, 10:39:48 pm
Please refer to the following link to get the latest version of the HT12E library:

http://forum.arduino.cc/index.php?topic=186882.0

As of March 12th, 2014, the current version of the library still does not support sending data to an HT12D chip.

The original purpose of this library was to provide Arduino family of boards with an easy way to BE CONTROLLED REMOTELY by a remote control operated with an HT12E chip.

I have been receiving each day more requests asking for the development of an HT12D library, which would work in the opposite way, that is, letting an Arduino CONTROL remote devices operated with an HT12D chip. If this is what you are looking for, please open a new thread in the appropriate forum, entitled "HT12D library", so that I can more easily track records of it.

Cheers

nu
8  International / Portugues / Re: Problema com Serial.Read on: March 06, 2014, 08:00:33 am
Esse switch serve no lugar do teu if (numero < '0' || numero > '9'), bubulindo. Se o pá digitar alguma coisa diferente de 0 a 9, ele cai no caso default do switch e mostra o número armazenado.

Enquanto ele não digitar nada estranho, o programa anda a armazenar os dígitos, sem a necessidade de usar matemática de ponteiro nem vetor, nem terminação de string. Isso tudo é de uma complexidade desnecessária pra quem mexe com Arduino.

É óbvio que se o pá digitar "70000" vai acontecer estouro, mas eu acredito e rezo que esse fluxo alternativo não vá acontecer com o OP.

Também não usei o atoi() porque gosto de evitar coisas que não conheço bem e não faço ideia de como a biblioteca foi implementada. Já agora, por falar nisso, teu programa tem um defeito: se a pessoa digitar "10a" ou "a", que seja, tu estás a preencher o vetor com dois caracteres NUL nas posições zero e um dele, ou seja, está passando uma string vazia ao atoi(): resulta em boom.
9  Using Arduino / Networking, Protocols, and Devices / Re: HT12E library for Arduino on: September 08, 2013, 04:50:22 pm
Hello, Rob, thanks for your input!

Changes since last version (as of May '08):

  • there are two new methods: HT12E::error() and HT12E::available()
  • HT12E::available() tells you when there is potentially significant data arriving. It must be called before a call to HT12E::read(). Use it as follows:
Code:
if (remoteControl.available() > 0)
{
  unsigned int incomingData = remoteControl.read();
  // do something with incoming data
}
  • HT12E::error() tells you which phase of the data capturing process was the offending one. HT12E::available() must have been called before a call to HT12E::error(). There are five possible values returned from HT12E::error() method:
    • 0: no error occurred, or Arduino is idle
    • 1: error while waiting/receiving a pilot stream
    • 2: error while waiting sync bit to finish
    • 4: error while waiting/receiving the data stream
    • 8: error while matching the data stream address to the predefined address mask; that is, the message you have just received has a different address from what you've been expecting, which means it is somebody else's remote control's data arriving, not your own remote control's
10  Using Arduino / Networking, Protocols, and Devices / HT12E library for Arduino on: September 08, 2013, 08:03:02 am
Hello,

If you want to send commands from a remote control driven by a HT12E chip to your Arduino board, then this is the right library for you.

This new library for HT12E is intended to follow the same underlining principles of other libraries.

Code:
/*---

  HT12E.cpp
  HT12E Support for Arduino
  The purpose of this library is to enable your Arduino to receive commands remotely
  from a HT12E-driven device or control.  
  Note  : make sure HT12E is operating at 3~4kHz clock range
  Author: Marcelo Shiniti Uchimura
  Date  : Sep '13
  
---*/

#include "HT12E.h"

HT12E::HT12E(int pin, unsigned int addrMask)
{
  _pin = pin;
  pinMode(_pin, INPUT);
  _data = 0;
  _mask = addrMask << 4;  // the HT12E basic word is a stream with an 8-bit address
                          // followed by 4-bit data. I left shift the
                          // address mask 4 bits so I can match it to the entire word
}

int HT12E::read()
{
  return _data;
}

int HT12E::error()
{
  uint8_t temp = _flags;
  _flags = 0;
  return temp & B00001111;   // LSB of _flags is the error flag
}

uint8_t HT12E::maskMatchesIncomingData()
{
  if((_data & _mask) < _mask)
  {
    _flags |= B1000;
    return 0;
  }
  return 1;
}

uint8_t HT12E::dataStreamAvailable()
{
  uint8_t ctr;
  
  /* let's get the address+data bits now */
  for(_data = 0, ctr = 0; ctr < DATASIZE; ++ctr)
  {
    _dur = pulseIn(_pin, HIGH);
    if(_dur > 250 && _dur < 333)        // if pulse width is between 1/4000 and 1/3000 secs
      {
      _data = (_data << 1) + 1;         // attach a *1* to the rightmost end of the buffer
    }
    else if(_dur > 500 && _dur < 666)   // if pulse width is between 2/4000 and 2/3000 secs
    {
      _data = (_data << 1);             // attach a *0* to the rightmost end of the buffer
    }
    else
    {
      _flags |= B0100;
      return 0;
    }
  }
  
  return 1;
}

uint8_t HT12E::syncBitGone()
{
  /* now wait until sync bit is gone */
  for(uint8_t ctr = 0; ctr < MAXTRIES; ++ctr)
  {
     if(digitalRead(_pin) == LOW)
       return 1;
     delayMicroseconds(80);
  }
  
  _flags |= B0010;
  return 0;
}

uint8_t HT12E::pilotStreamAvailable()
{
  /* look for HT12E basic word's pilot stream */
  for(uint8_t ctr = 0; ctr < MAXTRIES; ++ctr)
  {
    while(digitalRead(_pin) == LOW);                // wait for the signal to go HIGH
    
    _dur = pulseIn(_pin, LOW);

    if(_dur > 9000 && _dur < 12000)
      return 1;          // 36x(clock tick interval)
  }
  
  _flags |= B0001;
  return 0;
}
  
int HT12E::available()
{
  _flags = 0; // initializes error handling reference
  
  if (pilotStreamAvailable()
    &&  syncBitGone()
    &&  dataStreamAvailable()
    &&  maskMatchesIncomingData())
  {  
    _data ^= _mask;
    return 1;
  }
  
  _data = 0;
  return 0;
}

Code:
/*---

  HT12E.h
  HT12E Support for Arduino
  The purpose of this library is to enable your Arduino to receive commands remotely
  from a HT12E-driven device or control.  
  Note  : make sure HT12E is operating at 3~4kHz clock range
  Author: Marcelo Shiniti Uchimura
  Date  : Sep '13
  
---*/

#ifndef HT12E_h
#define HT12E_h

#define MAXTRIES 13
#define DATASIZE 12
  
#include "Arduino.h"

class HT12E
{
  public:
                 HT12E(int pin, unsigned int addrMask); // this is the constructor
    int          read();                                // this is the main method
    int          error();                               // for error handling purpose
    int          available();                           // used when there's potentially significant data
  private:
    uint8_t      _pin;      // this is Arduino input pin
    unsigned int _data;     // this is data
    unsigned int _mask;     // this is the address mask
    uint8_t      _flags;    // handles error() (bit 0, 1, 2, and 3) flag
    unsigned long _dur;     // pulse duration
    uint8_t      pilotStreamAvailable();
    uint8_t      syncBitGone();
    uint8_t      dataStreamAvailable();
    uint8_t      maskMatchesIncomingData();
};

#endif

Code:
/*
  Usage example sketch
*/
#include <HT12E.h>

HT12E remoteControl(7, B01111111); /* the incoming stream is tied to pin 7, and the address mask is the binary 01111111 */

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  if (remoteControl.available() > 0)
  {
    unsigned int data;
    data = remoteControl.read();
    Serial.println("I have just received the following data stream: ");
    Serial.println(data, BIN);
  }
  else
  {
    switch (remoteControl.error())
    {
      case 0:
        break;
      case 1:
        Serial.println("Failure when waiting for a pilot stream");
        break;
      case 2:
        Serial.println("Failure when waiting for sync bit to go away");
        break;
      case 4:
        Serial.println("Failure when waiting for a data stream");
        break;
      case 8:
        Serial.println("Data mask does not match predefined address mask");
        break;
      default:
        Serial.println("Unknown error occurred");
        break;
    }
  }
}
11  International / Portugues / Re: Editando html no webserver on: September 08, 2013, 05:47:38 am
Eu coloquei o cod
Code:
client.println("<p><img alt="" src="http://forum.arduino.cc/Themes/arduinoWide/images/home_icon.gif" style="width: 167px; height: 62px" /></p>");

Mas não deu certo
O que exatamente não deu certo? O código não compilou? A imagem não baixou quando vc navegou para o Arduino?

Tem um erro de cara no seu código, você tem que escapar as aspas duplas do HTML:
Code:
client.println("<p><img alt=\"\" src=\"http://forum.arduino.cc/Themes/arduinoWide/images/home_icon.gif\" style=\"width: 167px; height: 62px\" /></p>");
12  Using Arduino / Networking, Protocols, and Devices / Re: HT12E library on: October 28, 2012, 07:45:18 am
Hi there

Take a look at post #1 in this thread, I provided the source code of the library for HT12E over there.

Your goal is to operate an Arduino with a RC, right? That's the point over here, I mean, to remote-control an Arduino.

Cheers

nu
13  International / Portugues / Re: Problema com Uno: todas as saidas digitais permanecem ligadas (High) on: October 24, 2012, 05:39:08 pm
Quanto você pagou no teu Arduino Uno?
14  International / Portugues / Re: arduino+ethernet shield+macbook+internet movel on: October 09, 2012, 08:00:19 am
Para o provedor de serviços de internet, que talvez seja alguma empresa de telefonia ou de TV por cabo, o teu IP não é 192.168.2.1; o que quero dizer é que, fora da tua casa, o intervalo de IPs é diferente do que os IPs da internet:

Code:
+-----------+   +-----------+                  +---------+     +------------+
| Telemovel |ooo| Router 3G |++++ Internet xxxx| Airport |--+--| PC de mesa |
+-----------+   +-----------+               ^  +---------+  |  +------------+
                                            |  192.168.2.255|  192.168.2.35
                                            |               |  
                                            |               |  +---------+
                                            |               +--| Arduino |
                                            |                  +---------+
                                       172.6.39.12             Aqui é
                                                               192.168.2.1
Legenda: o, x, + e - são redes IP distintas; os IPs são todos fictícios, menos o do Arduino

O que o telemóvel pode aceder é o IP externo do teu Airport, que, no caso, é 172.6.39.12; entretanto, deve-se configurar também qual porta do Airport dará acesso direto ao Arduino. Por exemplo, quando digitares no navegador web
Code:
http://172.6.39.12:9080/
vais estar a aceder o Arduino pelo telemóvel ou qualquer outro equipamento que não esteja na mesma rede que o Arduino, caso o Airport tenha sido configurado com a porta 9080 a redirecionar tudo para o Arduino.
15  International / Portugues / Re: encerrar programa on: October 09, 2012, 07:40:57 am
Não precisa complicar; faça do jeito mais fácil: Maurício, coloque todo o seu código dentro do bloco setup() do Arduino e, para reexecutar o seu programa, acione o botão Reset da placa.

Ou seja, basta fazer um puxadinho com o botão Reset do Arduino.
Pages: [1] 2 3 ... 9