это заметилесли ты заметил, я перенёс запрос температуры в тело оператора условия,
скоро проверю, спасибои запрос будет происходить только в том случае если МК видит датчик, я не утверждаю просто попробуй ту функцию loop()
Заказал программатор и новую ардуинку, не забыл))Тема с часами умерла? Или ТС все сделал и забыл показать свои труды?
вообщем код косячит что-то) убрал задержку 1000, вроде пропал '-27'( не пропал, но реже стал), сейчас абракадабра показывается больше, за место его))Да, жаль нет под рукой данного железа... в пути пока...
ну поковыряй сам может чего нароешь, только не хорони тему о результатах пиши...)))
void TimeAdjust(){
int buttonH = digitalRead(HUR_PIN);
int buttonM = digitalRead(MIN_PIN);
if (buttonH == LOW || buttonM == LOW){
delay(50);
time.gettime();
int hour=time.Hours;
int minutes=time.minutes;
int second =time.seconds;
if (buttonH == LOW){
if (hour== 23){hour=0;}
else {hour += 1;};
}else {
if (minutes== 59){minutes=0;}
else {minutes += 1;};
};
time.settime(0, minutes, hour); }
}
if (buttonH == LOW){
if (hour== 23){hour=0;}
else {hour += 2;};
}else {
if (minutes== 59){minutes=0;}
else {minutes += 5;};
};
bool button_state = false;
bool button_auto_state = false;
uint32_t ms_button = 0;
uint32_t ms_auto_click = 0;
void loop(){
uint32_t ms = millis();
bool pin_state = digitalRead(PIN_BUTTON);
// Фиксируем нажатие кнопки
if( pin_state == LOW && !button_state && ( ms - ms_button ) > 50 ){
button_state = true;
button_auto_state = false;
ms_button = ms;
}
// После 2000 мс нажатия кнопки каждые 500 мс фиксируем событие нажатия
if( pin_state == LOW && ( ms - ms_button ) > 2000 && ( ms - ms_auto_click )>500 ){
button_auto_state = true;
ms_auto_click = ms;
Serial.println("Auto press key");
}
// Фиксируем отпускание кнопки
if( pin_state == HIGH && button_state && ( ms - ms_button ) > 50 ){
button_state = false;
ms_button = ms;
if( !button_auto_state )Serial.println("Press key");
}
if (GetSecond()>=16 && GetSecond()<=20 || (GetSecond()>=41 &&GetSecond()<=45))
{TempStreetToArray();}
else if (GetSecond()>=8 && GetSecond()<=15 || (GetSecond()>=34 &&GetSecond()<=40))
{TempToArray();}
else if (GetSecond()>=21&& GetSecond()<=25 || (GetSecond()>=46 && GetSecond()<=50))
{PressToArray();}
else {TimeToArray();}
TimeToArray();
delay(3000);
TempToArray();
delay(3000);
TempStreetToArray();
delay(3000);
PressToArray();
delay(3000);
Так нет его.. loop-а то.. совсем нет.
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
// Дойдя до сюда, ардуино вернется на первую строчку и опять начнет выполнение всех инструкций. И так раз за разом
цикл работает, только выводит текстом команду, а не значение)Ну вставь перед каждым delay Serial.println
этот же код работает)Проверить неработающие функции
if (GetSecond()>=16 && GetSecond()<=20 || (GetSecond()>=41 &&GetSecond()<=45))
{TempStreetToArray();}
else if (GetSecond()>=8 && GetSecond()<=15 || (GetSecond()>=34 &&GetSecond()<=40))
{TempToArray();}
else if (GetSecond()>=21&& GetSecond()<=25 || (GetSecond()>=46 && GetSecond()<=50))
{PressToArray();}
else {TimeToArray();}
не стал писать, а так внизу строка FastLED.show(); и весь loopГадание по обрывку кода. Где вывод на дисплей.
вот в этом и было дело) теперь в часах перестали моргать две точки, как же все взаимосвязано)А код с IF готовит только один комплект данных , в зависимости от времени
мигали каждую секунду, загорелись -1, погасли-2 и т.д.точки мигают как часто