обработка char

animalboy
Offline
Зарегистрирован: 06.11.2021

Друзья, привет. В программировании близок к нулю. В аппаратной части соображаю нормально. Вопрос такой: есть матричная клава и матрица светодиодов. Нужно зажигать диоды от кнопок. Кнопок 16, контактов 8. Пытался написать своими силами обработку кнопок, не смог. Взял готовое решение с использованием библиотеки. Код срисовал у https://vk.com/don_arturos

#include <Keypad.h>      // подключаем нашу библиотеку
const byte ROWS = 4; //число строк у нашей клавиатуры
const byte COLS = 4; //число столбцов у нашей клавиатуры
char hexaKeys[ROWS][COLS] = {
  {'1','4','7','*'},                  //  здесь мы располагаем названия наших клавиш, как на клавиатуре,для удобства пользования
  {'2','5','8','0'},
  {'3','6','9','#'},
  {'A','B','C','D'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //к каким выводам подключаем управление строками
byte colPins[COLS] = {9, 8, 7, 6}; //к каким выводам подключаем управление столбцами
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
  Serial.begin(9600); 
}
void loop(){
  char customKey = customKeypad.getKey();
  if (customKey){
    Serial.println(customKey);
  }
}

Работает код корректно: выдает в монитор порта символы, в соответствии с нажатием. Я же не знаю  как обработать полученный чар. Пишу, например:

if (customKey == '1' ) {
  digitalWrite(13, HIGH);
     
  }
 else {
   digitalWrite(13, LOW);
 }
}

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

Upper
Offline
Зарегистрирован: 23.06.2020

Покажите конечный код программы. Может быть вы не корректно их соединили?

animalboy
Offline
Зарегистрирован: 06.11.2021
#include <Keypad.h>      // подключаем нашу библиотеку

const byte ROWS = 4; //число строк у нашей клавиатуры
const byte COLS = 4; //число столбцов у нашей клавиатуры
char hexaKeys[ROWS][COLS] = {
  {'1','4','7','*'},                  //  здесь мы располагаем названия наших клавиш, как на клавиатуре,для удобства пользования
  {'2','5','8','0'},
  {'3','6','9','#'},
  {'A','B','C','D'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //к каким выводам подключаем управление строками
byte colPins[COLS] = {9, 8, 7, 6}; //к каким выводам подключаем управление столбцами

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

void setup(){
  Serial.begin(9600);  
}
  
void loop(){
  char customKey = customKeypad.getKey();
  
  if (customKey){
    Serial.println(customKey);
  }
if (customKey == 49)
{
  digitalWrite(13, HIGH);}
}

 

vk007
Offline
Зарегистрирован: 16.06.2015

animalboy пишет:
В итоге нужно сделать чтобы диод загорался по нажатию и горел. По следующему нажатию тух.

Там, где вы зажигаете светодиод, добавьте дополнительное условие - проверяйте, если светодиод не горит, то зажигайте, иначе - гасите его.

Это делается, конечно, и без условия, но для вас пока так будет проще.

Upper
Offline
Зарегистрирован: 23.06.2020

DEL

 

animalboy
Offline
Зарегистрирован: 06.11.2021

Спасибо!!

#include <Keypad.h>      // подключаем нашу библиотеку

const byte ROWS = 4; //число строк у нашей клавиатуры
const byte COLS = 4; //число столбцов у нашей клавиатуры
char hexaKeys[ROWS][COLS] = {
  {'1','4','7','*'},                  //  здесь мы располагаем названия наших клавиш, как на клавиатуре,для удобства пользования
  {'2','5','8','0'},
  {'3','6','9','#'},
  {'A','B','C','D'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //к каким выводам подключаем управление строками
byte colPins[COLS] = {9, 8, 7, 6}; //к каким выводам подключаем управление столбцами

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

boolean led; 

void setup(){
  Serial.begin(9600);  
  pinMode(13, OUTPUT);
}
  
void loop(){
  led = digitalRead(13);
  char customKey = customKeypad.getKey();
  
  if (customKey){
    Serial.println(customKey);
  }
if (customKey == 49)
{
  digitalWrite(13, !led);}
}

 

animalboy
Offline
Зарегистрирован: 06.11.2021

Upper пишет:

DEL

 

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

vk007
Offline
Зарегистрирован: 16.06.2015

Переменная led лишняя, кроме как в digitalWrite она нигде больше не используется. И заводить для каждого светодиода матрицы переменную - это расточительно. Пишите сразу digitalWrite(13, !digitalRead(13));

animalboy
Offline
Зарегистрирован: 06.11.2021

Принял к сведению, спасибо.

 

Друзья, еще вопрос возник. Новую тему создавать не буду, спрошу здесь. В коде, изложенном в шапке, я опрашиваю состояния кнопок клавиатуры при помощи библиотеки и чужого кода. Мне же очень сильно необходимо пропустить процесс обработки клавиш через себя, понимания ради. Да и для задачи. Ну, не катит мне библиотека, так уж получилось. Теорию, вроде как, понимаю. Вот статья хорошая https://habr.com/ru/post/394585/ изучил, вроде понял что-то. Понимаю, что цикл нужен для динамического опроса кнопки (кнопок). Но как завернуть все это не знаю. Понимаю, что просить написать кусок кода - наглость, но может есть где пример (кода), который облегчит понимание. Спасибо.

animalboy
Offline
Зарегистрирован: 06.11.2021

PS Содержание библиотеки просмотрел, мне это ничего не дало.

animalboy
Offline
Зарегистрирован: 06.11.2021

Хочу представить свой потешный код:


void setup() {
  Serial.begin(9600);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
 
}

  void pr1() {
  digitalWrite(6, HIGH); 
  digitalWrite(7, HIGH); 
  digitalWrite(8, HIGH); 
  digitalWrite(9, LOW);
  }
  void pr2() {
  digitalWrite(6, HIGH); 
  digitalWrite(7, HIGH); 
  digitalWrite(8, LOW); 
  digitalWrite(9, HIGH);
  }
  void pr3() {
  digitalWrite(6, HIGH); 
  digitalWrite(7, LOW); 
  digitalWrite(8, HIGH); 
  digitalWrite(9, HIGH);
  }
  void pr4() {
  digitalWrite(6, LOW); 
  digitalWrite(7, HIGH); 
  digitalWrite(8, HIGH); 
  digitalWrite(9, HIGH);
  }
  
void loop() {

 pr1();
 //pr2();
 //pr3();
 //pr4();
  
  if (digitalRead(5) != 1 && digitalRead(9) == 0)  {

  Serial.print("button S12 pressed \n");

  }  
}

Созданные мною процедуры pr1-pr4 динамически сдвигают потенциал второй ноги кнопки, там самым позволяя динамически опрашивать кнопки (по крайней мере мне бы так хотелось). Я полагал, войд луп будет крутить мои процедуры от первой к четвертой и так до бесконечности, но не работает. Друзья, помогите ньюфагу создать такой цикл, чтобы эта идея (динамическое изменение состояния пина) заработала...

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

Бред

animalboy
Offline
Зарегистрирован: 06.11.2021

Та я знаю

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

Ничего, постепенно дойдёт. После каждой pr делайте опрос 2..5 и результат (4 бита) сохраняйте в переменных. Т.о., на выходе будет 4 переменных. Только пины обзовите осмысленно.

animalboy
Offline
Зарегистрирован: 06.11.2021

Green пишет:

Ничего, постепенно дойдёт. После каждой pr делайте опрос 2..5 и результат (4 бита) сохраняйте в переменных. Т.о., на выходе будет 4 переменных. Только пины обзовите осмысленно.

Спасибо, ваш способ попробую позже (тк не все понял), пока так закрутил:


void setup() {
  Serial.begin(9600);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
 
}

void loop() {

  //pr1();
  //pr2();
  //pr3();
  //pr4();

  for (int i=6; i<=9; i++)
  {
    switchoff();
    digitalWrite(i, 0);
  }

  if (digitalRead(5) != 1 && digitalRead(9) == 0)  {
  Serial.print("button S12 pressed \n");
  } 
}

   void switchoff(){
      for (int i=6; i<=9; i++)
  {
    digitalWrite(i, 1);
  }
 }
   

Вроде работает, щас попробую вторую кнопку навесить.

animalboy
Offline
Зарегистрирован: 06.11.2021

Один столбец работает, перехожу на второй и провал. Гляньте код плиз, кому не сложно:

void setup() {
  Serial.begin(9600);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
 
}

void loop() {

  for (int i=6; i<=9; i++)
  {
    switchoff();
    digitalWrite(i, 0);
  }

  if (digitalRead(5) != 1 && digitalRead(9) == 0)  {
  Serial.print("button S16 pressed \n");
  } 
  if (digitalRead(4) != 1 && digitalRead(9) == 0)  {
  Serial.print("button S12 pressed \n");
  } 
  if (digitalRead(3) != 1 && digitalRead(9) == 0)  {
  Serial.print("button S8 pressed \n");
  } 
  if (digitalRead(2) != 1 && digitalRead(9) == 0)  {
  Serial.print("button S4 pressed \n");
  } 
  if (digitalRead(5) != 1 && digitalRead(8) == 0)  {
  Serial.print("button S15 pressed \n");
  } 
}

   void switchoff(){
      for (int i=6; i<=9; i++)
  {
    digitalWrite(i, 1);
  }
 }

Контакт на 8 пине есть, вызванивал.

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

} из 20 надо вырезать и вставить между 36 37

animalboy
Offline
Зарегистрирован: 06.11.2021

Поменял местами входы и выходы в проге, добавил дилей в лупе. Что-то проясняется...


void setup() {
  Serial.begin(9600);
  pinMode(6, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP);
  pinMode(8, INPUT_PULLUP);
  pinMode(9, INPUT_PULLUP);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
 
}

void loop() {

  for (int i=2; i<=5; i++)
  {
    switchoff();
    digitalWrite(i, 0);
    delay(100);
  }

  if (digitalRead(9) != 1 && digitalRead(5) == 0)  {
  Serial.print("button S16 pressed \n");
  } 
  if (digitalRead(8) != 1 && digitalRead(5) == 0)  {
  Serial.print("button S12 pressed \n");
  } 
  if (digitalRead(7) != 1 && digitalRead(5) == 0)  {
  Serial.print("button S8 pressed \n");
  } 
  if (digitalRead(6) != 1 && digitalRead(5) == 0)  {
  Serial.print("button S4 pressed \n");
  } 
  if (digitalRead(9) != 1 && digitalRead(4) == 0)  {
  Serial.print("button S15 pressed \n");
  } 
}

   void switchoff(){
      for (int i=6; i<=9; i++)
  {
    digitalWrite(i, 1);
  }
 }
   

 

animalboy
Offline
Зарегистрирован: 06.11.2021

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

animalboy
Offline
Зарегистрирован: 06.11.2021

Komandir пишет:

} из 20 надо вырезать и вставить между 36 37

По моим наблюдениям, не влияет эта скобка на ход поршней. Кнопка S15 очнулась. Но, при нажати S15 или S16 в порт выходит сразу два сообщения. Где я не прав?

animalboy
Offline
Зарегистрирован: 06.11.2021

Не удалось мне различить нажатия кнопок из двух рядов(

 

AlexTLN
Offline
Зарегистрирован: 14.05.2016

animalboy пишет:

Принял к сведению, спасибо.

 

Друзья, еще вопрос возник. Новую тему создавать не буду, спрошу здесь. В коде, изложенном в шапке, я опрашиваю состояния кнопок клавиатуры при помощи библиотеки и чужого кода. Мне же очень сильно необходимо пропустить процесс обработки клавиш через себя, понимания ради. Да и для задачи. Ну, не катит мне библиотека, так уж получилось. Теорию, вроде как, понимаю. Вот статья хорошая https://habr.com/ru/post/394585/ изучил, вроде понял что-то. Понимаю, что цикл нужен для динамического опроса кнопки (кнопок). Но как завернуть все это не знаю. Понимаю, что просить написать кусок кода - наглость, но может есть где пример (кода), который облегчит понимание. Спасибо.

На основе пятого поста:

for(int col = 9; col >= 6; col--)
{
 for(int row = 5; row >= 2; row--)
 {
  if(digitalRead(col)==0 && digitalRead(row)==0)//тут не помню точно, будет ли так работать проверка digitalRead();
  {
   digitalWrite(13, LOW);
  }
  else
  {
   digitalWrite(13, HIGH);
  }
 }
}

 

animalboy
Offline
Зарегистрирован: 06.11.2021

Спасибо, но не помогло. Все равно при нажатии каждой из четырех кнопок столбца (одного столбца) срабатывает проверка.

void setup() {
  Serial.begin(9600);
  pinMode(6, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP);
  pinMode(8, INPUT_PULLUP);
  pinMode(9, INPUT_PULLUP);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
 
}

void loop() {

 for(int col = 9; col >= 6; col--)
{
 for(int row = 5; row >= 2; row--)
 {
  if(digitalRead(9) != 0 && digitalRead(5) == 0)
  {
   digitalWrite(13, LOW);
  }
  else
  {
   digitalWrite(13, HIGH);
  }
 }
}
}

 

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

animalboy пишет:

Не удалось мне различить нажатия кнопок из двух рядов(

 

Может надо опрашивать только тот ряд, который активен на данный момент?

Т.е -установили высокий уровень на ряд-опросили -низкий уровень на ряд

 дальше опрашиваем следующий ряд

P.S. В упрощённом виде, кнопки "подтянуты" к земле

const byte button[4][4] = { //номера кнопок
  {1, 2, 3, 4},
  {5, 6, 7, 8},
  {9, 10, 11, 12},
  {13, 14, 15, 16},
};
unsigned long last_millis = 0;

void setup() {
  Serial.begin(9600);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
}

void loop() {
  if (millis() - last_millis >= 10) { // каждые 10мс
    last_millis = millis();
    for (byte i = 6; i < 10; i++) {
      digitalWrite(i, HIGH); //"активируем" столбец
      for (byte z = 2; z < 6; z++) { //опрашиваем строку
        if (digitalRead(z)) {
          Serial.println(button[i][z]);// печатаем номер кнопки
        }
      }
      digitalWrite(i, LOW); //гасим столбец
    }
  }
}

 

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

Может просто не нужно мозги парить, а воспользоваться полным функционалом библиотеки Keypad.h ?

animalboy
Offline
Зарегистрирован: 06.11.2021

Kakmyc пишет:
Может просто не нужно мозги парить, а воспользоваться полным функционалом библиотеки Keypad.h ?

может, я не разобрался(

AlexTLN
Offline
Зарегистрирован: 14.05.2016

animalboy пишет:

Спасибо, но не помогло. Все равно при нажатии каждой из четырех кнопок столбца (одного столбца) срабатывает проверка.

Да, так не будет работать, я думал, что все 8 пинов это входы... Есть схема этого дисплея. Или словами описать как оно должно работать. Насколько понял от 2го до 5го устанавливается 1 по очереди и потом считывается с 6го по 9й. 

void setup() {
  Serial.begin(9600);
  pinMode(6, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP);
  pinMode(8, INPUT_PULLUP);
  pinMode(9, INPUT_PULLUP);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
 
}

void loop() {

 for(int row = 5; row >= 2; row--)
 digitalWrite(row, HIGH);
{
 for(int col = 9; col >= 6; col--)

 {
  if(digitalRead(col) != 0)//сюда не константу(9) надо ставить, а переменную цикла, чтобы при каждой итерации происходил опрос другого порта
  {
   digitalWrite(13, LOW);
   delay(1000);
  }
  else
  {
   digitalWrite(13, HIGH);
  }
 }
 digitalWrite(row, LOW);
}
}

По идее сейчас контроллер будет по очереди выставлять на 2-5 высокий уровень, потом читать с 6-9, если будет высокий уровень на 6-9, то светодиод погаснет на секунду, после чего дальше опрос пойдет.

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

Вы сейчас заново тут напишите библиотеку Keypad.h, только криво и с урезанным функционалом :-)

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

При опросе матричной клавиатуры, все пины последовательно меняются ролями .
Каждый пин во время опроса становится то входом, то выходом.

Чтоб не писать всякую дурь, откройте исходники библиотеки и посмотрите как там написано.

animalboy
Offline
Зарегистрирован: 06.11.2021

Здравствуйте. Никакие куски кода, написанные компетентными людьми здесь, у меня должным образом не работают. Ну вообще прям ничего не получается (совсем нуб). Хотел бы попросить подсказать мне темы/понятия/алгоритмы, которые имеет смысл усиленно поизучать. Спасибо.

Datak
Offline
Зарегистрирован: 09.10.2014

Не запускал, но надеюсь. Добейтесь чтоб оно заработало. По-моему должно помочь понять и доделать.

    .......

    for( byte y = 2; y < 6; y++ ) 
    {
        digitalWrite( y, LOW );

        for( byte x = 6; x < 10; x++ )
        {
            if( digitalRead( x ) == LOW )
            {
                Serial.print( " *" );
            }
            else 
            {
                Serial.print( " -" );
            }

        } // for( byte x = ....... ) //

        digitalWrite( y, HIGH );

        Serial.println( "  :)" );

    } // for( byte y = ....... ) //

    delay( 500 );

    Serial.println( " " );

    .......
Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

animalboy пишет:

 В итоге нужно сделать чтобы диод загорался по нажатию и горел. По следующему нажатию тух.

Здесь, как по мне,  с диодом не всё ясно:

напр. 1-е нажатие на кнопку1 - диод загорелся

           2-е нажатие на кнопку1 - потух

------------------------------------------------

или

         1-е нажатие          на кнопку1 - диод загорелся

   следующее нажатие   на кнопку2 - а)диод потух?

                                                              б)продолжает гореть?

                                                              в) по диоду на кнопку?)))

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Матрица СИДов- какая, как собираетесь ею управлять?

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

animalboy пишет:

Хотел бы попросить подсказать мне темы/понятия/алгоритмы, которые имеет смысл усиленно поизучать. Спасибо.

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

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

b707 пишет:

animalboy пишет:

Хотел бы попросить подсказать мне темы/понятия/алгоритмы, которые имеет смысл усиленно поизучать. Спасибо.

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

... или горааааздо больше ))

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

BOOM пишет:

b707 пишет:

animalboy пишет:

Хотел бы попросить подсказать мне темы/понятия/алгоритмы, которые имеет смысл усиленно поизучать. Спасибо.

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

... или горааааздо больше ))

это да, я начал читать в 1993, ещё не осилил )))

animalboy
Offline
Зарегистрирован: 06.11.2021

Datak пишет:

Не запускал, но надеюсь. Добейтесь чтоб оно заработало. По-моему должно помочь понять и доделать.

    .......

    for( byte y = 2; y < 6; y++ ) 
    {
        digitalWrite( y, LOW );

        for( byte x = 6; x < 10; x++ )
        {
            if( digitalRead( x ) == LOW )
            {
                Serial.print( " *" );
            }
            else 
            {
                Serial.print( " -" );
            }

        } // for( byte x = ....... ) //

        digitalWrite( y, HIGH );

        Serial.println( "  :)" );

    } // for( byte y = ....... ) //

    delay( 500 );

    Serial.println( " " );

    .......

 

Как до железа доберусь, попробую в обяз. Спасибо.

animalboy
Offline
Зарегистрирован: 06.11.2021

Дим-мычъ пишет:

animalboy пишет:

 В итоге нужно сделать чтобы диод загорался по нажатию и горел. По следующему нажатию тух.

Здесь, как по мне,  с диодом не всё ясно:

напр. 1-е нажатие на кнопку1 - диод загорелся

           2-е нажатие на кнопку1 - потух

------------------------------------------------

или

         1-е нажатие          на кнопку1 - диод загорелся

   следующее нажатие   на кнопку2 - а)диод потух?

                                                              б)продолжает гореть?

                                                              в) по диоду на кнопку?)))

 

Логика такая: каждому диоду своя кнопка. Кнопку нажал - загорелся и горит(типа как самоподхват). Еще раз нажал ТУ ЖЕ КНОПКУ - потух.

animalboy
Offline
Зарегистрирован: 06.11.2021

Alexey_Rem пишет:

Матрица СИДов- какая, как собираетесь ею управлять?

Вопрос не понял ВООБЩЕ. Вы говорите с куском дерева щас.

animalboy
Offline
Зарегистрирован: 06.11.2021

b707 пишет:

animalboy пишет:

Хотел бы попросить подсказать мне темы/понятия/алгоритмы, которые имеет смысл усиленно поизучать. Спасибо.

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

Хорошоооо. Только вот язык этот больше похож на с++ (вроде). Или все же вся сила в СИ заключена.

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

animalboy пишет:

Хорошоооо. Только вот язык этот больше похож на с++ (вроде). Или все же вся сила в СИ заключена.

Си и С++ - близнецы-братья

animalboy
Offline
Зарегистрирован: 06.11.2021

b707 пишет:

animalboy пишет:

Хорошоооо. Только вот язык этот больше похож на с++ (вроде). Или все же вся сила в СИ заключена.

Си и С++ - близнецы-братья

Так почему курить-то рекомендуют именно СИ?

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

animalboy пишет:

Так почему курить-то рекомендуют именно СИ?

Читайте что найдете, разница между Си и С++ проявится только во второй половине учебника

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

animalboy
Offline
Зарегистрирован: 06.11.2021

О чем речь понял, до ооп в с++ так и не дошел пока)

 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

animalboy пишет:

Так почему курить-то рекомендуют именно СИ?

Если найдете учебник по чистому Си после 2010 года написания, дайте знать)) Не то, чтобы он мне сильно нужен, просто для расширения границ неОпознанного )) 

Вникайте в "плюсЫ", ардуиноИДЕ это и потребляет.  

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

b707 пишет:

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

Плюсую (извините за каламбур:))

animalboy
Offline
Зарегистрирован: 06.11.2021

Задание я, кстати, провалил. Это было тестовое на вакансию электронщика. Ну, не суть. Удовольствие я получил от выполнения. Поэтому хочу "добить".

Дим-мычъ
Offline
Зарегистрирован: 20.03.2021

animalboy пишет:

 

Логика такая: каждому диоду своя кнопка. Кнопку нажал - загорелся и горит(типа как самоподхват). Еще раз нажал ТУ ЖЕ КНОПКУ - потух.

А если нажал первую кнопку - загорелся, а затем, не нажимая первую, нажимаем вторую?

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

animalboy пишет:

Задание я, кстати, провалил. Это было тестовое на вакансию электронщика. Ну, не суть. Удовольствие я получил от выполнения. Поэтому хочу "добить".

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

animalboy
Offline
Зарегистрирован: 06.11.2021

Дим-мычъ пишет:

animalboy пишет:

 

Логика такая: каждому диоду своя кнопка. Кнопку нажал - загорелся и горит(типа как самоподхват). Еще раз нажал ТУ ЖЕ КНОПКУ - потух.

А если нажал первую кнопку - загорелся, а затем, не нажимая первую, нажимаем вторую?

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

animalboy
Offline
Зарегистрирован: 06.11.2021

Rumata пишет:

animalboy пишет:

Задание я, кстати, провалил. Это было тестовое на вакансию электронщика. Ну, не суть. Удовольствие я получил от выполнения. Поэтому хочу "добить".

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

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

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

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