26

Re: Большие часы на семисегментных индикаторах BJ18101AH

А5 занят шиной i2c, A6 A7 нет внутренних подтягивающих резисторов

27

Re: Большие часы на семисегментных индикаторах BJ18101AH

по схеме  SCL - A5, а можно-ли поменять  SCL - A4
               SDA - A4                                   SDA - A5

28

Re: Большие часы на семисегментных индикаторах BJ18101AH

нет

29

Re: Большие часы на семисегментных индикаторах BJ18101AH

#include <MsTimer2.h>  // https://rcl-radio.ru/wp-content/uploads … Timer2.zip
#include <Adafruit_Sensor.h>  // https://rcl-radio.ru/wp-content/uploads … Sensor.zip
#include <Adafruit_BMP280.h> // https://rcl-radio.ru/wp-content/uploads … BMP280.zip
#include <DS3231.h>  // https://github.com/jarzebski/Arduino-DS … master.zip
#include <DHT.h>  // https://rcl-radio.ru/wp-content/uploads/2018/08/DHT.zip

30 (2020-07-22 07:40:43 отредактировано sanj76a)

Re: Большие часы на семисегментных индикаторах BJ18101AH

http://forum.rcl-radio.ru/uploads/images/2020/07/12f82f390b4cb43757931e5d420e147a.jpg

5 минут полет нормальный!

Для замены индикатора ОК на ОА  нужно:

1. заменить на транзисторы  npn

2. инвертироват коды:

  (  эти коды уже инвертированы для ОА)

case 0: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,1);ch(13,pd);break;//0
      case 1: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);ch(13,pd);break;// 1
      case 2: ch(2,0);ch(3,0);ch(4,1);ch(5,0);ch(6,0);ch(7,1);ch(8,0);ch(13,pd);break;// 2
      case 3: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,1);ch(8,0);ch(13,pd);break;//3
      case 4: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,0);ch(8,0);ch(13,pd);break;//4
      case 5: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);ch(13,pd);break;//5
      case 6: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);ch(13,pd);break;//6
      case 7: ch(2,0);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);ch(13,pd);break;//7
      case 8: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);ch(13,pd);break;// 8
      case 9: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);ch(13,pd);break;//9
     case 10: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,1);ch(7,1);ch(8,1);ch(13,pd);break;//пусто
     case 11: ch(2,0);ch(3,0);ch(4,1);ch(5,1);ch(6,1);ch(7,0);ch(8,0);ch(13,pd);break;//градус
     case 12: ch(2,0);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(7,0);ch(8,1);ch(13,pd);break;// C
     case 13: ch(2,0);ch(3,0);ch(4,1);ch(5,1);ch(6,0);ch(7,0);ch(8,0);ch(13,pd);break;// P
     case 14: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,0);ch(7,0);ch(8,0);ch(13,pd);break;// H
    }}
void anod(){
switch(an){
      case 0: ch(9,0);ch(10,1);ch(11,1);ch(12,1);break;
      case 1: ch(9,1);ch(10,0);ch(11,1);ch(12,1);break;
      case 2: ch(9,1);ch(10,1);ch(11,0);ch(12,1);break;
      case 3: ch(9,1);ch(10,1);ch(11,1);ch(12,0);break;
    }}

стоит DHT-11 но не включается, не понятно его состояние,(позже проверю схему, вроде все правильно) BMP-280 нет,
закажу датчики - тогда полный отчет.
вопрос, если одного датчика нет, другой работать  будет?

31

Re: Большие часы на семисегментных индикаторах BJ18101AH

вопрос, если одного датчика нет, другой работать  будет?

Датчик работать должен.

32

Re: Большие часы на семисегментных индикаторах BJ18101AH

кнопка работает на вкл-откл датчиков, нет индикации, при включении непонятно
сотояние датчиков.
показывает Н-52, С-0, Р-0, ВМР-280 подключал +5в, сейчас 3.3в ардуино.
ВМР мог выйти из строя от +5в?

33

Re: Большие часы на семисегментных индикаторах BJ18101AH

проверьте ВМР-280 i2c сканером, может адрес в библиотеке надо поменять

34 (2020-07-28 19:10:49 отредактировано sanj76a)

Re: Большие часы на семисегментных индикаторах BJ18101AH

где адрес менять в библиотеке, на какой

35

Re: Большие часы на семисегментных индикаторах BJ18101AH

Adafruit_BMP280.h

36

Re: Большие часы на семисегментных индикаторах BJ18101AH

запускаю монитор порта он молчит

37

Re: Большие часы на семисегментных индикаторах BJ18101AH

запускаю монитор порта он молчит

в скетче сканера I2C?

38

Re: Большие часы на семисегментных индикаторах BJ18101AH

не работает..., подавал+5, много? может я его убил,
CS нужно цеплять на +3.3?
монитор порта????? как просканировать? перегрузить скеч?

39

Re: Большие часы на семисегментных индикаторах BJ18101AH

I2C сканер http://forum.rcl-radio.ru/viewtopic.php?id=64

Загрузите скетч, посмотрите в мониторе порта адрес датчика.

На свой датчик трёх вольтовый я подавал 5 в. Он просто греется и по температуре завышает, работал так несколько дней, ни чего с ним не стало.

Подключение датчика vdd это 3.3в, gnd, scl, sda. Остальные два контакта датчика не используются.

40

Re: Большие часы на семисегментных индикаторах BJ18101AH

просканировал, адресс 0х76, библиотеке 0х77,
поменял все работает.
Осталось индикация вкл-откл датчиков.

41

Re: Большие часы на семисегментных индикаторах BJ18101AH

можно-ли корректировать точность показаний датчиков?

42

Re: Большие часы на семисегментных индикаторах BJ18101AH

нет, только умножать показания на поправочный коэффициент.

43

Re: Большие часы на семисегментных индикаторах BJ18101AH

корректировать точность не надо, показывает все точно.
сравнивал с образцовыми показателями

44

Re: Большие часы на семисегментных индикаторах BJ18101AH

Добрый день, хочу собрать эти часы. Есть нестандартный индикатор CSQ-846B7 со стиральной машины Samsung. Помогите под него адаптировать скетч. Заранее, спасибо.http://forum.rcl-radio.ru/uploads/images/2020/10/5bef7f13cbd3c573b848739481c9372a.png

45

Re: Большие часы на семисегментных индикаторах BJ18101AH

Надо инвертировать выходы контроллера
    case 0: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,1);ch(7,1);ch(8,0);ch(13,pd);break;// 0
    case 1: ch(2,0);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(7,0);ch(8,0);ch(13,pd);break;// 1
    case 2: ch(2,1);ch(3,1);ch(4,0);ch(5,1);ch(6,1);ch(7,0);ch(8,1);ch(13,pd);break;// 2
    case 3: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,0);ch(7,0);ch(8,1);ch(13,pd);break;// 3   
    case 4: ch(2,0);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(7,1);ch(8,1);ch(13,pd);break;// 4
    case 5: ch(2,1);ch(3,0);ch(4,1);ch(5,1);ch(6,0);ch(7,1);ch(8,1);ch(13,pd);break;// 5
    case 6: ch(2,1);ch(3,0);ch(4,1);ch(5,1);ch(6,1);ch(7,1);ch(8,1);ch(13,pd);break;// 6
    case 7: ch(2,1);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(7,0);ch(8,0);ch(13,pd);break;// 7
    case 8: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,1);ch(7,1);ch(8,1);ch(13,pd);break;// 8
    case 9: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,0);ch(7,1);ch(8,1);ch(13,pd);break;// 9 
   case 10: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);ch(13,pd);break;// пусто
   case 11: ch(2,1);ch(3,1);ch(4,0);ch(5,0);ch(6,0);ch(7,1);ch(8,1);ch(13,pd);break;// градус
   case 12: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,0);ch(13,pd);break;// C
   case 13: ch(2,1);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,1);ch(8,1);ch(13,pd);break;// P
   case 14: ch(2,0);ch(3,1);ch(4,1);ch(5,0);ch(6,1);ch(7,1);ch(8,1);ch(13,pd);break;// H

пример

case 0: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,1);ch(13,pd);break;// 0


то же самое для разрядов индикаторов

    case 0:ch(9,1);ch(10,0);ch(11,0);ch(12,0);break; 
    case 1:ch(9,0);ch(10,1);ch(11,0);ch(12,0);break;
    case 2:ch(9,0);ch(10,0);ch(11,1);ch(12,0);break;
    case 3:ch(9,0);ch(10,0);ch(11,0);ch(12,1);break;

46

Re: Большие часы на семисегментных индикаторах BJ18101AH

BME280 = давление, влажность и температура

#include <MsTimer2.h>  // https://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <Wire.h> 
#include <Adafruit_Sensor.h>  // https://rcl-radio.ru/wp-content/uploads/2018/08/Adafruit_Sensor.zip
#include <Adafruit_BME280.h>  // https://github.com/adafruit/Adafruit_BME280_Library
#include <DS3231.h>  // https://github.com/jarzebski/Arduino-DS3231/archive/master.zip
DS3231 clock;RTCDateTime DateTime;
Adafruit_BME280 bme; // I2C
  int an, segm,times,i,pd,pd_p,sek;
  byte a[4];
 
void setup(){  Wire.begin();clock.begin();
 if (!bme.begin(0x76)) {Serial.println("Could not find a valid BME280!"); while (1);}
 MsTimer2::set(2, to_Timer);MsTimer2::start();
  // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
 pinMode(9,OUTPUT);  // D9  === A0
 pinMode(10,OUTPUT); // D10 === A1
 pinMode(11,OUTPUT); // D11 === A2
 pinMode(12,OUTPUT); // D12 === A3
 pinMode(13,OUTPUT); // D13 === PD
 pinMode(2,OUTPUT);  // D2  === a
 pinMode(3,OUTPUT);  // D3  === b
 pinMode(4,OUTPUT);  // D4  === c
 pinMode(5,OUTPUT);  // D5  === d
 pinMode(6,OUTPUT);  // D6  === e
 pinMode(7,OUTPUT);  // D7  === f
 pinMode(8,OUTPUT);  // D8  === g
clock.setOutput(DS3231_1HZ);
 pinMode(A0,INPUT); // SQW DS3231 
}
 
void loop(){ 
  DateTime=clock.getDateTime();// опрос времени
  sek=DateTime.second;
  if((sek>=10&&sek<=15)||(sek>=30&&sek<=35)){
    times = bme.readTemperature();
  a[0]=times/10;
  a[1]=times%10;
  a[2]=11;
  a[3]=12;
  pd_p=0;}
  else if((sek>=15&&sek<=20)||(sek>=35&&sek<=40)){
    times = bme.readPressure()/100.0F;
  a[0]=13;
  a[1]=times/100;
  a[2]=times/10%10;
  a[3]=times%10;
  pd_p=0;}  
  else if((sek>=20&&sek<=25)||(sek>=40&&sek<=45)){
    times = bme.readHumidity();  
  a[0]=14;
  a[1]=10;
  a[2]=times/10;
  a[3]=times%10;
  pd_p=0;}  
  else{
  times = DateTime.hour*100+DateTime.minute;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10%10;
  if(analogRead(A0)>900){pd_p=1;}else{pd_p=0;}
  }
 }// loop
 
void to_Timer(){ 
  switch(i){
    case 0: cl(); segm=a[0]; pd=0; an=0; anod(); segment();break;
    case 1: cl(); segm=a[1]; pd=pd_p; an=1; anod(); segment();break;
    case 2: cl(); segm=a[2]; pd=0; an=2; anod(); segment();break;
    case 3: cl(); segm=a[3]; pd=0; an=3; anod(); segment();break;}i++;
    if(i>3){i=0;}}
 
void segment(){
  switch(segm){                                                                 
             //  A       B       C       D       E       F       G        PD
    case 0: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,1);ch(7,1);ch(8,0);ch(13,pd);break;// 0 
    case 1: ch(2,0);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(7,0);ch(8,0);ch(13,pd);break;// 1
    case 2: ch(2,1);ch(3,1);ch(4,0);ch(5,1);ch(6,1);ch(7,0);ch(8,1);ch(13,pd);break;// 2
    case 3: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,0);ch(7,0);ch(8,1);ch(13,pd);break;// 3   
    case 4: ch(2,0);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(7,1);ch(8,1);ch(13,pd);break;// 4 
    case 5: ch(2,1);ch(3,0);ch(4,1);ch(5,1);ch(6,0);ch(7,1);ch(8,1);ch(13,pd);break;// 5 
    case 6: ch(2,1);ch(3,0);ch(4,1);ch(5,1);ch(6,1);ch(7,1);ch(8,1);ch(13,pd);break;// 6 
    case 7: ch(2,1);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(7,0);ch(8,0);ch(13,pd);break;// 7 
    case 8: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,1);ch(7,1);ch(8,1);ch(13,pd);break;// 8
    case 9: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,0);ch(7,1);ch(8,1);ch(13,pd);break;// 9  
   case 10: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);ch(13,pd);break;// пусто
   case 11: ch(2,1);ch(3,1);ch(4,0);ch(5,0);ch(6,0);ch(7,1);ch(8,1);ch(13,pd);break;// градус
   case 12: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,0);ch(13,pd);break;// C
   case 13: ch(2,1);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,1);ch(8,1);ch(13,pd);break;// P
   case 14: ch(2,0);ch(3,1);ch(4,1);ch(5,0);ch(6,1);ch(7,1);ch(8,1);ch(13,pd);break;// H
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(9,1);ch(10,0);ch(11,0);ch(12,0);break;  
    case 1:ch(9,0);ch(10,1);ch(11,0);ch(12,0);break; 
    case 2:ch(9,0);ch(10,0);ch(11,1);ch(12,0);break;
    case 3:ch(9,0);ch(10,0);ch(11,0);ch(12,1);break;
  }}
 
void cl(){
     segm=10; pd=0; an=0; segment(); anod(); an=1; segment(); anod();  an=2; segment(); anod();  an=3; segment();anod(); 
  }  
 
  void ch(int pin, int logic){digitalWrite(pin,logic);}

47

Re: Большие часы на семисегментных индикаторах BJ18101AH

liman324,
собрал Ваши  часы с коррекцией кнопок и переключением датчиков на Atmega328. Для простоты разводки переназначил сегменты F и G c D7 и D8 на D1 и D0.  А кнопки с А2 , А3 на D7,D8. Поскольку в данный момент меня интересуют только часы, датчики ставить не стал.
Заливаю скетч просто часы без кнопок, работают отлично. Со скетчем кнопками проблема: часы ведут себя так, как будто нажали на обе кнопки - постоянно идет синхронная коррекция часов и минут. Нет реакции  на подачу плюса или минуса на кнопки (пины входов D7 и D8). И даже когда эти пины входов комментирую(//). Где искать причину?

48

Re: Большие часы на семисегментных индикаторах BJ18101AH

Подключение кнопок - какое? С резисторами или без, опубликуйте скетч.

49

Re: Большие часы на семисегментных индикаторах BJ18101AH

Попробуйте так:

#include <MsTimer2.h>  // https://rcl-radio.ru/wp-content/uploads … Timer2.zip
#include <Wire.h> 
#include <DS3231.h>    // https://github.com/jarzebski/Arduino-DS … master.zip
DS3231 clock;RTCDateTime DateTime;
  int an, segm,times,i,pd,pd_p,hh,mm;
  byte a[4],w;

void setup(){  Wire.begin();clock.begin();
MsTimer2::set(2, to_Timer);MsTimer2::start();
  // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
pinMode(9,OUTPUT);  // D9  === A0
pinMode(10,OUTPUT); // D10 === A1
pinMode(11,OUTPUT); // D11 === A2
pinMode(12,OUTPUT); // D12 === A3
pinMode(13,OUTPUT); // D13 === PD
pinMode(2,OUTPUT);  // D2  === a
pinMode(3,OUTPUT);  // D3  === b
pinMode(4,OUTPUT);  // D4  === c
pinMode(5,OUTPUT);  // D5  === d
pinMode(6,OUTPUT);  // D6  === e
pinMode(1,OUTPUT);  // D1  === f
pinMode(0,OUTPUT);  // D0  === g
clock.setOutput(DS3231_1HZ);
pinMode(A0,INPUT); // SQW DS3231

pinMode (7,INPUT_PULLUP); // часы +
pinMode (8,INPUT_PULLUP); // минуты +
// кнопки коррекци времени - нажатие === замыкание на GND

}

void loop(){
  DateTime=clock.getDateTime();// опрос времени
  hh=DateTime.hour;mm=DateTime.minute;
  times = DateTime.hour*100+DateTime.minute;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10%10;

  if(analogRead(A0)>900){pd_p=1;}else{pd_p=0;}//

  ///////////////////////////////////// коррекция времени - часы и минуты
  if(digitalRead(7)==LOW){w=1;hh++;if(hh>23){hh=0;}delay(300);}
  if(digitalRead(8)==LOW){w=1;mm++;if(mm>59){mm=0;}delay(300);}
  if(w==1){w=0;clock.setDateTime(2020, 01, 01, hh, mm, 0);}
}// loop

void to_Timer(){
  switch(i){

    case 0: cl(); segm=a[0]; pd=0; an=0; anod(); segment();break;
    case 1: cl(); segm=a[1]; pd=pd_p; an=1; anod(); segment();break;
    case 2: cl(); segm=a[2]; pd=0; an=2; anod(); segment();break;
    case 3: cl(); segm=a[3]; pd=0; an=3; anod(); segment();break;}i++;

    if(i>3){i=0;}}

void segment(){
  switch(segm){                                                                 
             //  A       B       C       D       E       F       G        PD
    case 0: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,1);ch(1,1);ch(0,0);ch(13,pd);break;// 0
    case 1: ch(2,0);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(1,0);ch(0,0);ch(13,pd);break;// 1
    case 2: ch(2,1);ch(3,1);ch(4,0);ch(5,1);ch(6,1);ch(1,0);ch(0,1);ch(13,pd);break;// 2
    case 3: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,0);ch(1,0);ch(0,1);ch(13,pd);break;// 3   
    case 4: ch(2,0);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(1,1);ch(0,1);ch(13,pd);break;// 4
    case 5: ch(2,1);ch(3,0);ch(4,1);ch(5,1);ch(6,0);ch(1,1);ch(0,1);ch(13,pd);break;// 5
    case 6: ch(2,1);ch(3,0);ch(4,1);ch(5,1);ch(6,1);ch(1,1);ch(0,1);ch(13,pd);break;// 6
    case 7: ch(2,1);ch(3,1);ch(4,1);ch(5,0);ch(6,0);ch(1,0);ch(0,0);ch(13,pd);break;// 7
    case 8: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,1);ch(1,1);ch(0,1);ch(13,pd);break;// 8
    case 9: ch(2,1);ch(3,1);ch(4,1);ch(5,1);ch(6,0);ch(1,1);ch(0,1);ch(13,pd);break;// 9 
   case 10: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(1,0);ch(0,0);ch(13,pd);break;// пусто
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(9,1);ch(10,0);ch(11,0);ch(12,0);break; 
    case 1:ch(9,0);ch(10,1);ch(11,0);ch(12,0);break;
    case 2:ch(9,0);ch(10,0);ch(11,1);ch(12,0);break;
    case 3:ch(9,0);ch(10,0);ch(11,0);ch(12,1);break;
  }}

void cl(){
     segm=10; pd=0; an=0; segment(); anod(); an=1; segment(); anod();  an=2; segment(); anod();  an=3; segment();anod();
  } 

  void ch(int pin, int logic){digitalWrite(pin,logic);}

50

Re: Большие часы на семисегментных индикаторах BJ18101AH

Заработали. Огромное спасибо!