Show Posts
Pages: 1 ... 4 5 [6] 7 8 ... 34
76  International / Portugues / Re: Sincronizar o relógio do PC com o Arduino on: October 24, 2013, 11:05:43 am
Dá esses erros porque você esta tanando compilar uma linguagem escrita em "processing" na IDE do Arduino.

http://processing.org/
77  International / Portugues / Re: Ler 02 ou mais Sensores SHT11 on: October 22, 2013, 02:27:33 pm
bota isso no google: SHT11 arduino
Encontrarás muitos exemplos, se tiver dúvidas ou problemas posta aqui. =)
78  International / Portugues / Re: Como Ler um puslo com arduino??? RPM on: October 21, 2013, 06:59:00 pm
por que não pode usar interrupções? http://arduino.cc/en/Reference/Interrupts

pode ser mais "seguro" que tratar o estado (low/high) no loop, apesar de que pode fazê-lo (google it: arduino rpm without interrupt). http://forum.arduino.cc/index.php?topic=104233.0

E lembre-se que neste tipo de aplicação (se não queres perder um só pulso) tens de tomar cuidado com loops e evitar delays ^^
79  International / Portugues / Re: Como Ler um puslo com arduino??? RPM on: October 21, 2013, 08:19:41 am
O que usarás para fazer a medição?

Botando no google: "rpm arduino" o primeiro resultado já indica uma opção, usando interrupção:
http://playground.arduino.cc/Main/ReadingRPM

Dentre outras, na minha opinião é a forma mais simples ^^

A alternativa do Lago é mais complexa, mas muito boa! smiley-wink
80  International / Portugues / Re: codigo do barometro bmp85 on: October 15, 2013, 08:21:44 pm
esse compilou
Code:
/*Based largely on code by  Jim Lindblom

  Get pressure, altitude, and temperature from the BMP085.
  Serial.print it out at 9600 baud to serial monitor.
*/

#include <Wire.h>

#define BMP085_ADDRESS 0x77  // I2C address of BMP085

const unsigned char OSS = 0;  // Oversampling Setting

// Calibration values
int ac1;
int ac2;
int ac3;
unsigned int ac4;
unsigned int ac5;
unsigned int ac6;
int b1;
int b2;
int mb;
int mc;
int md;

// b5 is calculated in bmp085GetTemperature(...), this variable is also used in bmp085GetPressure(...)
// so ...Temperature(...) must be called before ...Pressure(...).
long b5;

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

  bmp085Calibration();
}

void loop()

  float temperature = bmp085GetTemperature(bmp085ReadUT()); //MUST be called first
  float pressure = bmp085GetPressure(bmp085ReadUP());
  float atm = pressure / 101325; // "standard atmosphere"
  float altitude = calcAltitude(pressure); //Uncompensated caculation - in Meters

  selectLineOne();
  Serial.print("Baro: ");
  Serial.print(pressure/100, 1); // correccion +1 milibatr y un decimal
  Serial.print(" mB");

  selectLineTwo();
  Serial.print("Temp:   ");
  Serial.print(temperature - 2, 1 ); //correccion (-2) y un decimal
  Serial.print(" ");
  Serial.print((char)223); // simbolo de grado celsius
  Serial.print("C");
 


  delay(15000);
}
void selectLineOne(){  //puts the cursor at line 0 char 0.
   Serial.print(0xFE, HEX);   //command flag
   Serial.print(128, HEX);    //position
   delay(10);
}
void selectLineTwo(){  //puts the cursor at line 0 char 0.
   Serial.print(0xFE, HEX);   //command flag
   Serial.print(192, HEX);    //position
   delay(10);
}
void backlightOn(){  //turns on the backlight
    Serial.print(0x7C, HEX);   //command flag for backlight stuff
    Serial.print(130, HEX);    //NIVEL DE ILUMINACION AL MINIMO
   delay(10);
}

// Stores all of the bmp085's calibration values into global variables
// Calibration values are required to calculate temp and pressure
// This function should be called at the beginning of the program
void bmp085Calibration()
{
  ac1 = bmp085ReadInt(0xAA);
  ac2 = bmp085ReadInt(0xAC);
  ac3 = bmp085ReadInt(0xAE);
  ac4 = bmp085ReadInt(0xB0);
  ac5 = bmp085ReadInt(0xB2);
  ac6 = bmp085ReadInt(0xB4);
  b1 = bmp085ReadInt(0xB6);
  b2 = bmp085ReadInt(0xB8);
  mb = bmp085ReadInt(0xBA);
  mc = bmp085ReadInt(0xBC);
  md = bmp085ReadInt(0xBE);
}

// Calculate temperature in deg C
float bmp085GetTemperature(unsigned int ut){
  long x1, x2;

  x1 = (((long)ut - (long)ac6)*(long)ac5) >> 15;
  x2 = ((long)mc << 11)/(x1 + md);
  b5 = x1 + x2;

  float temp = ((b5 + 8)>>4);
  temp = temp /10 - 1.5;

  return temp;
}

// Calculate pressure given up
// calibration values must be known
// b5 is also required so bmp085GetTemperature(...) must be called first.
// Value returned will be pressure in units of Pa.
long bmp085GetPressure(unsigned long up){
  long x1, x2, x3, b3, b6, p;
  unsigned long b4, b7;

  b6 = b5 - 4000;
  // Calculate B3
  x1 = (b2 * (b6 * b6)>>12)>>11;
  x2 = (ac2 * b6)>>11;
  x3 = x1 + x2;
  b3 = (((((long)ac1)*4 + x3)<<OSS) + 2)>>2;

  // Calculate B4
  x1 = (ac3 * b6)>>13;
  x2 = (b1 * ((b6 * b6)>>12))>>16;
  x3 = ((x1 + x2) + 2)>>2;
  b4 = (ac4 * (unsigned long)(x3 + 32768))>>15;

  b7 = ((unsigned long)(up - b3) * (50000>>OSS));
  if (b7 < 0x80000000)
    p = (b7<<1)/b4;
  else
    p = (b7/b4)<<1;

  x1 = (p>>8) * (p>>8);
  x1 = (x1 * 3038)>>16;
  x2 = (-7357 * p)>>16;
  p += (x1 + x2 + 3791)>>4;

  long temp = p;
  return temp;
}

// Read 1 byte from the BMP085 at 'address'
char bmp085Read(unsigned char address)
{
  unsigned char data;

  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.write(address);
  Wire.endTransmission();

  Wire.requestFrom(BMP085_ADDRESS, 1);
  while(!Wire.available())
    ;

  return Wire.read();
}

// Read 2 bytes from the BMP085
// First byte will be from 'address'
// Second byte will be from 'address'+1
int bmp085ReadInt(unsigned char address)
{
  unsigned char msb, lsb;

  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.write(address);
  Wire.endTransmission();

  Wire.requestFrom(BMP085_ADDRESS, 2);
  while(Wire.available()<2)
    ;
  msb = Wire.read();
  lsb = Wire.read();

  return (int) msb<<8 | lsb;
}

// Read the uncompensated temperature value
unsigned int bmp085ReadUT(){
  unsigned int ut;

  // Write 0x2E into Register 0xF4
  // This requests a temperature reading
  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.write(0xF4);
  (0x2E);
  Wire.endTransmission();

  // Wait at least 4.5ms
  delay(5);

  // Read two bytes from registers 0xF6 and 0xF7
  ut = bmp085ReadInt(0xF6);
  return ut;
}

// Read the uncompensated pressure value
unsigned long bmp085ReadUP(){

  unsigned char msb, lsb, xlsb;
  unsigned long up = 0;

  // Write 0x34+(OSS<<6) into register 0xF4
  // Request a pressure reading w/ oversampling setting
  Wire.beginTransmission(BMP085_ADDRESS);
  Wire.write(0xF4);
  Wire.write(0x34 + (OSS<<6));
  Wire.endTransmission();

  // Wait for conversion, delay time dependent on OSS
  delay(2 + (3<<OSS));

  // Read register 0xF6 (MSB), 0xF7 (LSB), and 0xF8 (XLSB)
  msb = bmp085Read(0xF6);
  lsb = bmp085Read(0xF7);
  xlsb = bmp085Read(0xF8);

  up = (((unsigned long) msb << 16) | ((unsigned long) lsb << 8) | (unsigned long) xlsb) >> (8-OSS);

  return up;
}

void writeRegister(int deviceAddress, byte address, byte val) {
    Wire.beginTransmission(deviceAddress); // start transmission to device
    Wire.write(address);       // send register address
    Wire.write(val);         // send value to write
    Wire.endTransmission();     // end transmission
}

int readRegister(int deviceAddress, byte address){

    int v;
    Wire.beginTransmission(deviceAddress);
    Wire.write(address); // register to read
    Wire.endTransmission();

    Wire.requestFrom(deviceAddress, 1); // read a byte

    while(!Wire.available()) {
        // waiting
    }

    v = Wire.read();
    return v;
}

float calcAltitude(float pressure){

  float A = pressure/101325;
  float B = 1/5.25588;
  float C = pow(A,B);
  C = 1 - C;
  C = C /0.0000225577;

  return C;
}

resultado:
Code:
Binary sketch size: 8.726 bytes (of a 32.256 byte maximum)
processing.app.SerialNotFoundException: Serial port 'COM8' not found. Did you select the right one from the Tools > Serial Port menu?
at processing.app.Serial.<init>(Serial.java:191)
at processing.app.Serial.<init>(Serial.java:77)
at processing.app.debug.Uploader.flushSerialBuffer(Uploader.java:77)
at processing.app.debug.AvrdudeUploader.uploadViaBootloader(AvrdudeUploader.java:175)
at processing.app.debug.AvrdudeUploader.uploadUsingPreferences(AvrdudeUploader.java:67)
at processing.app.Sketch.upload(Sketch.java:1671)
at processing.app.Sketch.exportApplet(Sketch.java:1627)
at processing.app.Sketch.exportApplet(Sketch.java:1599)
at processing.app.Editor$DefaultExportHandler.run(Editor.java:2380)
at java.lang.Thread.run(Thread.java:619)
81  International / Portugues / Re: codigo do barometro bmp85 on: October 15, 2013, 08:14:48 pm
manotroll,

A IDE do arduino diz o que ela encontra de erra, então podes começar por ai.

Primeiro a IDE (1.0.5) reclama de BYTE, bom BYTE não existe como type para o comando Serial.print(0xFE, BYTE). mas essa expressão sugere que deva ser hex, depois que Wire.receive foi alterado para Wire.read. depois Wire.send para Wire.write.

Com essas alterações compilou, cabe ver se funciona ^^ Mas já é uma direção, estou sem arduinos por perto =S

Testa e caso não funcione algum dos colegas pode ajudar =)
82  International / Portugues / Re: arduino + ethernet + rfid on: October 11, 2013, 12:34:08 pm
Tenho alguns sistemas rodando na minha empresa que se comunicam enviando informações via xml.

Como eles se comunicam, via socket? usando a lan? Tens algum servidor web ou de dados? Como tens o internet shield e disseste que já testou a comunicação o resto é decidir como farás, se usando php, webservice, sockets, etc. És programador em qual linguagem? O problema parece ser mais a interface que se comunicará com o arduino do que o arduino ^^

Achei este exemplo interessante:
http://drcharlesbell.blogspot.com.br/2013/04/introducing-mysql-connectorarduino_6.html

Na net tem muitos tutoriais, é questão de ler e decidir o que testar e o que melhor se adapta.
83  International / Portugues / Re: Bloquear pino (RESOLVIDO) on: October 11, 2013, 12:24:06 pm
Estamos aqui para ajudar... Conforme você vai praticando, as opções ficam mais claras smiley-wink

Não fui com a cara do loop (for) rs, você poderia substituí-lo por uma condição (if) simples
de:
Code:
for (agua; agua < 1; agua++)
    Serial.println("Agua");

para:
Code:
if (agua == 0){
   agua = 1;
   Serial.println("Agua");
}

ou poderias fazer tudo no loop:
Code:
void loop()
{
//Com a condição aqui, deixaria de fazer requisições à porta a cada loop, já que não desejas mais o processamento do bloco até que ocorra o reset
 if(agua == 0) { //se ainda não ocorreu agua = 1
  int pino2 = digitalRead(2);//verifica a porta
  if(pino2 == LOW) //se o botão foi pressionado
  {
    Serial.print("agua"); //imprime na serial
    agua  == 1; //altera agua para 1, evitando o re-processamento do bloco
  }
}

Existem muitas formas de fazer a mesma coisa smiley-wink

Bons estudos!
84  International / Portugues / Re: Medir o consumo do motor de passo on: October 10, 2013, 08:37:01 pm
Mas desejas saber o quanto o motor consome ou se ele esta em movimento?
85  International / Portugues / Re: [off topic] Lentidão após atualização do forum on: October 10, 2013, 08:27:21 pm
kkkk o que a google não sabe pode ser uma ótima pergunta a fazer ^^

Eu só mudei o dns porque demorava para conectar e percebia que era ao procurar o fonts.typonine.com, no trabalho, para dns externo usamos os da google sempre e nunca tivemos problemas, o que ocorreu com outros servidores dns.

O servidor (teoricamente) não faz nada alem de resolver o nome para o número de ip, e vice versa. Mas não confiem em mim, pois nada sei rs
86  International / Portugues / Re: Bloquear pino on: October 10, 2013, 08:21:20 pm
Precisas apenas de uma variável global que "registre isso já aconteceu" e compará-la  smiley-cool

Livra-te do delay o mais que puder, sempre indicam isto: http://arduino.cc/en/Tutorial/BlinkWithoutDelay

O teu problema é lógica de programação, pura e simples. Vá exercitando com exemplos que podes encontrar na net, alguns exemplos:
http://arduino.cc/en/tutorial/button
http://arduino.cc/en/Tutorial/Pushbutton
O link acima ainda não tem o que desejas, ele acende o led se o botão estiver pressional e apaga se o botão não estiver pressionado, mas tente entender o código, preste atenção no circuito e veja sobre pullup e pulldown (usarás muito isso).

Abaixo um instructables que encontrei via google que tem uns passo a passo, que num passar de vistas pareceu interessante:
http://www.instructables.com/id/Arduino-Button-Tutorial/?ALLSTEPS
Olhei bem por cima, existem algumas imperfeições, enxergá-las pode ser uma boa lição de casa! Por este link terás diversas perguntas respondidas, problemas, poste aqui.
87  International / Portugues / Re: [off topic] Lentidão após atualização do forum on: October 10, 2013, 11:52:05 am
No vosso caso alterar o dns não resolve?
88  International / Portugues / Re: [off topic] Lentidão após atualização do forum on: October 10, 2013, 06:59:42 am
Eu passei pelo mesmo problema, alterei para o DNS da google (8.8.8.8 e 8.8.4.4) e agora esta normal. Usando o dns do modem (net virtual) a coisa fica feia (demora um bocado para resolver o nome ^^)
89  International / Portugues / Re: Monitoramento de guindaste - I/O com tensão 48v DC, log em SD on: October 09, 2013, 12:48:03 pm
 smiley-lol
90  International / Portugues / Re: Monitoramento de guindaste - I/O com tensão 48v DC, log em SD on: October 09, 2013, 07:08:50 am
HugoPT,

Não deves desculpa, acontece nas melhores famílias smiley-wink

O problema é se o Lago se sente ofendido por ser chamado de Mortis kkk

(desculpem o off topic, mas não consigo perder a piada)
Pages: 1 ... 4 5 [6] 7 8 ... 34