Ногодрыгалка цифровая.

Тема в разделе "Глядите, что я сделал", создана пользователем Ariadna-on-Line, 6 май 2019.

  1. Работа цифрового устройства заключается в "дрыганье ногами" и/или в какой-либо реакции на "дрыганье ног". Поэтому удобность "подрыгать ногами" - главная и непременная необходимость в электронике. Во времена исчезнувших параллельных портов это особенно актуально. В этом проекте - Ардуино по USB принимает данные из графического приложения на компьютере, и повторяет логические уровни на своих выводах (кроме выводов 0, 1, так как они задействованы для работы USB канала). Приложение написано на Visual Basic 6. Всех электронщиков - с наступающим Днем Радио !!! 73! 88!
    Код (C++):
    /*
    **************************************************
    * Программа расщирителя(размножителя) портов ПК. *
    *            Ardino_PC_Ports_Expander            *
    **************************************************
    */

      String inputString = "";         // строка для сохранения входящих данных
      String PinNum = "";              // номер пина в текстовом виде
      String Command ="";
      bool stringComplete = false;     // когда строка завершена
      int I, L;
    //=========================================================================
    void setup() {   // put your setup code here, to run once

      inputString.reserve(200);       // зарезервировать строку 200 байт

      for (I = 2; I < 20; I++)  {     // Конфигурирование всех пинов Ардуины
        pinMode(I, OUTPUT);           // на вывод данных.
        digitalWrite(I, LOW);         // Установить 0 на всех пинах.
      }
      Serial.begin(9600);
    }
    //=========================================================================
    void loop() {   // put your main code here, to run repeatedly:

      if (stringComplete)  {                           // Если строка получена полностью
      if (inputString.substring(0, 6) == "A-o-L ")  {  // Если строка начинается с "A-o-L "

         Command = inputString.substring(6, 9);        // Выделяем команду
         PinNum =  inputString.substring(9);           // Выделяем номер пина текстовый
         I = PinNum.toInt();                           // Номер пина в виде переменной

      if (Command == "On ")  {     // Если на позиции стоит "On "
         digitalWrite(I, HIGH);
      }
      if (Command == "Off")  {     // Если на позиции стоит "Off"
         digitalWrite(I, LOW);
      }
        // Serial.print(Command);    // Печатать входящую строку (не обязательно)
        // Serial.println(I);                // использовалось для отладки

        inputString = "";         // очистить строку
        stringComplete = false;
       }
      }
    }                             // Бесконечный цикл
    //=========================================================================
    /*
      SerialEvent occurs whenever a new data comes in the hardware serial RX. This
      routine is run between each time loop() runs, so using delay inside loop can
      delay response. Multiple bytes of data may be available.

      Событие SerialEvent происходит всякий раз, когда новые данные поступают в аппаратный последовательный RX.
      Эта процедура запускается между каждым запуском цикла loop (), поэтому использование задержки внутри цикла
      может задерживать ответ. Может быть доступно несколько байтов данных.
    */

    void serialEvent() {

      while (Serial.available()) {
         char inChar = (char)Serial.read();      // получить новый байт
         inputString += inChar;                  // дописать к входящей строке
      if (inChar == '\n') {                      // если пришел символ перехода на новую строку,
         stringComplete = true;                  // ставим флаг циклу - делать что-либо
        }
      }
    }
    //=========================================================================
     

    Вложения:

    Последнее редактирование: 6 май 2019
    Tomasina нравится это.
  2. parovoZZ

    parovoZZ Гуру

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

    Вложения:

    Последнее редактирование: 6 май 2019
  4. Vovka

    Vovka Гик

    Ага, вот как выглядит исходник для Бэйсика! :D
     
  5. "Пользовательский" код в среде Обьектно-Ориентированного Программирования (ООП).
     
  6. Belkin

    Belkin Гик

    А это точно VB6, не а "VC+" какой-нибудь ? ;)
    Что-то мой VB6 ругается... ;)
     
  7. Точно - VB6. Это не самодостаточный скетч Ардуины. Это - пользовательский код без графического "каркаса". Выложить проект, или архив здешние правила не позволяют. Назовите куда - выложу..
     
    Последнее редактирование: 7 май 2019
  8. KindMan

    KindMan Гик

    Это где написано?
     
  9. Не буду спорить. Щас попробую... Пардон - Зипы позволяет. Выкладываю.
     

    Вложения:

    Belkin нравится это.
  10. Добавил генерацию меандра на любой (одиночной) ноге посылками команд в Ардуину по USB. Период - 2 секунды.
     

    Вложения:

  11. Занимаюсь модернизацией "Летающего шарика" (см. Флудилка).
    Понадобилось ШИМ-ом поуправлять движком. Решил добавить этот режим в Ногодрыгалку,
    ПС. Ради развлекухи добавил финт из API-программирования. В нем есть любопытный артефакт, но он не мешает.
    ППС. Реализованы управление "по ходу" периодом меандра (2с - 20мс) и скважностью ШИМ (0% - 100%).
     

    Вложения:

    Последнее редактирование: 1 июл 2019
  12. Asper Daffy

    Asper Daffy Гуру

    А чего не исходники? Как посмотреть-то?
     
  13. А что там смотреть-то ! Такая вещь полезна лишь в прикладном плане. В программировании там примитив. Запускайте, да смотрИте.
    ПС. Если вы не устанавливали Визуал Студию Мелкософта, запуск программы на ВизуалБейсике требует установки модуля-интерпретатора (в ХР это \SYSTEM32\VB40032.dll. Можно просто скачать и вписать.). VB6 - полу-компилятор. Это уменьшает "вес" программ.
     
    Последнее редактирование: 1 июл 2019
  14. Asper Daffy

    Asper Daffy Гуру

    Запускать посторонний исполняемый файл, не видя исходника? Это как-нибудь без меня.

    А всё-таки, почему не опубликовать исходник? Боитесь, что украдут Вашу гениальную идею?
     
  15. b707

    b707 Гуру

    а к чему тогда вообще эта тема? без кода нечего обсуждать. мы даже порадоваться за вас :) не можем. потому как неизвестно, что внутри программы - ваш ли это код вообще и насколько он хорош.
     
  16. b707

    b707 Гуру

    пока в этой теме не "что я сделал". а
    [​IMG]
     
    Igor68 и kiv69 нравится это.
  17. Ага. Эффект Врунгеля - "Как вы яхту назовете...". В форуме нет темы (или плохо искал) типа "Как Ардуиной облегчить жизнь Ардуинорадиолюбителя". "Ногодрыгалка" - из серии "облегчалок", сделанная для себя "на злобу дня". Вдруг кому поможет. - "Воткнул" туда, куда "показалось". Обсуждать там нечего, я на это и не рассчитывал. Бейсик - тема нездешняя. Кроме развлекушного эффекта регулировки прозрачности окна программы, никаких заподляков там нет.
     
    Последнее редактирование: 1 июл 2019
  18. parovoZZ

    parovoZZ Гуру

    Я когда-то писал на дельфях (WinAPI) скринмэйты - это из этой же колоды?
     
  19. А что такое скринмейт ? Ну скрин-экран понятно, мейт - вроде помошник. А вместе ?
    А вообще - да, это из серии WinAPI.
     
    Последнее редактирование: 1 июл 2019
  20. parovoZZ

    parovoZZ Гуру

    Ну это всякие твари, бегающие по экрану. У меня какой-то колобок был и летающий дракон.