381

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Сейчас перечитал свою тему, интересно то как! И давно как было!  :(

Ленивые всё делают быстро, что бы скорее отделаться от работы и делают хорошо, чтобы не переделывать.
С уважением, Николай.
Моё оборудование : → Винокурня Николя

382

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Николя ©:

Модуль управления скоростью отбора (возможно в перспективе программно будет)

Программное управление ... чем? Интересно.

С уважением, Олег Кузнецов.

383

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Да не нужно это. Это старт-стоп. Он плохой вариант!

Ленивые всё делают быстро, что бы скорее отделаться от работы и делают хорошо, чтобы не переделывать.
С уважением, Николай.
Моё оборудование : → Винокурня Николя

384

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Про библиотеку TVout. Перешел в эту тему.

Николя ©:

Не пробовал, поковыряюсь, если время будет


На всякий случай... там конфликт возникает и обнаруживается на уровне компиляции. Т.е. железо для понимания проблемы не нужно. Если найдете время - будет интересно (хоть какая-то польза от телевизора :) ).

С уважением, Олег Кузнецов.

385

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Kusnezov Oleg ©:

там конфликт возникает и обнаруживается на уровне компиляции.

Тогда там ошибка должна быть указана явно.

У вас в жизни всегда будет все, что вы хотите, если вы будете помогать другим людям получать то, чего хотят они.
Регистрация на форуме отключает почти всю рекламу!

386

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Сейчас проверил загрузку  в ардуинку. Грузится без проблем.
Библиотеку качал отсюда https://github.com/amperka/TVout

Ленивые всё делают быстро, что бы скорее отделаться от работы и делают хорошо, чтобы не переделывать.
С уважением, Николай.
Моё оборудование : → Винокурня Николя

387 (2018-06-24 12:59:56 отредактировано )

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Николя ©:

Грузится без проблем.

Ну да. Попробуйте 1-Wire прицепить (любимый термометр), у меня не дает...

Arduino: 1.8.0 (Windows 8.1), Плата:"Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"

Изменены опции сборки, пересобираем все
C:\Users\adm\AppData\Local\Temp\cc6R4Tcz.s: Assembler messages:

C:\Users\adm\AppData\Local\Temp\cc6R4Tcz.s:742: Error: unknown opcode `delay2'

C:\Users\adm\AppData\Local\Temp\cc6R4Tcz.s:797: Error: unknown opcode `delay1'

.............................................................................................................

.............................................................................................................

C:\Users\adm\AppData\Local\Temp\cc6R4Tcz.s:983: Error: unknown opcode `delay2'

C:\Users\adm\AppData\Local\Temp\cc6R4Tcz.s:985: Error: unknown opcode `o1bs'

C:\Users\adm\AppData\Local\Temp\cc6R4Tcz.s:986: Error: unknown opcode `svprt'

C:\Users\adm\AppData\Local\Temp\cc6R4Tcz.s:988: Error: unknown opcode `o1bs'

lto-wrapper: C:\Users\adm\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.3-arduino2/bin/avr-gcc returned 1 exit status

c:/users/adm/appdata/local/arduino15/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.3-arduino2/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: lto-wrapper failed

collect2.exe: error: ld returned 1 exit status

exit status 1
Ошибка компиляции для платы Arduino Pro or Pro Mini.

С уважением, Олег Кузнецов.

388

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

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

// библиотека для работы с композитным видео выходом
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4 // Пин датчиков температуры
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

#include <TVout.h>
// файлы изображений
#include "schematic.h"
#include "TVOlogo.h"

// создаём объект TV класса TVout
TVout TV;

int zOff = 150;
int xOff = 0;
int yOff = 0;
// размер сторон куба
int sideSize = 50;
int viewPlane = 64;
// угол куба
float angle = PI / 60;

// массив координат куба
float cube3D[8][3] = {
  {xOff - sideSize, yOff + sideSize, zOff - sideSize},
  {xOff + sideSize, yOff + sideSize, zOff - sideSize},
  {xOff - sideSize, yOff - sideSize, zOff - sideSize},
  {xOff + sideSize, yOff - sideSize, zOff - sideSize},
  {xOff - sideSize, yOff + sideSize, zOff + sideSize},
  {xOff + sideSize, yOff + sideSize, zOff + sideSize},
  {xOff - sideSize, yOff - sideSize, zOff + sideSize},
  {xOff + sideSize, yOff - sideSize, zOff + sideSize}
};

unsigned char cube2D[8][2];

void setup()
{
  sensors.begin();
  // инициализируем коммуникацию с телевизиром
  // выбираем режим PAL / NTSC и разрешние экрана
  TV.begin(PAL);
  // выбираем шрифт 6x8
  TV.selectFont(font6x8);
  intro();
  // выводим строку
  TV.println("Hello!\r\nI am the TVout library for Arduino\n");
  // ждём 3 секунды
  TV.delay(3000);
  // выводим строку
  TV.println("I generate PAL or NTSC composite video signal\n");
  // ждём 3 секунды
  TV.delay(3000);
  // выводим строку
  TV.println("My schematic:");
  // ждём 2 секунды
  TV.delay(2000);
  // очищаем экран
  TV.clearScreen();
  // выводим изображение
  TV.bitmap(0,0,schematic);
  // ждём 5 секунд
  TV.delay(5000);
  // очищаем экран
  TV.clearScreen();
  // выводим строку
  TV.println("Lets see what\nI can do");
  // ждём 2 секунды
  TV.delay(2000);

  // шрифты
  // очищаем экран
  TV.clearScreen();
  // выводим строку в заданных координатах
  TV.println("Multiple fonts:");
  // выбираем шрифт «4×6»
  TV.selectFont(font4x6);
  // выводим строку
  TV.println("4x6 font FONT");
  // выбираем шрифт «6×8»
  TV.selectFont(font6x8);
  // выводим строку
  TV.println("6x8 font FONT");
  // выбираем шрифт «8×8»
  TV.selectFont(font8x8);
  // выводим строку
  TV.println("8x8 font FONT");
  // ждём 2 секунды
  TV.delay(2000);
  
  // Draw Basic Shapes
  // очищаем экран
  TV.clearScreen();
  // выбираем шрифт «6×8»
  TV.selectFont(font6x8);
  // выводим строку
  TV.print(9,44,"Draw Basic Shapes");
  // ждём 2 секунды
  TV.delay(2000);
  
  // круги
  // очищаем экран
  TV.clearScreen();
  // рисуем круг в центре экрана белым цветом
  // с радиусом «TV.vres()/3» без закраски
  TV.drawCircle(TV.hres() / 2, TV.vres() / 2, TV.vres() / 3, WHITE);
  TV.delay(500);
  // рисуем круг в центре экрана белым цветом
  // с радиусом «TV.vres()/2» с инвертацией цвета
  TV.drawCircle(TV.hres() / 2, TV.vres() / 2, TV.vres() / 2, WHITE, INVERT);
  // ждём 2 секунды
  TV.delay(2000);
  
  // линии и квадраты
  // очищаем экран
  TV.clearScreen();
  // рисуем квадрат с координатами (20,20) 
  TV.drawRect(20, 20, 80, 56, WHITE);
  TV.delay(500);
  TV.drawRect(10, 10, 100, 76, WHITE,INVERT);
  TV.delay(500);
  TV.drawLine(60, 20, 60, 76, INVERT);
  TV.drawLine(20, 48, 100, 48, INVERT);
  TV.delay(500);
  TV.drawLine(10, 10, 110, 86, INVERT);
  TV.drawLine(10, 86, 110, 10, INVERT);
  TV.delay(2000);
  TV.drawLine(10, 86, 110, 10, INVERT);
  // очищаем экран
  TV.clearScreen();
  // инициализируем генератор псевдослучайных чисел
  randomSeed(analogRead(A0));
}

void loop()
{
  sensors.requestTemperatures(); // считываем температуру с датчиков

 TV.begin(PAL);
  // выбираем шрифт 6x8
  TV.selectFont(font6x8);
  intro();
  // выводим строку
  TV.println("Hello!\r\nI am the TVout library for Arduino\n");
  
  // вращение куба в 3D
  int rsteps = random(10, 60);
  switch(random(6)) {
    case 0:
      for (int i = 0; i < rsteps; i++) {
        zrotate(angle);
        // рисуем куб
        printcube();
      }
      break;
    case 1:
      for (int i = 0; i < rsteps; i++) {
        zrotate(2 * PI - angle);
        // рисуем куб
        printcube();
      }
      break;
    case 2:
      for (int i = 0; i < rsteps; i++) {
        xrotate(angle);
        // рисуем куб
        printcube();
      }
      break;
    case 3:
      for (int i = 0; i < rsteps; i++) {
        xrotate(2*PI - angle);
        // рисуем куб
        printcube();
      }
      break;
    case 4:
      for (int i = 0; i < rsteps; i++) {
        yrotate(angle);
        // рисуем куб
        printcube();
      }
      break;
    case 5:
      for (int i = 0; i < rsteps; i++) {
        yrotate(2 * PI - angle);
        // рисуем куб
        printcube();
      }
      break;
  }
}


// функция вывода логотипа на экран
void intro() {
  int w, l, wb;
  int index;
  w = pgm_read_byte(TVOlogo);
  l = pgm_read_byte(TVOlogo + 1);
  if (w & 7) {
    wb = w / 8 + 1;
  } else {
    wb = w / 8;
  }
  index = wb * (l - 1) + 2;
  for (int i = 1; i < l; i++ ) {
    TV.bitmap((TV.hres() - w) / 2, 0, TVOlogo, index, w, i);
    index -= wb;
    TV.delay(50);
  }
  for (int i = 0; i < (TV.vres() - l) / 2; i++) {
    TV.bitmap((TV.hres() - w) / 2, i, TVOlogo);
    TV.delay(50);
  }
  TV.delay(3000);
  TV.clearScreen();
}

// функция отрисовки куба
void printcube() {
  for (int i = 0; i < 8; i++) {
    cube2D[i][0] = (unsigned char)((cube3D[i][0] * viewPlane / cube3D[i][2]) + (TV.hres() / 2));
    cube2D[i][1] = (unsigned char)((cube3D[i][1] * viewPlane / cube3D[i][2]) + (TV.vres() / 2));
  }
  TV.delayFrame(1);
  TV.clearScreen();
  drawCube();
}

// функция вращения куба по оси X
void xrotate(float q) {
  float ty, tz, temp;
  for(int i = 0; i < 8; i++) {
    ty = cube3D[i][1] - yOff;
    tz = cube3D[i][2] - zOff;
    temp = ty * cos(q) - tz * sin(q);
    tz = ty * sin(q) + tz * cos(q);
    ty = temp;
    cube3D[i][1] = ty + yOff;
    cube3D[i][2] = tz + zOff;
  }
}

// функция вращения куба по оси Y
void yrotate(float q) {
  float tx,tz,temp;
  for(int i = 0; i < 8; i++) {
    tx = cube3D[i][0] - xOff;
    tz = cube3D[i][2] - zOff;
    temp = tz * cos(q) - tx * sin(q);
    tx = tz * sin(q) + tx * cos(q);
    tz = temp;
    cube3D[i][0] = tx + xOff;
    cube3D[i][2] = tz + zOff;
  }
}

// функция вращения куба по оси Z
void zrotate(float q) {
  float tx, ty, temp;
  for(int i = 0; i < 8; i++) {
    tx = cube3D[i][0] - xOff;
    ty = cube3D[i][1] - yOff;
    temp = tx * cos(q) - ty * sin(q);
    ty = tx * sin(q) + ty * cos(q);
    tx = temp;
    cube3D[i][0] = tx + xOff;
    cube3D[i][1] = ty + yOff;
  }
}

// рисуем куб
void drawCube() {
  TV.drawLine(cube2D[0][0], cube2D[0][1], cube2D[1][0],cube2D[1][1], WHITE);
  TV.drawLine(cube2D[0][0], cube2D[0][1], cube2D[2][0],cube2D[2][1], WHITE);
  TV.drawLine(cube2D[0][0], cube2D[0][1], cube2D[4][0],cube2D[4][1], WHITE);
  TV.drawLine(cube2D[1][0], cube2D[1][1], cube2D[5][0],cube2D[5][1], WHITE);
  TV.drawLine(cube2D[1][0], cube2D[1][1], cube2D[3][0],cube2D[3][1], WHITE);
  TV.drawLine(cube2D[2][0], cube2D[2][1], cube2D[6][0],cube2D[6][1], WHITE);
  TV.drawLine(cube2D[2][0], cube2D[2][1], cube2D[3][0],cube2D[3][1], WHITE);
  TV.drawLine(cube2D[4][0], cube2D[4][1], cube2D[6][0],cube2D[6][1], WHITE);
  TV.drawLine(cube2D[4][0], cube2D[4][1], cube2D[5][0],cube2D[5][1], WHITE);
  TV.drawLine(cube2D[7][0], cube2D[7][1], cube2D[6][0],cube2D[6][1], WHITE);
  TV.drawLine(cube2D[7][0], cube2D[7][1], cube2D[3][0],cube2D[3][1], WHITE);
  TV.drawLine(cube2D[7][0], cube2D[7][1], cube2D[5][0],cube2D[5][1], WHITE);
}
Ленивые всё делают быстро, что бы скорее отделаться от работы и делают хорошо, чтобы не переделывать.
С уважением, Николай.
Моё оборудование : → Винокурня Николя

389

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Николя, проблемы начинаются при настройке датчиков и/или опросе датчиков. Если просто подключить эти библиотеки - и у меня все компилируется. Как только начинаю активные действия с датчиками - ошибка компиляции. Причем нестабильно...
Попробуйте просто показания датчика вывести на экран, если получится (на уровне компиляции) - это будет для меня неожиданностью (приятной).

С уважением, Олег Кузнецов.

390 (2018-06-24 14:09:39 отредактировано )

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Николя ©:

void loop()
{
  sensors.requestTemperatures(); // считываем температуру с датчиков

TV.begin(PAL);
  // выбираем шрифт 6x8
  TV.selectFont(font6x8);
  intro();
  // выводим строку
  TV.println("Hello!\r\nI am the TVout library for Arduino\n");

Вместо TV.println("Hello!\r\nI am the TVout library for Arduino\n");
Ставим  TV.println(sensors.getTempCByIndex(0));
Телека у меня под рукой нет, на практике не проверю.

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

Ленивые всё делают быстро, что бы скорее отделаться от работы и делают хорошо, чтобы не переделывать.
С уважением, Николай.
Моё оборудование : → Винокурня Николя

391

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Николя, спасибо за обсуждение. На этот раз ( в вашем присутствии) компиляция прошла - буду разбираться, в чем была проблема. Разберусь - сообщу.  Делал реальную плату - температуру измеряет, картинки на ТВ показывает, звук работает. Как только пытаюсь объединить два скетча - ошибка компиляции... Нашел в каких-то дебрях пример, измеряет температуру на 3 датчиках - выводит на ТВ. Один в один скопировал, подключил - работает. Изменил какую-то ерунду - и ... ошибка компиляции! Плюнул... Теперь (не без вашей помощи) появилось желание разобраться...

С уважением, Олег Кузнецов.

392

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Да не за что!

Ленивые всё делают быстро, что бы скорее отделаться от работы и делают хорошо, чтобы не переделывать.
С уважением, Николай.
Моё оборудование : → Винокурня Николя

393

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Николя ©:

Телека у меня под рукой нет, на практике не проверю.

Kusnezov Oleg ©:

Разберусь - сообщу.

Ну вот, сообщаю. Работает машинка. Вполне можно измерять температуру и выводить на телевизор. Ардуино + 2 резистора + библиотека TVout.
Опрос четырех датчиков (установлено 3).

Проблема была в отладочных serial.print - не терпит их библиотека - глючит.

  • TV.png
    size: 256.31Кб type: png
  • TV.png
    size: 256.31Кб type: png
С уважением, Олег Кузнецов.

394

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Kusnezov Oleg, фия ты хакер  *EL*
Выложи хоть пример как делать... ради интереса.

У вас в жизни всегда будет все, что вы хотите, если вы будете помогать другим людям получать то, чего хотят они.
Регистрация на форуме отключает почти всю рекламу!

395

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Иван, спасибо.
Схема подключения ТВ.

Описание библиотеки.
https://yadi.sk/i/DycudKqY3XYdrw.
Тестировал на 4 датчиках, подключенных (каждый отдельно!) к А0, А1, А2, А3 (14,15,16,17), каждый подтянут резистором 4.7к.

Тестовый код

#include <OneWire.h>
#include <TVout.h>
#include <fontALL.h>
// определяем пины термодатчиков

#define TEMP_1 14
#define TEMP_2 15
#define TEMP_3 16
#define TEMP_4 17



#define POWER_MODE  0 // режим питания термодатчика, 0 - внешнее, 1 – паразитное


bool flagT1;
bool flagT2;
bool flagT3;
bool flagT4;


// буфер данных для каждого датчика
byte bufData_1[9]; 
byte bufData_2[9]; 
byte bufData_3[9];  
byte bufData_4[9];  
byte addr[9];
bool sensor_1;
bool sensor_2;
bool sensor_3;
bool sensor_4;

// измеренная температура

float temperature_1 = -99.0; 
float temperature_2 = -99.0;
float temperature_3 = -99.0;
float temperature_4 = -99.0; 






unsigned int long timerTemp;
int const TEMP_PAUSE = 3000;


OneWire temp_1(TEMP_1);  
OneWire temp_2(TEMP_2);
OneWire temp_3(TEMP_3);  
OneWire temp_4(TEMP_4);


TVout TV;


void setup()
{
// Serial.begin(9600); 
 TV.begin(PAL,120,96);
 
 
 // иницилизируем измерение температуры, через время TEMP_PAUSE можно запрашивать результат
  temp_1.reset();  // сброс шины
  temp_1.write(0xCC, POWER_MODE); // пропуск ROM
  temp_1.write(0x44, POWER_MODE); // инициализация измерения
  
  temp_2.reset();  // сброс шины
  temp_2.write(0xCC, POWER_MODE); // пропуск ROM
  temp_2.write(0x44, POWER_MODE); // инициализация измерения
 
  temp_3.reset();  // сброс шины
  temp_3.write(0xCC, POWER_MODE); // пропуск ROM
  temp_3.write(0x44, POWER_MODE); // инициализация измерения
  
  temp_4.reset();  // сброс шины
  temp_4.write(0xCC, POWER_MODE); // пропуск ROM
  temp_4.write(0x44, POWER_MODE); // инициализация измерения 
  
  
  
  // запускаем таймер
   timerTemp = millis();


 TV.clear_screen();       


TV.select_font(font4x6);
 TV.draw_rect(1,70,20,24,1,0);
 TV.draw_rect(1,85,20,9,1,1);
 
 TV.draw_rect(10,8,2,62,1,0);
  TV.set_cursor(30,5);
  TV.print("30 5");
  TV.delay(200);
  
  }

//=====================================================================================
void loop() 
{

temp();
   
}
//-------------------------------------------------------------------------------------
void temp() {
   
  // если прошло время достаточное для обновления датчика
  // считываем температуру и запускаем новое преобразование
 
  
  if (  (millis() - timerTemp) > TEMP_PAUSE){
  TV.clear_screen();  
   
  
  temp_1.reset();  // сброс шины
  sensor_1 = temp_1.search(addr);
   
   if (sensor_1) {
   temp_1.reset_search();
   temp_1.reset();

  temp_1.write(0xCC, POWER_MODE); // пропуск ROM  
  temp_1.write(0xBE, POWER_MODE); // команда чтения памяти датчика  
  temp_1.read_bytes(bufData_1, 9);  // чтение памяти датчика, 9 байтов
  if ( OneWire::crc8(bufData_1, 8) == bufData_1[8] ) {  // проверка CRC
    // данные правильные
    flagT1 = true;
    temperature_1 =  (float)((int)bufData_1[0] | (((int)bufData_1[1]) << 8)) * 0.0625 + 0.03125   ;   
 }
  else {
   flagT1 = false;
   temperature_1 = -99;

  }
 }
 
  
  
  temp_2.reset();  // сброс шины
  sensor_2 = temp_2.search(addr);
  if (sensor_2) {
  temp_2.reset_search();
  temp_2.reset();
  

  
  
  
  temp_2.write(0xCC, POWER_MODE); // пропуск ROM  
  temp_2.write(0xBE, POWER_MODE); // команда чтения памяти датчика  
  temp_2.read_bytes(bufData_2, 9);  // чтение памяти датчика, 9 байтов
  if ( OneWire::crc8(bufData_2, 8) == bufData_2[8] ) {  // проверка CRC
    // данные правильные
    flagT2 = true;
    temperature_2 =  (float)((int)bufData_2[0] | (((int)bufData_2[1]) << 8)) * 0.0625 + 0.03125   ;   
}
  else {
   flagT2 = false;
   temperature_2 = -99;
  }
  }
  
  
  temp_3.reset();  // сброс шины
  sensor_3 = temp_2.search(addr);
  if (sensor_3) {
  temp_3.reset_search();
  temp_3.reset();
  
  
  temp_3.write(0xCC, POWER_MODE); // пропуск ROM  
  temp_3.write(0xBE, POWER_MODE); // команда чтения памяти датчика  
  temp_3.read_bytes(bufData_3, 9);  // чтение памяти датчика, 9 байтов
  if ( OneWire::crc8(bufData_3, 8) == bufData_3[8] ) {  // проверка CRC
    // данные правильные
    flagT3 = true;
    temperature_3 =  (float)((int)bufData_3[0] | (((int)bufData_3[1]) << 8)) * 0.0625 + 0.03125   ;   

}
  else {
   flagT3 = false;
   temperature_3 = -99;
  }
  }

temp_4.reset();  // сброс шины
  sensor_4 = temp_2.search(addr);
  if (sensor_4) {
  temp_4.reset_search();
  temp_4.reset();
  
  
  temp_4.write(0xCC, POWER_MODE); // пропуск ROM  
  temp_4.write(0xBE, POWER_MODE); // команда чтения памяти датчика  
  temp_4.read_bytes(bufData_4, 9);  // чтение памяти датчика, 9 байтов
  if ( OneWire::crc8(bufData_4, 8) == bufData_4[8] ) {  // проверка CRC
    // данные правильные
    flagT4 = true;
    temperature_4 =  (float)((int)bufData_2[0] | (((int)bufData_2[1]) << 8)) * 0.0625 + 0.03125   ;   
 //TV.println(temperature_4);
}
  else {
   flagT4 = false;
   temperature_4 = -99;
  }
  }






 //запускаем новое преобразование
 temp_1.reset();  // сброс шины
  temp_1.write(0xCC, POWER_MODE); // пропуск ROM
  temp_1.write(0x44, POWER_MODE); // инициализация измерения
  
  temp_2.reset();  // сброс шины
  temp_2.write(0xCC, POWER_MODE); // пропуск ROM
  temp_2.write(0x44, POWER_MODE); // инициализация измерения
 
  temp_3.reset();  // сброс шины
  temp_3.write(0xCC, POWER_MODE); // пропуск ROM
  temp_3.write(0x44, POWER_MODE); // инициализация измерения
  
  temp_4.reset();  // сброс шины
  temp_4.write(0xCC, POWER_MODE); // пропуск ROM
  temp_4.write(0x44, POWER_MODE); // инициализация измерения 
  
  
  timerTemp = millis();

 
 TV.draw_rect(1,70,20,24,1,0);
 TV.draw_rect(1,85,20,9,1,1);
 TV.draw_rect(10,8,2,62,1,0);

TV.set_cursor(35,5);
if (!sensor_1) {
  TV.print("NO SENSOR 1");
}
else { 
if (!flagT1){
  TV.print("ERR SENSOR 1");  
}
else{
TV.print("TOP T  "); TV.print(temperature_1);TV.print(" C");
}
}

TV.set_cursor(35,15);
if (!sensor_2) {
  TV.print("NO SENSOR 2");
}
else { 
if (!flagT2){
  TV.print("ERR SENSOR 2");  
}
else{
TV.print("2/3 T  "); TV.print(temperature_2);TV.print(" C");
}
}  
  
  
 TV.set_cursor(35,25);
if (!sensor_3) {
  TV.print("NO SENSOR 3");
}
else { 
if (!flagT2){
  TV.print("ERR SENSOR 3");  
}
else{
TV.print("LQ T  "); TV.print(temperature_3);TV.print(" C");
}
}   
  
 TV.set_cursor(35,35);
if (!sensor_4) {
  TV.print("NO SENSOR 4");
}
else { 
if (!flagT2){
  TV.print("ERR SENSOR 4");  
}
else{
TV.print("CR T  "); TV.print(temperature_4);TV.print(" C");
}
}     
 
TV.delay(200);  
  }
 }  
  • TV arduino.png
    size: 29.27Кб type: png
С уважением, Олег Кузнецов.

396

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Kusnezov Oleg ©:

подключенных (каждый отдельно!)

А в чем тут причина? Почему к одному пину не прицепить все?

397

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

d.styler, а даст ли ему чип?  Генерировать сигнал надо еще, может подавится или я не понимаю чего?  Читал про эти либы, что они работу чипа хорошо тормозят.

У вас в жизни всегда будет все, что вы хотите, если вы будете помогать другим людям получать то, чего хотят они.
Регистрация на форуме отключает почти всю рекламу!

398

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

d.styler, что бы с адресами не возиться.
Если поменял датчик, то всё сразу работает, как надо. К TV  отношения не имеет.

С уважением, Олег Кузнецов.

399

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Kusnezov Oleg, можно к аналоговому экранчику в машине прицепить (от камеры жоповидения).... типа температура ОЖ и так далее...

У вас в жизни всегда будет все, что вы хотите, если вы будете помогать другим людям получать то, чего хотят они.
Регистрация на форуме отключает почти всю рекламу!

400 (2018-11-19 20:07:27 отредактировано )

Re: Автоматика на Arduino для ректификации и дистилляции (схема-прошивки)

Иван ©:

они работу чипа хорошо тормозят

Не то слово! Чудо, что 1-wire успевает опросить.

Иван, у меня прикол глубже.
Есть старинный видеосендер, который на эфирных частотах работает, и я могу на любом ТВ, на расстоянии до 40 м,  смотреть - чего там с температурой. В том числе, на "картинке в картинке".
Впрочем можно и "беспроводный удлинитель видеосигнала" присобачить. У меня пара ненужных где-то валяется.

С уважением, Олег Кузнецов.