Скетч компиляция

pit1
Offline
Зарегистрирован: 08.01.2020

Добрый день всем. Затупил совсем. Обычный сто раз опробован скетч часов. 

// отправляем массив на экран

tm1637.display(TimeDisp);
}
  Подсвечивается эта строка. Пробовал разные скетчи и обязательно что то светит. Пните под зад в нужном направлении. С ув. Петр
Kakmyc
Offline
Зарегистрирован: 15.01.2018

Пробуй ещё 100раз.
Без полного скетча просто под зад можно напинать, без направления.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

pit1 пишет:
Пните под зад в нужном направлении.
Нужное направление вот здесь - https://www.packoplock.se/media/wysiwyg/1_K_R.pdf

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

pit1 пишет:

Подсвечивается эта строка. Пробовал разные скетчи и обязательно что то светит.

Там не только строка подсвечивается, но и ошибка текстом внизу пишется. Вот и читайте, что написано в ошибке.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Jeka_M пишет:
Вот и читайте, что написано в ошибке.
Это ж читать уметь надо! Был бы там qr-код на видосик на ютубе - другое дело было бы. Отсталые и замшелые эти разработчики!

pit1
Offline
Зарегистрирован: 08.01.2020
#include <Wire.h>
// 7сигментный индикатор
#define CLK 6
#define DIO 7
#define brightness 6 // яркость, от 0 до 7
// кнопки
#define keyHor 5
#define keyMin 4
#define keyPL 3
//TM1637 tm1637(CLK,DIO);
#define DS3231_I2C_ADDRESS 0x68
 
volatile boolean flag;
///// часы ..
byte decToBcd(byte val){
return ( (val/10*16) + (val%10) );
}
byte bcdToDec(byte val){
return ( (val/16*10) + (val%16) );
}
void setDateDs3231(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(DS3231_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 getDateDs3231(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS3231_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 setINT(){ //включает выход SQW, который вроде выключен по умолчанию
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0x0E);
Wire.write(0x80);
Wire.endTransmission();
}
void blink() {
digitalWrite(13, !digitalRead(13));
flag = !flag;
tm1637.point(flag);
}
void setup() {
// Serial.begin(9600);
Wire.begin();
pinMode(13, OUTPUT);
pinMode(keyHor, INPUT_PULLUP);
pinMode(keyMin, INPUT_PULLUP);
pinMode(keyPL, INPUT_PULLUP);
tm1637.init();
tm1637.set(brightness);
 
setINT();
attachInterrupt(0, blink, CHANGE);
}
void loop(){
// читаем время из модуля
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
getDateDs3231(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
// забиваем массив значениями для отпарвки на экран
int8_t TimeDisp[4];
 
TimeDisp[0] = hour / 10;
TimeDisp[1] = hour % 10;
TimeDisp[2] = minute / 10;
TimeDisp[3] = minute % 10;
// обработка кнопок
if (!digitalRead(keyHor) && !digitalRead(keyPL)){ // часы
second = 0; // сбрасываем секунды
hour++; // пребавляем единицу к часам
if (hour > 23) hour = 0; // если вылезли за границы присваеваем 0
setDateDs3231(second, minute, hour, dayOfWeek, dayOfMonth, month, year); // пишим в модуль
delay(200);
}
if (!digitalRead(keyMin) && !digitalRead(keyPL)){ // минуты
second = 0;
minute++;
if (minute > 59) minute = 0;
setDateDs3231(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
delay(200);
}
// отправляем массив на экран
tm1637.display(TimeDisp);
}
 
Kakmyc
Offline
Зарегистрирован: 15.01.2018

А теперь нужно правила почитать и выложить код как положено

pit1
Offline
Зарегистрирован: 08.01.2020

Вот код. Стандартные проверенные часы. Раньше компилировался.  Arduino 1.8.7 ; ZS-042; TM1637; UNO/

pit1
Offline
Зарегистрирован: 08.01.2020
:\Users\piter\AppData\Local\Temp\untitled1998774853.tmp\sketch_aug15a\sketch_aug15a.ino: In function 'void loop()':
 
sketch_aug15a:112:1: error: 'tm1637' was not declared in this scope
 
 tm1637.display(TimeDisp);
 
 ^
 
Используем библиотеку Wire версии 1.0 из папки: C:\Users\piter\Desktop\arduino-1.8.7\hardware\arduino\avr\libraries\Wire 
Используем библиотеку TM1637_RT версии 0.1.1 из папки: C:\Users\piter\Documents\Arduino\libraries\TM1637_RT 
exit status 1
'tm1637' was not declared in this scope
Kakmyc
Offline
Зарегистрирован: 15.01.2018

Не объявлен объект дисплея, точнее закоментиоован в строке номер ЙУХ.
Код нужно выкладывать как положено...

pit1
Offline
Зарегистрирован: 08.01.2020

Простите, имеется ввиду пронумеровать?

А как это сделать быстро?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

pit1 пишет:

Простите, имеется ввиду пронумеровать?

А как это сделать быстро?

Людям с хлебушком в голове это недоступно, это ж читать надо.  А ты за полтора года здесь, так и не научился. 

pit1
Offline
Зарегистрирован: 08.01.2020

 Так старенький уже

Kakmyc
Offline
Зарегистрирован: 15.01.2018

В строке ввода сообщения есть значок с надписью "code"(в мобильной версии его нет , но можно включить версию страницы  для пк)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

pit1 пишет:

 Так старенький уже

15 лет вчера стукнуло?

pit1
Offline
Зарегистрирован: 08.01.2020
#include <Wire.h>
#include "TM1637.h" // http://www.seeedstudio.com/wiki/File:DigitalTube.zip
// 7сигментный индикатор
#define CLK 6
#define DIO 7
#define brightness 6 // яркость, от 0 до 7
// кнопки
#define keyHor 5
#define keyMin 4
#define keyPL 3
//TM1637 tm1637(CLK,DIO);
#define DS3231_I2C_ADDRESS 0x68

volatile boolean flag;
///// часы ..
byte decToBcd(byte val) {
  return ( (val / 10 * 16) + (val % 10) );
}
byte bcdToDec(byte val) {
  return ( (val / 16 * 10) + (val % 16) );
}
void setDateDs3231(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(DS3231_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 getDateDs3231(byte *second,
                   byte *minute,
                   byte *hour,
                   byte *dayOfWeek,
                   byte *dayOfMonth,
                   byte *month,
                   byte *year)
{
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0);
  Wire.endTransmission();
  Wire.requestFrom(DS3231_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 setINT() { //включает выход SQW, который вроде выключен по умолчанию
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0x0E);
  Wire.write(0x80);
  Wire.endTransmission();
}
void blink() {
  digitalWrite(13, !digitalRead(13));
  flag = !flag;
  tm1637.point(flag);
}
void setup() {
  // Serial.begin(9600);
  Wire.begin();
  pinMode(13, OUTPUT);
  pinMode(keyHor, INPUT_PULLUP);
  pinMode(keyMin, INPUT_PULLUP);
  pinMode(keyPL, INPUT_PULLUP);
  tm1637.init();
  tm1637.set(brightness);

  setINT();
  attachInterrupt(0, blink, CHANGE);
}
void loop() {
  // читаем время из модуля
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  getDateDs3231(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
  // забиваем массив значениями для отпарвки на экран
  int8_t TimeDisp[4];

  TimeDisp[0] = hour / 10;
  TimeDisp[1] = hour % 10;
  TimeDisp[2] = minute / 10;
  TimeDisp[3] = minute % 10;
  // обработка кнопок
  if (!digitalRead(keyHor) && !digitalRead(keyPL)) { // часы
    second = 0; // сбрасываем секунды
    hour++; // пребавляем единицу к часам
    if (hour > 23) hour = 0; // если вылезли за границы присваеваем 0
    setDateDs3231(second, minute, hour, dayOfWeek, dayOfMonth, month, year); // пишим в модуль
    delay(200);
  }
  if (!digitalRead(keyMin) && !digitalRead(keyPL)) { // минуты
    second = 0;
    minute++;
    if (minute > 59) minute = 0;
    setDateDs3231(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
    delay(200);
  }
  // отправляем массив на экран
  tm1637.display(TimeDisp);
}

 

pit1
Offline
Зарегистрирован: 08.01.2020

4 августа стукнуло 71

pit1
Offline
Зарегистрирован: 08.01.2020

Частный дом и подрабатываю водителем. Так что времени не особо. Хочу внука привлечь к электронике. В детстве игрался с детекторным  Комсомолец"  Заводское изготовление 1955 года. Если не ошибаюсь

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Вот за это благодарность превеликая!!

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

pit1 пишет:

В детстве игрался с детекторным  Комсомолец"  Заводское изготовление 1955 года. 

А я сейчас вот в это играюсь, на старости лет.

Очередь на восстановление.  Скоро нас, тех кто в лампах шарит, совсем не останется. 

pit1
Offline
Зарегистрирован: 08.01.2020

Таки ДА!!! Один запах чего стоит. Ностальгия....  Слышно Маяк на первом прямого усиления. Динамик с уличного телефона ДЭМ-4М. 

kalapanga
Offline
Зарегистрирован: 23.10.2016

pit1, Тут никому не в падлу написать, что мол 11-ю строчку раскомментируйте. Только вот без хождения в направлении, которое ЕвгенийП в сообщении #2 указал, ни у Вас ни у внука ничего не получится. Ошибки надо понимать и самому исправлять. Где гарантия, что следующая не вылезет? За каждым чихом на форум не набегаешься...

pit1
Offline
Зарегистрирован: 08.01.2020

Понял, большое человеческое. СПАСИБО! Тут вы правы. Оптимальный вариант это сосед с мозгами. Но такого увы нет. Надо найти кружок на районе с детками походить. Еще раз спасибо. С ув. Петр

pit1
Offline
Зарегистрирован: 08.01.2020

Капец!! Что тут не то. Теперь 11-я строка светится. 

pit1
Offline
Зарегистрирован: 08.01.2020

На 11-ой строке поставил //  опять подсветилась 112. 

pit1
Offline
Зарегистрирован: 08.01.2020

https://cxemok.ru/arduino/270-chasy-na-arduino-ispolzuya-ds3231.html

С этого сайта код. тут проглядывается закономерность. Если есть  tm1637.point(true);  строка с tm1637 она обязательно подсветится.

Может библиотека кривая. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

возьми мою. тока ты её сам не встроишь, я думаю

kalapanga
Offline
Зарегистрирован: 23.10.2016

pit1 пишет:

Капец!! Что тут не то. Теперь 11-я строка светится. 

Опять же текст ошибки читать надо. Скорее всего не та библиотека установлена, либо та, но как-нибудь неправильно.

Я вот собственно это и имел ввиду, что наверняка не последняя ошибка-то будет.

pit1
Offline
Зарегистрирован: 08.01.2020
1 #define CLK 2                       // Указываем вывод CLK
2 #define DIO 3                       // Указываем вывод DIO
3 #define BRIGHT_TYPICAL  7           // Устанавливаем яркость дисплея от 0 до 7
 
4 //TM1637 tm1637(CLK,DIO);             // Создаём объект tm1637
 
5 int8_t NumTab[] = {0,1,2,3};        // Создаем массив данных, 0-9 это 0-9, от 10 - 15 это A-F. 
 
6 void setup()
7 {
8  tm1637.init();                    // Инициализируем дисплей 
9 tm1637.set(BRIGHT_TYPICAL);       // Устанавливаем яркость дисплея
10 }
 
11 void loop()
12 {
13 tm1637.point(true);               // Включаем двоеточие 
14 tm1637.display(NumTab);           // Вывод массива на дисплей 
15  delay(1000);                      // Пауза
16  tm1637.point(false);              // Выключаем двоеточие 
17  tm1637.display(NumTab);           // Вывод массива на дисплей 
18  delay(1000);                      // Пауза
19}
 
Опять 13 строка.
lilik
Offline
Зарегистрирован: 19.10.2017

pit1 пишет:

https://cxemok.ru/arduino/270-chasy-na-arduino-ispolzuya-ds3231.html

С этого сайта код. тут проглядывается закономерность. Если есть  tm1637.point(true);  строка с tm1637 она обязательно подсветится.

Может библиотека кривая. 

Вы комментарии почитайте ниже, не у всех заработала. Надо искать другие проекты, чем ковыряться с этой "спотыкашкой" :-)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

pit1 пишет:

Оптимальный вариант это сосед с мозгами. 

А вариант со своими мозгами? Даже не рассматривается?

pit1
Offline
Зарегистрирован: 08.01.2020

 Д дня! К сожаленью уже нет.