Re: Proteus: вопросы и ответы
Добавлено: Сб май 28, 2022 15:38:44
Модель для PIC16F18313 есть?
Proteus v8.13
Proteus v8.13
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
Может, всё-таки I²C? Набираете I²C в строке- и у вас появятся все микросхемы, где в хароактеристиках вписано: I²C (только учтите, не все микросхемы имеют модель для работы в протеусе, иногда это бывает только УГО)Kabron писал(а):Для проверки идей нужны микросхемы с I2S.
А галку поставить "поиск с моделями" не.но... для девайсов без моделей.
А галку поставить "поиск с моделями" не.[/uquote]но... для девайсов без моделей.
А галку поставить "поиск с моделями" не.[/uquote][/uquote]но... для девайсов без моделей.
Код: Выделить всё
//------------------------------------------------Подключаем библиотеки -------------------------------------------------------
#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); // очищаем дисплеи
}
}
//--------------------------------------------------------------- КОНЕЦ ----------------------------------------------------------------------------Вы имеете ввиду этосо свойствами подтягивающего резистора на линии датчика (digital/analog).