Probleme beim Projekt Solarüberwachung mit Thingspeak

Hallo zusammen,

Habe erst vor kurzen wieder angefangen und früher mit Version 0023 gearbeitet also etwas eingerostet und das erste durch zusammen Kopierern zu laufen bekommen.
So jetzt versuche ich mich an was selber von Grund auf mit dem wissen was ich noch von vor 5 Jahren weis.

Jetzt kommen im Loop Bereich bekomme ich eine Fehlermeldung beim Compilern habe nochmals nachgeschaut wie ich diese früher gemacht habe aber es geht nicht.

was hat sich geändert seit der alten Version was mache ich Falsch.

Gruß Markus

C:\Users\Markus\Documents\Arduino\Thingspeakt_Wattmeter_mit_LCD\Thingspeakt_Wattmeter_mit_LCD.ino: In function ‘void loop()’:
Thingspeakt_Wattmeter_mit_LCD:53: error: ‘lcd’ was not declared in this scope

  • lcd.setCursor(0,0);*
  • ^*
    exit status 1
    ‘lcd’ was not declared in this scope
//Thingspeak Solarüberwachung mit LCD Display
// LTC4151 als Messwandler
// Eternet Shield
#include <ThingSpeak.h>
#include <LiquidCrystal.h> //LCD 
#include <Ethernet.h> //Netzwerk
#include <SPI.h> // SPI für Ethernetboard
#include <Wire.h> //I2C
#include <LTC4151.h>
LTC4151 sensor;

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0x00, 0x07, 0x7E, 0x00, 0x00, 0xED
};
IPAddress ip(192, 168, 1, 10);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

//Thingspeak einstellungen
unsigned long myChannelNumber = 9999999;
const char * myWriteAPIKey = "JBBJFAPhvbhgkjhgh4";
EthernetClient client;

void setup()
{   
    Serial.begin(9600);
    Wire.begin();
    LiquidCrystal lcd(9, 8, 7, 6, 5, 4);   
    sensor.init(LTC4151::L, LTC4151::L);
    ThingSpeak.begin(client);
    lcd.begin(16, 4);
    lcd.setCursor(1,3);
    lcd.print("Battiere");
    lcd.setCursor(2,3);
    lcd.print("überwachung");
    delay(200);
    lcd.clear();
}

void loop()
{
 float Volt = analogRead(sensor.getADCInVoltage());
 float Ampere = analogRead(sensor.getLoadCurrent(0.1))*2;
 float Watt = Volt * Ampere;
  ThingSpeak.setField(1,Volt);
  ThingSpeak.setField(2,Ampere);
  ThingSpeak.setField(3,Watt);
  lcd.setCursor(0,0);
  lcd.print(Volt);
  lcd.print(" V ");
  lcd.setCursor(0,8);
  lcd.print(Ampere);
  lcd.print(" A ");
  lcd.setCursor(1,0);
  lcd.print(Watt);
  lcd.print(" W ");
  delay(5000);

}

Die Zeile

LiquidCrystal lcd(9, 8, 7, 6, 5, 4);

muss vor Setup, damit sie global bekannt ist.

Gruß Tommy

danke lauft jetzt

Hallo zusammen,

soweit schon einiges zum laufen Display zeiht auch richtig an aber jetzt kommt das nächste Problem.
Vermutlich habe ich beim Ethernet was Falsch gemacht da keine Daten beim Thingspeak ankommen und auch die TX LED aus dem ETH Shield sich nicht meldet

Gruß Markus

//Thingspeak Solarüberwachung mit LCD Display
// LTC4151 als Messwandler
// Eternet Shield
#include <ThingSpeak.h>
#include <LiquidCrystal.h> //LCD 
#include <Ethernet.h> //Netzwerk
#include <SPI.h> // SPI für Ethernetboard
#include <Wire.h> //I2C
#include <LTC4151.h>
LTC4151 sensor;

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0x00, 0x07, 0x7E, 0x00, 0x00, 0xED
};
IPAddress ip(192, 168, 1, 10);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

//Thingspeak einstellungen
unsigned long myChannelNumber = 999999;
const char * myWriteAPIKey = "JBgkguhliulhihiuioui";
EthernetClient client;
LiquidCrystal lcd(9, 8, 7, 6, 5, 4);

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

  sensor.init(LTC4151::L, LTC4151::L);
  ThingSpeak.begin(client);
  lcd.begin(16, 4);
  lcd.setCursor(1, 3);
  lcd.print("Battiere");
  lcd.setCursor(2, 3);
  lcd.print("überwachung");
  delay(200);
  lcd.clear();
}

void loop()
{
  float Volt = (sensor.getInputVoltage());
  float Ampere = (sensor.getLoadCurrent(5.7));
  float Watt = Volt * Ampere;
  ThingSpeak.setField (1, Volt);
  ThingSpeak.setField(2, Ampere);
  ThingSpeak.setField(3, Watt);
  lcd.setCursor(0, 0);
  lcd.print(Volt);
  lcd.print(" V ");
  lcd.setCursor(8, 0);
  lcd.print(Ampere);
  lcd.print(" A ");
  lcd.setCursor(0, 1);
  lcd.print(Watt);
  lcd.print(" W ");
  delay(5000);

}

Irgendwie vermisse ich die Initialisierung des Ethernet

Ethernet.begin(mac,...)

oder macht dasThingSpeak mit?

Gruß Tommy

habe das jetzt so eingebaut aber sendet immer noch nicht

void setup()
{
  Serial.begin(9600);
  Wire.begin();
    Ethernet.begin(mac, ip);  // initialize Ethernet device
    server.begin();           // start to listen for clients
  sensor.init(LTC4151::L, LTC4151::L);
  ThingSpeak.begin(client);
  lcd.begin(20, 4);
  lcd.setCursor(3, 1);
  lcd.print("Battiere");
  lcd.setCursor(3, 2);
  lcd.print("Ueberwachung");
  delay(2000);
  lcd.clear();
}

Gruß Markus

Bist Du der Server oder der Client?

Ich sehe

server.begin();

Dann willst Du der Server sein. Der wartet aber, bis ein Client etwas von ihm will.
Oder bist Du eher der Client, der etwas von einem Server will?

Gruß Tommy

Fehler gefunden war im Void Loop habe eine Zeile vergessen

ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);

jetzt Sendet er die Daten ins Thingspeak wie vorgesehen.