Мобалка в авто

TYZ_lion
Offline
Зарегистрирован: 17.01.2020

Доброго вам времени суток. Очень прошу помощи в корректировке кода. сам уже всю голову сломал и весь интернет истоптал.

Имеется оборудование:

1. Arduino MEGA 2560

2. Sim800L

3. Дисплей 1,3' sh1106 i2c

ну и клавиатура. 

не могу вывести данные на этот дисплей с Liqid krystal все работает.

код во вложении. Заранее спасибо!!!

#include <Arduino.h>
#include <SoftwareSerial.h>
#include<String.h>
#include <U8g2lib.h>
#include <Wire.h>
#ifdef U8X8_HAVE_HW_I2C
#endif
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
SoftwareSerial SIM800(12, 13);                                              // These pins are connected to GSM module(  RX, TX )



String number = "";

String action = "WT";                 //String codes: RC =Receive call, RM= Receive msg, SC= Send calll, SM= Send message, WT= Wait

// Receive sms Strings
String Response = "";
String sms = "";
String Type;
String Caller_id;
String Text;
String SP_name = "";

char character;
char quote = 0x22;


// Global Flags
bool Send_m = false;
bool sms_Receive_mode_off = true;
bool Receive_mode = false;
bool msg_Receive = false;
bool time_registered = false;
bool msg_fetched = false;
bool on_call = false;
bool start_Receive = false;
bool flag = true;

int sec, minutes;   // Clock variables
long c_start;
long c_time;

int i = 0;

int indexOfQuotes[10];


double time_start;
double time_current;
double operational_time;



/********* Keypad Variables**********/
int r1 = 14;
int r2 = 15;
int r3 = 16;
int r4 = 17;
int c1 = 18;
int c2 = 19;
int c3 = 2;
int c4 = 3;
int colm1;
int colm2;
int colm3;
int colm4;
char value;
//
char num1;


void setup()
{
  Serial.begin(9600);
  Serial.println("GSM startrd");
  SIM800.begin(9600);
  SIM800.setTimeout(2000);
  Serial.setTimeout(2000);
  initilise();
  u8g2.begin();
  u8g2.setFont(u8g2_font_6x10_tr);
  get_SP();
}


void loop()
{
  Serial.println("Action: " + action);                      //Reports it current mode of working

  while (action == "WT")                                    // Its wait for SMS and Calls in this loop
  {
    if (sms_Receive_mode_off)                                //So, This turns on the SMS recieve mode
    { delay(1000);
      On_sms_Receive_mode();
    }

    if (flag)
    {
      Serial.println("Receive_ready");
      flag = false;
      print_head("Connected to:");                           // Service provide name is printed on LCd
      print_content(SP_name);
      clear_Serial();
    }


    if (Receiving_on())                                       // FINALLY, the module is set to receive, Receive_on will beocome true in case msg or call arrives
    {
      Extract_type();
    }

    else
    { // In case of no reciving, update the current signal strength
      update_signal_strength();
      get_request();                          //  Or, check if user pressed any button for callling or SMS
    }
  }

  while (action == "SM")                                      // Sending Msg action
  {
    Serial.println("Enter number to message");
    print_head("Send SMS to");
    number = Take_input();                                     // Take input through swith matrix
    //LCD print for Send message
    bool success = send_sms(number);
    if (success)                                               // If sucessful go to wait state otherwise send again
    {
      action = "WT";
    }
    flag = true;
  }

  while (action == "SC")                                       //Sending call action, similar process as above
  {
    print_head("Enter Call num");
    Serial.println("Enter number to call");

    number = Take_input();


    if (valid_number())                                      // Check number is 10 digit long
    {
      print_head("Calling");
      print_content(number);
      delay(1000);

      send_call(number);

      print_head("On line with");
      print_content(number);
      delay(1000);
      clear_Serial();
      if (on_call)
      {
        terminate_call(); // Waits here till the user is on call
      }
    }

    action = "WT";
    flag = true;
  }

  while (action == "RC")                                      // Recive call action
  {
    Serial.println("Press * to pick up or # to terminate");
    print_head("Call from");
    print_content(Caller_id);
    clear_Serial();
    WaitForPickup();
    //incall
    if (on_call)                                               // Waits here till the user is on call
    {
      terminate_call();
    }
    Serial.println("Call response Recieved");
    action = "WT";
    flag = true;
  }

  while (action == "RM")                                       // Recieve SMS action
  {
    Show_sms();
    action = "WT";
    flag = true;
  }
}

/*
   Function to get the service provider(SP) name
   Sets a Global varible: SP_name
*/

void get_SP (void)
{ bool got_it = false;
  delay(1000);
  SIM800.println("AT");
  delay(500);
  print_head("Connecting GSM");
  while (!( SP_name.indexOf('"') > 0))
  { if (GSM_operational())
    {
      SIM800.println("AT+COPS?");     //AT command for getting serivce provider name
      SIM800.println();
    }

    delay(1000);

    while (SIM800.available())
    {
      char character = SIM800.read();
      SP_name.concat(character);
    }

  }
  // Extracton process
  SP_name = (SP_name.substring(SP_name.indexOf('"') + 1, SP_name.lastIndexOf('"')));
  Serial.println("Connected to: " + SP_name);

}



// Fuciton to print current signal strength on lcd

void update_signal_strength (void)
{ String Network;
  long Strength;
  SIM800.println("AT+CSQ");
  SIM800.println();

  delay(500);
  while (SIM800.available())
  {
    char character = SIM800.read();
    Network.concat(character);
  }

  Network = Network.substring(Network.indexOf(':') + 2, Network.indexOf(','));
  Strength = Network.toInt();                          // Strength Int value here

  Strength = (Strength * 100 / 31);                    // MAX strength= 31
  u8g2.setCursor(0, 15);
  u8g2.print(int(Strength));
  u8g2.print('%');
}

//It recives a the char value of key pressed and stores it into
void get_request (void)
{
  value = Return_Keypad_Values();
  event(value);
}

// Select the apt mode as per the input
void event(char func)
{
  switch (func)
  {

    case 'A':
      action = "SC";                 //Send call
      break;
    case 'B':
      action = "SM";                 // Send Message
      break;
    //case 'C':                       // you can use this case for any purpose
    //   receive_call();
    //   break;
    default:
      action = "WT";                 // Wait for response
      break;
  }
}



/*
   Input: (string:num,)
   Output bool( t=sent f=unsent)
   Function to send sms to number
*/
bool send_sms (String number)
{
  delay(1000);
  SIM800.println("AT");
  delay(500);
  if (GSM_operational())
  {
    SIM800.println("AT+CMGF=1");
    delay(500);
  }

  if (GSM_operational())
  {
    SIM800.print("AT+CMGS=\"");                           // Send the SMS number
    SIM800.print(number);
    SIM800.println("\"");

    delay(1000);
    SIM800.print("GSM bot functonal");                     // SMS BODY here in case u want change
    // SIM800.print(i);
    delay(500);

    SIM800.write(0x1A);
    SIM800.write(0x0D);
    SIM800.write(0x0A);
    Serial.println("SMS sent");

    print_head("SMS Sent  to");
    print_content(number);
    delay(2000);

    return (true); //SMS sent succussfuly
  }
  return (false);  // Failed attempt
}

/*
   Input: (string:num,)
   Output bool( t=sent f=failed)
   Function to send call to number
*/
bool send_call (String number)
{

  SIM800.println("AT");
  delay(500);

  if (GSM_operational())
  {
    //Number dialing
    Serial.println("Calling to :" + number);
    print_head("Calling to");
    print_content(number);
    SIM800.println("ATD" + number + ";");              // AT command for dialing up the number
    SIM800.println();
    on_call = true;
    return (true);
  }
  return (false);
}


// This is to switch on the messaging mode of Gsm
void On_sms_Receive_mode (void)
{
  SIM800.print("ATE0");
  delay(500);

  if (GSM_operational())
    SIM800.print("AT");
  delay(500);

  if (GSM_operational())
    SIM800.print("AT+CMGF=1");                               // Setup in msging mode
  delay(500);

  if (GSM_operational())
  {
    SIM800.print("AT+CNMI=2,2,0,0,0\r" );                   //Prints the msg on serial as soon as it arrives
    delay(500);

    while (SIM800.available())
    {
      char response = SIM800.read();
      Serial.println(response);
    }

    Serial.println("Receive mode On");
    sms_Receive_mode_off = false; //turn it on off
  }
}


/*
   Input: none
   Output: True: A response( call or sms) incoming, Or false

*/
bool Receiving_on (void)
{
  bool  Response_available = false;

  if (SIM800.available())
  {
    while (!halt_fetch())                         //In case of incoming recieve until halt_fetch() gives true
    {
      while (SIM800.available())
      {
        if (!time_registered)                     //Capture the time of start of message receiving
        {
          time_start = millis();
          time_registered = true;
        }
        char character = SIM800.read();
        Response.concat(character);
        Serial.print(character);                   // Store as a string
      }

    }

    Serial.println("Response Received");         //Looks like we got something
    Response_available = true;
    msg_fetched = false;
    flag = true;

  }
  return (Response_available);
}

/*
  The function is created to halt or to indicate the end of receiving
  It does that by a timeout of 3sec or Response Text limit of 500 characters
  Input: none
  Output: Boolean, T= halt fetching F= Wait for message

*/
bool halt_fetch (void)
{
  bool halt = false;

  if (time_registered)
  {
    time_current = millis();
    operational_time = time_current - time_start;
  }

  if (operational_time > 3000 || Response.length() == 200 )                   // Halt condition
  {
    halt = true;
    operational_time = 0;
  }
  return halt;
}


/*
  It extracts the Response and caller id
  It does that by quotes position.
  Caller id is between first and second quotes
  While, Text message is after last quotes
*/

void Extract_type (void)
{
  if (valid_input())
  {
    Serial.println("Valid respone");
    extract();


    //                  Serial.println(Response);                           //In case u want to see everything incoming
    //                  Serial.println("Type: ");
    //                  Serial.print(Type);
    //                  Serial.println("Caller id : ");
    //                  Serial.println(Caller_id);
    //                  Serial.println("Text: ");
    //                  Serial.println(Text);
    callORsms();
    Serial.print(Caller_id);
  }

  time_registered = false;

  Response = "";                                         //Clear string for refresh incoming

}


/*
   Checks the validity condition,
   True: Its call or msg Resonse
   False: it is some junk
*/
bool valid_input (void)
{
  bool validity;

  validity = (( Response.indexOf('+') > 0) && (Response.indexOf('"') > 0 )); //If the reponse has these two thing that means it is a 'real' response

  if (!validity)
  {
    Serial.println("invalid input");

  }

  return (validity);

}

// Find the indexes of all the quotes in the stirng and sets them up in gloablevariable: indexOfQuotes[index]
void extract(void)
{
  int Length, i, index = 0;

  Length = Response.length();
  for (i = 0; i <= Length; i++)
  {
    if (Response.charAt(i) == quote)
    {
      indexOfQuotes[index] = i;
      index++;
    }
  }

  Type = Response.substring(1, indexOfQuotes[0]);
  Caller_id = Response.substring(indexOfQuotes[0] + 1, indexOfQuotes[1]);
  Text = Response.substring(indexOfQuotes[5] + 3);
  Serial.println("Extracted");
}


// Determine weather the response is of call or sms
void callORsms (void)
{
  if ( Type.indexOf("LIP") > 0)                   //Call string consist this( +CLIP)
  { action = "RC";
    Serial.println("Call from: ");
  }
  else if (Type.indexOf("MT") > 0 )              // Msg stirng consist (+CMT)
  { action = "RM";
    Serial.println("Message from: ");
  }
}



// Waits till customer press * or #
void WaitForPickup (void)
{
  char key;
  bool user_wait = true;  //default state
  while (user_wait)
  { user_wait = check_termination();

    key = Return_Keypad_Values();
    if (key == '*')                       //picking up reponse
    {
      SIM800.println("ATA");
      SIM800.println();
      Serial.println("Call picked up");
      print_head("Call picked up");
      print_content(Caller_id);
      delay(1000);
      user_wait = false;
      on_call = true;
    }

    if (key == '#')                           //Termination action
    {
      SIM800.println("ATH");
      SIM800.println();
      Serial.println("Call Terminated");
      print_head("Call Terminated");
      delay(1000);
      print_content(Caller_id);
      on_call = false;
      user_wait = false;
    }

  }

}


/*
   This function is used after two user get connected on a call
   It waits '#' to terminate or 'NO CARRIER' on serial monitor
   It updates clock untill waiting
 * */

void terminate_call (void)
{
  char key;
  bool user_wait = true;  //default state
  start_clock();
  while (user_wait)
  {

    user_wait = check_termination();

    key = Return_Keypad_Values();

    if (key == '#')
    {
      SIM800.println("ATH");   //Termination action
      SIM800.println();
      Serial.println("Call Terminated");
      print_head("Call Terminated");
      delay(1000);
      print_content(Caller_id);
      user_wait = false;
    }

    else
    {
      update_clock();
    }

  }
  on_call = false;
}

// Function to start a clock
void start_clock (void)
{
  u8g2.clearBuffer();
  c_start = millis();
  sec = 0;
  minutes = 0;
  u8g2.print("On call");
}

// Function to update the value as arduino internal clock

void update_clock (void)
{
  long current = millis();


  if (current - c_start > 1000)
  {
    sec++;
    c_start = current;
  }

  if (sec > 59)
  {
    minutes++;
    sec = -0;
  }

  u8g2.setCursor(10, 30);

  if (minutes < 10)
  {
    u8g2.print('0');
  }
  u8g2.print(minutes);
  u8g2.print(':');
  if (sec < 10)
  {
    u8g2.print('0');
  }
  u8g2.print(sec);
}

// Fuction to Show sms on a LCD
void Show_sms (void)
{
  print_head("SMS from");
  print_content(Caller_id);
  char key;


  // Enhance modularity
  bool user_wait = true;
  while (user_wait)
  { key = Return_Keypad_Values();
    if (key == '*')
    {
      print_head(Text.substring(0, 16));                               // This can scroll SMS
      print_content(Text.substring(16, 32));
      delay(2000);
      print_head(Text.substring(16, 32));
      print_content(Text.substring(32, 48));
      delay(2000);      //A scroll fuction can be made
      Serial.println(Text);
      user_wait = false;
    }

    if (key == '#')
    {
      print_head("OK");
      Serial.println("MSG Terminated");
      delay(500);
      user_wait = false;
    }

  }
}


//True if starkey is pressed
bool Starkey_pressed (void)
{ char key;
  key = Return_Keypad_Values();
  return (key == '*');
}

//True if Hashkey is pressed
bool Hashkey_pressed (void)
{ char key;
  key = Return_Keypad_Values();
  return (key == '#');
}

//Check if 'NO CARRIER' is printer on Serial monitor

bool check_termination (void)
{
  bool check = true;
  String listen_no = "";

  while (SIM800.available())
  {
    char data = SIM800.read();
    Serial.print(data);
    listen_no.concat(data);
  }

  if (listen_no.indexOf("CAR") > 0) // I check for only CAR
  {
    check = false;
  }

  return check;
}


// A Fuciton to check the lenth of number calling should be 10 + ('+91' country code) =13
bool valid_number (void)
{
  bool valid = false;
  if (number.length() == 13)  // condition here
  {
    valid = true;
  }
  else
  { print_head("Invalid input");
    delay(1000);
  }
  return valid;
}

//Essential command to determine the state of GSM module
bool GSM_operational(void)
{
  int count = 0;
  bool Status = false;
  SIM800.println();
  while (1)
  {
    if (SIM800.available() > 0)
    {
      char data = SIM800.read();
      if ( data == 'O' || data == 'K')        //Its working properly
      {
        Serial.println("OK");
        Status = true;
        break;
      }
      if ( data == 'E' || data == 'R' || data == 'O') // Working yet busy with some thing else
      {
        Serial.println("GSM not functional");
        Status = false;
        break;
      }
    }
    count++;
    delay(10);
    if (count == 100)
    {
      Serial.println("GSM not connected");            // No reponse for AT commands
      Status = false;
      break;
    }
  }
  return Status;
}

void clear_Serial (void)
{
  while (SIM800.available())
  {
    char  character = SIM800.read();
    Serial.print(character);
  }

}

/*************************************************************
                        Keypad Firmware Ahead
 *************************************************************/

/*
   input: none
   Output:  A 13 digit number
   Waits till user enter  a ten Digit number
*/
String Take_input (void)
{ String num = "+91";
  int len = 0;
  int len2;
  while (len <= 13)
  {
    len = num.length();
    num1 = Return_Keypad_Values();
    if ((num1 != 'A') && (num1 != 'B') && (num1 != 'C') && (num1 != 'a'))
    {
      if ((num1 != '#') && (num1 != '*') && (num1 != 'D'))
      { num += String(num1);
        print_content(num);
        Serial.println(num);
      }

      else if (num1 == '*')
      {
        num.setCharAt(len - 1, '*');
        print_content(num);
        num.remove(len - 1);

      }
      else if (num1 == '#')
      {
        Serial.println(num);
        break;
      }
      else if (num1 == 'D')
      {
        break;
      }
    }

  }
  return num;
}



void initilise()
{
  pinMode(r1, OUTPUT);
  pinMode(r2, OUTPUT);
  pinMode(r3, OUTPUT); //use in setup
  pinMode(r4, OUTPUT);
  pinMode(c1, INPUT);
  pinMode(c2, INPUT);
  pinMode(c3, INPUT);
  pinMode(c4, INPUT);
  Serial.begin(9600);
  digitalWrite(c1, HIGH);
  digitalWrite(c2, HIGH);
  digitalWrite(c3, HIGH);
  digitalWrite(c4, HIGH);
}
void row1()
{
  digitalWrite(r1, LOW);
  digitalWrite(r2, HIGH);
  digitalWrite(r3, HIGH);
  digitalWrite(r4, HIGH);
}
void row2()
{
  digitalWrite(r1, HIGH);
  digitalWrite(r2, LOW);
  digitalWrite(r3, HIGH);
  digitalWrite(r4, HIGH);
}
void row3()
{
  digitalWrite(r1, HIGH);
  digitalWrite(r2, HIGH);
  digitalWrite(r3, LOW);
  digitalWrite(r4, HIGH);
}
void row4()
{
  digitalWrite(r1, HIGH);
  digitalWrite(r2, HIGH);
  digitalWrite(r3, HIGH);
  digitalWrite(r4, LOW);
}
void ReadRows()
{
  colm1 = digitalRead(c1);
  colm2 = digitalRead(c2);
  colm3 = digitalRead(c3);
  colm4 = digitalRead(c4);
}
char Return_Keypad_Values(void)
{
  row1();
  ReadRows();
  delay(100);
  if (colm1 == LOW)
  {
    Serial.println("1");
    delay(200);
    return '1';
  }
  else if (colm2 == LOW)
  {
    Serial.println("2");
    delay(200);
    return '2';
  }
  else if (colm3 == LOW)
  {
    Serial.println("3");
    delay(200);
    return '3';
  }
  else if (colm4 == LOW)
  {
    Serial.println("A");
    delay(200);
    return 'A';
  }

  row2();
  ReadRows();
  delay(100);
  if (colm1 == LOW)
  {
    Serial.println("4");
    delay(200);
    return '4';
  }
  else if (colm2 == LOW)
  {
    Serial.println("5");
    delay(200);
    return '5';
  }
  else if (colm3 == LOW)
  {
    Serial.println("6");
    delay(200);
    return '6';
  }
  else if (colm4 == LOW)
  {
    Serial.println("B");
    delay(200);
    return 'B';
  }
  row3();
  ReadRows();
  delay(100);
  if (colm1 == LOW)
  {
    Serial.println("7");
    delay(200);
    return '7';
  }
  else if (colm2 == LOW)
  {
    Serial.println("8");
    delay(200);
    return '8';
  }
  else if (colm3 == LOW)
  {
    Serial.println("9");
    delay(200);
    return '9';
  }
  else if (colm4 == LOW)
  {
    Serial.println("C");
    delay(200);
    return 'C';
  }
  row4();
  ReadRows();
  delay(100);
  if (colm1 == LOW)
  {
    Serial.println("*");
    delay(200);
    return '*';
  }
  else if (colm2 == LOW)
  {
    Serial.println("0");
    delay(200);
    return '0';
  }
  else if (colm3 == LOW)
  {
    Serial.println("#");
    delay(200);
    return '#';
  }
  else if (colm4 == LOW)
  {
    Serial.println("D");
    delay(200);
    return 'D';
  }
  return 'a';
}

/*************************************************************
                       LCD functions Ahead
 *************************************************************/

//Print out the Heading On lCD
void print_head (String str)
{ 
  u8g2.clearBuffer();
  u8g2.setFont(u8g_font_unifont);
  u8g2.setCursor(0, 15);
  u8g2.print(str);
}

//Print secondary content on LCD
void print_content (String str)
{
  u8g2.setFont(u8g_font_unifont);
  u8g2.setCursor(0, 15);
  u8g2.print(str);
}
[/code]

 

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

А аффтар кода чо говорит?

TYZ_lion
Offline
Зарегистрирован: 17.01.2020

аффтар кода не отвечает, и от авторского там много изменено. 

Изначальный код работает на liquid crystal

 

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

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

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

А вопрос в чем? "Не могу вывести" - это сообщение. Мы приняли, сочувствуем...

Если не поняли - это был как бы намек, что надо описать проблему подробнее, а то вникать в чужой код из 1000 строк вслепую и бесплатно... стимула нет :)

TYZ_lion
Offline
Зарегистрирован: 17.01.2020

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

TYZ_lion
Offline
Зарегистрирован: 17.01.2020

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

 

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

TYZ_lion пишет:

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

ну так помогите своим бесплатным помощникам - расскажите хотя бы, что не работает.

А иначе как вы себе представляете помощь? - кто-то должен собрать вашу схему, залить в МК код и протестировать? - и все это забесплатно?

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

ну так что, подробной диагностики - что именно и хотя бы в какой процедуре этой портянки глючит - мы не увидим?

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

Значит надо сначала написать свой скетч, в котором потренироваться в выводе на 1306, а потом, изучив принцип, встроить его в имеющийся. По аналогии. 

TYZ_lion
Offline
Зарегистрирован: 17.01.2020

на LCD дисплее выходит вся информация. это название оператора, при нажатии кнопки для ввода номера выходит строка куда вводить номер и соответственно сам вводимый номер. далее диалог вызова. при входящем звонке выводится на дисплей номер звонящего. а вот OLED просто молчит и не подает признаков жизни. возможно ему не хватает каких то строк, возможно я чего то не дописал в коде. я в ардуино новичек. через порт все работает. 

TYZ_lion
Offline
Зарегистрирован: 17.01.2020

1306 работает по аналогии. там такая же история. поэтому и обратился к форуму за помощью. просто написать код и вывести на него свою информацию я могу. а вот с этим кодом бьюсь уже не один месяц.

 

sadman41
Offline
Зарегистрирован: 19.10.2016

b707, в портянке по всей поверхности проблемы.

Потомушто вот, к примеру, "hello world" от U8G2:

  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_ncenB10_tr);
    u8g2.drawStr(0,24,"Hello World!");
  } while ( u8g2.nextPage() );

 

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

TYZ_lion пишет:

1306 работает по аналогии.

 

Нихрена подобного.

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

TYZ_lion пишет:

просто написать код и вывести на него свою информацию я могу.

сомневаюсь, иначе и ситуации "дисплей просто молчит" не было бы. Выводилась бы хоть что-то - пусть неправильно или не полностью, но выводилось.

А тут похоже, вы в принципе даже не пробовали работать с этим дисплеем - сразу халявы ждете

TYZ_lion
Offline
Зарегистрирован: 17.01.2020

Дисплей завелся. пока ковыряю в коде дальше.

 

TYZ_lion
Offline
Зарегистрирован: 17.01.2020

спасибо, дисплей завелся. ищу в коде как все скомпонавать на дисплее

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

вот она, помощь форума :)

Вот бы раньше самому так? - нет, пинок нужен

TYZ_lion
Offline
Зарегистрирован: 17.01.2020

ведь форумы для этого и существуют. 

но проблема полностью еще не решена. 

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

TYZ_lion пишет:

ведь форумы для этого и существуют. 

Да, неужели?

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

TYZ_lion пишет:

ведь форумы для этого и существуют. 

Чтоб к чужому коду твои хотелки прикручивать, аха?

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

У меня предложение внести в правила форума:

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

TYZ_lion
Offline
Зарегистрирован: 17.01.2020

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

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

TYZ_lion пишет:

не учить жизни. 

Почему? Вам же ничто не мешает учить нас для чего нужны форумы и в какую ветку нам всем следует пройти. Надеюсь, в этом случае Вас не удивит, если и мы попытаемся объяснить Вам, куда следует пройти Вам?

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

TYZ_lion пишет:

дата регистрации это всего лишь цифра. и попробуй прикинуть такой вариант, что был аккаунт и я его забыл. допускаешь такой вариант?

конечно допускаю, тут регулярно появляются люди со сроком регистрации и 3 и 5 лет назад - и при этом дуб дубом. Дата регистрации ничего не гарантирует.

Но вас тут гнобят не за дату, а за то что вы требуете от форума какой-то помощи, сами не показав ни малейшего признака, что вы что-то знаете и пытаетесь в чем-то разобраться. Типичный халявщик с чужим скетчем, ожидающий что ему сейчас все бросятся помогать дописывать чужой код.

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

Первая часть, до кодов - это как для тебя 

https://arduino.ru/forum/programmirovanie/otobrazhenie-tekushchego-davleniya-i-davleniya-v-konkretnoe-vremya#comment-485357

ну и пунктики.  Выбери свой.

baby_in_Arduino
Offline
Зарегистрирован: 21.07.2019
ТС тебя просто сначала любя потроллили)
ты сагрился и тебя еще больше затроллили)
 
нужно было взять новый дисплей и example работы с ним
вывести на него helo world
 
а потом магия - подключаешь его к своему исходнику)
 
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

baby_in_Arduino пишет:

ТС тебя просто сначала любя потроллили)
ты сагрился и тебя еще больше затроллили)
 
нужно было взять новый дисплей и example работы с ним
вывести на него helo world
 
а потом магия - подключаешь его к своему исходнику)
 

это было сказано еще в #9