- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 91

Thema: abstandhalten mit 433MHz

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    Zitat Zitat von Klebwax Beitrag anzeigen
    Gar nicht. digital.read liefert den Zustand eines Pins. Und ein Pin hat immer einen Zustand, es "kommt" also immer etwas an.

    MfG Klebwax
    ok, danke, ich sitz wahrscheinlich schon zu lange vor der kiste...

    wie sieht es bei client.read(); aus? das, was da ankommt (oder auch nicht) wird einer variablen zugewiesen:

    request = client.read();

    wenn da nichts ankam, wird die variable den ihr vorher zugewiesenen zustand "0" behalten?
    gruß inka

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von inka Beitrag anzeigen
    wie sieht es bei client.read(); aus? das, was da ankommt (oder auch nicht) wird einer variablen zugewiesen:

    request = client.read();
    client.read() liefert immer etwas. Wenn die Funktion als void definiert wäre, dann würde sie nie etwas liefern, der Compiler wüsste das und würde einen Fehler melden. Und request kann seinen vorigen Zustand nicht behalten, es muß den Wert annehmen, den read liefert. Das sagt das "=", der Zuweisungsoperator. Findet man in request den vorigen Wert, dann hat read ihn geliefert.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Wenn man wissen will, ob bei der Klasse "Client" etwas angekommen ist, nutzt man .available(). Diese Methode gibt die Anzahl Bytes zurück, die verfügbar ist.

    Beispiel:

    Code:
    if(client.available()){
    char c = client.read();
    Serial.print(c);
    }

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    danke erstmal für die vorschläge für die auswertung der client.read funktion. Leider funktioniert das, was ich vorhatte - so nicht...

    aber von anfang an:
    - die kopplung von client und master mit den "WEMOS-D1_mini-teilen" funktioniert gut, die entfernung bei der die verbindung abbricht liegt auf gerader und unverbauter strecke bei ca. 150m, was absolut meinen vorstellungen entspricht.
    - beim abbiegen zwischen häusern ist es etwas weniger, also um die 100m, ist aber ok...
    - das signalisieren des abbruch (grünes blinken geht in rotes blinken über) funktioniert beim slave auch gut, beim master allerdings nicht...

    Das höchste der gefühle was ich erreiche, ist, dass das grüne blinken aufhört, ich schaff es einfach nicht, den punkt im code zu knacken, an dem ich das so sensieren kann, dass es ins rote blinken übergeht...

    Wie gesagt ist für die nutzung kein muss, wäre aber schon schöner...

    wer schaut sich das bitte an?

    hier der mastercode:
    Code:
    // https://www.arduinoforum.de/arduino-Thread-ESP8266-Daten-%C3%BCbertragen
    
    // https://www.arduinoforum.de/arduino-Thread-2-ESP8266-miteinander-kommunizieren-lassen?page=2
    
    // LOLIN(WEMOS)D1 mini pro
    
    #include <ESP8266WiFi.h>
    #include <WiFiUdp.h>
    
    const int ledPin_rt =  D5;
    const int ledPin_gn =  D6;
    const int ledPin_bl =  D7;
    
    int ledState_rt = LOW;
    int ledState_gn = LOW;
    int ledState_bl = LOW;
    
    long previousMillis_rt = 0;
    long previousMillis_gn = 0;
    long previousMillis_bl = 0;
    
    //long interval_rt = 500;
    //long interval_gn = 200;
    //long interval_bl = 50;
    
    WiFiServer server(80);
    IPAddress IP(192, 168, 4, 15);
    IPAddress mask = (255, 255, 255, 0);
    
    //adresse slave
    IPAddress remoteIP(192, 168, 4, 114);
    
    // überwachter port
    unsigned int remotePort = 4210;
    
    char befehl[10];
    
    WiFiUDP Udp;
    
    uint32_t aktMillis;
    uint32_t prevMillis;
    
    int8_t request = 0;
    int8_t rt_blink;
    
    boolean ledStatus = false;
    
    char udp_buffer[WIFICLIENT_MAX_PACKET_SIZE + 1];
    
    void setup()
    {
    
      pinMode(ledPin_rt, OUTPUT);
      pinMode(ledPin_gn, OUTPUT);
      pinMode(ledPin_bl, OUTPUT);
    
      Serial.begin(115200);
    
      Serial.println("code ---- /home/georg/Arduino/fahr_rad/entfernung_messen/WEMOS_mit_UDP/WEMOS_AP_mit_UDP_master_1");
    
      //Inizialisiere WIFI
      WiFi.mode(WIFI_AP);
      WiFi.softAP("fahrrad_echo", "12345678");
      WiFi.softAPConfig(IP, IP, mask);
    
      digitalWrite(ledPin_bl, HIGH);
      delay(500);
      digitalWrite(ledPin_bl, LOW);
    
      server.begin();
    
      Serial.println();
      Serial.println("accesspoint_fahrrad_echo");
      Serial.println("Server started.");
      Serial.print("IP: ");     Serial.println(WiFi.softAPIP());
      Serial.print("MAC:");     Serial.println(WiFi.softAPmacAddress());
    }
    
    void loop()
    {
    
      digitalWrite(ledPin_gn, LOW);
      //rt_blinken();
    
      // schalten der LEDs auf dem client
      aktMillis = millis();
    
      if (aktMillis - prevMillis >= 200)
      {
        prevMillis = aktMillis;
        Serial.print("LED schalten auf ");
        if (ledStatus)
        {
          Serial.println("An");
          befehl[0] = 1;
         // digitalWrite(ledPin_rt, LOW);
        }
        else
        {
          Serial.println("Aus");
          befehl[0] = 0;
         // digitalWrite(ledPin_rt, HIGH);
        }
    
        Udp.beginPacket(remoteIP, remotePort);
        Udp.write(befehl, 1);
        Udp.endPacket();
        ledStatus = !ledStatus;
      }
    
      WiFiClient client = server.available();
      if (!client)
      {
        return;
    
      }
    
      //schalten der LEDs auf dem server (echo empfang)
      request = client.read();
      Serial.println("********************************");
      Serial.print("From the station: ");
      Serial.println(request);
      client.flush();
      
    
      if ((request != -1) || (rt_blink == 0))
      
      {
        digitalWrite(ledPin_gn, LOW);
        //digitalWrite(ledPin_rt, LOW);
        delay(200);
    
        digitalWrite(ledPin_gn, HIGH);
        //digitalWrite(ledPin_rt, LOW);
        delay(200);
        //request = 0;
      }
    }
    
    void rt_blinken (void)
    {
    
      unsigned long currentMillis_rt = millis();  // aktueller Wert rot
      if (currentMillis_rt - previousMillis_rt > 200)
      {
        previousMillis_rt = currentMillis_rt;   // aktuellen Wert speichern
        ledState_rt = ((ledState_rt == LOW) ? HIGH : LOW); // toggeln
        digitalWrite(ledPin_rt, ledState_rt);   // LED ansteuern
        //rt_blink = 0;
      }
    }
    gruß inka

Ähnliche Themen

  1. 433MHz Funkmodule bei Pollin
    Von toemchen im Forum Elektronik
    Antworten: 97
    Letzter Beitrag: 24.05.2009, 20:43
  2. antenne 433MHz Easyradio
    Von nobody1900 im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 30.01.2007, 12:46
  3. 433MHz Übertragung
    Von Muecke im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 28.12.2006, 20:01
  4. 433Mhz Verstärker
    Von BastelWastel im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 16.09.2006, 21:35
  5. Problem mit Abstandhalten zur Wand
    Von semicolon im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 12.07.2006, 21:08

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress