Привести код в разумный вид

Тема в разделе "Arduino & Shields", создана пользователем Максим B, 19 май 2020.

  1. Максим B

    Максим B Гуру

    Всем привет.

    Код рабочий, но сам по себе весь криво-косо написан. Как бы его весь привести в нормальный вид:
    Код (Text):


    #include "Wire.h"
    #define DS1307_I2C_ADDRESS 0x68

    #include "OasisLED.h"
    #include <Arduino.h>

    #include <IRremote.h>
    #include <RCSwitch.h>


    int RECV_PIN = 11;

    uint8_t clockPin = 3;
    uint8_t strobePin = 2;
    uint8_t dataPin = 4;
    OasisLED ledDisplay = OasisLED(clockPin, strobePin, dataPin);

    IRrecv irrecv(RECV_PIN);
    decode_results results;
    RCSwitch mySwitch = RCSwitch();

    int n=0;  // переключение режимов работы



    byte decToBcd(byte val)
    {
      return ( (val/10*16) + (val%10) );
    }



    byte bcdToDec(byte val)
    {
      return ( (val/16*10) + (val%16) );
    }




    void setDateDs1307(byte second,        // 0-59
                       byte minute,        // 0-59
                       byte hour,          // 1-23
                       byte dayOfWeek,     // 1-7
                       byte dayOfMonth,    // 1-28/29/30/31
                       byte month,         // 1-12
                       byte year)          // 0-99
    {
       Wire.beginTransmission(DS1307_I2C_ADDRESS);
       Wire.write(0);
       Wire.write(decToBcd(second));    
       Wire.write(decToBcd(minute));
       Wire.write(decToBcd(hour));    
       Wire.write(decToBcd(dayOfWeek));
       Wire.write(decToBcd(dayOfMonth));
       Wire.write(decToBcd(month));
       Wire.write(decToBcd(year));
       Wire.endTransmission();
    }

    void getDateDs1307(byte *second,
              byte *minute,
              byte *hour,
              byte *dayOfWeek,
              byte *dayOfMonth,
              byte *month,
              byte *year)
    {

      Wire.beginTransmission(DS1307_I2C_ADDRESS);
      Wire.write(0);
      Wire.endTransmission();

      Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

      *second     = bcdToDec(Wire.read() & 0x7f);
      *minute     = bcdToDec(Wire.read());
      *hour       = bcdToDec(Wire.read() & 0x3f);
      *dayOfWeek  = bcdToDec(Wire.read());
      *dayOfMonth = bcdToDec(Wire.read());
      *month      = bcdToDec(Wire.read());
      *year       = bcdToDec(Wire.read());
    }

    void setup()
    {
      byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
      Wire.begin();
      ledDisplay.initialize();
      Serial.begin(9600);

      irrecv.enableIRIn(); // Start the receiver
      mySwitch.enableTransmit(10);
      mySwitch.setPulseLength(237);
     
     
      second = 00;
      minute = 12;
      hour = 16;
      dayOfWeek = 2;
      dayOfMonth = 19;
      month = 5;
      year = 20;
      //setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);   // установка даты
    }



    void loop()
    {
      printTime();
     ledDisplay.toggleColon();
     delay (1000);  
     ledDisplay.toggleColon();
     delay(1000);
     ledDisplay.reset();
    }



    void printTime()
    {
      byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
      getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);

        ledDisplay.setValue(hour*100+minute);
           
      if(irrecv.decode(&results))
        {
             //Serial.println(results.value, HEX);
       
      if ((results.value == 0x37) || (results.value == 0x10037))
       {
           // Serial.println(results.value, HEX);
          ++n;
            //  Serial.println(n);
      if (n>=7) n=0;
       }
       
       
       
        switch(n) {
           case 1:
               if ((results.value == 0x37) || (results.value == 0x10037)){  // переключение режимов работы
                   mySwitch.send(7652288,24);}
               break;
           case 2:
               if ((results.value == 0x37) || (results.value == 0x10037)){// переключение режимов работы
                   mySwitch.send(7652288,24);}
               break;
               
           case 3:
               if ((results.value == 0x37) || (results.value == 0x10037)){// переключение режимов работы
                   mySwitch.send(7652144,24); }
               break;  
               
           case 4:
               if ((results.value == 0x37) || (results.value == 0x10037)){// переключение режимов работы
                   mySwitch.send(7652144,24); }
               break;  
               
           case 5:
           if ((results.value == 0x37) || (results.value == 0x10037)){// переключение режимов работы
                   mySwitch.send(7652288,24);
                   delay(100);
                   mySwitch.send(7652144,24); }
                   break;  
       
           case 6:
               if ((results.value == 0x37) || (results.value == 0x10037)){// переключение режимов работы
                   mySwitch.send(7652288,24);
                   delay(100);
                   mySwitch.send(7652144,24); }
                   break;  
                  }
                 
                 
      if ((results.value == 0x6E) || (results.value == 0x1006E)){
        mySwitch.send(7652288,24);
      }
     
       if ((results.value == 0x70) || (results.value == 0x10070)){
        mySwitch.send(7652144,24);
      }
           
      delay (500);  
      irrecv.resume();
        }
    }

     
    Спасибо
     
  2. parovoZZ

    parovoZZ Гуру

    В IDE нажать кнопку "форматировать код".
     
  3. Максим B

    Максим B Гуру

    Я так полагаю тут нет никаких ООП, только процедруно-функциональное программирование? Тогда - да, сделаю как вы сказали.
     
  4. Asper Daffy

    Asper Daffy Иксперд

    Для начала, необходимо дать чёткое определение понятию "нормальный вид".
     
    Daniil нравится это.