Сб май 28, 2022 15:38:44
Сб май 28, 2022 15:46:08
Чт авг 04, 2022 07:26:11
Чт авг 04, 2022 19:56:52
Чт авг 04, 2022 22:45:23
Сб авг 13, 2022 17:23:46
Сб авг 13, 2022 19:22:05
Сб авг 13, 2022 23:51:15
Сб авг 27, 2022 17:50:59
Сб авг 27, 2022 18:22:23
Может, всё-таки I²C?Kabron писал(а):Для проверки идей нужны микросхемы с I2S.
Сб авг 27, 2022 19:45:12
Сб авг 27, 2022 20:06:21
но... для девайсов без моделей.
Сб авг 27, 2022 20:47:21
но... для девайсов без моделей.
Вс авг 28, 2022 02:42:16
но... для девайсов без моделей.
Вс авг 28, 2022 06:07:25
Пт сен 23, 2022 13:59:51
//---------- библиотеки ----------
#include <Wire.h> // Подключаем библиотеку I2C
#include <microDS3231.h>
MicroDS3231 rtc;
#include "LedControl.h"
#include <microDS18B20.h>
MicroDS18B20<2> sensor; // подкдючаем датчик DS18B20 к атмеге ножка РВ2
LedControl LC = LedControl(12, 11, 10, 2); //Создаём объект класса LedControl для двух устройств
//---------- Инициализируем переменные-------------------------------------------------------------------------------
int h1,h0,m1,m0,s1,s0; // h1 - десятки часов, h0 - еденицы часов и так далее ...
int d1, d0, mn1, mn0, y1, y0, dw; // d1 - десятки дней, d0 - еденицы дней и так далее...
int t0, t1, tv; // t1 - десятки температуры, t0 - еденицы температуры и так далее ...
float temp; // Переменная температуры
uint32_t timer; // переменная для счетчиков времени
//---------- void SETUP ----------
void setup(){
Serial.begin (9600);
int devices = LC.getDeviceCount(); //Создаём целочисленную переменую devices и сохраняем в ней значение количества устройств
for (int address = 0; address < devices; address ++) //Начинаем инициализацию устройств в цикле переменная devices = 2, поэтому цикл выполнится 2
{
LC.shutdown(address, false); //Выводим устройство с адресом равным address из энергосберегающего режима
LC.setIntensity(address, 8); // Устанавливаем интесивность свечения для устройства с адресом равным address на средний уровень
LC.clearDisplay(address); // и очищаем дисплей с адресом равным address
// Serial.println(address);delay(100);
}
sensor.requestTemp(); // запрос температуры
refreshAll(); // очистить экран
}
///============= void LOOP =======================
void loop(){
watch(); // выводим на экран часы
if (millis() - timer >= 1000) { // измерение температуры длится 750 мс, у нас чуть больше
timer = millis();
sensor.requestTemp(); // запрос температуры
}
if (sensor.readTemp()){ //запрашивает данные с датчика и возвращает true, если они прочитаны корректно.
temp = sensor.getTemp(); // присваиваем результат
Serial.println(sensor.getTemp());
t1 = (int)temp/10; // t1 - десятки температуры
Serial.print((int)temp/10);
Serial.print(":");
t0 = (int)temp%10; // t0 - еденицы температуры
Serial.print((int)temp%10);
LC.setDigit(1, 1, t1, false); // выводим на дисплей (№ MAX7219, разряд, наше значение, точка вкл/выкл)
LC.setDigit(1, 2, t0, true); // выводим на дисплей (№ MAX7219, разряд, наше значение, точка вкл/выкл)
Serial.println(" end");
//delay(2000);
}
else { // если данные с датчика прочитаны не корректно высвечиваем "0" ("error").
LC.setDigit(1, 0, tv, true); // выводим на дисплей (№ MAX7219, разряд, наше значение, точка вкл/выкл)
Serial.println("error");
//delay(2000);
}
}
//---------- ЧАСЫ ----------
void watch() {
h1 = rtc.getHours()/10; // десятки часа
h0 = rtc.getHours()%10; // еденицы часа
m1 = rtc.getMinutes()/10; // десятки минут
m0 = rtc.getMinutes()%10; // еденицы минут
s1 = rtc.getSeconds()/10; // десятки секунд
s0 = rtc.getSeconds()%10; // еденицы секунд
LC.setDigit(0, 0, h1, false); // выводим на дисплей (№ MAX7219, разряд, наше значение, точка вкл/выкл)
LC.setDigit(0, 1, h0, false);
LC.setDigit(0, 2, m1, false);
LC.setDigit(0, 3, m0, false);
LC.setDigit(0, 4, s1, false);
LC.setDigit(0, 5, s0, false);
/* Serial.print(h1);Serial.print(h0);
Serial.print(":");
Serial.print(m1);Serial.print(m0);
Serial.print(":");
Serial.print(s1);Serial.println(s0);
delay(1000);*/
}
//---------- очищаем дисплей ----------
void refreshAll() {
int devices = LC.getDeviceCount(); // devices значение количества устройств
for (int address = 0; address < devices; address ++) // Начинаем инициализацию устройств в циклепеременная devices = 2, поэтому цикл выполнится 2 раз
{
LC.clearDisplay(address); // очищаем дисплеи
}
}
//---------- КОНЕЦ ----------
Пт сен 23, 2022 17:17:35
Пт сен 23, 2022 18:30:12
со свойствами подтягивающего резистора на линии датчика (digital/analog).
Пт сен 23, 2022 19:22:17
Пт сен 23, 2022 19:44:36