私はArduino Unoとイーサネットシールドを使ってスケッチを作成しました。今ではいくつかのArduino Uno WiFiを手に入れました。スケッチをイーサネットからwifiに移植したいのですが、今は壁に入っています。私が見つけることができるガイド/ FAQ /ヘルプのほとんどはWiFiシールドであり、WiFi Arduinoではないので、私はここで立ち往生しています。イーサネットからWifiへのArduinoスケッチの移植
以下は私のオリジナルのEthernetコードです。私は若干変更されたWifiコードを投稿することができますが、エラーなしにコンパイルすることはできません。
// Hartmann fugtighedsmåler v 0.1
// Lavet af Jan Andreasen
// Skriver til DB på FDKTO517
#include <Ethernet.h>
#include <SPI.h>
#include <DHT.h>
#define DHTPIN 2 // Siger sig selv
#define DHTTYPE DHT11 // Typen af sensor.
float h = 0;
float t = 0;
byte mac[] = {0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02}; // Macadresse på kortet
IPAddress server(10,16,9,229); // Server adressen på SQL'en
EthernetClient client;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("Starting...");
Ethernet.begin(mac);
dht.begin();
}
void loop() {
readTempHum();
delay(300000); // Loop timer i millis - 5 minutter
}
void get_request(float t, float h) {
Serial.println("Connecting to Client...");
if (client.connect(server, 10080)) {
Serial.println("--> connection ok\n");
client.print("GET /test.php?");
// Placering af PHP script til upload til DB
client.print("t="); // Temp
client.print(t);
client.print("&h="); // Fugtighed
client.print(h);
client.println(" HTTP/1.1");
client.print("Host: ");
client.println(server);
client.println("Connection: close");
client.println();
client.println();
client.stop();
Serial.println("--> finished transmission\n");
} else {
Serial.println("--> connection failed\n");
}
}
void readTempHum() {
h = dht.readHumidity();
t = dht.readTemperature();
{
Serial.print("Humidity: ");
Serial.print(h);
Serial.print("%\t");
Serial.print("Temperature:");
Serial.print(t);
Serial.println("*C");
get_request(t,h);
}
}
この投稿はon the Arduino Forumにも投稿されています。私は二重郵便を見ると申し訳ありません、私はここで私の問題に解決策を掲載します。
新しいスケッチ:今すぐ
#include <Wire.h>
#include <UnoWiFiDevEd.h>
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT11
float h = 0;
float t = 0;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
const char* connector = "rest";
const char* server = "10.16.9.229";
const char* method = "GET";
const char* resource = "/test.php?t=";
Serial.begin(9600);
Ciao.begin();
dht.begin();
pinMode(2, INPUT);
delay(10000);
}
void loop() {
readTempHum();
// doRequest(connector, server, resource, method);
delay(300000);
}
void doRequest(const char* conn, const char* server, const char* command, const char* method, float t, float h){
CiaoData data = Ciao.write(conn, server, command, method);
}
void readTempHum() {
h = dht.readHumidity();
t = dht.readTemperature();
const char* connector = "rest";
const char* server = "10.16.9.229";
const char* method = "GET";
const char* resource = "/test.php?t=";
{
doRequest(connector, server, resource, method,t,h);
}
}
は、私は新しい問題に遭遇しました。センサーからの値(tとh)は、次のようにHTTP/GETコマンドで出力されるはずです。 test.php?t = 1 &h = 2 しかし、私はその作業を行うことはできません。リソースをこのように定義しようとした場合 const char * resource = "/test.php?t="+t+" & h = "+ h; エラー(明らかに)が発生しますが、文字列として宣言しようとすると、同じエラーが再び発生します。
エラー:
HumidSQL3_Wifi_master:24: error: invalid operands of types 'const char [13]' and 'float' to binary 'operator+'
const char* resource = "/test.php?t="+t+"&h="+h;
は今、私はあなたのいくつかは、ここで少し私を助けることができることを願って:/
私たちは、コンパイラのエラーとは何かについて推測ゲームをすることになっていますか?また、Arduino Forumですでに述べられていることを繰り返して、時間を無駄にしますか?答えが必要な場合は、私たちのために簡単にする必要があります。 –
クロスポストを所有していただき、ありがとうございます。誰かが同じ質問の他のコピーを知らない状況につながる可能性があり、他のコピーに既存の回答を本質的に複製する回答に大きな努力を費やしているため、一般的にうまく受信されません。少なくとも、他のすべての投稿へのリンクをすべて追加してください。これにより、人々は他の投稿を確認できます。あなたはそれを編集しますか? – halfer
@halferまあ、私は正直ではないのでどこにも行きません。あなたの中には両方のフォーラムを使用している人もいるかもしれませんが、XがYを検索して答えを見つけられない場合は、フォーラムで答えを投稿しますクレジットカード) - 意味がありますか?まあ、コンパイラのエラーとArduino.ccフォーラムへのリンクで質問を編集しました。しかし、私はJurajの答えを使って最初から始めたいと思います。 –