Zum Inhalt springen

Stefan Hermann

Verfasste Forenbeiträge

Ansicht von 15 Beiträgen - 46 bis 60 (von insgesamt 67)
  • Autor
    Beiträge
  • als Antwort auf: LED Steuerung mit Taster nach zeit #6740
    Stefan Hermann
    Administrator

    Hallo Joachim,

    Franz-Peter hat das schon sehr gut beschrieben. Nur eine Ergänzung: Wie man so eine State-Machine einbaut, hab ich hier erklärt: Tee-Timer mit Arduino. Ich hoffe, das hilft dir :-)

    Liebe Grüße

    als Antwort auf: Blutzuckermessgerät mit Arduino #6736
    Stefan Hermann
    Administrator

    Das ganze Thema ist mega spannend. Ich kann dir nur empfehlen, dich an Dmitri Katz zu wenden. Er ist super aktiv in der Szene und kann dir vielleicht helfen. Hier ist ein Interview mit ihm und seine Email-Adresse ist auch dabei. Viel Glück

    als Antwort auf: Zeitmodul DS3231 #6735
    Stefan Hermann
    Administrator

    Hallo Dirk, danke für die Rückmeldung! Schön, dass es jetzt klappt :-)

    als Antwort auf: Tee-Timer mit Arduino #6718
    Stefan Hermann
    Administrator

    @Christian: Super! Daran könnte es gelegen haben.

    als Antwort auf: MQTT über Ethernet Shield W5100 #6707
    Stefan Hermann
    Administrator

    Hm, komplexes Problem, aber kann es sein, dass du dich einfach bei der IP vertippt hast? Also statt:

    IPAddress ip(192, 168, 0, 106); // Ethernet shield (W5100) IP address
    IPAddress server(192,106,0,102); // MTTQ server IP address

    Das hier verwenden:

    IPAddress ip(192, 168, 0, 106); // Ethernet shield (W5100) IP address
    IPAddress server(192,168,0,102); // MTTQ server IP address

    Kommt mir komisch vor, dass die IP vom Server 192.106.0.102 sein soll. Ich hoffe, das war es, sonst wird es schwierig :-)

    als Antwort auf: Eisenbahn #6641
    Stefan Hermann
    Administrator

    Ja cool, dass du es gefunden hast. Eine Anmerkung: Das einfache Gleichheitszeichen weist einen Wert zu. D.h. in diesem Fall:
    while (SG_3=LOW){ wird SG_3 auf LOW gesetzt. Somit ist die Abfrage wahr. Du musst wahrscheinlich eher das doppelte Gleichheitszeichen verwenden: while (SG_3==LOW){ Jetzt wird geprüft, ob SG_3 LOW ist oder nicht.

    Liebe Grüße :-)

    als Antwort auf: Temperaturanzeige / 7Segment #6635
    Stefan Hermann
    Administrator

    Hm, gute Frage. Ich kann es leider nicht nachbauen, aber das Hin- und Her-Schalten kannst du mit einem Timer machen. So sieht der Code dann aus. Wie gesagt, testen kann ich den leider nicht.

    #include <SevSeg.h>
    #include <SimpleDHT.h>
    SevSeg sevseg;
    
    int pinDHT11 = A4;
    
    SimpleDHT11 dht11(pinDHT11);
    void setup()
    {
      Serial.begin(9600);
    
      byte numDigits = 4;
      byte digitPins[] = {2, 3, 4, 5};
      byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13};
      sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins);
    }
    
    void loop()
    {
      byte temperature;
    
      int err = SimpleDHTErrSuccess;
      if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
    
        if (millis()%10000<5000) {
          sevseg.setNumber((int)temperature);
        } else {
          sevseg.setNumber((int)humidity);
        }
    
        Serial.print((int)temperature); Serial.print(" *C, ");
        Serial.print((int)humidity); Serial.println(" H");
      }
    
      sevseg.refreshDisplay();
    }
    als Antwort auf: Schulprojekt #6620
    Stefan Hermann
    Administrator

    Ach so: Die Schaltung geht jetzt vom GND in den mittleren Anschluss des Encoders, die äußeren Anschlüsse sind mit den Arduino-Pins 3 und 4 verbunden.

    als Antwort auf: Schulprojekt #6614
    Stefan Hermann
    Administrator

    Hallo Zerspaner,

    vielen Dank für deine Frage. Ich hab mir den Code mal angesehen. Im Grunde gehst du das Thema schon richtig an. Du hast nur einen von den beiden Pins nicht als Input deklariert. Passiert mir auch immer wieder. Dann braucht der Encoder Pull-Up-Widerstände. Du kannst die internen vom Arduino nutzen. Anstelle von pinMode(pin,INPUT) schreibt man dann einfach pinMode(pin, INPUT_PULLUP). Ich empfehle auch, Pin 0 und 1 vom Arduino-Board nicht zu verwenden. Die werden für die Datenübertragung zum Computer verwendet und können ziemlich unvorhersehbares Verhalten zeigen. Hier der Code:

    int encoder0PinA = 3;
    int encoder0PinB = 4;
    
    int messungPin1 = LOW;
    int messungPin1Alt = LOW;
    
    int encoderWert = 0;
    
    void setup() {
      pinMode(encoder0PinA, INPUT_PULLUP);
      pinMode(encoder0PinB, INPUT_PULLUP);
      Serial.begin(115200);
    }
    
    void loop() {
      messungPin1 = digitalRead(encoder0PinA);
      if ((messungPin1 == HIGH) && (messungPin1Alt == LOW)) {
        if (digitalRead(encoder0PinB) == LOW) {
          encoderWert--;
        } else {
          encoderWert++;
        }
        Serial.println(encoderWert);
      }
      messungPin1Alt = messungPin1;
    }

    BTW: Dieses Verfahren ist nicht sehr präzise und das Arduino muss die ganze Zeit »zuhören«, was das Programm langsam macht. Wenn dich das stört, gibt es Programm-Bibliotheken, die da Abhilfe schaffen oder du nutzt die Interrupts des Arduinos. Ich hab hier mal was rüber geschrieben: Arduino-Encoder

    Ich hoffe, das hilft dir schon mal weiterhilft :)

    Liebe Grüße

    als Antwort auf: Zeitmodul DS3231 #6611
    Stefan Hermann
    Administrator

    Hallo Dirk,

    ich weiß es nicht ganz genau, aber einen Fehler hab ich entdeckt. Bei den if-Abfragen musst du ein doppeltes Gleichheitszeichen verwenden. Also statt:

    if (tage = "Monday") {
    tage = "Montag";
    }

    Musst du:

    if (tage == "Monday") {
    tage = "Montag";
    }

    benutzen und das natürlich bei allen ifs.

    Ich hoffe, das hilft schon mal weiter.

    Liebe Grüße

    als Antwort auf: Arduino Macht was er will. #6609
    Stefan Hermann
    Administrator

    Hallo Stefan,

    also du hast zwei Möglichkeiten. Entweder du nutzt eine Taster-Schaltung mit Pull-Up Widerstand oder du verwendest die internen Pull-Ups des Arduino-Boards:

    int T1 = 22;
    int T2 = 23;
    
    void setup(){
    Serial.begin(9600);
    pinMode(T1, INPUT_PULLUP);
    pinMode(T2, INPUT_PULLUP);
    }
    
    void loop() {
    if(digitalRead(T1) == HIGH) {
    Serial.print(“ T1 wurde gedrückt“);
    }
    if(gigitalRead(T2) == HIGH) {
    Serial.print(“ T2 wurde gedrückt“);
    }
    
    }

    Liebe Grüße :-)

    als Antwort auf: Eisenbahn Steuern #6608
    Stefan Hermann
    Administrator

    Hallo Hans-Peter,

    ich benutze für solche Aufgaben gern State-Machines. Das habe ich hier mal näher beschrieben: Tee-Timer mit Arduino.

    Das ist ganz ähnlich zu den if-Abfragen, die du verwendest, gibt aber etwas mehr Struktur. Ich hoffe, das hilft dir ein bisschen.

    Liebe Grüße

    Stefan

    als Antwort auf: Verschoben: Antwort auf: Schönen guten Tag #6607
    Stefan Hermann
    Administrator

    Hallo Hans-Peter,

    das klingt ja aufregend. Da wünsche ich dir auf jeden Fall viel Spaß dabei!

    Liebe Grüße

    Stefan

    als Antwort auf: Verschoben: Antwort auf: Schönen guten Tag #6605
    Stefan Hermann
    Administrator

    Hallo Stefan,

    das klingt nach einem spannenden Projekt. Um so viele Servos zu steuern würde ich auf jeden Fall einen Servotreiber empfehlen. Dazu habe ich hier mal was geschrieben: Viele Servos mit Arduino steuern. Um die Taster auszulesen würde ich Shift-Register verwenden. Findest du auf jeden Fall, wenn du das googelst. Da muss ich mal einen Artikel zu verfassen. Schicke gern mal ein paar Fotos von dem, was du baust :-)

    Liebe Grüße

    Stefan

    als Antwort auf: Schulprojekt_Frage #6546
    Stefan Hermann
    Administrator

    Hi Lukas, spannende Frage. Also ich kann dir nur empfehlen, dir die Bounce-Library mal anzusehen. Die hat sowohl die Flankenerkennung als auch das Entprellen eingebaut. Liebe Grüße Stefan :-)

Ansicht von 15 Beiträgen - 46 bis 60 (von insgesamt 67)