Arduino Mega + Fühler+ Step motor

Hallo zusammen,
ich habe ein "Problem" ich habe vor bei mir im Zimmer eine Wetterstation aufzubauen mit dht 22 und step motor 5VDC. Der Fühler Funktioniert und das zeigt es auch im LCD an, alles gut , doch nun möchte ich , wenn es über 30 grad warm wird, soll sich der Step motor nach links drehen (um die leichten Rollladen runterzudrehen ) und wenn es 25 Grad ist, soll es nach rechts drehen (Sprich die Rolladen wieder hochdrehen.
habt ihr tipps?

Die Programmierung:

//bibliothek
#include <DHT.h>;
//I2C LCD:
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Stepper.h>



LiquidCrystal_I2C lcd(0x27,16,2); 
  
//Constants
#define DHTPIN 7     
#define DHTTYPE DHT22   
#define STEPS 100
DHT dht(DHTPIN, DHTTYPE);

//Variables
//int chk;
int f;  //defintion der Feuchtigkeit
int t; //Definition der Temperatur
Stepper stepper(STEPS, 8, 9, 10, 11);

void setup()
{
    Serial.begin(9600);
    Serial.println("Temperatur und Feuchtigkeit-test");
    dht.begin();
    lcd.init(); //initialize the lcd
    lcd.backlight(); 
    
}

void loop()
{
  
    f = dht.readHumidity();
    t = dht.readTemperature();
    
    //Anzeige auf Serialmotor
    Serial.print("Feuchtigkeit: ");
    Serial.print(f);
    Serial.print(" %, Temp: ");
    Serial.print(t);
    Serial.println(" ° Grad");
        

// LCD Beschriftung

    lcd.setCursor(0, 0);
    lcd.println(" Aktuelle Daten: ");
    
    lcd.setCursor(0, 1);
    lcd.print("T:");
    lcd.print(t);
    lcd.print("C");

    lcd.setCursor(6, 1);
    lcd.println("2022 ");
     
    lcd.setCursor(11, 1);
    lcd.print("F:");
    lcd.print(f);
    lcd.print("%");
    
  delay(1000); //pause 1 sec.


}
if (t>30) auf();
if (t<25) zu();

void auf(void)
{
Drehe Motor in eine Richtung um x Schritte
}

void zu(void)
{
Drehe Motor in andere Richtung um x Schritte
}

Vielen dank für deine Antwort, werde ich heute Abend noch probieren.
auf und zu als integer deklarieren ?

auf() und zu() sind selbst definierte Funktionen. Die mußt schon Du selbst schreiben. Was sie machen sollen hab ich hineingeschrieben.

Grüße Uwe

Hab es noch umgeändert..
habe bei "void zu" einen Fehler und der lautet : expected primary-expression before 'void'

Komme da nicht mehr gross raus, hab noch einiges ausprobiert und der Fehler bleibt bestehen.. kannst du da was erkennen?

Danke für die Hilfe :slight_smile:

//Bibliothek
#include <DHT.h>;
//I2C LCD:
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Stepper.h>

LiquidCrystal_I2C lcd(0x27,16,2);

#define DHTPIN 7
#define DHTTYPE DHT22
#define auf
#define zu
DHT dht(DHTPIN, DHTTYPE);

//Variables
//int chk;
int f; //defintion der Feuchtigkeit
int t; //Definition der Temperatur
int drehrichtung = 0;
int steps = 200;

Stepper * mySteppers(8, 9, 10, 11);

void setup()
{
Serial.begin(9600);
Serial.println("Temperatur und Feuchtigkeit-test");
dht.begin();
lcd.init(); //initialize the lcd
lcd.backlight();

}

void loop()
{

f = dht.readHumidity();
t = dht.readTemperature();

//Anzeige auf Serialmotor
Serial.print("Feuchtigkeit: ");
Serial.print(f);
Serial.print(" %, Temp: ");
Serial.print(t);
Serial.println(" ° Grad");

// LCD Beschriftung

lcd.setCursor(0, 0);
lcd.println(" Aktuelle Daten: ");

lcd.setCursor(0, 1);
lcd.print("T:");
lcd.print(t);
lcd.print("C");

lcd.setCursor(6, 1);
lcd.println("2022 ");
 
lcd.setCursor(11, 1);
lcd.print("F:");
lcd.print(f);
lcd.print("%");

delay(1000); //pause 1 sec.

if (t>30) auf(1);
void (auf)
{
stepper.step(steps); // Drehung rechts
drehrichtung = 1;
}
void (zu)
if (t<25) zu(-1);

{
stepper.step(- steps); // Drehung links
drehrichtung = -1;
}
}

Das mit den Codetags konntest Du schon besser. Bitte korrigiere es.

Gruß Tommy

Funktionsdeklarationen müssen außerhalb von Funktionen erfolgen.
Hier hast Du mit auf() und zu() nicht gemacht.
Außerdem braucht eine Funktion geschwungene Klammern. Das fehlt bei zu().
Grüße Uwe

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.