Show Posts
Pages: [1] 2 3 ... 8
1  International / Portugues / Ethernet XML (find) on: March 06, 2014, 08:08:45 pm
Olá,

Estou a tentar obter a temperatura (e mais tarde outras informações) do site http://www.wunderground.com/weather

Basicamente tenho a informação toda em XML e tento procurar a variável que pretendo mas o resultado é sempre negativo, nunca a encontra.

Exemplo de código obtido:
Code:
<response>
<version>0.1</version>
<termsofService>
http://www.wunderground.com/weather/api/d/terms.html
</termsofService>
<features>
<feature>conditions</feature>
</features>
<current_observation>
<image>
<url>
http://icons-ak.wxug.com/graphics/wu2/logo_130x80.png
</url>
<title>Weather Underground</title>
<link>http://www.wunderground.com</link>
</image>
<display_location>
<full>Rome, Italy</full>
<city>Rome</city>
<state/>
<state_name>Italy</state_name>
<country>IY</country>
<country_iso3166>IT</country_iso3166>
<zip>00000</zip>
<magic>1</magic>
<wmo>16240</wmo>
<latitude>41.90000153</latitude>
<longitude>12.47999954</longitude>
<elevation>95.00000000</elevation>
</display_location>
<observation_location>
<full>
Roma Ardeatina - Appia Antica Caffarella, Rome, Lazio
</full>
<city>Roma Ardeatina - Appia Antica Caffarella, Rome</city>
<state>Lazio</state>
<country>Italy</country>
<country_iso3166>IT</country_iso3166>
<latitude>41.863281</latitude>
<longitude>12.502114</longitude>
<elevation>140 ft</elevation>
</observation_location>
<estimated></estimated>
<station_id>IROMAROM3</station_id>
<observation_time>Last Updated on March 7, 2:09 AM CET</observation_time>
<observation_time_rfc822>Fri, 07 Mar 2014 02:09:21 +0100</observation_time_rfc822>
<observation_epoch>1394154561</observation_epoch>
<local_time_rfc822>Fri, 07 Mar 2014 02:09:22 +0100</local_time_rfc822>
<local_epoch>1394154562</local_epoch>
<local_tz_short>CET</local_tz_short>
<local_tz_long>Europe/Rome</local_tz_long>
<local_tz_offset>+0100</local_tz_offset>
<weather>Clear</weather>
<temperature_string>47.3 F (8.5 C)</temperature_string>
<temp_f>47.3</temp_f>
<temp_c>8.5</temp_c>
<relative_humidity>36%</relative_humidity>
<wind_string>Calm</wind_string>
<wind_dir>North</wind_dir>
<wind_degrees>0</wind_degrees>
<wind_mph>0.0</wind_mph>
<wind_gust_mph>0</wind_gust_mph>
<wind_kph>0.0</wind_kph>
<wind_gust_kph>0</wind_gust_kph>
<pressure_mb>1017</pressure_mb>
<pressure_in>30.04</pressure_in>
<pressure_trend>+</pressure_trend>
<dewpoint_string>22 F (-6 C)</dewpoint_string>
<dewpoint_f>22</dewpoint_f>
<dewpoint_c>-6</dewpoint_c>
<heat_index_string>NA</heat_index_string>
<heat_index_f>NA</heat_index_f>
<heat_index_c>NA</heat_index_c>
<windchill_string>47 F (8 C)</windchill_string>
<windchill_f>47</windchill_f>
<windchill_c>8</windchill_c>
<feelslike_string>47 F (8 C)</feelslike_string>
<feelslike_f>47</feelslike_f>
<feelslike_c>8</feelslike_c>
<visibility_mi>N/A</visibility_mi>
<visibility_km>N/A</visibility_km>
<solarradiation>0</solarradiation>
<UV>-1</UV>
<precip_1hr_string>0.00 in ( 0 mm)</precip_1hr_string>
<precip_1hr_in>0.00</precip_1hr_in>
<precip_1hr_metric>0</precip_1hr_metric>
<precip_today_string>0.00 in (0 mm)</precip_today_string>
<precip_today_in>0.00</precip_today_in>
<precip_today_metric>0</precip_today_metric>
<icon>clear</icon>
<icon_url>http://icons-ak.wxug.com/i/c/k/nt_clear.gif</icon_url>
<forecast_url>
http://www.wunderground.com/global/stations/16240.html
</forecast_url>
<history_url>
http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IROMAROM3
</history_url>
<ob_url>
http://www.wunderground.com/cgi-bin/findweather/getForecast?query=41.863281,12.502114
</ob_url>
</current_observation>
</response>

No Arduino estou a usar o seguinte:
Code:
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char serverName[] = "api.wunderground.com";
EthernetClient client;

void setup()
{
  Serial.begin(9600);
  if(Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");  
    while(true)   // no point in carrying on, so stay in endless loop:
      ;
  }
  delay(1000); // give the Ethernet shield a second to initialize

  Serial.println("connecting...");
}

void loop()
{
  if (client.connect(serverName,80)>0) {

    client.println("GET /api/MyKey/conditions/q/Italy/rome.xml HTTP/1.0");  
    client.println();
  }
  else {
    Serial.println(" connection failed");
  }
  if (client.connected()) {
     if(client.find("<temp_c>") )
     {
        int temperature = client.parseInt();
        Serial.print("Temperature is ");  
        Serial.println(temperature);
     }
    else
      Serial.println("Could not find temperature field");
     if(client.find("<relative_humidity>") )      
     {
        int humidity = client.parseInt();
        Serial.print("Humidity is ");  
        Serial.println(humidity);
     }
     else
       Serial.println("Could not find humidity field");
  }
  else {
    Serial.println("Disconnected");
  }
  client.stop();
  client.flush();
  delay(60000); // wait a minute before next update
}

Basicamente queria ver o valor de temp_c e relative_humidity, consegue conectar-se ao site mas depois devolve o erro de que não as encontra. Estou a fazer algo de errado?
2  Community / Website and Forum / Cant update profile info on: February 19, 2014, 08:37:11 am
Hello,

When i go to 'Profile' option and click on "ARDUINO STORE PROFILE" to change my info, the "Save" button is not available..

I'm doing anything wrong? I want change my profile information (and store profile).

Thanks
3  Community / Exhibition / Gallery / Re: Standalone Arduino on: February 02, 2014, 05:43:01 pm
Good project, i made my standalone too: https://sites.google.com/site/grcbyte/electronica/arduino/grcduino
4  International / Portugues / Re: 74HC595 e transistores on: January 22, 2014, 07:32:48 am
Para que os outputs do 74HC595 não fiquem todos ligados quando se inicia o circuito, e pelo que vi do pino OE, posso fazer isto?



Desta forma sempre que ligo o circuito o objectivo é ter os pinos todos desligados do SR e qdo o Arduino acordar coloca o Pino Digital em Low e ativa assim o OE. Correcto?
5  International / Portugues / Re: 74HC595 e transistores on: January 16, 2014, 11:04:38 am
Sim sim e obrigado pelo esquema e pela informação. Neste momento o que estava a perguntar era apenas se quisesse controlar uma carga de 20mA (exemplo) e com aquele transístor se os cálculos estavam bem feitos para achar o resistor da base.. apenas para meu conhecimento.
6  International / Portugues / Re: 74HC595 e transistores on: January 16, 2014, 05:04:58 am
Sim mas eu quero mesmo saber se os meus cálculos estão correctos relativamente ao uso daquele transistor e co maquela carga de 20mA.
7  International / Portugues / Re: 74HC595 e transistores on: January 15, 2014, 07:52:31 pm
Mesmo que não seja preciso gostava de perceber se os cálculos estão bem, a corrente máx. da placa será uns 20mA por relé.
Se usar um 2N3904: http://www.fairchildsemi.com/ds/2N/2N3904.pdf

Ibsat=Ic/Hfe
Ibsat=20mA/10(datasheet)= 2mA

Rb=(Vcc-Vbesat)/Ibsat
Rb(4.7v-0.65v)/2= 2.025

A resistência da base será na ordem dos 2k correcto? a corrente pedida ao 74HC595 será apenas 2mA.
8  International / Portugues / Re: 74HC595 e transistores on: January 12, 2014, 07:26:12 pm
Estou a calcular o valor para a resistência a colocar na Base dos transístores.

.Para a placa de relés, sabendo que ela consome no máx. 20mA e usando o 2N3904:
Code:
Ic= 200mA
Hfe=100
Vbe(sat)=0.65v

Fiz assim:
Ib= Ic(total da minha carga?)/Hfe
Ib= 0.02A/100= 0.0002A

Rb=(5v-Vbe(sat))/Ib
Rb=(5-0.65v)/0.0002A= 21750 Ohm => 22k ?
-------------------------------------------------------------
.Se o raciocínio anterior estiver bem, queria aplicá-lo para o outro transístor BC517 (Ic=500mA) tendo em conta que a carga necessário será de ~180mA (sirene). Os valores é que acho que não são os correctos:
Code:
Ic=500mA
Hfe= ? 30000?
Vbe(sat)=1.5v

Ib=0.18A/30000=0.000006A
Rb=(5-1.5)/0.000006A
Rb= 583333,33 Ohm ?!
-------------------------------------------------------------

 Estou a calcular tudo mal?
9  International / Portugues / Re: 74HC595 e transistores on: January 10, 2014, 11:00:09 am
A placa será colocada dentro de uma proteção de acrílico devidamente sinalizada (meto um autocolante ou assim) e ainda fica depois dentro de uma outra caixa isolada. Penso que não vai haver problema nesse sentido a nível de segurança. Vai controlar apenas 2 lâmpadas (uma em cada relê).

O transistor entre o 74HC595 e a placa, é porque a placa precisa de 20mA e não sei pq pensei que seria melhor colocar um transistor para não esgotar o ShiftRegister.. devido aos pinos não fornecerem assim muita corrente. Estou a pensar bem?

10  International / Portugues / Re: 74HC595 e transistores on: January 10, 2014, 10:30:04 am
Obrigado pela resposta.
Relês quero ligá-los para comutarem 220V, é uma placa destas:


Que penso já terem o isolamento feito e não haver problemas em controlar as mesmas através dos pinos para o efeito e com um: 74HC595 + Arduino\Atmega. Ligava um transistor (exemplo: BC557 que tem um IC de 100mA), uma resistência entre o transistor e o SR 74HC595 (valor a ver) e controlava assim os relês..
11  International / Portugues / 74HC595 e transistores on: January 10, 2014, 05:52:46 am
Quero ativar uns equipamentos através de shiftout com um 74HC595, basicamente uns leds, uma sirene (~180mA) e uma placa com 2 relays (~20mA).

Quanto aos leds não é complicado, com uma resistência em cada um. Quanto à Sirene estava a pensar em ligar um output do 74HC595 a um transistor (ex. BC517) para a controlar, poderá ser?  

Para a placa dos 2 relays, estava a pensar que podia tb usar um transistor.. mas se calhar não pode ser assim..

Que acham?
12  International / Portugues / Re: Ajuda em Shiftout on: January 05, 2014, 03:27:30 pm
Ah eu testei enviar através de shiftout e de facto os bits são enviados corretamente, o Serial.print é que não mostra os '0's, pensei que não estivessem tb a ser enviados mas sendo assim parece resolvido o problema. Obrigado.
13  International / Portugues / Re: Ajuda em Shiftout on: January 05, 2014, 01:37:36 pm
Obrigado pela dica.

Já melhorei mas agora não sei se a função está bem feita pq o resultado que tenho é apenas dos '1' e os '0' desaparecem:

Code:
int Equipamentos[8];
byte dataOut;

void setup(){

  Serial.begin(9600);
  Equipamentos[0] = 1;
  Equipamentos[1] = 1;
  Equipamentos[2] = 1;
  Equipamentos[3] = 1;
  Equipamentos[4] = 1;
  Equipamentos[5] = 1;
  Equipamentos[6] = 0;  
  Equipamentos[7] = 0;  
  

  for (int i=0; i <= 7; i++){
    Serial.print("Posicao Array: ");
    Serial.print(i);
    Serial.print("-> ");
    Serial.println(Equipamentos[i]);
    bitWrite(dataOut, i, Equipamentos[i]);
  }

Serial.println("-----------");
Serial.println(dataOut,BIN);
Serial.println("-----------");

}

void loop(){
  delay(5000);
}



Estou a fazer algo de errado? Queria que o resultado final (a enviar depois pelo shiftout) fosse: 11111100 e não 111111
14  International / Portugues / Ajuda em Shiftout on: January 05, 2014, 12:28:42 pm
Olá,

Estou com um problema que deve ser muito básico mas não sei como resolver, basicamente quero enviar em formato BYTE algo como (exemplo) B10011011, acontece que os estados de 1 e 0 são verificados em tempo real e não os posso definir previamente, como tal tenho de construir o BYTE a enviar a partir de 8 estados de variáveis existentes. (conforme o estado de cada variável quero controlar um equipamento a que cada uma está associada).

Exemplo do que pretendo fazer mas que não está a funcionar (na parte de criar o byte DataOut):

Code:
//ShiftRegister 74HC595:
int latchPin = 2;  
int clockPin = 3;
int dataPin = 1;  

//8 Varáveis
int varA;
int varB;
int varC;
int  varD;
int varE;
int varF;
int varG;
int varH;
byte DataOut;

void setup() {

varA=1;
varB=0;
varC=0;
varD=1;
varE=1;
varF=0;
varG=1;
varH=1;

//TESTE:
DataOut=('B' && varA && varB && varC && varD && varE && varF &&varG && varH );
digitalWrite(latchPin, 0);

shiftOut(dataPin, clockPin, DataOut);  
digitalWrite(latchPin, 1);
}

void loop(){}

void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
  int i=0;
  int pinState;
  pinMode(myClockPin, OUTPUT);  
  pinMode(myDataPin, OUTPUT);
  digitalWrite(myDataPin, 0);
  digitalWrite(myClockPin, 0);

  for (i=7; i>=0; i--)  {
    digitalWrite(myClockPin, 0);
    if ( myDataOut & (1<<i) ) {
      pinState= 1;
    }

    else {      
      pinState= 0;
    }
    digitalWrite(myDataPin, pinState);  
    digitalWrite(myClockPin, 1);
    digitalWrite(myDataPin, 0);
  }
  digitalWrite(myClockPin, 0);

  return;              
}


Alguém me pode ajudar p.f.
15  Community / Exhibition / Gallery / Re: Phenakistoscope on: January 03, 2014, 11:00:19 am
Like it Like !!  smiley very cool
Pages: [1] 2 3 ... 8