<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; Часы с календарем]]></title>
		<link>https://forum.rcl-radio.ru/viewtopic.php?id=575</link>
		<atom:link href="https://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=575&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Часы с календарем».]]></description>
		<lastBuildDate>Sun, 19 Jan 2025 02:12:47 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=11284#p11284</link>
			<description><![CDATA[<p>Здравствуйте. Александр. В сообщении 302 скетч под ОК, внизу точки не корректно работают.</p>]]></description>
			<author><![CDATA[null@example.com (Djonny 2022)]]></author>
			<pubDate>Sun, 19 Jan 2025 02:12:47 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=11284#p11284</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=11263#p11263</link>
			<description><![CDATA[<p>Здравствуйте Александр! Можно немного модернизации по поводу часов?вместо max7219 применить 74hc595 для вывода дня недели ПН,ВТ,СР,ЧТ,ПТ,СБ,ВС одиночными светодиодами.</p>]]></description>
			<author><![CDATA[null@example.com (Djonny 2022)]]></author>
			<pubDate>Thu, 09 Jan 2025 16:42:44 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=11263#p11263</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9882#p9882</link>
			<description><![CDATA[<p>Ясно<span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2024/03/034e4ce0512e51b8eb5411ea5a1b2239.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2024/03/034e4ce0512e51b8eb5411ea5a1b2239.jpg" /></span></p>]]></description>
			<author><![CDATA[null@example.com (Djonny 2022)]]></author>
			<pubDate>Sun, 24 Mar 2024 12:34:15 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9882#p9882</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9881#p9881</link>
			<description><![CDATA[<p>Мощность STM избыточная для такого проекта, сам код несовместим с кодом часов с календарем.</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sun, 24 Mar 2024 12:30:02 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9881#p9881</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9879#p9879</link>
			<description><![CDATA[<p>Здравствуйте! На STM какой нибудь мелкий можно перевести такой же функционал?</p>]]></description>
			<author><![CDATA[null@example.com (Djonny 2022)]]></author>
			<pubDate>Sun, 24 Mar 2024 12:16:17 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9879#p9879</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9049#p9049</link>
			<description><![CDATA[<p>Спасибо за перевод!</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 19 Dec 2023 14:16:35 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9049#p9049</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9048#p9048</link>
			<description><![CDATA[<p>Спасибо! Работает)</p>]]></description>
			<author><![CDATA[null@example.com (Djonny 2022)]]></author>
			<pubDate>Tue, 19 Dec 2023 14:13:27 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9048#p9048</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9047#p9047</link>
			<description><![CDATA[<p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/12/d0881e7c9af4edcec966ea40ae280c8d.jpeg" alt="http://forum.rcl-radio.ru/uploads/images/2023/12/d0881e7c9af4edcec966ea40ae280c8d.jpeg" /></span> </p><p>При включении должен выводить температуру сразу.</p><p>Отдельные входы для датчиков:<br />#define DS_0&nbsp; 14&nbsp; <br />#define DS_1&nbsp; 4 </p><div class="codebox"><pre><code>// 19 === SCL
// 20 === SDA

#define DIN PD3 // 11
#define CS  PD4 // 12
#define CLK PD5 // 13

#define DS_0  14  
#define DS_1  4   

//// Катоды
#define SEG_A       28
#define SEG_B       29
#define SEG_C       30
#define SEG_D       31
#define SEG_E       23
#define SEG_F       22
#define SEG_G       21
#define SEG_DP      20

//// Аноды
#define AN_Q1        3
#define AN_Q2        2
#define AN_Q3        1
#define AN_Q4        0
#define AN_Q5        24
#define AN_Q6        25
#define AN_Q7        26
#define AN_Q8        27

#define SET   10
#define UP    9
#define DW    8

#include &lt;Wire.h&gt;
#include &lt;DS3231.h&gt;             // http://rcl-radio.ru/wp-content/uploads/ … DS3231.zip
#include &lt;OneWire.h&gt;            // http://rcl-radio.ru/wp-content/uploads/ … neWire.zip
DS3231 clock;RTCDateTime DateTime;
OneWire  ds0(DS_0); // Вход датчика 18b20 
OneWire  ds1(DS_1); // Вход датчика 18b20 

long oldPosition  = -999, newPosition, times,times1,times2;
int a[8],segm,i,an, dp1,dp2;
int old_sec,dp,dp_l;
int hour,minut,secon,data,mon,year,den,temp,temp1;
byte temp_max0,temp_max1;
long dn1[8],dn2[8];
int hh,mm,ss,dd,mes,gg,set;
bool raz;
bool izz=1;

byte a0[][8]={{60, 102, 110, 126, 118, 102, 60, 0},{24, 56, 24, 24, 24, 24, 24, 0},{120, 204, 12, 56, 96, 192, 252, 0},{120, 204, 12, 56, 12, 204, 120, 0},
{28, 60, 108, 204, 254, 12, 12, 0},{252, 192, 248, 12, 12, 204, 120, 0},{56, 96, 192, 248, 204, 204, 120, 0},{252, 12, 12, 24, 48, 48, 48, 0},{120, 204, 204, 120, 204, 204, 120, 0},
{120, 204, 204, 124, 12, 24, 112, 0}};


void setup() {
  Wire.begin();
  clock.begin();
  Serial.begin(9600);
   delay(2);
  DDRD |= (1 &lt;&lt; DIN) | (1 &lt;&lt; CS) | (1 &lt;&lt; CLK);
  max7219(0x0F, 0, 0);// тест выкл.
  max7219(0x0C, 1, 1);// вкл. индик.
  max7219(0x0A, 1, 1);// яркость
  max7219(0x09, 0, 0);// дешифраторы выкл.
  max7219(0x0B, 7, 7);// кол-во разрядов
  cl();
// clock.setDateTime(2023, 8, 26, 20, 40, 0);
  cli();
  TCCR1A = 0;
  TCCR1B = 0;
  TCNT1 = 0;
// (8000000/((300+1)x64))=415.28239202658 Hz
  OCR1A = 300;
  TCCR1B |= (1 &lt;&lt; WGM12);
// Prescaler 64
  TCCR1B |= (1 &lt;&lt; CS11) | (1 &lt;&lt; CS10);
  TIMSK |= (1 &lt;&lt; OCIE1A);
  sei();
  pinMode(SEG_A, OUTPUT);
  pinMode(SEG_B, OUTPUT);
  pinMode(SEG_C, OUTPUT);
  pinMode(SEG_D, OUTPUT);
  pinMode(SEG_E, OUTPUT);
  pinMode(SEG_F, OUTPUT);
  pinMode(SEG_G, OUTPUT);
  pinMode(SEG_DP, OUTPUT);
  pinMode(AN_Q1, OUTPUT);
  pinMode(AN_Q2, OUTPUT);
  pinMode(AN_Q3, OUTPUT);
  pinMode(AN_Q4, OUTPUT);
  pinMode(AN_Q5, OUTPUT);
  pinMode(AN_Q6, OUTPUT);
  pinMode(AN_Q7, OUTPUT);
  pinMode(AN_Q8, OUTPUT);
  pinMode (SET,INPUT_PULLUP);
  pinMode (UP,INPUT_PULLUP);
  pinMode (DW,INPUT_PULLUP);
}

void loop() {
  DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
  data = DateTime.day;mon = DateTime.month;year = DateTime.year;
  den=DateTime.dayOfWeek;

if(millis()-times1&gt;10000 || izz==1){temp=dsRead_0(0)*10;temp1=dsRead_1(0);times1=millis();izz=0;}
temp_max0=temp1/10%10;temp_max1=temp1%10;

if(digitalRead(SET)==LOW){set++;if(set&gt;5){set=0;}delay(200);}
  hh=hour;mm=minut;ss=secon;dd=data;mes=mon;gg=year;
  if(set==1 &amp;&amp; digitalRead(UP)==LOW){hh++;if(hh&gt;23){hh=0;}clock.setDateTime(year, mon, data, hh, minut, secon);delay(200);}
  if(set==1 &amp;&amp; digitalRead(DW)==LOW){hh--;if(hh&lt;0){hh=23;}clock.setDateTime(year, mon, data, hh, minut, secon);delay(200);}
  if(set==2 &amp;&amp; digitalRead(UP)==LOW){mm++;if(mm&gt;59){mm=0;}clock.setDateTime(year, mon, data, hour, mm, 0);delay(200);}
  if(set==2 &amp;&amp; digitalRead(DW)==LOW){mm--;if(mm&lt;0){mm=59;}clock.setDateTime(year, mon, data, hour, mm, 0);delay(200);}

  if(set==3 &amp;&amp; digitalRead(UP)==LOW){dd++;if(dd&gt;31){dd=1;}clock.setDateTime(year, mon, dd, hour, minut, secon);delay(200);}
  if(set==3 &amp;&amp; digitalRead(DW)==LOW){dd--;if(dd&lt;1){dd=31;}clock.setDateTime(year, mon, dd, hour, minut, secon);delay(200);}
  if(set==4 &amp;&amp; digitalRead(UP)==LOW){mes++;if(mes&gt;12){mes=0;}clock.setDateTime(year, mes, data, hour, minut, secon);delay(200);}
  if(set==4 &amp;&amp; digitalRead(DW)==LOW){mes--;if(mes&lt;1){mes=12;}clock.setDateTime(year, mes, data, hour, minut, secon);delay(200);}

  if(set==5 &amp;&amp; digitalRead(UP)==LOW){gg++;if(gg&gt;2100){gg=2023;}clock.setDateTime(gg, mon, data, hour, minut, secon);delay(200);}
  if(set==5 &amp;&amp; digitalRead(DW)==LOW){gg--;if(gg&lt;2023){gg=2100;}clock.setDateTime(gg, mon, data, hour, minut, secon);delay(200);}

if(set==1){a[0] = hour/10%10;a[1] = hour%10;  a[2]=10;a[3]=10;a[4]=10;a[5]=10;a[6]=10;a[7]=10;}
if(set==2){a[2] = minut/10%10;a[3] = minut%10;  a[0]=10;a[1]=10;a[4]=10;a[5]=10;a[6]=10;a[7]=10;}

if(set==3){a[4] = data/10%10;a[5] = data%10;  a[0]=10;a[1]=10;a[2]=10;a[3]=10;a[6]=10;a[7]=10;}
if(set==4){a[6] = mon/10%10;a[7] = mon%10;  a[0]=10;a[1]=10;a[2]=10;a[3]=10;a[4]=10;a[5]=10;}

if(set==5){a[4] = year/1000%10;a[5] = year/100%10;a[6] = year/10%10; a[7] = year%10; a[0]=10;a[1]=10;a[2]=10;a[3]=10;}
if(set&gt;0){dp_l=1;dp=1;dp1=1;dp2=1;}


Serial.println(raz);

if(raz==0){ 
  switch(den){ 
   case 1:max7219(1, 126,102);max7219(2, 102,102);max7219(3, 102,102);max7219(4, 102,126);
          max7219(5, 102,102);max7219(6, 102,102);max7219(7, 102,102);max7219(8, 0,0);break;// ПH
   case 2:max7219(1, 124,126);max7219(2, 102,24);max7219(3, 102,24);max7219(4, 124,24);
          max7219(5, 102,24);max7219(6, 102,24);max7219(7, 124,24);max7219(8, 0,0);break;// BT    
   case 3:max7219(1, 60,124);max7219(2, 102,102);max7219(3, 192,102);max7219(4, 192,124);
          max7219(5, 192,96);max7219(6, 102,96);max7219(7, 60,96);max7219(8, 0,0);break;// CP
   case 4:max7219(1, 102,126);max7219(2, 102,24);max7219(3, 102,24);max7219(4, 62,24);
          max7219(5, 6,24);max7219(6, 6,24);max7219(7, 6,24);max7219(8, 0,0);break;   // ЧТ
   case 5:max7219(1, 126,0x7e);max7219(2, 102,0x18);max7219(3, 102,0x18);max7219(4, 102,0x18);
          max7219(5, 102,0x18);max7219(6, 102,0x18);max7219(7, 102,0x18);max7219(8, 0x00,0x00);break;// ПТ 
   case 6:max7219(1, 60,126);max7219(2, 102,96);max7219(3, 192,96);max7219(4, 192,124);
          max7219(5, 192,102);max7219(6, 102,102);max7219(7, 60,124);max7219(8, 0,0);break;// CБ 
   case 7:max7219(1, 124,60);max7219(2, 102,102);max7219(3, 102,192);max7219(4, 124,192);
          max7219(5, 102,192);max7219(6, 102,102);max7219(7, 124,60);max7219(8, 0,0);break;// BС                                   
  }
}
  
  if(raz==1){
          max7219(1, a0[temp_max0][0],a0[temp_max1][0]);max7219(2, a0[temp_max0][1],a0[temp_max1][1]);
          max7219(3, a0[temp_max0][2],a0[temp_max1][2]);max7219(4, a0[temp_max0][3],a0[temp_max1][3]);
          max7219(5, a0[temp_max0][4],a0[temp_max1][4]);max7219(6, a0[temp_max0][5],a0[temp_max1][5]);
          max7219(7, a0[temp_max0][6],a0[temp_max1][6]);max7219(8, a0[temp_max0][7],a0[temp_max1][7]);
}

if(set==0){
  if(hour/10%10==0){a[0]=10;}else{a[0]=hour/10%10;}
  a[1]=hour%10;
  a[2]=minut/10%10;
  a[3]=minut%10;


if( (secon&gt;=5&amp;&amp;secon&lt;=10) ||  (secon&gt;=25&amp;&amp;secon&lt;=30) || (secon&gt;=45&amp;&amp;secon&lt;50)){ dp_l=0;
  if(data/10%10==0){a[4]=10;}else{a[4]=data/10%10;}
  a[5]=data%10;
  if(mon/10%10==0){a[6]=10;}else{a[6]=mon/10%10;}
  a[7]=mon%10;
  raz=0;
}
else{
  if(temp&gt;=0&amp;&amp;temp&lt;100){dp_l=0;a[4]=10;a[5]=temp/10%10;a[6]=temp%10;a[7]=11; }           // _1.3C
  if(temp&gt;=100){dp_l=0;a[4]=temp/100%10;a[5]=temp/10%10;a[6]=temp%10;a[7]=11; }          // 23.5C
  if(temp&lt;0&amp;&amp;temp&gt;-100){dp_l=0;a[4]=12;a[5]=abs(temp/10%10);a[6]=abs(temp%10);a[7]=11; } // -1.3C
  if(temp&lt;=-100){dp_l=1;a[4]=12;a[5]=abs(temp/100%10);a[6]=abs(temp/10%10);a[7]=11; }    // -23C
  raz=1;
  }

  if(millis()-times&lt;500){dp=1;}else{dp=0;}
  if(old_sec!=secon){old_sec=secon;times=millis();}
}
  delay(100);
}

ISR(TIMER1_COMPA_vect){
  switch (i) {
  /// SMALL 
    // Q5
    case 4: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[4];ch(SEG_DP,1);  segment(); an = 0; anod();break;
    // Q6
    case 5: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[5];ch(SEG_DP,dp_l);  segment(); an = 1; anod();break;
    // Q7
    case 6: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[6];ch(SEG_DP,1);  segment(); an = 2; anod();break;
    // Q8
    case 7: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[7]; segment(); an = 3; anod();break;
  /// BIG
    // Q1
    case 0: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[0];ch(SEG_DP,1);  segment(); an = 4; anod();break;
    // Q2
    case 1: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[1];ch(SEG_DP,dp);  segment(); an = 5; anod();break;
    // Q3
    case 2: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[2];ch(SEG_DP,dp);  segment(); an = 6; anod();break;
    // Q4
    case 3: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[3];ch(SEG_DP,1);  segment(); an = 7; anod();break;
  }
  i++;if (i &gt; 7) {i = 0;}

}


void segment() {
  switch (segm) {
            //  A          B             C              D             E            F            G
    case 0: ch(SEG_A, 0); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 0); ch(SEG_E, 0); ch(SEG_F, 0); ch(SEG_G, 1); break; // 0
    case 1: ch(SEG_A, 1); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 1); ch(SEG_E, 1); ch(SEG_F, 1); ch(SEG_G, 1); break; // 1
    case 2: ch(SEG_A, 0); ch(SEG_B, 0); ch(SEG_C, 1); ch(SEG_D, 0); ch(SEG_E, 0); ch(SEG_F, 1); ch(SEG_G, 0); break; // 2
    case 3: ch(SEG_A, 0); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 0); ch(SEG_E, 1); ch(SEG_F, 1); ch(SEG_G, 0); break; // 3
    case 4: ch(SEG_A, 1); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 1); ch(SEG_E, 1); ch(SEG_F, 0); ch(SEG_G, 0); break; // 4
    case 5: ch(SEG_A, 0); ch(SEG_B, 1); ch(SEG_C, 0); ch(SEG_D, 0); ch(SEG_E, 1); ch(SEG_F, 0); ch(SEG_G, 0); break; // 5
    case 6: ch(SEG_A, 0); ch(SEG_B, 1); ch(SEG_C, 0); ch(SEG_D, 0); ch(SEG_E, 0); ch(SEG_F, 0); ch(SEG_G, 0); break; // 6
    case 7: ch(SEG_A, 0); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 1); ch(SEG_E, 1); ch(SEG_F, 1); ch(SEG_G, 1); break; // 7
    case 8: ch(SEG_A, 0); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 0); ch(SEG_E, 0); ch(SEG_F, 0); ch(SEG_G, 0); break; // 8
    case 9: ch(SEG_A, 0); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 0); ch(SEG_E, 1); ch(SEG_F, 0); ch(SEG_G, 0); break; // 9
   case 10: ch(SEG_A, 1); ch(SEG_B, 1); ch(SEG_C, 1); ch(SEG_D, 1); ch(SEG_E, 1); ch(SEG_F, 1); ch(SEG_G, 1); break; // пусто
   case 11: ch(SEG_A, 0); ch(SEG_B, 1); ch(SEG_C, 1); ch(SEG_D, 0); ch(SEG_E, 0); ch(SEG_F, 0); ch(SEG_G, 1);ch(SEG_DP, 0); break; // *C
   case 12: ch(SEG_A, 1); ch(SEG_B, 1); ch(SEG_C, 1); ch(SEG_D, 1); ch(SEG_E, 1); ch(SEG_F, 1); ch(SEG_G, 0); break; // -
  }
}


void anod() {
  switch (an) {
    case 0: ch(AN_Q1, 1); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
    case 1: ch(AN_Q1, 0); ch(AN_Q2, 1); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
    case 2: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 1); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
    case 3: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 1); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
    case 4: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 1); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
    case 5: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 1); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
    case 6: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 1); ch(AN_Q8, 0); break;
    case 7: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 1); break;
   case 10: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
  }
}
void ch(int pin, int logic) {
  digitalWrite(pin, logic);
}

float dsRead_0(byte x) {
  byte data[2], addr[8][8], kol = 0;
  while (ds0.search(addr[kol])) {  // поиск датчиков, определение адреса и кол-ва датчиков
    kol++;
  }
  ds0.reset_search();  // Сброс поиска датчика
  ds0.reset();         // Инициализация, выполняется сброс шины
  ds0.select(addr[x]); // Обращение к датчику по адресу
  ds0.write(0x44, 0);  // Измерение температуры с переносом данных в память
  ds0.reset();         // Инициализация, выполняется сброс шины
  ds0.select(addr[x]); // Обращение к датчику по адресу
  ds0.write(0xBE);     // Обращение памяти
  data[0] = ds0.read();// Чтение памяти byte low
  data[1] = ds0.read();// Чтение памяти byte high
  float value = ((data[1] &lt;&lt; 8) | data[0]) / 16.0; return (float)value; // Расчет температуры и вывод
}

float dsRead_1(byte x) {
  byte data[2], addr[8][8], kol = 0;
  while (ds1.search(addr[kol])) {  // поиск датчиков, определение адреса и кол-ва датчиков
    kol++;
  }
  ds1.reset_search();  // Сброс поиска датчика
  ds1.reset();         // Инициализация, выполняется сброс шины
  ds1.select(addr[x]); // Обращение к датчику по адресу
  ds1.write(0x44, 0);  // Измерение температуры с переносом данных в память
  ds1.reset();         // Инициализация, выполняется сброс шины
  ds1.select(addr[x]); // Обращение к датчику по адресу
  ds1.write(0xBE);     // Обращение памяти
  data[0] = ds1.read();// Чтение памяти byte low
  data[1] = ds1.read();// Чтение памяти byte high
  float value = ((data[1] &lt;&lt; 8) | data[0]) / 16.0; return (float)value; // Расчет температуры и вывод
}

void max7219(byte reg_n, byte h1, byte h2){
  PORTD &amp;=~(1 &lt;&lt; CS);WriteBit16(reg_n,h1);WriteBit16(reg_n,h2);PORTD |=(1 &lt;&lt; CS);
  } 

void WriteBit16(byte reg, byte data){ 
     for(char i = 7; i &gt;= 0; i--){
        PORTD &amp;= ~(1 &lt;&lt; CLK);
        if(((reg &gt;&gt; i) &amp; 1) == 1){PORTD |= (1 &lt;&lt; DIN);}else{PORTD &amp;= ~(1 &lt;&lt; DIN);}
        PORTD |=(1 &lt;&lt; CLK);}
     for(char i = 7; i &gt;= 0; i--){
        PORTD &amp;= ~(1 &lt;&lt; CLK);
        if(((data &gt;&gt; i) &amp; 1) == 1){PORTD |= (1 &lt;&lt; DIN);}else{PORTD &amp;= ~(1 &lt;&lt; DIN);}
        PORTD |=(1 &lt;&lt; CLK);}
        PORTD &amp;= ~(1 &lt;&lt; CLK);PORTD |= (1 &lt;&lt; DIN);
  }

void cl(){for(char i=1;i&lt;=8;i++){max7219(i, 0, 0);}}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 19 Dec 2023 13:29:45 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9047#p9047</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9046#p9046</link>
			<description><![CDATA[<p>Один на том же Пине 44(4),другой на 15(14)Пине. И пожелание при первом включении вместо 0.0 температур сделать прочерки -.-<br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/12/70fb5eb8ac770d49d7103abee020b712.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2023/12/70fb5eb8ac770d49d7103abee020b712.jpg" /></span> с 2 датчиками<br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/12/79ca950ab2708f403cd26fc8ec580a4c.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2023/12/79ca950ab2708f403cd26fc8ec580a4c.jpg" /></span> с 2 датчиками<br />Если оставить один датчик,то показывает на обоих табло одну температуру<br /><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2023/12/943225094c0d42be5567d10b5f9ec10b.jpg" alt="http://forum.rcl-radio.ru/uploads/images/2023/12/943225094c0d42be5567d10b5f9ec10b.jpg" /></span> один датчик</p>]]></description>
			<author><![CDATA[null@example.com (Djonny 2022)]]></author>
			<pubDate>Tue, 19 Dec 2023 10:57:33 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9046#p9046</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9045#p9045</link>
			<description><![CDATA[<p>Можете написать свободный пин под датчик, я допишу под него код. Это не сложно.</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 19 Dec 2023 10:36:02 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9045#p9045</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9044#p9044</link>
			<description><![CDATA[<p>Возможно, но не факт. Можно просто поменять их местами программно:</p><p>dsRead(0) заменить на dsRead(1) и наоборот</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 19 Dec 2023 10:25:23 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9044#p9044</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9043#p9043</link>
			<description><![CDATA[<p>Если два датчика на одном Пине то при замене из датчиков поменяется местами табло?</p>]]></description>
			<author><![CDATA[null@example.com (Djonny 2022)]]></author>
			<pubDate>Tue, 19 Dec 2023 09:12:54 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9043#p9043</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9042#p9042</link>
			<description><![CDATA[<p>Если тест пройдет, выводится число 25, то удалите строку</p><p>temp_max0=2;temp_max1=5;</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 19 Dec 2023 06:11:03 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9042#p9042</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9041#p9041</link>
			<description><![CDATA[<p>Укажите номер отдельного пина для датчика температуры, хотя можно оставить один пин для 2-х датчиков</p><p>Если нужно поменять датчики местами, то вместо</p><p>if(millis()-times1&gt;10000){temp=dsRead(0)*10;temp1=dsRead(1);times1=millis();}</p><p>укажите</p><p>if(millis()-times1&gt;10000){temp=dsRead(1)*10;temp1=dsRead(0);times1=millis();}</p>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 19 Dec 2023 06:08:50 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9041#p9041</guid>
		</item>
		<item>
			<title><![CDATA[Re: Часы с календарем]]></title>
			<link>https://forum.rcl-radio.ru/viewtopic.php?pid=9040#p9040</link>
			<description><![CDATA[<p>Поменял пины define для atmega16/32</p><div class="codebox"><pre><code>// 19 === SCL
// 20 === SDA

#define DIN PD3 // 11
#define CS  PD4 // 12
#define CLK PD5 // 13

#define DS  14  // 14

//// Катоды
#define SEG_A       28
#define SEG_B       29
#define SEG_C       30
#define SEG_D       31
#define SEG_E       23
#define SEG_F       22
#define SEG_G       21
#define SEG_DP      20

//// Аноды
#define AN_Q1        3
#define AN_Q2        2
#define AN_Q3        1
#define AN_Q4        0
#define AN_Q5        24
#define AN_Q6        25
#define AN_Q7        26
#define AN_Q8        27

#define SET   10
#define UP    9
#define DW    8

#include &lt;Wire.h&gt;
#include &lt;DS3231.h&gt;             // http://rcl-radio.ru/wp-content/uploads/ … DS3231.zip
#include &lt;OneWire.h&gt;            // http://rcl-radio.ru/wp-content/uploads/ … neWire.zip
DS3231 clock;RTCDateTime DateTime;
OneWire  ds(DS); // Вход датчика 18b20 

long oldPosition  = -999, newPosition, times,times1,times2;
int a[8],segm,i,an, dp1,dp2;
int old_sec,dp,dp_l;
int hour,minut,secon,data,mon,year,den,temp,temp1;
byte temp_max0,temp_max1;
long dn1[8],dn2[8];
int hh,mm,ss,dd,mes,gg,set;
bool raz;

byte a0[][8]={{60, 102, 110, 126, 118, 102, 60, 0},{24, 56, 24, 24, 24, 24, 24, 0},{120, 204, 12, 56, 96, 192, 252, 0},{120, 204, 12, 56, 12, 204, 120, 0},
{28, 60, 108, 204, 254, 12, 12, 0},{252, 192, 248, 12, 12, 204, 120, 0},{56, 96, 192, 248, 204, 204, 120, 0},{252, 12, 12, 24, 48, 48, 48, 0},{120, 204, 204, 120, 204, 204, 120, 0},
{120, 204, 204, 124, 12, 24, 112, 0}};


void setup() {
  Wire.begin();
  clock.begin();
  Serial.begin(9600);
   delay(2);
  DDRD |= (1 &lt;&lt; DIN) | (1 &lt;&lt; CS) | (1 &lt;&lt; CLK);
  max7219(0x0F, 0, 0);// тест выкл.
  max7219(0x0C, 1, 1);// вкл. индик.
  max7219(0x0A, 1, 1);// яркость
  max7219(0x09, 0, 0);// дешифраторы выкл.
  max7219(0x0B, 7, 7);// кол-во разрядов
  cl();
// clock.setDateTime(2023, 8, 26, 20, 40, 0);
  cli();
  TCCR1A = 0;
  TCCR1B = 0;
  TCNT1 = 0;
// (8000000/((300+1)x64))=415.28239202658 Hz
  OCR1A = 300;
  TCCR1B |= (1 &lt;&lt; WGM12);
// Prescaler 64
  TCCR1B |= (1 &lt;&lt; CS11) | (1 &lt;&lt; CS10);
  TIMSK |= (1 &lt;&lt; OCIE1A);
  sei();
  pinMode(SEG_A, OUTPUT);
  pinMode(SEG_B, OUTPUT);
  pinMode(SEG_C, OUTPUT);
  pinMode(SEG_D, OUTPUT);
  pinMode(SEG_E, OUTPUT);
  pinMode(SEG_F, OUTPUT);
  pinMode(SEG_G, OUTPUT);
  pinMode(SEG_DP, OUTPUT);
  pinMode(AN_Q1, OUTPUT);
  pinMode(AN_Q2, OUTPUT);
  pinMode(AN_Q3, OUTPUT);
  pinMode(AN_Q4, OUTPUT);
  pinMode(AN_Q5, OUTPUT);
  pinMode(AN_Q6, OUTPUT);
  pinMode(AN_Q7, OUTPUT);
  pinMode(AN_Q8, OUTPUT);
  pinMode (SET,INPUT_PULLUP);
  pinMode (UP,INPUT_PULLUP);
  pinMode (DW,INPUT_PULLUP);
}

void loop() {
  DateTime = clock.getDateTime();hour = DateTime.hour;minut = DateTime.minute;secon = DateTime.second;
  data = DateTime.day;mon = DateTime.month;year = DateTime.year;
  den=DateTime.dayOfWeek;

if(millis()-times1&gt;10000){temp=dsRead(0)*10;temp1=dsRead(1);times1=millis();}
temp_max0=temp1/10%10;temp_max1=temp1%10;
temp_max0=2;temp_max1=5;

if(digitalRead(SET)==LOW){set++;if(set&gt;5){set=0;}delay(200);}
  hh=hour;mm=minut;ss=secon;dd=data;mes=mon;gg=year;
  if(set==1 &amp;&amp; digitalRead(UP)==LOW){hh++;if(hh&gt;23){hh=0;}clock.setDateTime(year, mon, data, hh, minut, secon);delay(200);}
  if(set==1 &amp;&amp; digitalRead(DW)==LOW){hh--;if(hh&lt;0){hh=23;}clock.setDateTime(year, mon, data, hh, minut, secon);delay(200);}
  if(set==2 &amp;&amp; digitalRead(UP)==LOW){mm++;if(mm&gt;59){mm=0;}clock.setDateTime(year, mon, data, hour, mm, 0);delay(200);}
  if(set==2 &amp;&amp; digitalRead(DW)==LOW){mm--;if(mm&lt;0){mm=59;}clock.setDateTime(year, mon, data, hour, mm, 0);delay(200);}

  if(set==3 &amp;&amp; digitalRead(UP)==LOW){dd++;if(dd&gt;31){dd=1;}clock.setDateTime(year, mon, dd, hour, minut, secon);delay(200);}
  if(set==3 &amp;&amp; digitalRead(DW)==LOW){dd--;if(dd&lt;1){dd=31;}clock.setDateTime(year, mon, dd, hour, minut, secon);delay(200);}
  if(set==4 &amp;&amp; digitalRead(UP)==LOW){mes++;if(mes&gt;12){mes=0;}clock.setDateTime(year, mes, data, hour, minut, secon);delay(200);}
  if(set==4 &amp;&amp; digitalRead(DW)==LOW){mes--;if(mes&lt;1){mes=12;}clock.setDateTime(year, mes, data, hour, minut, secon);delay(200);}

  if(set==5 &amp;&amp; digitalRead(UP)==LOW){gg++;if(gg&gt;2100){gg=2023;}clock.setDateTime(gg, mon, data, hour, minut, secon);delay(200);}
  if(set==5 &amp;&amp; digitalRead(DW)==LOW){gg--;if(gg&lt;2023){gg=2100;}clock.setDateTime(gg, mon, data, hour, minut, secon);delay(200);}

if(set==1){a[0] = hour/10%10;a[1] = hour%10;  a[2]=10;a[3]=10;a[4]=10;a[5]=10;a[6]=10;a[7]=10;}
if(set==2){a[2] = minut/10%10;a[3] = minut%10;  a[0]=10;a[1]=10;a[4]=10;a[5]=10;a[6]=10;a[7]=10;}

if(set==3){a[4] = data/10%10;a[5] = data%10;  a[0]=10;a[1]=10;a[2]=10;a[3]=10;a[6]=10;a[7]=10;}
if(set==4){a[6] = mon/10%10;a[7] = mon%10;  a[0]=10;a[1]=10;a[2]=10;a[3]=10;a[4]=10;a[5]=10;}

if(set==5){a[4] = year/1000%10;a[5] = year/100%10;a[6] = year/10%10; a[7] = year%10; a[0]=10;a[1]=10;a[2]=10;a[3]=10;}
if(set&gt;0){dp_l=1;dp=1;dp1=1;dp2=1;}


Serial.println(raz);

if(raz==0){ 
  switch(den){ 
   case 1:max7219(1, 126,102);max7219(2, 102,102);max7219(3, 102,102);max7219(4, 102,126);
          max7219(5, 102,102);max7219(6, 102,102);max7219(7, 102,102);max7219(8, 0,0);break;// ПH
   case 2:max7219(1, 124,126);max7219(2, 102,24);max7219(3, 102,24);max7219(4, 124,24);
          max7219(5, 102,24);max7219(6, 102,24);max7219(7, 124,24);max7219(8, 0,0);break;// BT    
   case 3:max7219(1, 60,124);max7219(2, 102,102);max7219(3, 192,102);max7219(4, 192,124);
          max7219(5, 192,96);max7219(6, 102,96);max7219(7, 60,96);max7219(8, 0,0);break;// CP
   case 4:max7219(1, 102,126);max7219(2, 102,24);max7219(3, 102,24);max7219(4, 62,24);
          max7219(5, 6,24);max7219(6, 6,24);max7219(7, 6,24);max7219(8, 0,0);break;   // ЧТ
   case 5:max7219(1, 126,0x7e);max7219(2, 102,0x18);max7219(3, 102,0x18);max7219(4, 102,0x18);
          max7219(5, 102,0x18);max7219(6, 102,0x18);max7219(7, 102,0x18);max7219(8, 0x00,0x00);break;// ПТ 
   case 6:max7219(1, 60,126);max7219(2, 102,96);max7219(3, 192,96);max7219(4, 192,124);
          max7219(5, 192,102);max7219(6, 102,102);max7219(7, 60,124);max7219(8, 0,0);break;// CБ 
   case 7:max7219(1, 124,60);max7219(2, 102,102);max7219(3, 102,192);max7219(4, 124,192);
          max7219(5, 102,192);max7219(6, 102,102);max7219(7, 124,60);max7219(8, 0,0);break;// BС                                   
  }
}
  
  if(raz==1){
          max7219(1, a0[temp_max0][0],a0[temp_max1][0]);max7219(2, a0[temp_max0][1],a0[temp_max1][1]);
          max7219(3, a0[temp_max0][2],a0[temp_max1][2]);max7219(4, a0[temp_max0][3],a0[temp_max1][3]);
          max7219(5, a0[temp_max0][4],a0[temp_max1][4]);max7219(6, a0[temp_max0][5],a0[temp_max1][5]);
          max7219(7, a0[temp_max0][6],a0[temp_max1][6]);max7219(8, a0[temp_max0][7],a0[temp_max1][7]);
}

if(set==0){
  if(hour/10%10==0){a[0]=10;}else{a[0]=hour/10%10;}
  a[1]=hour%10;
  a[2]=minut/10%10;
  a[3]=minut%10;


if( (secon&gt;=5&amp;&amp;secon&lt;=10) ||  (secon&gt;=25&amp;&amp;secon&lt;=30) || (secon&gt;=45&amp;&amp;secon&lt;50)){ dp_l=0;
  if(data/10%10==0){a[4]=10;}else{a[4]=data/10%10;}
  a[5]=data%10;
  if(mon/10%10==0){a[6]=10;}else{a[6]=mon/10%10;}
  a[7]=mon%10;
  raz=0;
}
else{
  if(temp&gt;=0&amp;&amp;temp&lt;100){dp_l=0;a[4]=10;a[5]=temp/10%10;a[6]=temp%10;a[7]=11; }           // _1.3C
  if(temp&gt;=100){dp_l=0;a[4]=temp/100%10;a[5]=temp/10%10;a[6]=temp%10;a[7]=11; }          // 23.5C
  if(temp&lt;0&amp;&amp;temp&gt;-100){dp_l=0;a[4]=12;a[5]=abs(temp/10%10);a[6]=abs(temp%10);a[7]=11; } // -1.3C
  if(temp&lt;=-100){dp_l=1;a[4]=12;a[5]=abs(temp/100%10);a[6]=abs(temp/10%10);a[7]=11; }    // -23C
  raz=1;
  }

  if(millis()-times&lt;500){dp=1;}else{dp=0;}
  if(old_sec!=secon){old_sec=secon;times=millis();}
}
  delay(100);
}

ISR(TIMER1_COMPA_vect){
  switch (i) {
  /// SMALL 
    // Q5
    case 4: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[4];ch(SEG_DP,1);  segment(); an = 0; anod();break;
    // Q6
    case 5: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[5];ch(SEG_DP,dp_l);  segment(); an = 1; anod();break;
    // Q7
    case 6: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[6];ch(SEG_DP,1);  segment(); an = 2; anod();break;
    // Q8
    case 7: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[7]; segment(); an = 3; anod();break;
  /// BIG
    // Q1
    case 0: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[0];ch(SEG_DP,1);  segment(); an = 4; anod();break;
    // Q2
    case 1: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[1];ch(SEG_DP,dp);  segment(); an = 5; anod();break;
    // Q3
    case 2: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[2];ch(SEG_DP,dp);  segment(); an = 6; anod();break;
    // Q4
    case 3: segm = 10; segment(); an = 10; anod(); delayMicroseconds(200);segm = a[3];ch(SEG_DP,1);  segment(); an = 7; anod();break;
  }
  i++;if (i &gt; 7) {i = 0;}

}


void segment() {
  switch (segm) {
            //  A          B             C              D             E            F            G
    case 0: ch(SEG_A, 0); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 0); ch(SEG_E, 0); ch(SEG_F, 0); ch(SEG_G, 1); break; // 0
    case 1: ch(SEG_A, 1); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 1); ch(SEG_E, 1); ch(SEG_F, 1); ch(SEG_G, 1); break; // 1
    case 2: ch(SEG_A, 0); ch(SEG_B, 0); ch(SEG_C, 1); ch(SEG_D, 0); ch(SEG_E, 0); ch(SEG_F, 1); ch(SEG_G, 0); break; // 2
    case 3: ch(SEG_A, 0); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 0); ch(SEG_E, 1); ch(SEG_F, 1); ch(SEG_G, 0); break; // 3
    case 4: ch(SEG_A, 1); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 1); ch(SEG_E, 1); ch(SEG_F, 0); ch(SEG_G, 0); break; // 4
    case 5: ch(SEG_A, 0); ch(SEG_B, 1); ch(SEG_C, 0); ch(SEG_D, 0); ch(SEG_E, 1); ch(SEG_F, 0); ch(SEG_G, 0); break; // 5
    case 6: ch(SEG_A, 0); ch(SEG_B, 1); ch(SEG_C, 0); ch(SEG_D, 0); ch(SEG_E, 0); ch(SEG_F, 0); ch(SEG_G, 0); break; // 6
    case 7: ch(SEG_A, 0); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 1); ch(SEG_E, 1); ch(SEG_F, 1); ch(SEG_G, 1); break; // 7
    case 8: ch(SEG_A, 0); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 0); ch(SEG_E, 0); ch(SEG_F, 0); ch(SEG_G, 0); break; // 8
    case 9: ch(SEG_A, 0); ch(SEG_B, 0); ch(SEG_C, 0); ch(SEG_D, 0); ch(SEG_E, 1); ch(SEG_F, 0); ch(SEG_G, 0); break; // 9
   case 10: ch(SEG_A, 1); ch(SEG_B, 1); ch(SEG_C, 1); ch(SEG_D, 1); ch(SEG_E, 1); ch(SEG_F, 1); ch(SEG_G, 1); break; // пусто
   case 11: ch(SEG_A, 0); ch(SEG_B, 1); ch(SEG_C, 1); ch(SEG_D, 0); ch(SEG_E, 0); ch(SEG_F, 0); ch(SEG_G, 1);ch(SEG_DP, 0); break; // *C
   case 12: ch(SEG_A, 1); ch(SEG_B, 1); ch(SEG_C, 1); ch(SEG_D, 1); ch(SEG_E, 1); ch(SEG_F, 1); ch(SEG_G, 0); break; // -
  }
}


void anod() {
  switch (an) {
    case 0: ch(AN_Q1, 1); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
    case 1: ch(AN_Q1, 0); ch(AN_Q2, 1); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
    case 2: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 1); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
    case 3: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 1); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
    case 4: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 1); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
    case 5: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 1); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
    case 6: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 1); ch(AN_Q8, 0); break;
    case 7: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 1); break;
   case 10: ch(AN_Q1, 0); ch(AN_Q2, 0); ch(AN_Q3, 0); ch(AN_Q4, 0); ch(AN_Q5, 0); ch(AN_Q6, 0); ch(AN_Q7, 0); ch(AN_Q8, 0); break;
  }
}
void ch(int pin, int logic) {
  digitalWrite(pin, logic);
}

float dsRead(byte x) {
  byte data[2], addr[8][8], kol = 0;
  while (ds.search(addr[kol])) {  // поиск датчиков, определение адреса и кол-ва датчиков
    kol++;
  }
  ds.reset_search();  // Сброс поиска датчика
  ds.reset();         // Инициализация, выполняется сброс шины
  ds.select(addr[x]); // Обращение к датчику по адресу
  ds.write(0x44, 0);  // Измерение температуры с переносом данных в память
  ds.reset();         // Инициализация, выполняется сброс шины
  ds.select(addr[x]); // Обращение к датчику по адресу
  ds.write(0xBE);     // Обращение памяти
  data[0] = ds.read();// Чтение памяти byte low
  data[1] = ds.read();// Чтение памяти byte high
  float value = ((data[1] &lt;&lt; 8) | data[0]) / 16.0; return (float)value; // Расчет температуры и вывод
}

void max7219(byte reg_n, byte h1, byte h2){
  PORTD &amp;=~(1 &lt;&lt; CS);WriteBit16(reg_n,h1);WriteBit16(reg_n,h2);PORTD |=(1 &lt;&lt; CS);
  } 

void WriteBit16(byte reg, byte data){ 
     for(char i = 7; i &gt;= 0; i--){
        PORTD &amp;= ~(1 &lt;&lt; CLK);
        if(((reg &gt;&gt; i) &amp; 1) == 1){PORTD |= (1 &lt;&lt; DIN);}else{PORTD &amp;= ~(1 &lt;&lt; DIN);}
        PORTD |=(1 &lt;&lt; CLK);}
     for(char i = 7; i &gt;= 0; i--){
        PORTD &amp;= ~(1 &lt;&lt; CLK);
        if(((data &gt;&gt; i) &amp; 1) == 1){PORTD |= (1 &lt;&lt; DIN);}else{PORTD &amp;= ~(1 &lt;&lt; DIN);}
        PORTD |=(1 &lt;&lt; CLK);}
        PORTD &amp;= ~(1 &lt;&lt; CLK);PORTD |= (1 &lt;&lt; DIN);
  }

void cl(){for(char i=1;i&lt;=8;i++){max7219(i, 0, 0);}}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 19 Dec 2023 06:08:05 +0000</pubDate>
			<guid>https://forum.rcl-radio.ru/viewtopic.php?pid=9040#p9040</guid>
		</item>
	</channel>
</rss>
