Guten Tag,
nun um gleich zur Sache zu kommen. Ich benötige Hilfe bei der Fehlermeldung "expected primary-expression before ')' token". Das Programm basiert auf der Library
http://forum.arduino.cc/index.php?topic=135828.0
welche ich nach meinem Gebrauch umgeschrieben habe.
Der Fehler kommt bei dem Befehl "myMenu.addLCD(&LiquidCrystal_I2C);"
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Menu.h>
#include <MenuItem.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
Menu myMenu;
//MenuItems
//
MenuItem item000 ("Kelvin", 000, 000, 000, 000, 001);
MenuItem item001 ("Celsius", 001, 001, 001, 000, 002);
MenuItem item002 ("Fahrenheit", 002, 002, 002, 001, 003);
MenuItem item003 ("Rankine", 003, 003, 003, 002, 004);
MenuItem item004 ("Delisle", 004, 004, 004, 003, 005);
MenuItem item005 ("Reaumur", 005, 005, 005, 004, 006);
MenuItem item006 ("Newton", 006, 006, 006, 005, 007);
MenuItem item007 ("Romer", 007, 007, 007, 006, 007);
int readButton; // Variable to store the last pressed Button
int select;
int links = 3;
int unten = 4;
int Taster = 5;
int oben = 6;
int rechts = 7;
void setup()
{
pinMode(links, INPUT_PULLUP);
pinMode(unten, INPUT_PULLUP);
pinMode(Taster, INPUT_PULLUP);
pinMode(oben, INPUT_PULLUP);
pinMode(rechts, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.backlight();
myMenu.addLCD(&LiquidCrystal_I2C); //an dieser Stelle wird der Fehler angezeigt.
// Add the items to the menu
myMenu.addItem(item000);
myMenu.addItem(item001);
myMenu.addItem(item002);
myMenu.addItem(item003);
myMenu.addItem(item004);
myMenu.addItem(item005);
myMenu.addItem(item006);
myMenu.addItem(item007);
myMenu.begin(000);
}
void loop() {
if (unten == LOW) {
myMenu.goDown();
}
if (oben == LOW) {
myMenu.goUp();
}
if (rechts == LOW) {
myMenu.goForward();
}
if (links == LOW) {
myMenu.goBack();
}
if (Taster == LOW) {
select = myMenu.select();
}
switch (select) {
case 000:
Kelvin();
break;
case 001:
Celsius();
break;
case 002:
Fahrenheit();
break;
case 003:
Rankine();
break;
case 004:
Delisle();
break;
case 005:
Reaumur();
break;
case 006:
Newton();
break;
case 007:
Romer();
break;
}
readButton = 1000;
}
Wenn man es mit dem Beispiel vergleicht sieht man da ich das Programm einfach auf meine Liquid Cristal Library umgeschrieben habe das ich einen I²C benutze. Leider habe ich nichts brauchbares im WWW gefunden.
Jetzt folgt noch eine weiterer Tab welcher jedoch keine Rolle spielt. Denke es ist sinnvoll das gesamte Programm zu posten, falls es jemand interessiert.
void Kelvin()
{
while (links == HIGH)
{
DHT.read22(DHT22_PIN);
float K = T + 273.15;
lcd.setCursor(0, 0);
lcd.print("Luftfeu.(%):");
lcd.print(H, 1);
lcd.setCursor(0, 1);
lcd.print("Temp.Kelvin:");
lcd.print(" ");
lcd.setCursor(12, 1);
lcd.print(K, 1);
delay(300)
}
}
void Celsius()
{
while (links == HIGH)
{
DHT.read22(DHT22_PIN);
float C = T;
lcd.setCursor(0, 0);
lcd.print("Luftfeu.(%):");
lcd.print(H, 1);
lcd.setCursor(0, 1);
lcd.print("GradCelsius:");
lcd.print(" ");
lcd.setCursor(12, 1);
lcd.print(C, 1);
Serial.println(C, 1);
delay(300);
}
}
void Fahrenheit()
{
while (links == HIGH)
{
DHT.read22(DHT22_PIN);
float F = T * 1.8 + 32;
lcd.setCursor(0, 0);
lcd.print("Luftfeu.(%):");
lcd.print(H, 1);
lcd.setCursor(0, 1);
lcd.print("GradFahren.:");
lcd.print(" ");
lcd.setCursor(12, 1);
lcd.print(F, 1);
delay(300);
}
}
void Rankine()
{
while (links == HIGH)
{
DHT.read22(DHT22_PIN);
float Ra = T * 1.8 + 491.67;
lcd.setCursor(0, 0);
lcd.print("Luftfeu.(%):");
lcd.print(H, 1);
lcd.setCursor(0, 1);
lcd.print("GradRankine:");
lcd.print(" ");
lcd.setCursor(12, 1);
lcd.print(Ra, 1);
delay(300);
}
}
void Delisle()
{
while (links == HIGH)
{
DHT.read22(DHT22_PIN);
float De = (100 - T) * 1.5;
lcd.setCursor(0, 0);
lcd.print("Luftfeu.(%):");
lcd.print(H, 1);
lcd.setCursor(0, 1);
lcd.print("GradDelisle:");
lcd.print(" ");
lcd.setCursor(12, 1);
lcd.print(De, 1);
delay(300);
}
}
void Reaumur()
{
while (links == HIGH)
{
DHT.read22(DHT22_PIN);
float Re = T * 0.8;
lcd.setCursor(0, 0);
lcd.print("Luftfeu.(%):");
lcd.print(H, 1);
lcd.setCursor(0, 1);
lcd.print("GradReaumur:");
lcd.print(" ");
lcd.setCursor(12, 1);
lcd.print(Re, 1);
delay(300);
}
}
void Newton()
{
while (links == HIGH)
{
DHT.read22(DHT22_PIN);
float N = T * 0.33;
lcd.setCursor(0, 0);
lcd.print("Luftfeu.(%):");
lcd.print(H, 1);
lcd.setCursor(0, 1);
lcd.print("Grad Newton:");
lcd.print(" ");
lcd.setCursor(12, 1);
lcd.print(N, 1);
delay(300);
}
}
void Romer()
{
while (links == HIGH)
{
DHT.read22(DHT22_PIN);
float Ro = T * 0.525 + 7.5;
lcd.setCursor(0, 0);
lcd.print("Luftfeu.(%):");
lcd.print(H, 1);
lcd.setCursor(0, 1);
lcd.print("Grad Romer:");
lcd.print(" ");
lcd.setCursor(12, 1);
lcd.print(Ro, 1);
delay(300);
}
}
Ich hoffe das wir schnell zu einer Lösung des Problems kommen. Und dann bleibt mir nur noch übrig:
Mit freundlichsten Grüßen,
Oliver.