• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Błąd kompilacji
#19
A widzieliście może rozbudowane kody zegarów by Tobias Kuch 2019:
http://sites.prenninger.com/arduino-sketch/echtzeituhr
Jednak we wszystkich kodach podczas kompilacji mam błąd w linii 366:

tm1637.dispNumber(Minutes24 + Hours24 * 100);

Może coś podpowiecie bo ja siedzę nad tym ze 4 dni i nie mogę nic wymyślić!!!

Zrzut błędów kompilacji a pod spodem kod.

Arduino:1.8.13 (Windows 10), Płytka:"Arduino Uno R3"
Kompilowanie szkicu...



"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-ID:\\TM16\\libraries\\TM1637_Driver\\src" "-ID:\\TM16\\libraries\\DHT_sensor_library" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "-ID:\\TM16\\libraries\\Adafruit_Unified_Sensor" "C:\\Users\\Adam\\AppData\\Local\\Temp\\arduino_build_150003\\sketch\\TM16.ino.cpp" -o "C:\\Users\\Adam\\AppData\\Local\\Temp\\arduino_build_150003\\sketch\\TM16.ino.cpp.o"

D:\TM16\TM16\TM16.ino: In function 'bool Run_BH1750Sensor(bool)':

D:\TM16\TM16\TM16.ino:260:41: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:

    Wire.requestFrom(BH1750I2CAddress, 2);
                                       ^
In file included from D:\TM16\TM16\TM16.ino:7:0:

C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src/Wire.h:68:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)

    uint8_t requestFrom(int, int);
            ^~~~~~~~~~~

C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src/Wire.h:65:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint8_t, uint8_t)

    uint8_t requestFrom(uint8_t, uint8_t);
            ^~~~~~~~~~~

D:\TM16\TM16\TM16.ino: In function 'void DisplayClockOnLedTM1637()':

TM16:366:10: error: 'class TM1637' has no member named 'dispNumber'

  tm1637.dispNumber(Minutes24 + Hours24 * 100);
          ^~~~~~~~~~

D:\TM16\TM16\TM16.ino: In function 'byte SerInputHandler()':

D:\TM16\TM16\TM16.ino:574:21: warning: statement is a reference, not call, to function 'ClearCBuffer' [-Waddress]

        ClearCBuffer;
                    ^

D:\TM16\TM16\TM16.ino:574:21: warning: statement has no effect [-Wunused-value]

D:\TM16\TM16\TM16.ino:578:21: warning: statement is a reference, not call, to function 'ClearCBuffer' [-Waddress]

        ClearCBuffer;
                    ^

D:\TM16\TM16\TM16.ino:578:21: warning: statement has no effect [-Wunused-value]

D:\TM16\TM16\TM16.ino:599:19: warning: statement is a reference, not call, to function 'ClearCBuffer' [-Waddress]

      ClearCBuffer;
                  ^                  
D:\TM16\TM16\TM16.ino:599:19: warning: statement has no effect [-Wunused-value]


D:\TM16\TM16\TM16.ino:611:19: warning: statement is a reference, not call, to function 'ClearCBuffer' [-Waddress]

      ClearCBuffer;
                  ^                  
D:\TM16\TM16\TM16.ino:611:19: warning: statement has no effect [-Wunused-value]

D:\TM16\TM16\TM16.ino:619:19: warning: statement is a reference, not call, to function 'ClearCBuffer' [-Waddress]

      ClearCBuffer;
                  ^
D:\TM16\TM16\TM16.ino:619:19: warning: statement has no effect [-Wunused-value]

D:\TM16\TM16\TM16.ino: In function 'void SerialcommandProcessor()':

D:\TM16\TM16\TM16.ino:635:7: warning: unused variable 'a' [-Wunused-variable]

  int a;
      ^
D:\TM16\TM16\TM16.ino: In function 'void loop()':

D:\TM16\TM16\TM16.ino:785:8: warning: unused variable 'PressedC' [-Wunused-variable]

  bool PressedC;
        ^~~~~~~~

D:\TM16\TM16\TM16.ino: In function 'boolean CheckforserialEvent()':

D:\TM16\TM16\TM16.ino:517:1: warning: control reaches end of non-void function [-Wreturn-type]

}
^
Użycie biblioteki TM1637_Driver w wersji 2.1.0 z folderu: D:\TM16\libraries\TM1637_Driver

Użycie biblioteki DHT_sensor_library w wersji 1.4.1 z folderu: D:\TM16\libraries\DHT_sensor_library

Użycie biblioteki Wire w wersji 1.0 z folderu: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire

Użycie biblioteki Adafruit_Unified_Sensor w wersji 1.1.4 z folderu: D:\TM16\libraries\Adafruit_Unified_Sensor

exit status 1

'class TM1637' has no member named 'dispNumber'

Kod:
// Code by Tobias Kuch 2019, Licesed unter GPL 3.0

#include <TM1637.h>
#include "DHT.h"    // REQUIRES the following Arduino libraries:
//- DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
//- Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
#include <Wire.h>
// Instantiation and pins configurations
// Pin 4 - > CLK
// Pin 5 - > DIO
TM1637 tm1637(4, 5);
#define BUTTON_MINUTEUP_PIN   2    // Digital IO pin connected to the button.  This will be
// driven with a pull-up resistor so the switch should
// pull the pin to ground momentarily.  On a high -> low
// transition the button press logic will execute.
// Used for Setting the Clock Time

#define BUTTON_HOURUP_PIN   3    // Digital IO pin connected to the button.  This will be
// driven with a pull-up resistor so the switch should
// pull the pin to ground momentarily.  On a high -> low
// transition the button press logic will execute.
// Used for Setting the Clock Time
//DHT Konfiguration
#define DHTPIN 6                             // Digital pin connected to the DHT sensor
#define DHTTYPE DHT22                        // DHT 22  (AM2302), AM2321
#define DS3231_I2C_ADDRESS 0x68
#define MaxInputBufferSize 5 // maximal 255 Zeichen anpassen an vlcdr

DHT dht(DHTPIN, DHTTYPE); // DHT Sensor Instanz initalisieren


struct BHLightSensorData
{
  int Lux = 0 ;          // Lichtstärke in Lux
  int Old_Lux = 0 ;      // Lichtstärke in Lux
  bool DataValid  = false;
  bool SensorEnabled  = false;
};


//Serial Input Handling
char TBuffer;
char Cbuffer[MaxInputBufferSize + 1];     //USB Code Input Buffer
String Sbuffer = "";                      //USB String Input Buffer
int value;                                //USB Nummeric Input Buffer
byte Ccount { 0 };                          //Number received Chars
byte Inptype = 0;
boolean StrInput = false;
boolean NumberInput = false;
boolean DataInput = false;
boolean EnterInput = false;
byte MenueSelection = 0;
byte MnuState = 0;            // Maximale Menuetiefe 255 icl Sub

// interrupt Control
bool SecInterruptOccured = true;
bool A60telSecInterruptOccured = true;
byte A60telSeconds24 = 0;

// Clock Variables
byte Seconds24;
byte Minutes24 ;
byte Hours24;
byte Displayalternation = 22;
bool DisableSecondDisplay = false;
bool MinSetQuickTime = false;
bool HourSetQuickTime = false;
bool ButtonDPress = false;
bool ButtonEPress = false;


BHLightSensorData BHMeasure;
byte BH1750I2CAddress = 0;                      // Detected BH1750 I2C Address

//Interrupt Routines
ISR(TIMER1_COMPA_vect)
{
  A60telSeconds24++;
  if ((A60telSeconds24 > 59) and !(MinSetQuickTime))
  {
    A60telSeconds24 = 0;
    //Calculate Time 24 Stunden Format
    SecInterruptOccured = true;
    Seconds24++;
    if (Seconds24 > 59)
    {
      Seconds24 = 0;
      Minutes24++;
    }
    if (Minutes24 > 59)
    {
      Minutes24 = 0;
      Hours24++;
    }
    if (Hours24 > 23)
    {
      Hours24 = 0;
    }
  }
  if  (MinSetQuickTime)
  {
    A60telSeconds24 = 0;
    //Calculate Time 24 h Format
    SecInterruptOccured = true;
    Seconds24++;
    if (Seconds24 > 59)
    {
      Seconds24 = 0;
      Minutes24++;
    }
    if (Minutes24 > 59)
    {
      Minutes24 = 0;
      Hours24++;
    }
    if (Hours24 > 23)
    {
      Hours24 = 0;
    }
  }
  TCNT1 = 0;      // Register mit 0 initialisieren
  if  (HourSetQuickTime)
  {
    OCR1A =  200;
  } else
  {
    OCR1A =  33353;      // Output Compare Register vorbelegen
  }
  A60telSecInterruptOccured = true;
}

//Interrupts ende
void CheckConfigButtons ()    // InterruptRoutine
{
  bool PressedZ;
  PressedZ = digitalRead(BUTTON_MINUTEUP_PIN);
  if ((PressedZ == LOW) and (ButtonDPress == false))
  {
    ButtonDPress = true;
    delay(100);
    Minutes24++;
    Seconds24 = 0;  // Reset Seconds to zero to avoid Randomly time
    DisableSecondDisplay = true ;   // Disable Seconds While Clock Set
    MinSetQuickTime = true; //Enable Quick Tmime Passby
  }
  if ((PressedZ == HIGH) and (ButtonDPress == true))
  {
    ButtonDPress = false;
    delay(100);
    DisableSecondDisplay = false ;   // Enable Seconds While Clock Set
    MinSetQuickTime = false;
    Seconds24 = 0;  // Reset Seconds to zero to avoid Randomly time
    A60telSeconds24 = 0;
    setDS3231time( Seconds24, Minutes24, Hours24, 1, 24, 6, 77);
  }
  PressedZ = digitalRead(BUTTON_HOURUP_PIN);
  if ((PressedZ == LOW) and (ButtonEPress == false))
  {
    ButtonEPress = true;
    delay(100);
    DisableSecondDisplay = true ;   // Disable Seconds While Clock Set
    MinSetQuickTime = true; //Enable Quick Tmime Passby
    HourSetQuickTime = true;
  }
  if ((PressedZ == HIGH) and (ButtonEPress == true))
  {
    noInterrupts();   // deactivate Interrupts
    ButtonEPress = false;
    delay(100);
    Minutes24++;
    DisableSecondDisplay = false ;   // Enable Seconds While Clock Set
    MinSetQuickTime = false; //Enable Quick Tmime Passby
    HourSetQuickTime = false;
    Seconds24 = 0;  // Reset Seconds to zero to avoid Randomly time
    A60telSeconds24 = 0;
    interrupts();   // enable all Interrupts
    setDS3231time( Seconds24, Minutes24, Hours24, 1, 24, 6, 77);
  }
}

void setup()
{
  tm1637.init();
  Serial.begin(115200);
  Serial.flush();
  pinMode(BUTTON_MINUTEUP_PIN, INPUT_PULLUP);
  pinMode(BUTTON_HOURUP_PIN, INPUT_PULLUP);
  digitalWrite(LED_BUILTIN, LOW);
  noInterrupts();
  TCCR1A = 0x00;
  TCCR1B =  0x02;
  TCNT1 = 0;      // Register mit 0 initialisieren
  OCR1A =  33353;      // Output Compare Register vorbelegen
  TIMSK1 |= (1 << OCIE1A);  // Timer Compare Interrupt aktivieren
  interrupts();
  Seconds24 = 1;
  Minutes24 = 1;
  Hours24 = 0;
  dht.begin();
  Wire.begin();
  readDS3231time(&Seconds24, &Minutes24, &Hours24);
  BHMeasure.SensorEnabled = Run_BH1750Sensor(true); // Init
  if (BHMeasure.SensorEnabled)
  {
    Run_BH1750Sensor(false);
    delay(200);
    Run_BH1750Sensor(false);
  } else
  {
    tm1637.setBrightness (8);
  }
}

bool Run_BH1750Sensor (bool Init)   // Runtime Funktion für den BH170 Lichtsensor
{
  byte ec;
  if (Init)
  {
    bool BH1750Detected = false;
    Wire.beginTransmission(35);
    ec = Wire.endTransmission(true);
    if (ec == 0)
    {
      BH1750Detected = true;
      BH1750I2CAddress = 35; // BH1750 I2C Adresse ist DEC 35
    } else
    {
      Wire.beginTransmission(92);
      ec = Wire.endTransmission(true);
      if (ec == 0)
      {
        BH1750Detected = true;
        BH1750I2CAddress = 92; // BH1750 I2C Adresse ist DEC 92
      }
    }
    if (BH1750Detected)
    {
      // Intialize Sensor
      Wire.beginTransmission(BH1750I2CAddress);
      Wire.write(0x01);    // Turn it on before we can reset it
      Wire.endTransmission();
      Wire.beginTransmission(BH1750I2CAddress);
      Wire.write(0x07);    // Reset
      Wire.endTransmission();
      Wire.beginTransmission(BH1750I2CAddress);
      Wire.write(0x10);    // Continuously H-Resolution Mode ( 1 lux Resolution) Weitere Modis möglich, gemäß Datenblatt
      //Wire.write(0x11);  // Continuously H-Resolution Mode 2 ( 0.5 lux Resolution)
      //Wire.write(0x20);  // One Time H-Resolution Mode  ( 1 lux Resolution)
      //Wire.write(0x21);  // One Time H-Resolution Mode2 ( 0.5 lux Resolution)
      Wire.endTransmission();
    } else
    {
      return BH1750Detected;
    }
  }
  Wire.beginTransmission(BH1750I2CAddress);
  ec = Wire.endTransmission(true);
  if (ec == 0)
  {
    Wire.requestFrom(BH1750I2CAddress, 2);
    BHMeasure.Lux = Wire.read();
    BHMeasure.Lux <<= 8;                  // Verschieben der unteren 8 Bits in die höhreren 8 Bits der 16 Bit breiten Zahl
    BHMeasure.Lux |= Wire.read();
    BHMeasure.Lux = BHMeasure.Lux / 1.2;
    BHMeasure.DataValid = true;
    if (BHMeasure.Lux != BHMeasure.Old_Lux)
    {
      BHMeasure.Old_Lux = BHMeasure.Lux;
      //  Serial.print ("Lichtstärke in Lux :");
      //  Serial.println (BHMeasure.Lux);
      //  Serial.println (TM1637Brightness);
      int TM1637Brightness =  map(BHMeasure.Lux, 300, 0, 8, 0);
      if ((BHMeasure.Lux > 10) && (BHMeasure.Lux < 20)) {
        TM1637Brightness = 2;
      }
      if (TM1637Brightness > 8) {
        TM1637Brightness = 8;
      }
      if (TM1637Brightness == 0) {
        TM1637Brightness = 1;
      }
      tm1637.setBrightness(TM1637Brightness); // Highest Brightness
    }
  } else
  {
    BHMeasure.DataValid = false;
    BHMeasure.SensorEnabled = false;
  }
  return true;
}

void DisplayHumityOnTM1637()
{
  byte Humidity = dht.readHumidity();
  byte n = (Humidity / 10) % 10; //zehner
  byte m = Humidity % 10; // einer
  if (Humidity < 100)
  {
    tm1637.display(0, 104); // Clear Digit
    tm1637.display(1, n); // Digit 1
    tm1637.display(2, m); // Digit 2
  } else
  {
    tm1637.display(0, 104); // Clear Digit
    tm1637.display(1, 103); // - Sign
    tm1637.display(2, 103); // - Sign
  }
  tm1637.display(3, 56);
}

void DisplayTempOnLedTM1637()
{
  int Temperature = dht.readTemperature(false);   // Read temperature as Celsius (isFahrenheit = true)
  byte n = (Temperature / 10) % 10; //zehner
  byte m = Temperature % 10; // einer
  if (Temperature < 0)
  {
    tm1637.display(0, 103); // - Sign
    tm1637.display(1, n); // Digit 1
    tm1637.display(2, m); // Digit 2
  } else if (Temperature < 99)
  {
    tm1637.display(0, 104); // Clear Digit
    tm1637.display(1, n); // Digit 1
    tm1637.display(2, m); // Digit 2
  } else
  {
    tm1637.display(0, 103); // - Sign
    tm1637.display(1, 103); // - Sign
    tm1637.display(2, 103); // - Sign
  }
  tm1637.display(3, 99); // C Character
}

void DisplayTempinFOnLedTM1637()
{
  int Temperature = dht.readTemperature(true);   // Read temperature as Celsius (Fahrenheit = true)

  byte l = (Temperature / 100) % 10; //hunderter
  byte n = (Temperature / 10) % 10; //zehner
  byte m = Temperature % 10; // einer
  if (Temperature < 0)
  {
    tm1637.display(0, 103); // - Sign
    tm1637.display(1, n); // Digit 1
    tm1637.display(2, m); // Digit 2
  } else if (Temperature < 99)
  {
    tm1637.display(0, 104); // Clear Digit
    tm1637.display(1, n); // Digit 1
    tm1637.display(2, m); // Digit 2
  } else
  {
    tm1637.display(0, l); // Digit 0
    tm1637.display(1, n); // Digit 1
    tm1637.display(2, m); // Digit 2
  }
  tm1637.display(3, 102); // F Character
}

void DisplayClockOnLedTM1637()
{
  if (!(DisableSecondDisplay)) {
    tm1637.switchColon();
  }
  tm1637.dispNumber(Minutes24 + Hours24 * 100);
}

byte decToBcd(byte val)
{
  return ( (val / 10 * 16) + (val % 10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
  return ( (val / 16 * 10) + (val % 16) );
}

void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
                   dayOfMonth, byte month, byte year)
{
  // sets time and date data to DS3231
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); // set next input to start at the seconds register
  delay(10);
  Wire.write(decToBcd(second)); // set seconds
  delay(10);
  Wire.write(decToBcd(minute)); // set minutes
  delay(10);
  Wire.write(decToBcd(hour)); // set hours
  delay(10);
  Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
  delay(10);
  Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
  delay(10);
  Wire.write(decToBcd(month)); // set month
  delay(10);
  Wire.write(decToBcd(year)); // set year (0 to 99)
  delay(10);
  Wire.endTransmission();
}

void readDS3231time(byte *second, byte *minute, byte *hour)
{
  byte dummy;
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); // set DS3231 register pointer to 00h
  Wire.endTransmission();
  Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
  //request seven bytes of data from DS3231 starting from register 00h
  while (Wire.available())   // slave may send less than requested
  {
    *second = bcdToDec(Wire.read() & 0x7f);
    *minute = bcdToDec(Wire.read());
    *hour = bcdToDec(Wire.read() & 0x3f);
    dummy = bcdToDec(Wire.read());
    dummy = bcdToDec(Wire.read());
    dummy = bcdToDec(Wire.read());
    dummy = bcdToDec(Wire.read());
  }
}

void ScheduledTasks ()
{
  if ((Hours24 == 6) and (Minutes24 == 00) and (Seconds24 == 00) )
  {
    readDS3231time(&Seconds24, &Minutes24, &Hours24);
  }
  if ((Hours24 == 12) and (Minutes24 == 00) and (Seconds24 == 00) )
  {
    readDS3231time(&Seconds24, &Minutes24, &Hours24);
  }
  if ((Hours24 == 18) and (Minutes24 == 00) and (Seconds24 == 00) )
  {
    readDS3231time(&Seconds24, &Minutes24, &Hours24);
  }
  if ((Hours24 == 0) and (Minutes24 == 00) and (Seconds24 == 00) )
  {
    readDS3231time(&Seconds24, &Minutes24, &Hours24);
  }
}


//Serial Command Interpreter Functions -------------------------------

void ClearCBuffer ()
{
  for (byte a = 0; MaxInputBufferSize - 1; a++)
    Cbuffer[a] = 0;
}

boolean CheckforserialEvent()
{
  while (Serial.available()) {
    // get the new byte:
    TBuffer = Serial.read();
    if (TBuffer > 9 && TBuffer < 14)
    {
      Cbuffer[Ccount] = 0;
      TBuffer = 0;
      Serial.print(char(13));
      Serial.flush();
      Serial.println("");
      Sbuffer = "";
      value = 0;
      EnterInput = true;
      return true;
    } else if (TBuffer > 47 && TBuffer < 58 )
    {
      if ( Ccount < MaxInputBufferSize)
      {
        Cbuffer[Ccount] = TBuffer;
        Ccount++;
      } else {
        Serial.print("#");
      }
      //Number Input detected
      NumberInput = true;
    }
    else if (TBuffer > 64 && TBuffer < 123 )
    {
      if ( Ccount < MaxInputBufferSize)
      {
        Cbuffer[Ccount] = TBuffer;
        Ccount++;
        Serial.print(char(TBuffer));
        Serial.flush();
      }
      //Character Char Input detected
      StrInput = true;
    }
    else if ( (TBuffer == 127 )  |  (TBuffer == 8 ) )
    {
      if ( Ccount > 0)
      {
        Ccount--;
        Cbuffer[Ccount] = 0;
        Serial.print("-");
        Serial.flush();
      }
    }
    else
    {
      if ( Ccount < MaxInputBufferSize)
      {
        Cbuffer[Ccount] = TBuffer;
        Ccount++;
        Serial.print(char(TBuffer));
        Serial.flush();
        //Data Input detected
        DataInput = true;
      }
      return false;
    }
    return false;
  }
}

byte SerInputHandler()
{
  byte result = 0;
  int c;
  int d;
  int a;
  int b;
  result = 0;
  if (CheckforserialEvent())
  {
    if ((NumberInput) and not (DataInput) and not (StrInput))    //Numbers only
    {
      Sbuffer = "";
      value = 0;
      StrInput = false;
      NumberInput = false;
      DataInput = false;
      EnterInput = false;
      a = 0;
      b = 0;
      c = 0;
      d = 0;
      Sbuffer = Cbuffer; // Zahl wird AUCH ! in SBUFFER übernommen, falls benötigt.
      if (Ccount == 1) {
        value  = Cbuffer[0] - 48 ;
      }
      if (Ccount == 2) {
        a = Cbuffer[0] - 48 ;
        a = a * 10;
        b = Cbuffer[1] - 48 ;
        value = a + b;
      }
      if (Ccount == 3) {
        a = Cbuffer[0] - 48 ;
        a = a * 100;
        b = Cbuffer[1] - 48 ;
        b = b * 10;
        c = Cbuffer[2] - 48 ;
        value = a + b + c;
      }
      if (Ccount == 4) {
        a = Cbuffer[0] - 48 ;
        a = a * 1000;
        b = Cbuffer[1] - 48 ;
        b = b * 100;
        c = Cbuffer[2] - 48 ;
        c = c * 10;
        d = Cbuffer[3] - 48 ;
        value = a + b + c + d;
      }
      if (Ccount >= 5)
      {
        Sbuffer = "";
        value = 0;
        Sbuffer = Cbuffer;
        ClearCBuffer;
        result = 2;
      } else
      {
        ClearCBuffer;
        Ccount = 0;
        result = 1;                                                //Number Returncode
        NumberInput = false;
        StrInput = false;
        DataInput = false;
        EnterInput = false;
        Ccount = 0;
        return result;
      }
    }
    if ((StrInput) and not (DataInput))                          //String Input only
    {
      Sbuffer = "";
      Sbuffer = Cbuffer;
      value = 0;
      StrInput = false;
      NumberInput = false;
      DataInput = false;
      EnterInput = false;
      Ccount = 0;
      ClearCBuffer;
      result = 2;                                                 //Number Returncode
    }
    if (DataInput) {
      Sbuffer = "";
      Sbuffer = Cbuffer;
      value = 0;
      StrInput = false;
      NumberInput = false;
      DataInput = false;
      EnterInput = false;
      Ccount = 0;
      ClearCBuffer;
      result = 3;                                               //Number Returncode
    }
    if ((EnterInput) and not (StrInput) and not (NumberInput) and not (DataInput))
    {
      Sbuffer = "";
      value = 0;
      Ccount = 0;
      ClearCBuffer;
      result = 4;                                               //Number Returncode
    }
    NumberInput = false;
    StrInput = false;
    DataInput = false;
    EnterInput = false;
    Ccount = 0;
    return result;
  }
  return result;
  //End CheckforSerialEvent
}

void SerialcommandProcessor()
{
  int a;
  Inptype = 0;
  Inptype = SerInputHandler();
  // 0 keine Rückgabe
  // 1 Nummer
  // 2 String
  // 3 Data
  if (Inptype > 0)
  {
    MenueSelection = 0;
    if ((MnuState < 2) && (Inptype == 2)) {
      Sbuffer.toUpperCase();  // For Easy Entering Commands
    }
    if ((Sbuffer == "T") && (MnuState == 0) && (Inptype == 2))   {
      MenueSelection = 1;
    }
    if ((Sbuffer == "C") && (MnuState == 0) && (Inptype == 2))       {
      MenueSelection = 2;
    }
    if ((Sbuffer == "B") && (MnuState == 0) && (Inptype == 2))       {
      MenueSelection = 3;
    }
    if ((Sbuffer == "F") && (MnuState == 0) && (Inptype == 2))       {
      MenueSelection = 4;
    }
    if ((MnuState == 2)  && (Inptype == 1))                          {
      MenueSelection = 8;
    }
    if (MnuState == 3)                                               {
      MenueSelection = 9;
    }
    if (MnuState == 4)                                               {
      MenueSelection = 10;
    }
    //Display  Selected Content
    if (MnuState == 9)                                               {
      MenueSelection = 20; // Color Set
    }
    if (MnuState == 10)                                              {
      MenueSelection = 21; // Time Set
    }
    if (MnuState == 11)                                              {
      MenueSelection = 24; // Time Set
    }
    if (MnuState == 12)                                              {
      MenueSelection = 25; // Time Set
    }
    if (MnuState == 13)                                              {
      MenueSelection = 27; // Background Set
    }
    if (MnuState == 14)                                              {
      MenueSelection = 29; // ClockFace Set
    }
    switch (MenueSelection)
    {
      case 1:
        {
          Serial.println("System Time: " + String (Hours24) + ":" + String (Minutes24) + ":" + String (Seconds24) );
          Serial.println("Hour: (0-23)");
          MnuState = 12;
          value = 0;
          Sbuffer = "";
          break;
        }
      case 20:
        {
          value = 0;
          MnuState = 0;
          Sbuffer = "";
          break;
        }
      case 21:
        {
          if ((value >= 0) & (value < 60))
          {
            Seconds24 = value;
            A60telSeconds24 = 0;
            Serial.println("Seconds " + String (value) + " set.");
            Serial.println("Updated new Time: " + String (Hours24) + ":" + String (Minutes24) + ":" + String (Seconds24) );
            MnuState = 0;
            setDS3231time( Seconds24, Minutes24, Hours24, 1, 24, 6, 77);
            delay(100);
          } else
          {
            readDS3231time(&Seconds24, &Minutes24, &Hours24);
            value = 0;
            Sbuffer = "";
            MnuState = 0;
            Serial.println("Value out of Range.");
          }
          value = 0;
          MnuState = 0;
          Sbuffer = "";
          break;
        }
      case 24:
        {
          if ((value >= 0) & (value < 60))
          {
            Minutes24 = value;
            Serial.println("Minutes " + String (value) + " set.");
            MnuState = 10;
            Serial.println("Seconds: (0-60)");
          } else
          {
            readDS3231time(&Seconds24, &Minutes24, &Hours24);
            value = 0;
            Sbuffer = "";
            Serial.println("Value out of Range.");
            MnuState = 0;
          }
          value = 0;
          Sbuffer = "";
          break;
        }
      case 25:
        {
          if ((value >= 0) & (value < 24))
          {
            Hours24 = value;
            Serial.println("Hour " + String (value) + " set.");
            MnuState = 11;
            Serial.println("Minute: (1-60)");
          } else
          {
            readDS3231time(&Seconds24, &Minutes24, &Hours24);
            value = 0;
            Sbuffer = "";
            Serial.println("Value out of Range.");
          }
          value = 0;
          Sbuffer = "";
          break;
        }
      default:
        {
          Serial.println("-Smart LED Clock  by T.Kuch 2019-");
          Serial.println("T - Set Time");
          Serial.println("Type Cmd and press Enter");
          Serial.flush();
          MnuState = 0;
          value = 0;
          Sbuffer = "";
        }
    }
  } // Eingabe erkannt
}

void loop()
{
  bool PressedC;
  if ((A60telSecInterruptOccured) && (!(SecInterruptOccured)) )
  {
    A60telSecInterruptOccured = false;
    if (BHMeasure.SensorEnabled)
    {
      //   Run_BH1750Sensor(false);
    }
  }
  if (SecInterruptOccured)
  {
    SecInterruptOccured = false;

    // if (DisableSecondDisplay) {Displayalternation = 25;}
    if ((Displayalternation < 7) & (!DisableSecondDisplay))
    {
      DisplayTempOnLedTM1637();
    } else if ((Displayalternation < 14)  & (!DisableSecondDisplay))
    {
      DisplayTempinFOnLedTM1637();
    } else if ((Displayalternation < 21) & (!DisableSecondDisplay))
    {
      DisplayHumityOnTM1637();
    } else if ((Displayalternation < 35) | (DisableSecondDisplay))
    {
      DisplayClockOnLedTM1637();
    } else
    {
      Displayalternation = 0;
    }

    if (!DisableSecondDisplay)
    {
      if (BHMeasure.SensorEnabled) {
        Run_BH1750Sensor(false);
      };
      Run_BH1750Sensor(false);
      Displayalternation ++;
      ScheduledTasks();
    }
  }
  CheckConfigButtons();
  SerialcommandProcessor();
}
 
Odpowiedź
  


Wiadomości w tym wątku
Błąd kompilacji - przez kaczor22 - 07-01-2021, 19:46
RE: Błąd kompilacji - przez kaczakat - 07-01-2021, 22:25
RE: Błąd kompilacji - przez kaczor22 - 07-01-2021, 23:14
RE: Błąd kompilacji - przez Jarewa0606 - 08-01-2021, 00:27
RE: Błąd kompilacji - przez kaczor22 - 08-01-2021, 04:03
RE: Błąd kompilacji - przez Jarewa0606 - 08-01-2021, 06:33
RE: Błąd kompilacji - przez kaczor22 - 08-01-2021, 09:05
RE: Błąd kompilacji - przez kaczakat - 08-01-2021, 06:36
RE: Błąd kompilacji - przez kaczakat - 08-01-2021, 10:42
RE: Błąd kompilacji - przez Jarewa0606 - 08-01-2021, 11:21
RE: Błąd kompilacji - przez kaczor22 - 08-01-2021, 13:55
RE: Błąd kompilacji - przez kaczor22 - 08-01-2021, 18:12
RE: Błąd kompilacji - przez kaczakat - 09-01-2021, 04:49
RE: Błąd kompilacji - przez kaczor22 - 09-01-2021, 12:03
RE: Błąd kompilacji - przez Jarewa0606 - 09-01-2021, 17:32
RE: Błąd kompilacji - przez kaczakat - 09-01-2021, 17:36
RE: Błąd kompilacji - przez kaczor22 - 13-01-2021, 00:16
RE: Błąd kompilacji - przez kaczakat - 13-01-2021, 15:02
RE: Błąd kompilacji - przez kaczor22 - 09-02-2021, 21:21

Skocz do:


Przeglądający: 1 gości