помогите с lcd 1602 и другие вопросы

Katroha
Offline
Зарегистрирован: 28.02.2017

Здравствуйте.

Все сначала раскажу) В машину хочу сделать как бы мини бортового с функциями: температура газа, темп. двигателя , вольтметр, часы, пока все , а там посмотрим...

вот что пока не нравиться:

1. при работе lcd идут моржки надписей , как бы обновления данных с датчиков , как можно устранить?

2. как значение температы округлить к целому числу, точнее сделать просто целое число? вольтметр к десятым ? 

пока так, дальше учусь))

 Вот что накопировал))

#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 6
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress Thermometer1 = {0x28, 0xFF, 0xAA, 0xDB, 0xA2, 0x16, 0x04, 0xCD };  // адрес датчика DS18B20 28FFAADBA21604CD
DeviceAddress Thermometer2 = {0x28, 0xFF, 0xF3, 0x4A, 0xA3, 0x16, 0x05, 0x30 };    // 28FFF34AA3160530
#include <LCD_1602_RUS.h>
LCD_1602_RUS lcd(0x3f, 16, 2);

int analogInput = A6;             //вход для вольтметра
float vin = 0;                   // ВХОДНОЕ ЕАПРЯЖЕНИЕ


void setup()
{ 
   lcd.init();                      // Инициализация lcd 
   lcd.backlight();                 // Включаем подсветку
   lcd.setCursor(2, 0);
   lcd.print(L"Мир земляни!");
   delay(400); 
   
   pinMode(analogInput, INPUT);
 
}

void loop() 
{
  sensors.requestTemperatures(); 
   lcd.init();                      
   lcd.backlight();
  

  lcd.setCursor(0, 0);
  lcd.print(L"");
  lcd.print(sensors.getTempCByIndex(0));
  lcd.print("C");
 
  
  lcd.setCursor(0, 1);
  lcd.print(L"");
  lcd.print(sensors.getTempCByIndex(1));
  lcd.print("C");

  lcd.setCursor(11, 1);
  
  vin = float(analogRead(analogInput))/196;    //подстроичное число для показа вольтметра
  lcd.print("");
  lcd.print(vin);
  lcd.print("v");
 }

 

Katroha
Offline
Зарегистрирован: 28.02.2017

вот видео как моргает 

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

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017
31    // lcd.init();                     
32    // lcd.backlight();

 

Katroha
Offline
Зарегистрирован: 28.02.2017

вот так и думал, походу идет какоето постоянное обновление, спс работает)))

vvadim
Offline
Зарегистрирован: 23.05.2012

void setup()
{ 
   lcd.init();                      // Инициализация lcd 
   lcd.backlight();                 // Включаем подсветку
   lcd.setCursor(2, 0);
   lcd.print(L"Мир земляни!");
   delay(1000); 
   lcd.clear();
   pinMode(analogInput, INPUT);  /// можно убрать 
}
Katroha
Offline
Зарегистрирован: 28.02.2017

да, так и сделал)) спс.

Katroha
Offline
Зарегистрирован: 28.02.2017

2. как значение температы округлить к целому числу, точнее сделать просто целое число? вольтметр к десятым ? 

bwn
Offline
Зарегистрирован: 25.08.2014

lcd.print(vin, 1);

afen
Offline
Зарегистрирован: 24.04.2017
округлим температуру lcd.print(round(sensors.getTempCByIndex(0)));
преобразуем напряжение
String formatVolt(float volt) {
    int precision = 1; // количество знаков после запятой
    int whole = (int)volt;
    int fractional = (int)(( volt - floor(volt)) * pow(10, precision) );
    return String(whole)+"."+String(fractional)+"v";
}

а чтоб дисплей не моргал делал так:

struct Disp {
  String s1;
  String s2;};
Disp Display;   //двухстрочный массив для вывода на экран
Disp lastDisplay; //если строки изменились то выводим на экран


void loop() {
...................
//например
Display.s1 = "T="+String(round(sensor.getTempCByIndex(0))))+"C";
Display.s2 = "U="+formatVolt(analogRead(pinVolt); 
......................
if (Display.s1.compareTo(lastDisplay.s1)!=0) {lcd.setCursor(0,0); lcd.print(Display.s1); lastDisplay.s1 = Display.s1;}
 if (Display.s2.compareTo(lastDisplay.s2)!=0) {lcd.setCursor(0,1); lcd.print(Display.s2); lastDisplay.s2 = Display.s2;}
}

 

 

Katroha
Offline
Зарегистрирован: 28.02.2017

все получилось, всем спасибо!!) буду дальше что-то мудрувать))

artkalyanov
Offline
Зарегистрирован: 28.04.2017

 

Arduino: 1.8.2 (Windows 10), Плата:"Arduino Nano,
C:\Users\1\AppData\Local\Temp\Rar$DIa0.033\CO2_1602_I2C\CO2_1602_I2C.ino: In function 'void get_co2()':
CO2_1602_I2C:104: error: expected ';' before 'cd'
     1  cd.setCursor(0, 1);
        ^
exit status 1
expected ';' before 'cd'
 

помогите с ошибкой

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

artkalyanov пишет:

 

Arduino: 1.8.2 (Windows 10), Плата:"Arduino Nano,
C:\Users\1\AppData\Local\Temp\Rar$DIa0.033\CO2_1602_I2C\CO2_1602_I2C.ino: In function 'void get_co2()':
CO2_1602_I2C:104: error: expected ';' before 'cd'
     1  cd.setCursor(0, 1);
        ^
exit status 1
expected ';' before 'cd'
 

помогите с ошибкой

верните l на место )))

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

artkalyanov пишет:
помогите с ошибкой

Компилятор говорит перед строчкой cd.setCursor(0, 1); горе-программист потерял ;

artkalyanov
Offline
Зарегистрирован: 28.04.2017
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>;
#include <Encoder.h>
#include "Timer.h"
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN            6
#define DHTTYPE           DHT11     // DHT 11
//#define DHTTYPE           DHT22     // DHT 22 (AM2302)
DHT_Unified dht(DHTPIN, DHTTYPE);
SoftwareSerial mySerial(4, 5); // 4 - к TX сенсора, 5 - к RX
byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
unsigned char response[9];
int tem;
int hum;
// Объект класса для дисплея
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define ENCODER_DO_NOT_USE_INTERRUPTS
Encoder myEnc(2, 3); //подключение энкодера
 
int ppm;
int flag=0;
Timer t;
void setup()
{
  Serial.begin(9600);
  mySerial.begin(9600);
  dht.begin();
  sensor_t sensor;
 
pinMode(7,OUTPUT);
digitalWrite(7,HIGH);
 // инициализация LCD
 lcd.begin();
 // темный фон, светлые буквы
 lcd.backlight();

t.every(15000, get_co2);
t.every(2000, get_temp);
}
long criticalppm = -999;
void loop()
{
t.update();
 
  long newppm = myEnc.read();
    if (newppm != criticalppm) {
    criticalppm = newppm;
    lcd.setCursor(0, 1);
    lcd.print("                ");
  }
    lcd.setCursor(0, 1);
    lcd.print("CO2=");lcd.print(ppm);
    lcd.setCursor(10, 1);
    lcd.print("V:");lcd.print(criticalppm);
    lcd.setCursor(0, 0);
    lcd.print("T=");lcd.print(tem);lcd.print(" C");
    lcd.setCursor(9, 0);
    lcd.print("H=");lcd.print(hum);lcd.print(" %");
   
  if (criticalppm <= ppm)
    digitalWrite(7,LOW);
  else digitalWrite(7,HIGH);
}
//=================================================
void get_co2()
{
  mySerial.write(cmd, 9);
  memset(response, 0, 9);
  mySerial.readBytes(response, 9);
  int i;
  byte crc = 0;
  for (i = 1; i < 8; i++) crc+=response[i];
  crc = 255 - crc;
  crc++;
  if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) {
    Serial.println("CRC error: " + String(crc) + " / "+ String(response[8]));
  } else {
    unsigned int responseHigh = (unsigned int) response[2];
    unsigned int responseLow = (unsigned int) response[3];
    ppm = (256*responseHigh) + responseLow;
        Serial.println(ppm);
   1  cd.setCursor(0, 1);
    lcd.print("                ");
  }
}
//=================================================
void get_temp(){
    sensors_event_t event; 
  dht.temperature().getEvent(&event);
tem=event.temperature;
  dht.humidity().getEvent(&event);
hum=event.relative_humidity;
    lcd.setCursor(0, 0);
    lcd.print("                ");
}

вроде так и написанно

artkalyanov
Offline
Зарегистрирован: 28.04.2017

   1  cd.setCursor(0, 1);

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

artkalyanov пишет:

   1  cd.setCursor(0, 1);

 ну нах 1.

напиши просто cd.setCursor(0, 1);  /  но скорее всего lcd.setCursor(0, 1);

А компилятор говорит. если горе программист втулил зачем-то 1, то надо воткнуть и ;

artkalyanov
Offline
Зарегистрирован: 28.04.2017

Спасибо помогло....правильно lcd

Katroha
Offline
Зарегистрирован: 28.02.2017

здраствуйте всем!!!

обратно нужна ваша помощь)

написал, ну как написал, накопировал скетч который выводит на екран температуру, вольтметр, часы (блок реального времени), включен или выключен газ. все вроди работает но есть одно но. Ранее был написан скетч для пульта магнитолы и 3 месяца была практика, которая показала отличий функционал. И вот установил экран в авто и соединив 2 скетча в 1 вылезли некоторые косяки, а именно не кожное нажатие отрабатываеться (особенно громкость), время сежду нажатиями.

Подскажите как можно избавиться от этих косяков или как упростить скетч чтоб уменьшить цикл.

зарание спасибо))

#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include "RTClib.h"
RTC_DS1307 RTC;
#define ONE_WIRE_BUS 5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress Thermometer1 = {0x28, 0xFF, 0xAA, 0xDB, 0xA2, 0x16, 0x04, 0xCD };  // адрес датчика DS18B20 28FFAADBA21604CD
DeviceAddress Thermometer2 = {0x28, 0xFF, 0xF3, 0x4A, 0xA3, 0x16, 0x05, 0x30 };    // 28FFF34AA3160530
DeviceAddress Thermometer3 = {0x28, 0xFF, 0x69, 0xCF, 0xA2, 0x16, 0x04, 0x97 };    // 28FFF34AA3160530

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f, 16, 2);
#if defined(ARDUINO) && ARDUINO >= 100
#define printByte(args)  write(args);
#else
#define printByte(args)  print(args,BYTE);
#endif

int analog=A0;                        //пульт руль


int inPin = 3;                       //газ
int analogInput = A6;                //вход для вольтметра
float vin = 0;                       // ВХОДНОЕ ЕАПРЯЖЕНИЕ
  
                  
                                     
                                     //Символ градуса
byte grad[8] = {
  0b01100,
  0b10010,
  0b10010,
  0b01100,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};




void setup()
{ 
  
     pinMode(8, INPUT);     
     pinMode(9, INPUT); 
     pinMode(10, INPUT);  
     pinMode(11, INPUT);  
     pinMode(12, INPUT);  


     
  lcd.init();                       // Инициализация lcd 
   lcd.backlight();                 // Включаем подсветку
   pinMode(analogInput, INPUT);
   lcd.createChar(0, grad);           //Символ градуса
   lcd.setCursor(0, 0);               //курсор
   lcd.print("Hello rascals!:)");     //надпись при включении
   delay(3000);                       //задержка
   lcd.clear();                       //очистить екран


  if (! RTC.isrunning()) 
  {
                   // строка ниже используется для настройки даты и времени часов
               //    RTC.adjust(DateTime(__DATE__, __TIME__));
  }

 
 }
void loop() 
{  
   analog=analogRead(14);                  //считываем сигнал с пина АЦП 
                  
     if(analog>750&&analog<820)              // k1 - up
     {   
     
       pinMode(8, OUTPUT);  
       digitalWrite(8,LOW); 
       delay(50);
       pinMode(8, INPUT); 
       delay(100); 
        }      
          
      if(analog>300&&analog<400)           //k2 - right
       {  
      
       pinMode(9, OUTPUT); 
       digitalWrite(9,LOW); 
       delay(50);
       pinMode(9, INPUT); 
       delay(100);

        }

     if(analog>200&&analog<290)            //k3  down
     { 
    
       pinMode(10, OUTPUT);  
       digitalWrite(10,LOW);
       delay(50); 
       pinMode(10, INPUT);
       delay(100);
      
     } 
   
    
      if(analog>100&&analog<190)      //k4     vol+
     { 
                                     // для енкодера
       pinMode(11, OUTPUT);
       pinMode(12, OUTPUT); 
       digitalWrite(11, HIGH);
       delay(4);
       digitalWrite(12, HIGH);
       delay(4);
       digitalWrite(11,LOW);    
       delay(4);
       digitalWrite(12,LOW);  
       delay(4);
       pinMode(11, INPUT);
       pinMode(12, INPUT); 

     } 
                  
    if(analog>=0&&analog<80)         //k5  vol-
     { 
                                     // для енкодера

       pinMode(12, OUTPUT);
       pinMode(11, OUTPUT); 
       digitalWrite(12, HIGH);
       delay(4);
       digitalWrite(11, HIGH);
       delay(4);
       digitalWrite(12,LOW);    
       delay(4);
       digitalWrite(11,LOW);  
       delay(4);
       pinMode(12, INPUT);  
       pinMode(11, INPUT);  

     } 
                                                //вольтметр
  vin = float(analogRead(analogInput))/18.3;    //подстроичное число для показа вольтметра
  lcd.setCursor(11, 1);
  lcd.print("");
  lcd.print(vin, 1);
  lcd.print("V");
                                              //температура 1  
 sensors.requestTemperatures();  
                                                 
  lcd.setCursor(0, 0);
  lcd.print("");
  lcd.print(round(sensors.getTempCByIndex(0)));
  lcd.printByte(0);
  lcd.print("C");
                                            //температура 3 
lcd.setCursor(0, 1);
  lcd.print("");
  lcd.print(round(sensors.getTempCByIndex(2)));
  lcd.printByte(0);
  lcd.print("C");

                                                 //часы
  DateTime now = RTC.now();
  DateTime future (now.unixtime() + 7 * 86400L + 30);
  lcd.setCursor(11, 0);
  lcd.print(future.hour(), DEC);
  lcd.print(':');
  lcd.print(future.minute(), DEC);


                                                  //газ

  if (digitalRead(inPin))
  {                                            
  lcd.setCursor(6, 0);
  lcd.print("GAZ");
  lcd.setCursor(5, 1);
   lcd.print("");
  lcd.print(round(sensors.getTempCByIndex(1)));      //температура 2
  lcd.printByte(0);
  lcd.print("C");   
  }
 else
  {  
  lcd.setCursor(6, 0);
  lcd.print(" - ");
 
   } 
 }

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Katroha пишет:

Подскажите как можно избавиться от этих косяков или как упростить скетч чтоб уменьшить цикл.

Вы что думаете, что упрощение вам поможет. Я за усложнение , глубже надо копать Си,Си++ и так далее и будет вам счастье.

Katroha
Offline
Зарегистрирован: 28.02.2017

совершенно верно говорите и сам думаю о развитии но ездить то не удобно...))

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
/*Class_Lcd_Keys.ino
*/
class Cl_Sys;// предварительно объявить о создании класса Sys для послед подключения к нему
//-----Cl_an_btn5-----------------
class Cl_an_btn5 {
    byte pin ; // нога аналог клавиатуры
    void (*Do_right)(), (*Do_up)(), (*Do_down)(), (*Do_left)(), (*Do_select)();
    byte read() {
      const int Right  =  60; // ниже = нажата кнопка  Right
      const int Up     = 200; // ниже = нажата кнопка  Up
      const int Down   = 400; // ниже = нажата кнопка  Down
      const int Left   = 600; // ниже = нажата кнопка  Left
      const int Select = 800; // ниже = нажата кнопка  Select
      static int a ;
      a = analogRead(pin);
      if (a < Right) return 1;
      else if (a < Up) return 2;
      else if (a < Down) return 3;
      else if (a < Left) return 4;
      else if (a < Select) return 5;
      else return 0;
    }
    byte abtn, abtn_old; // старый и новый номер нажатой клавиши
    bool bounce_abtn = 0; // антидребезговый флаг
    uint32_t past = 0 ; // временной отчет
  public:
    // указатель на следующий элемент
    Cl_an_btn5 *pnt;
    // конструктора
    Cl_an_btn5(Cl_Sys *Sys, byte _pin, void (* _Do_right)(), void (* _Do_up)(), void (* _Do_down)(), void (* _Do_left)(), void (* _Do_select)());
    // setup()
    void setup() {
      if (this->pnt != NULL) this->pnt->setup();
      abtn = read() ; // прочитать реальное значение на выводе
    }
    // loop()
    void loop() {
      if (this->pnt != NULL) this->pnt->loop();
      if (! bounce_abtn && abtn != read()) { // если прошел фронт изм на выводн
        bounce_abtn = 1;                     // выставить флаг
        past = millis();                     // сделать временую засветку
      }
      else if ( bounce_abtn && millis() - past >= 5 ) { // если прошло антидребезговое время
        bounce_abtn = 0;      // то снять флаг
        abtn_old = abtn ;
        abtn = read() ; // прочитать реальное значение на выводе
        if (abtn_old == 0) {
          if (abtn == 1) Do_right()  ;
          if (abtn == 2) Do_up()     ;
          if (abtn == 3) Do_down()   ;
          if (abtn == 4) Do_left()   ;
          if (abtn == 5) Do_select() ;
        }
      }
    }
};
//-----Cl_Sys-----------------
class Cl_Sys {
  public:
    Cl_an_btn5 *Start_btn5 = NULL;
    Cl_Sys() {}
    // setup()
    void setup() {
      for (Cl_an_btn5 *i = Start_btn5; i != NULL; i = i->pnt) i->setup();
    }
    void loop() {
      for (Cl_an_btn5 *i = Start_btn5; i != NULL; i = i->pnt) i->loop();
    }
} Sys;
//---------описание классов------------
Cl_an_btn5::Cl_an_btn5(Cl_Sys *Sys, byte _pin, void (* _Do_right)(), void (* _Do_up)(), void (* _Do_down)(), void (* _Do_left)(), void (* _Do_select)())
  : pin(_pin), Do_right(_Do_right), Do_up( _Do_up), Do_down(_Do_down), Do_left(_Do_left), Do_select(_Do_select) {
  pnt = Sys->Start_btn5;
  Sys->Start_btn5 = this;
}
//----------Компоновка---------------------
#include <LiquidCrystal.h>
LiquidCrystal lcd(/*RS*/8,/*Enable*/9,/*D4*/ 4,/*D5*/5,/*D6*/6,/*D7*/7);
void Do_right () {
  lcd.setCursor(10, 1);
  lcd.print ("Right ");
}
void Do_up    () {
  lcd.setCursor(10, 1);
  lcd.print ("Up    ");
}
void Do_down  () {
  lcd.setCursor(10, 1);
  lcd.print ("Down  ");
}
void Do_left  () {
  lcd.setCursor(10, 1);
  lcd.print ("Left  ");
}
void Do_select() {
  lcd.setCursor(10, 1);
  lcd.print ("Select");
}
Cl_an_btn5 *A_Btn = new Cl_an_btn5(&Sys , /*пин*/A0,
                                   /*обработчик Right*/ Do_right  ,/*обработчик Right*/Do_up,
                                   /*обработчик Down*/  Do_down   ,/*обработчик Left*/ Do_left,
                                   /*обработчик Select*/Do_select);
//-----------Main()-----------------------
void setup() {
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("LCD Key Shield");
  lcd.setCursor(0, 1);
  lcd.print("Press Key:");

  Sys.setup();
}

void loop() {
  Sys.loop();
}

Вот присмотритесь к этому.

bwn
Offline
Зарегистрирован: 25.08.2014

qwone, эдак Вы всех неофитов в кардиологию отправите.)))

Katroha, вы пример, вышепредставленный, изучите и постарайтесь понять.
А основной ваш косяк в том, что все запихали в loop и долбитесь в разные функции на каждом проходе. И все бы опять ничего, если бы не поганая библиотека Dallas Temperature, в которой прямо прописан delay(750), вот во время этого факенделая ничего и не считывается, а МК занимается работой сотрудников думы, сидит и нихрена не делает.(((
Для разделения дел во времени почитайте блог одного уважаемого члена сообщества. Для ликвидации DT библиотеки и экономии 2К памяти, топик не менее уважаемого.

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

bwn пишет:

qwone, эдак Вы всех неофитов в кардиологию отправите.)))

Я вообще удивляюсь как они на таких этажерках летают.

bwn
Offline
Зарегистрирован: 25.08.2014

qwone пишет:

bwn пишет:

qwone, эдак Вы всех неофитов в кардиологию отправите.)))

Я вообще удивляюсь как они на таких этажерках летают.

Не может, но летает. А самое смешное, что с того момента принципиально ничего не изменилось.)))

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

bwn пишет:
Не может, но летает. А самое смешное, что с того момента принципиально ничего не изменилось.)))

Летает. @_@. Да оно больше падает, ломается и чинится,чем делает вид, что летает. Все поменялось принципиально. Вот только слепые, глухие и тупые этого не видят. Или же им мозг полностью засрали.

bwn
Offline
Зарегистрирован: 25.08.2014

Принципиально, это когда убрали крылья, поставили винт сверху и получили вертолет, или набили трубу топливом и получили ракету. Это принципиально. Для самолетов, появились новые конструкционные материалы (которых на тот момент просто не существовало), набрали статистику, подвели математическую базу, но вертолетом он от этого не стал (корпус, крылья, двигатель в продольной плоскости и все сопутствующие данной конструкции ограничения).

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Принципиально это когда не убрали крылья, а когда безопасность полетов возросла. Причем подымали эту безопасность на каждом этапе, от идеи, преектирования, до эксплуатации. Вот так и с проектированием программ. Ведь почему появились языки высокого уровня, а потом и они усложнились. Это ведь не потому ,что программисты сектанты какие-то, а потому что так лучше проще и надежнее создавать программы. А тут на Ардуине дали кусок ткани, рейки и моток веревки и лети наш дорогой Икар и не падай возле наших глаз.

bwn
Offline
Зарегистрирован: 25.08.2014

qwone пишет:

А тут на Ардуине дали кусок ткани, рейки и моток веревки и лети наш дорогой Икар и не падай возле наших глаз.

Так ведь никто и никогда не пытался позиционировать Ардуино как профессиональное средство разработки. Конструктор для домашних поделок и ничего более, ошибка в программе или схемотехнике кроме разочарования ничего за собой не влечет.

vvadim
Offline
Зарегистрирован: 23.05.2012

qwone пишет:

bwn пишет:
Не может, но летает. А самое смешное, что с того момента принципиально ничего не изменилось.)))

Летает. @_@. Да оно больше падает, ломается и чинится,чем делает вид, что летает. Все поменялось принципиально. Вот только слепые, глухие и тупые этого не видят. Или же им мозг полностью засрали.

просто как в церкви каких то новых проповедников послушал))))

vvadim
Offline
Зарегистрирован: 23.05.2012

bwn пишет:

Так ведь никто и никогда не пытался позиционировать Ардуино как профессиональное средство разработки. Конструктор для домашних поделок и ничего более, ошибка в программе или схемотехнике кроме разочарования ничего за собой не влечет.

на 100% поддержал)))

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

vvadim пишет:
на 100% поддержал)))
Может сразу покажем серьезный код. Народ еще больше разочаруется. Ведь для чего народ парится на Ардуине. Ради разочарования.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

qwone пишет:

Ведь для чего народ парится на Ардуине. Ради разочарования.

  

Katroha
Offline
Зарегистрирован: 28.02.2017

bwn пишет:

А основной ваш косяк в том, что все запихали в loop и долбитесь в разные функции на каждом проходе.

Вот про это и думал. Просто с разных скетчей делал один, вот такое и получилось, а как по другому хз.
Спасибо за ссылки, буду изучать. Думаю все что связано с lcd отправить как-бы в один loop, а кнопки от магнитолы у второй? Ну и избавиться от библиотеки ДалласТемп.

Sanyaba
Sanyaba аватар
Offline
Зарегистрирован: 27.07.2015

Katroha пишет:

вот так и думал, походу идет какоето постоянное обновление, спс работает)))

еще будет моргать если в коде loop есть

lcd.clear();

 

Sanyaba
Sanyaba аватар
Offline
Зарегистрирован: 27.07.2015

Katroha пишет:
Ну и избавиться от библиотеки ДалласТемп.

http://arduino.ru/forum/programmirovanie/pochistil-sketch-primera-raboty-s-ds18b20-iz-bibly-oneware?page=3#comment-280218

*в 19 строке кода вместо 100 нужно поставить 1000

Katroha
Offline
Зарегистрирован: 28.02.2017

От библиотеки не избавлялся, а вот из цикла вынес датчики температуры и вольтметр. Теперь пульт к магнетоле работает отлично и остальное без замечаний. Спасибо!!!))

Katroha
Offline
Зарегистрирован: 28.02.2017

Появился новый вопрос))

Хотел сделать програмную регулировку яркости подсвети LCD1602? скетч написал, тестером проверил с пина выходит 5в. , а при подключении к экрану подсветка светит только в половину яркости, тестер показывает 2.5в., резик в экрани стоит всего на 100Ом.

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

Спасибо.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Я надеюсь, транзистор не забыли поставить?

arduinec
Offline
Зарегистрирован: 01.09.2015

Katroha пишет:

Вчем прикол?

Пин не может отдавать ток более 40 мА.

Katroha
Offline
Зарегистрирован: 28.02.2017

Как раз без него и делал. В уроках про светодиод подключались напрямую.
Буду искать, учить. Спасибо.