помогите обьеденить два скечта в одну ардуино

василий55
Offline
Зарегистрирован: 25.11.2021

часы работает 

==============================================

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

 

 

приемник работает

====================================

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii





две ардуино два екрана, хочу залить все в одну ардуино, два екрана чтобы работали помогите пож
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

василий55 пишет:
хочу залить все в одну ардуино

https://www.youtube.com/watch?v=q1d3cpOg8oQ

Хотите - заливайте, что не получается-то?

василий55
Offline
Зарегистрирован: 25.11.2021

ошибка, я так понял что нужно както дать определить ардуинке на какой екран что выводить а как ето правильно написать не знаю

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

василий55 пишет:

 как ето правильно написать не знаю

Придёца освоить Дао программиста. 

b707
Offline
Зарегистрирован: 26.05.2017

василий55 пишет:

ошибка, я так понял что нужно както дать определить ардуинке на какой екран что выводить а как ето правильно написать не знаю

судя по постановке вопроса - опыта в программировании чуть более чем ноль? - придется сначала выучить Си/С++ , а потом сможешь и свою задачку решить

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

судя по постановке вопроса - опыта в программировании чуть более чем ноль?

С чего сделан такой вывод? По моему - чуть меньше, чем ноль.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

василий55 пишет:

ошибка, я так понял что нужно както дать определить ардуинке на какой екран что выводить а как ето правильно написать не знаю

Какая, нахрен, ошибка? Где код? Где текст сообщения об ошибке? О чём вообще речь?

Знаете, Вы же делаете часы с приёмником? И по отдельности они работают, так?

Ну и НАХЕРА козе баян? Пихайте в корпус часов две ардуины и пусть они себе работаю независимо. Отличное решение! Другого Вы, не умея программировать от слова совсем, всё равно не потянете.

василий55
Offline
Зарегистрирован: 25.11.2021

блин обосрать все умные а помочь я так понимаю никто не хочет

василий55
Offline
Зарегистрирован: 25.11.2021

хочу в одну ардуинку запихнуть все , спасибо за помощ

b707
Offline
Зарегистрирован: 26.05.2017

василий55 пишет:

блин обосрать все умные а помочь я так понимаю никто не хочет

Помогают тогда, когда человек что-то сам делает. Вы что-то делаете? - показывайте тогда

А если ждете, что кто-то вам готовый код выложит - на это не надейтесь

василий55 пишет:

хочу в одну ардуинку запихнуть все , спасибо за помощ

хочите - запихивайте, мы не против

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

василий55 впихнем невпихуемое, но деньги вперед !

Green
Offline
Зарегистрирован: 01.10.2015

Феликс Шиндер и деньги вперёд.)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

василий55 пишет:

блин обосрать все умные а помочь я так понимаю никто не хочет

Я Вас не обсирал, а дал Вам действительно дельный совет - делайте на двух ардуинах. Это то, как Вы реально можете сделать устройство.

А то, что Вы "хотите" ... у Вас для таких хотелок знаний недостаточно.

Morroc
Offline
Зарегистрирован: 24.10.2016

василий55 пишет:

хочу в одну ардуинку запихнуть все , спасибо за помощ

т.е. вы думаете, что достаточно скопировать это все в одну кучу и еще за пару минут что то быстренько докрутить ? ну так вы неправильно думаете, а думаете неправильно потому что представления не имеете о предмете, частенько подобное быстрее сделать заново с нуля, чем скрещивать ежа с ужом

василий55
Offline
Зарегистрирован: 25.11.2021

решил по другому сделать на одну ардуино с екраном 16,2 на первую строчку температура с 433мгц, вторая строчка температура и влажность с HTU21D, работает с HTU21D, а первую строку пишет     Temperat /     что не так??? отдельно приемник на 433мгц работает сайт с приемником и скетчом http://sagis.ru/blog/?p=195 скейтч с HTU21D 

#include <Arduino.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <HTU21D.h>
 
HTU21D myHTU21D(HTU21D_RES_RH12_TEMP14);
 
LiquidCrystal_I2C lcd(0x25,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
 
void setup()
{
      
     int counter = 0;
  while (myHTU21D.begin() != true && counter++ < 5)
  {
    delay(1000);
  }
  lcd.init();                      // initialize the lcd 
  lcd.backlight();
}
 
 
void loop()
{
  lcd.setCursor(0,0);
  lcd.print("Temp.   : ");
  lcd.print(myHTU21D.readTemperature());
  lcd.setCursor(0,1);
  lcd.print("Humidity: ");
  lcd.print(myHTU21D.readHumidity());
  delay(500);
}

мой отредактированый скетч

#include <Arduino.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <HTU21D.h>
#include <VirtualWire.h>


// Пин светодиода
const int led_pin = 13;
//Пин приемника
const int receive_pin = 11;

uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

HTU21D myHTU21D(HTU21D_RES_RH12_TEMP14);
 
LiquidCrystal_I2C lcd(0x25,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
 
void setup()
{
      
     int counter = 0;
  while (myHTU21D.begin() != true && counter++ < 5)
  {
    delay(1000);
  }
  lcd.init();                      // initialize the lcd 
  lcd.backlight();

vw_set_ptt_inverted(true); // Required for DR3100
  //Скорость приема бит в секунду
  vw_setup(2000);   
  // запускаем приемник
  vw_rx_start();       // Start the receiver PLL running

  pinMode(led_pin, OUTPUT);




}
 
 
void loop()
{

//Принимаем данные в буфер
  if (vw_get_message(buf, &buflen))

{
    // Зажигаем светодиод
    digitalWrite(led_pin, HIGH); 
    // разбираем буфер и выводим данные на дисплей
    printbuf();
    // Гасим светодиод
    digitalWrite(led_pin, LOW);
  }


  lcd.setCursor(0,1);
  lcd.print("tem ");
  lcd.print(myHTU21D.readTemperature());
  lcd.setCursor(8,1);
  lcd.print("vla ");
  lcd.print(myHTU21D.readHumidity());
  delay(500);
}

//----------------------------------------------------------
void printbuf(){
  int i;
  int a=0;  
  //Пока не кончилась длина буфера повторяем цикл
  for (i = 0; i < buflen; i++)
  {
    //Если встретили первую / значит сейчас пойдет температура
    if ((char) buf[i]=='/'){
      if (a==0){ 
        lcd.setCursor(0, 0);
        lcd.print("Temperat  ");
        a++;
      }
      // Иначе влажность
      
    
    else  
    {
      // Если / нет выводим данные
      lcd.print((char)buf[i]);
    }
    }
    }
    }

заранее благодарен за ответ

b707
Offline
Зарегистрирован: 26.05.2017

василий55 пишет:

первую строку пишет     Temperat /     что не так???

у вас там описана VirtualWire - а с чем оно связывается? Вы хоть проверяйте. в буфере-то что-то появляется при приеме? Может там и нет ничего - потому и не печатает.

 

василий55
Offline
Зарегистрирован: 25.11.2021
// Пин светодиода
09
const int led_pin = 13;
10
//Пин приемника
11
const int receive_pin = 11;

 

связь работает светодиод 13 загорается и на екране пишет "Temperat / "

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

на оригинальном скетче писало "Temperat  15,00" (например без символа /) а тут пишет симвл / без данных температуры

VirtualWire является библиотекой Arduino. Предназначена для отправки и приема коротких сообщений по широковещательной беспроводной связи, .я так понял она нужна?

василий55
Offline
Зарегистрирован: 25.11.2021

сделал работает, но DHT22 врет примерно на два градуса, реально например -1, показівает +1. возможно переписать скейтч передатчика на HTU21D работает идеально и температура и влажность, а DHT22 влажность постоянно показывает 99,9% ???????

скетч передатчика 

//Подключаем библиотеки
#include <VirtualWire.h>
#include "DHT.h"
//Определяем пин светодиода
const int led_pin = 13;
//Определяем пин передатчика
const int transmit_pin = 12;
//Пин и тип датчика температуры
#define DHTPIN 6 
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// объявляем массив
char dataString [12];
//----------------------------------------------------------------
void setup()
{

  vw_set_tx_pin(transmit_pin);
  vw_set_ptt_inverted(true);
  // скорость передачи бит в секунду 
  vw_setup(2000);      
  pinMode(led_pin, OUTPUT);
  //запуск датчика температуры
  dht.begin();
}

//---------------------------------------------------------------
void loop()
{
  // опрашиваем датчик температуры и влажности
  float h = dht.readHumidity();
  float t = dht.readTemperature();  

  int h1 = (h-(int)h)*100;
  int t1 = (t-(int)t)*100;
  //Формируем буфер
  sprintf(dataString, "/%1d.%1d/%1d.%1d",int(t),t1,int(h),h1); 
  // Включаем светодиод
  digitalWrite(led_pin, HIGH); 
  // Передаем данные
  vw_send((uint8_t *)dataString, 12);
  //Ждем окончания отправки
  vw_wait_tx(); 
  // Выключаем светодиод
  digitalWrite(led_pin, LOW);
  //отдыхаем 10 сек.
    delay(10000);

}

 

скетч на HTU21D по I2C работает

#include <Arduino.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <HTU21D.h>
#include <VirtualWire.h>

HTU21D myHTU21D(HTU21D_RES_RH12_TEMP14);
 
LiquidCrystal_I2C lcd(0x25,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
 
void setup()
{
      
     int counter = 0;
  while (myHTU21D.begin() != true && counter++ < 5)
  {
    delay(1000);
  }
  lcd.init();                      // initialize the lcd 
  lcd.backlight();

}
  
void loop()
{

  lcd.setCursor(0,1);
  lcd.print("tem ");
  lcd.print(myHTU21D.readTemperature());
  lcd.setCursor(8,1);
  lcd.print("vla ");
  lcd.print(myHTU21D.readHumidity());
  delay(500);
}

ЗАРАНЕЕ БЛАГОДАРЕН ЗА ОТВЕТЫ

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

василий55 пишет:

ЗАРАНЕЕ БЛАГОДАРЕН ЗА ОТВЕТЫ

Какие ответы?

Разве в посте был хоть один вопрос?

василий55
Offline
Зарегистрирован: 25.11.2021

а по сути помочь можете???

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

ЕвгенийП пишет:

Разве в посте был хоть один вопрос?

Я полагаю вопрос вот этот:

Цитата:
возможно переписать скейтч передатчика на HTU21D .... ?????

И, полагаю, ответ очевиден - возможно. ))

василий55
Offline
Зарегистрирован: 25.11.2021

и помочь ктото может или как???

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

василий55 пишет:

а по сути помочь можете???

задайте вопрос по сути и я на него по сути отвечу, если смогу.

Пока же, какие вопросы, такие и ответы.

Kakmyc
Offline
Зарегистрирован: 15.01.2018

василий55 пишет:

и помочь ктото может или как???

Может и может кто то помочь, а может "или как"...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Выслушаю, и помогу сформулировать вопрос.  3000р

b707
Offline
Зарегистрирован: 26.05.2017

василий55 пишет:

и помочь ктото может или как???


откуда ты вылез, замшелый?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Если с датчиком HTU работает. то видимо проще всего туда добавить передатчик:
 

#include <Arduino.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <HTU21D.h>
#include <VirtualWire.h>

//Определяем пин передатчика
const int transmit_pin = 12;
// объявляем массив
char dataString [12];

HTU21D myHTU21D(HTU21D_RES_RH12_TEMP14);
 
LiquidCrystal_I2C lcd(0x25,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
 
void setup()
{
  vw_set_tx_pin(transmit_pin);
  vw_set_ptt_inverted(true);
  // скорость передачи бит в секунду 
  vw_setup(2000);      
     
     int counter = 0;
  while (myHTU21D.begin() != true && counter++ < 5)
  {
    delay(1000);
  }
  lcd.init();                      // initialize the lcd 
  lcd.backlight();

}
  
void loop()
{
  float h = myHTU21D.readHumidity();
  float t = myHTU21D.readTemperature();  

  int h1 = (h-(int)h)*100;
  int t1 = (t-(int)t)*100;

 //Формируем буфер
  sprintf(dataString, "/%1d.%1d/%1d.%1d",int(t),t1,int(h),h1); 
  // Передаем данные
  vw_send((uint8_t *)dataString, 12);
  //Ждем окончания отправки
  vw_wait_tx(); 
  
  lcd.setCursor(0,1);
  lcd.print("tem ");
  lcd.print(t);
  lcd.setCursor(8,1);
  lcd.print("vla ");
  lcd.print(h);
  delay(500);
}

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

василий55 пишет:

часы работает, приемник работает,  две ардуино два екрана, хочу залить все в одну ардуино, два екрана чтобы работали помогите пож

Ниуха, как я понимаю, не работает. Но - ПОМОГИТЕ?

Напишите алгоритм Вашей программы. А не это г-но, что Вы представили, скопирастив...

василий55
Offline
Зарегистрирован: 25.11.2021

работает, одна ардуино один екран часы 16,2 на весь екран на две строки часы на 1307, на 433мгц принимает температуру уличную на другой екран работает, но передатчик с улицы построен на одной ардуине nano и датчика DHT22, мне он не понравился, врет на два градуса, хочу поменять его на HTU21D, он работает отлично температ и влажность, то и спросил можна переписать, вот и все, а кто не верит то могу сбросить фото видео

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

василий55 пишет:

работает, одна ардуино один екран часы 16,2 на весь екран на две строки часы на 1307, на 433мгц принимает температуру уличную на другой екран работает, но передатчик с улицы построен на одной ардуине nano и датчика DHT22, мне он не понравился, врет на два градуса, хочу поменять его на HTU21D, он работает отлично температ и влажность, то и спросил можна переписать, вот и все, а кто не верит то могу сбросить фото видео

этот код не подошёл?

василий55
Offline
Зарегистрирован: 25.11.2021

ето код передатчика может я ошибаюсь но я так понимаю что нужно его переделать под другой датчик, правильно, в приемнику переделывать ничего не нужно????

василий55
Offline
Зарегистрирован: 25.11.2021

код передатчика

//Подключаем библиотеки
#include <VirtualWire.h>
#include "DHT.h"
//Определяем пин светодиода
const int led_pin = 13;
//Определяем пин передатчика
const int transmit_pin = 12;
//Пин и тип датчика температуры
#define DHTPIN 6 
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// объявляем массив
char dataString [12];
//----------------------------------------------------------------
void setup()
{

  vw_set_tx_pin(transmit_pin);
  vw_set_ptt_inverted(true);
  // скорость передачи бит в секунду 
  vw_setup(2000);      
  pinMode(led_pin, OUTPUT);
  //запуск датчика температуры
  dht.begin();
}

//---------------------------------------------------------------
void loop()
{
  // опрашиваем датчик температуры и влажности
  float h = dht.readHumidity();
  float t = dht.readTemperature();  

  int h1 = (h-(int)h)*100;
  int t1 = (t-(int)t)*100;
  //Формируем буфер
  sprintf(dataString, "/%1d.%1d/%1d.%1d",int(t),t1,int(h),h1); 
  // Включаем светодиод
  digitalWrite(led_pin, HIGH); 
  // Передаем данные
  vw_send((uint8_t *)dataString, 12);
  //Ждем окончания отправки
  vw_wait_tx(); 
  // Выключаем светодиод
  digitalWrite(led_pin, LOW);
  //отдыхаем 10 сек.
    delay(10000);

}

что поправить переписать чтобы работал на HTU21D????

вот в чем вопрос может ктото помочь????

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

василий55 пишет:

код передатчика

//Подключаем библиотеки
#include <VirtualWire.h>
#include "DHT.h"
//Определяем пин светодиода
const int led_pin = 13;
//Определяем пин передатчика
const int transmit_pin = 12;
//Пин и тип датчика температуры
#define DHTPIN 6 
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// объявляем массив
char dataString [12];
//----------------------------------------------------------------
void setup()
{

  vw_set_tx_pin(transmit_pin);
  vw_set_ptt_inverted(true);
  // скорость передачи бит в секунду 
  vw_setup(2000);      
  pinMode(led_pin, OUTPUT);
  //запуск датчика температуры
  dht.begin();
}

//---------------------------------------------------------------
void loop()
{
  // опрашиваем датчик температуры и влажности
  float h = dht.readHumidity();
  float t = dht.readTemperature();  

  int h1 = (h-(int)h)*100;
  int t1 = (t-(int)t)*100;
  //Формируем буфер
  sprintf(dataString, "/%1d.%1d/%1d.%1d",int(t),t1,int(h),h1); 
  // Включаем светодиод
  digitalWrite(led_pin, HIGH); 
  // Передаем данные
  vw_send((uint8_t *)dataString, 12);
  //Ждем окончания отправки
  vw_wait_tx(); 
  // Выключаем светодиод
  digitalWrite(led_pin, LOW);
  //отдыхаем 10 сек.
    delay(10000);

}

что поправить переписать чтобы работал на HTU21D????

вот в чем вопрос может ктото помочь????

 

василий55 не читатель василий55 писатель

#include <Arduino.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <HTU21D.h>
#include <VirtualWire.h>

//Определяем пин передатчика
const int transmit_pin = 12;
// объявляем массив
char dataString [12];

HTU21D myHTU21D(HTU21D_RES_RH12_TEMP14);
 
LiquidCrystal_I2C lcd(0x25,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
 
void setup()
{
  vw_set_tx_pin(transmit_pin);
  vw_set_ptt_inverted(true);
  // скорость передачи бит в секунду 
  vw_setup(2000);      
     
     int counter = 0;
  while (myHTU21D.begin() != true && counter++ < 5)
  {
    delay(1000);
  }
  lcd.init();                      // initialize the lcd 
  lcd.backlight();

}
  
void loop()
{
  float h = myHTU21D.readHumidity();
  float t = myHTU21D.readTemperature();  

  int h1 = (h-(int)h)*100;
  int t1 = (t-(int)t)*100;

 //Формируем буфер
  sprintf(dataString, "/%1d.%1d/%1d.%1d",int(t),t1,int(h),h1); 
  // Передаем данные
  vw_send((uint8_t *)dataString, 12);
  //Ждем окончания отправки
  vw_wait_tx(); 
  
  lcd.setCursor(0,1);
  lcd.print("tem ");
  lcd.print(t);
  lcd.setCursor(8,1);
  lcd.print("vla ");
  lcd.print(h);
  delay(500);
}

 

василий55
Offline
Зарегистрирован: 25.11.2021

большое спасибо все получилось работает, сложу все в корпус выложу фотки