Работа с if`ами

Mixael
Offline
Зарегистрирован: 27.05.2016

Помогите начинающему нубу.

Имеется код:

#include <Time.h>
#include <TimeLib.h>
#include <Wire.h>
#include "DS1307.h"

DS1307 clock;//define a object of DS1307 class
void setup()
{
  pinMode(13, OUTPUT); 
  Serial.begin(9600);
  clock.begin();
  clock.fillByYMD(2016,5,27);//May 27,2016
  clock.fillByHMS(22,30,30);//22:30 30"
  clock.fillDayOfWeek(SAT);//Friday
  clock.setTime();//write time to the RTC chip
}
void loop()
int s = second();
  if (s > 35) digitalWrite(13, 1);
{
  printTime();
}
/*Function: Display time on the serial monitor*/
void printTime()
{
  clock.getTime();
  Serial.print(clock.hour, DEC);
  Serial.print(":");
  Serial.print(clock.minute, DEC);
  Serial.print(":");
  Serial.print(clock.second, DEC);
  Serial.print("  ");
  Serial.print(clock.month, DEC);
  Serial.print("/");
  Serial.print(clock.dayOfMonth, DEC);
  Serial.print("/");
  Serial.print(clock.year+2000, DEC);
  Serial.print(" ");
  Serial.print(clock.dayOfMonth);
  Serial.print("*");
  switch (clock.dayOfWeek)// Friendly printout the weekday
  {
    case MON:
      Serial.print("MON");
      break;
    case TUE:
      Serial.print("TUE");
      break;
    case WED:
      Serial.print("WED");
      break;
    case THU:
      Serial.print("THU");
      break;
    case FRI:
      Serial.print("FRI");
      break;
    case SAT:
      Serial.print("SAT");
      break;
    case SUN:
      Serial.print("SUN");
      break;
      clock.getTime();
    }
  {
   Serial.println(" ");
  }
  }
  

 

Собственно, ничего необычного - работает с часами реального времени и отсылает текущее время в консоль. Проблема в чем - нужно при возникновении на секундах значения больше, чем 35, зажечь светодиод, но ругается компилятор - expected initializer before 'int'. Перерыл всё что, можно, не могу понять что ему надо. Как исправить код, чтобы вставился if?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Где фигурные скобки после void loop()?

P.S. Ошибки компилятора нужно указывать полностью, с номером строки на которую ругается.

Mixael
Offline
Зарегистрирован: 27.05.2016

Jeka_M пишет:

Где фигурные скобки после void loop()?

P.S. Ошибки компилятора нужно указывать полностью, с номером строки на которую ругается.

Прошу прощения, добавил скобки, теперь код выглядит вот так:

#include <Time.h>
#include <TimeLib.h>
#include <Wire.h>
#include "DS1307.h"

DS1307 clock;//define a object of DS1307 class
void setup()
{
  pinMode(13, OUTPUT); 
  Serial.begin(9600);
  clock.begin();
  clock.fillByYMD(2016,5,27);//May 27,2016
  clock.fillByHMS(22,30,30);//22:30 30"
  clock.fillDayOfWeek(SAT);//Friday
  clock.setTime();//write time to the RTC chip
}
void loop()
{
int s = second();
  if (s > 35) digitalWrite(13, 1);
{
  printTime();
}
/*Function: Display time on the serial monitor*/
void printTime()
{
  clock.getTime();
  Serial.print(clock.hour, DEC);
  Serial.print(":");
  Serial.print(clock.minute, DEC);
  Serial.print(":");
  Serial.print(clock.second, DEC);
  Serial.print("  ");
  Serial.print(clock.month, DEC);
  Serial.print("/");
  Serial.print(clock.dayOfMonth, DEC);
  Serial.print("/");
  Serial.print(clock.year+2000, DEC);
  Serial.print(" ");
  Serial.print(clock.dayOfMonth);
  Serial.print("*");
  switch (clock.dayOfWeek)// Friendly printout the weekday
  {
    case MON:
      Serial.print("MON");
      break;
    case TUE:
      Serial.print("TUE");
      break;
    case WED:
      Serial.print("WED");
      break;
    case THU:
      Serial.print("THU");
      break;
    case FRI:
      Serial.print("FRI");
      break;
    case SAT:
      Serial.print("SAT");
      break;
    case SUN:
      Serial.print("SUN");
      break;
      clock.getTime();
    }
  {
   Serial.println(" ");
  }
  }
}
  

компилятор ругается:

In function 'void loop()':
 
22: error: 'printTime' was not declared in this scope
 
   printTime();
 
             ^
 
26: error: a function-definition is not allowed here before '{' token
 
 {
 
 ^
 
71: error: expected '}' at end of input
 
 }
 
 ^
 
exit status 1
'printTime' was not declared in this scope
 

У меня ошибка в ДНК? :-) Как заставить это работать?

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Ваш   printTime(); не находится в цикле   void loop()

Уберите скобку в 21 строке

Mixael
Offline
Зарегистрирован: 27.05.2016

Сделал, заработало. Благодарю. Видимо, нужно учиться форматировать код.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

За нас уже подумали: нажимаем Ctrl + T