Помогите пожалуйста решить ошибку

#define LED_NUM 60

#include "FastLED.h"
#include "microDS3231.h"
#include "GyverTM1637.h"

GyverTM1637 disp(10, 9);
MicroDS3231 rtc;
CRGB leds[LED_NUM];

bool FLAG = false;
int BRIGHT = 10;
int LAST = 0;

String alarm = "15 45";

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
 
  disp.clear();  // очистить
  disp.brightness(4);
  Serial.println(COMPILE_TIME);
  rtc.setTime(COMPILE_TIME);
  FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, LED_NUM);
  FastLED.setBrightness(100);
  Serial.println("efdes");
  FastLED.showColor(CRGB::Blue);

  disp.point(1);
  

  
}

void loop() {
  // put your main code here, to run repeatedly:
  disp.displayClock(rtc.getHours(), rtc.getMinutes());
  if (alarm==String(rtc.getHours())+" "+ String(rtc.getMinutes())){
    FLAG=true;
    LAST = alarm;
  }
  if(FLAG && LAST != String(rtc.getHours())+" "+ String(rtc.getMinutes())){
    BRIGHT = BRIGHT+21;
    LAST = String(rtc.getHours())+" "+ String(rtc.getMinutes());
    if (BRIGHT==252){
      FLAG=false;
    }

  }
  delay(2000);
  
}

Код для адресной ленты будильника
Ошибка
C:\Users\admin\Documents\Arduino\led2\led2.ino: In function ‘void loop()’:
C:\Users\admin\Documents\Arduino\led2\led2.ino:42:63: error: cannot convert ‘StringSumHelper’ to ‘int’ in assignment
LAST = String(rtc.getHours())+" “+ String(rtc.getMinutes());
^
C:\Users\admin\Documents\Arduino\led2\led2.ino:44:19: error: no match for ‘operator!=’ (operand types are ‘int’ and ‘StringSumHelper’)
if(FLAG && LAST != String(rtc.getHours())+” “+ String(rtc.getMinutes())){
~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from c:\Users\admin\Documents\Arduino\libraries\FastLED\src/controller.h:9:0,
from c:\Users\admin\Documents\Arduino\libraries\FastLED\src/FastLED.h:49,
from C:\Users\admin\Documents\Arduino\led2\led2.ino:4:
c:\Users\admin\Documents\Arduino\libraries\FastLED\src/pixeltypes.h:754:44: note: candidate: bool operator!=(const CRGB&, const CRGB&)
inline attribute((always_inline)) bool operator!= (const CRGB& lhs, const CRGB& rhs)
^~~~~~~~
c:\Users\admin\Documents\Arduino\libraries\FastLED\src/pixeltypes.h:754:44: note: no known conversion for argument 2 from ‘StringSumHelper’ to ‘const CRGB&’
C:\Users\admin\Documents\Arduino\led2\led2.ino:46:63: error: cannot convert ‘StringSumHelper’ to ‘int’ in assignment
LAST = String(rtc.getHours())+” "+ String(rtc.getMinutes());
^

exit status 1

Compilation error: cannot convert ‘StringSumHelper’ to ‘int’ in assignment

Кавычки должны быть обратными, такими « ` »

где они должны быть?

Там где буква ё на клавиатуре стандартной

куда их писать?

Ошибка в строке 41. Вы можете описать, что эта строка делает?

Поддерживаю. Что по задумке автора в строке 41 происходит?
А так же в строках 43 и 45.

там проверяется прошла ли минута с предыдущего раза

Это неправильное объяснение. В 41 строке числовой переменной присваивается строковое значение. А далее эта числовая переменная сравнивается со строками. Т.е. полная хня делается

это в теории должно выполнять свою работу ведь если было “19 45” а стало “19 46” условие выполниться т к строки не равны

Это даже в теории не должно работать. Потому что число - это не строка, даже если в строке одни цифры. Это как попытаться перчатки вместо шляпы натянуть

Хорошо а как исправить саму ошибку?

Все понял спасибо

Переписать код правильно. Сравнивать числа с числами, а строки со строками. Присваивать так же.

1 лайк
#define LED_NUM 60

#include "FastLED.h"
#include "microDS3231.h"
#include "GyverTM1637.h"

GyverTM1637 disp(10, 9);
MicroDS3231 rtc;
CRGB leds[LED_NUM];

bool FLAG = false;
int BRIGHT = 0;
String LAST;

String alarm = "21 13";

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
 
  disp.clear();  // очистить
  disp.brightness(1);
  Serial.println(COMPILE_TIME);
  rtc.setTime(COMPILE_TIME);
  FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, LED_NUM);
  FastLED.setBrightness(BRIGHT);
  Serial.println("efdes");
  FastLED.showColor(CRGB::Blue);

  disp.point(1);
  

  
}

void loop() {

  // put your main code here, to run repeatedly:
  disp.displayClock(rtc.getHours(), rtc.getMinutes());
  Serial.println(String(rtc.getHours())+" "+ String(rtc.getMinutes()));
  
  if (!FLAG && alarm==String(rtc.getHours())+" "+ String(rtc.getMinutes())){
    FLAG=true;
    Serial.println(FLAG);
    LAST = String(rtc.getHours())+" "+ String(rtc.getMinutes());
    Serial.println("time :"+LAST);
    Serial.println(String(rtc.getHours())+" "+ String(rtc.getMinutes()));
  }

  if(FLAG && LAST != String(rtc.getHours())+" "+ String(rtc.getMinutes())){

    BRIGHT = 21;
    FastLED.setBrightness(21);
    FastLED.show();
    Serial.println("BRIGHT:");
    Serial.println(BRIGHT);
    FastLED.show();    
    LAST = String(rtc.getHours())+" "+ String(rtc.getMinutes());

    if (BRIGHT==252){
      FLAG=false;
    }

  }
  delay(2000);
  
}```

Лента после выполнения светиться с яркостью 1 а не 100

условие выполняется т к в консоли пишется BRIGHT а она бы не выполнялась без выполнения условия

Только BRIGHT без числа?

да
переменная BRIGHT пустая

Число не может быть пустым. Оно может равняться нулю, и нуль бы и выводился в порт. Раз этого нет, значит … подставь по своему усмотрению, что это значит

Вот зачем нужна эта упёртость. Вам сказали - сравнивайте числа, а не текст.

int alarm = 2113;
LAST = rtc.getHours()*100+rtc.getMinutes();
if(FLAG && LAST != rtc.getHours()*100+rtc.getMinutes()){