Прошу помощи со скетчем часов

Славян
Offline
Зарегистрирован: 05.09.2018

Доброго времени суток всем. Делаю часы на ин-12 не могу залить скетч вылезает ошибка компиляции помогите пожайлуста!!!

Arduino: 1.8.5 (Windows 7), Плата:"Arduino Nano, ATmega328P"
 
 
C:\Users\0A6D~1\AppData\Local\Temp\ccSRHNGk.ltrans0.ltrans.o: In function `main':
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/main.cpp:46: undefined reference to `loop'
 
collect2.exe: error: ld returned 1 exit status
 
Несколько библиотек найдено для "DS3231.h"
 Используется: C:\Users\джо\Documents\Arduino\libraries\DS3231
Не используется: C:\Users\джо\Documents\Arduino\libraries\DS3231-1.0.2
Не используется: C:\Program Files (x86)\Arduino\libraries\DS3231
Используем библиотеку DS3231 в папке: C:\Users\джо\Documents\Arduino\libraries\DS3231 (legacy)
Используем библиотеку Wire версии 1.0 из папки: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire 
exit status 1
Ошибка компиляции для платы Arduino Nano.
 
 
   Вот скетч:
 
 
#include <DS3231.h>
#include <Wire.h>
 
// выводы для дешифратора
  int out1 = A3;
  int out2 = A1;
  int out4 = A0;
  int out8 = A2;
// выводы для транзисторных ключей
  int key1= 4;
  int key2 = 6;
  int key3 = 7;
  int key4 = 8;
 
  int led1=11;// вывод светодиода
  int keyb=A6;// пин для клавиатуры
 
 
  int keynum=0; //номер нажатой кнопки
  int mode =0; //0 - отображение текущего времени 1- установка времени
  int currentdigit = 0; //0 - установка часов 1- установка минут
  bool blinkflag = 0; // флаг для мигания цифр при установке времени
  bool timeout=false; // таймаут после нажатия кнопки (для устраниния дребезга)
  unsigned long startTime; //для мигания светодиода
  unsigned long startTime2; // для опроса нажатых кнопок
  int sec; //переменная увеличивается каждые 500мс на единицу. Нужна для мигания секундных светодиодов, бывает в двух значениях 0 - светодиоды не горят, 1 - горят, если больше 1, то сбрысывается в 0
 
  // переменные, необходимые для работы ds3231
 
 
 
void setup() {
  // put your setup code here, to run once:
  // задаем частоту ШИМ на 9 выводе 30кГц
  TCCR1B=TCCR1B&0b11111000|0x01;
  
  analogWrite(9,130);
 
    // Start the I2C interface
//  Wire.begin();
  // Start the serial interface
  Serial.begin(9600);
  
  //задаем режим работы выходов микроконтроллера
  pinMode(out1,OUTPUT);
  pinMode(out2,OUTPUT);
  pinMode(out4,OUTPUT);
  pinMode(out8,OUTPUT);
 
  pinMode(key1,OUTPUT);
  pinMode(key2,OUTPUT);
  pinMode(key3,OUTPUT);
  pinMode(key4,OUTPUT);
 
  pinMode(led1,OUTPUT);
 
  startTime = millis();
  startTime2=startTime;
  sec = 0;
  // считываем текущее вермя
//  ReadDS3231();
  delay(1000);
//  lastMinute = minute%10;
}
 
//void ReadDS3231()   //функция считывает в глобальные переменные minute и hour текущие значения
 
 
 
//void loop() {
//  // put your main code here, to run repeatedly:
//  
//  int digits[3]; // массив для текущего значения времени на четыре цифры
//  int keyval= analogRead(keyb); // считываем значение с клавиатуры
//  
//  unsigned long currentTime = millis(); //текущее время с момента запуска рограммы
//   if (currentTime>=(startTime2+200)) // если прошло 200мс посмотрим какая кнопка была нажата
//   {
//      timeout=false;
//     //проверим нажатие кнопок
//      if (keynum==3) // кнопка переключения между режимами "время" и "настройка"
//      {
//        timeout=true; // запрещаем считывать нажатия кнопок
//        if (mode==0) mode=1; // если отображалось время, переходим в режим настроек
//        else
//          if (mode==1) mode=0; //если был режим настроек, переключаемся на текущее время
//      }
//      if (keynum==2) // кнопка переключения между часами и минутами
//      {
//        timeout=true; // запрещаем считывать нажатия кнопок
//        // currentdigit либо 0 - настройка часов, либо 1 - настройка минут
//        currentdigit++; 
//        if (currentdigit==2) currentdigit=0;
//      }
//      if (keynum==1 && mode==1) // кнопка увеличения количества часов или минут(при настройке)
//      {
//        blinkflag=true; // прекращаем мигать цифрами
//        startTime=millis();
//        timeout=true;  // запрещаем считывать нажатия кнопок
//        if (currentdigit==0) // если меняем часы
//        {
//          if (hour<=22) hour++;
//          else
//            hour=0;
//          Clock.setHour(hour);
//        }
//        if (currentdigit==1) // если меняем минуты
//        {
//          if (minute<=58) minute++;
//          else 
//            minute=0;
//         Clock.setMinute(minute);//Set the minute 
//         Clock.setSecond(0);
//        }
//      }
//      keynum=0; //сбрасываем нажатую кнопку
//      startTime2=millis();
//   }
// 
//  if (currentTime>=(startTime+500)) // если прошло 500мс
//  {
//    blinkflag=!blinkflag; // инвертируем флаг мигающей цифры
//      
//    if(sec<1) // светодиоды не горят
//    {
//      // зажечь светодиоды
//      digitalWrite(led1,HIGH);
//      Serial.println(blinkflag);
//      Serial.print("Keyval=");
//      Serial.println(keyval);
//      
//    }
//    if(sec>=1) // светодиоды горят
//    {
//      // потушить светодиоды
//      digitalWrite(led1,LOW);
//    }
//    startTime = currentTime;
//    ReadDS3231(); 
//    sec = (sec+1);
//    if(sec>=2) sec=0;
// 
//  }
//    digits[0] = hour/10;
//    digits[1] = hour%10;
//    digits[2] = minute/10;
//    digits[3] = minute%10;
//  
//    //антиотравление
//  if (minute%10!=lastMinute && mode == 0)
//  {
//
//    digits[3] = lastMinute;
//    lastMinute = minute%10;
//    
//    Safe(digits);
//    digits[3] = lastMinute;
//  }
//  //
// 
//    show(digits); // вывести цифры на дисплей
// 
//  //проверяем нажатые кнопки
//  if(!timeout) //если разрешено, считываем нажатую кнопку
//  {
//    /*keyval - значение функции analogread 
//     * если нажата первая кнопка, то принимает значение около 200
//     * если нажата вторая кнопка то значение около 700
//     * если третяя кнопка, то значение будет около 1000
//     * эти значения зависят от выбранных резисторов в клавиатуре
//    */
//    if (keyval>150 && keyval<400) keynum=1;
//    if (keyval>700 && keyval<900) keynum=2;
//    if (keyval>960) keynum=3;
//  }
//}
//void show(int a[])
//{
//    //выведем цифру a[0] на первый индикатор
//  setNumber(a[0]);
//  if (!(mode==1&&currentdigit==0&&blinkflag==false)) //если мы в режиме настройки и происходит настройка часов, то в первая цифра будет мигать
//  {
//    digitalWrite(key1,HIGH);
//    delay(2);
//    //потушим первый индикатор
//    digitalWrite(key1,LOW);
//    delay(1);
//  }
//  
//  //цифра a[1] на второй индикатор
//  setNumber(a[1]);
//  if (!(mode==1&&currentdigit==0&&blinkflag==false))
//  {
//  digitalWrite(key2,HIGH);
//  delay(2);
//  //потушим второй индикатор
//  digitalWrite(key2,LOW);
//  delay(1);
//  }
// 
//  //цифра a[2] на третий индикатор
//  setNumber(a[2]);
//  if (!(mode==1&&currentdigit==1&&blinkflag==false))
//  {
//  digitalWrite(key3,HIGH);
//  delay(2);
//  //потушим третий индикатор
//  digitalWrite(key3,LOW);
//  delay(1);
//  }
// 
//  //выведем цифру a[3] на четвертый индикатор
//  setNumber(a[3]);
//  if (!(mode==1&&currentdigit==1&&blinkflag==false))
//  {
//  digitalWrite(key4,HIGH);
//  delay(2);
//  //потушим четвертый индикатор
//  digitalWrite(key4,LOW);
//  delay(1);
//  }
//}
//// передача цифры на дешифратор
//void setNumber(int num) 
//{
//  switch (num)
//  {
//    case 0:
//    digitalWrite (out1,LOW);
//    digitalWrite (out2,LOW);
//    digitalWrite (out4,LOW);
//    digitalWrite (out8,LOW);
//    break;
//    case 1:
//    digitalWrite (out1,HIGH);
//    digitalWrite (out2,LOW);
//    digitalWrite (out4,LOW);
//    digitalWrite (out8,LOW);
//    break;
//    case 2:
//    digitalWrite (out1,LOW);
//    digitalWrite (out2,HIGH);
//    digitalWrite (out4,LOW);
//    digitalWrite (out8,LOW);
//    break;
//    case 3:
//    digitalWrite (out1,HIGH);
//    digitalWrite (out2,HIGH);
//    digitalWrite (out4,LOW);
//    digitalWrite (out8,LOW);
//    break;
//    case 4:
//    digitalWrite (out1,LOW);
//    digitalWrite (out2,LOW);
//    digitalWrite (out4,HIGH);
//    digitalWrite (out8,LOW);
//    break;
//    case 5:
//    digitalWrite (out1,HIGH);
//    digitalWrite (out2,LOW);
//    digitalWrite (out4,HIGH);
//    digitalWrite (out8,LOW);
//    break;
//    case 6:
//    digitalWrite (out1,LOW);
//    digitalWrite (out2,HIGH);
//    digitalWrite (out4,HIGH);
//    digitalWrite (out8,LOW);
//    break;
//    case 7:
//    digitalWrite (out1,HIGH);
//    digitalWrite (out2,HIGH);
//    digitalWrite (out4,HIGH);
//    digitalWrite (out8,LOW);
//    break;
//    case 8:
//    digitalWrite (out1,LOW);
//    digitalWrite (out2,LOW);
//    digitalWrite (out4,LOW);
//    digitalWrite (out8,HIGH);
//    break;
//    case 9:
//    digitalWrite (out1,HIGH);
//    digitalWrite (out2,LOW);
//    digitalWrite (out4,LOW);
//    digitalWrite (out8,HIGH);
//    break;
//  }
//}
//void Safe(int n[])
//{
//  int h1 = n[0];
//  int h2 = n[1];
//  int m1 = n[2];
//  int m2 = n[3];
//
//  n[0]++;
//  while(n[0]!=h1)
//  {
//    
//    for (int x=0;x<2;x++)
//    {
//      show(n);
//    }
//    n[0]++;
//    if (n[0]>9) n[0]=0;
//  }
//  
//  n[1]++;
//  while(n[1]!=h2)
//  {
//    
//    for (int x=0;x<2;x++)
//    {
//      show(n);
//    }
//    n[1]++;
//    if (n[1]>9) n[1]=0;
//  }
//  
//  n[2]++;
//  while(n[2]!=m1)
//  {
//    
//    for (int x=0;x<2;x++)
//    {
//      show(n);
//    }
//    n[2]++;
//    if (n[2]>9) n[2]=0;
//  }
//  
//  n[3]++;
//  while(n[3]!=m2)
//  {
//    
//    for (int x=0;x<2;x++)
//    {
//      show(n);
//    }
//    n[3]++;
//    if (n[3]>9) n[3]=0;
//  }
//  
//
//}

 

nikolaki
nikolaki аватар
Offline
Зарегистрирован: 14.02.2013

Так раскоментируй фукцию loop. Да , и почитай как вставлять правильно код.

b707
Offline
Зарегистрирован: 26.05.2017

Славян - судя по вопросу. в этом коде ты не понимаешь ни буквы, просто нашел где-то в инете?

Брысь отсюда. тут таким не место :)

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

b707 пишет:

Славян - судя по вопросу. в этом коде ты не понимаешь ни буквы, просто нашел где-то в инете?

Брысь отсюда. тут таким не место :)

У Вас в 46, 63, 97 строке кода БООЛЬШИЕ ошибки.

Слушайте умных людей.

bwn
Offline
Зарегистрирован: 25.08.2014

Злые вы. А ведь какое трудолюбие надо иметь, чтобы на каждой строчке по две косые палочки поставить. Эхххх.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

bwn пишет:

Злые вы. А ведь какое трудолюбие надо иметь, чтобы на каждой строчке по две косые палочки поставить. Эхххх.

Дурная IDE по Ctrl + Slash, когда выделено несколько строчек - комментирует однострочными комментариями каждую строку. Дичь :)

vk007
Offline
Зарегистрирован: 16.06.2015

Там в скетче уже используется комментирование через /* */, и если использовать этот способ на более глобальный блок, то компилятор найдет первую закрывающую */ и дальше все остальное будет воспринимать за код. Так что тут да, по Ctrl+/ было действительно проще. Я так думаю (с).