Опыт использования системного ПО для работы с модулями

Задача была под linux.

знаете что, я лучше сам программу напишу, чем буду понимать ваши инструкции))

/*
 * Конвертер земного возраста в юпитерианский
 * для Arduino Uno / Nano / Mega
 */

// Определяем константы
const float EARTH_DAYS_IN_YEAR = 365.25;        // Земной год с учётом високосных
const float JUPITER_YEAR_IN_EARTH_DAYS = 4333;  // Юпитерианский год в земных днях
const float JUPITER_TO_EARTH_RATIO = JUPITER_YEAR_IN_EARTH_DAYS / EARTH_DAYS_IN_YEAR; // ≈ 11.86

// Пины для подключения (опционально)
const int BUTTON_PIN = 2;      // Кнопка для расчёта
const int LED_PIN = 13;        // Встроенный светодиод

// Переменные для хранения возраста
float earthAge = 0;            // Возраст на Земле
float jupiterAge = 0;          // Возраст на Юпитере
bool dataEntered = false;      // Флаг ввода данных

void setup() {
  // Инициализация последовательного порта
  Serial.begin(9600);
  
  // Настройка пинов
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
  
  // Приветственное сообщение
  printWelcome();
}

void loop() {
  // Если не ввели данные - запрашиваем
  if (!dataEntered) {
    requestAge();
    dataEntered = true;
  }
  
  // Проверяем, не нажата ли кнопка для нового расчёта
  if (digitalRead(BUTTON_PIN) == LOW) {
    delay(300); // Защита от дребезга
    dataEntered = false;
    digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // Мигаем светодиодом
    Serial.println("\n--- Новый расчёт ---");
  }
  
  // Проверяем, есть ли данные в Serial
  if (Serial.available() > 0 && !dataEntered) {
    readSerialAge();
  }
}

// Функция приветствия
void printWelcome() {
  Serial.println("=================================");
  Serial.println("  КОНВЕРТЕР ВОЗРАСТА: ЗЕМЛЯ → ЮПИТЕР");
  Serial.println("=================================");
  Serial.println("Юпитерианский год = 4333 земных дня");
  Serial.print("Это составляет ");
  Serial.print(JUPITER_TO_EARTH_RATIO);
  Serial.println(" земных лет\n");
}

// Функция запроса возраста
void requestAge() {
  Serial.println("Введите ваш возраст в земных годах:");
  Serial.println("(например: 25.5 или 30)");
  digitalWrite(LED_PIN, HIGH); // Включаем светодиод - ждём ввод
}

// Функция чтения возраста из Serial
void readSerialAge() {
  String input = Serial.readStringUntil('\n');
  input.trim(); // Убираем пробелы и переводы строк
  
  if (input.length() > 0) {
    // Пробуем преобразовать в число
    earthAge = input.toFloat();
    
    if (earthAge > 0 && earthAge < 150) { // Проверка на разумный возраст
      calculateAndPrint();
    } else {
      Serial.println("Ошибка: введите число от 0 до 150");
      dataEntered = false;
    }
  }
  
  digitalWrite(LED_PIN, LOW); // Выключаем светодиод
}

// Функция расчёта и вывода результатов
void calculateAndPrint() {
  // Расчёт юпитерианского возраста
  jupiterAge = earthAge / JUPITER_TO_EARTH_RATIO;
  
  // Расчёт в днях (для любознательных)
  float earthDays = earthAge * EARTH_DAYS_IN_YEAR;
  float jupiterYearsInDays = jupiterAge * JUPITER_YEAR_IN_EARTH_DAYS;
  
  // Вывод результатов
  Serial.println("\n--- РЕЗУЛЬТАТ ---");
  Serial.print("🌍 На Земле вам: ");
  Serial.print(earthAge, 2);
  Serial.println(" лет");
  
  Serial.print("🪐 На Юпитере вам: ");
  Serial.print(jupiterAge, 2);
  Serial.println(" юпитерианских лет");
  
  // Добавляем визуальную шкалу
  drawScale();
  
  // Бонусная информация
  Serial.println("\n📊 Интересные факты:");
  Serial.print("• Вы прожили ");
  Serial.print(earthDays, 0);
  Serial.println(" земных дней");
  
  // Количество юпитерианских дней рождения
  float jupiterBirthdays = earthAge / JUPITER_TO_EARTH_RATIO;
  Serial.print("• У вас было/будет ");
  Serial.print(jupiterBirthdays, 1);
  Serial.println(" юпитерианских дней рождения");
  
  // Если возраст позволяет - покажем следующий день рождения
  float nextJupiterBirthday = (floor(jupiterBirthdays) + 1) * JUPITER_TO_EARTH_RATIO;
  if (nextJupiterBirthday > earthAge) {
    float yearsToNext = nextJupiterBirthday - earthAge;
    Serial.print("• Следующий юпитерианский день рождения через ");
    Serial.print(yearsToNext, 1);
    Serial.println(" земных лет");
  }
  
  Serial.println("------------------------\n");
  Serial.println("Нажмите кнопку для нового расчёта");
}

// Функция для рисования визуальной шкалы
void drawScale() {
  Serial.println("\nВизуальное сравнение:");
  Serial.print("Земные годы: |");
  
  int earthBars = int(earthAge / 2); // 1 символ = 2 года
  if (earthBars > 30) earthBars = 30; // Ограничим длину
  
  for (int i = 0; i < earthBars; i++) {
    Serial.print("=");
  }
  Serial.println("|");
  
  Serial.print("Юпитер годы: |");
  int jupiterBars = int(jupiterAge * 2); // Для масштаба
  if (jupiterBars > 30) jupiterBars = 30;
  
  for (int i = 0; i < jupiterBars; i++) {
    Serial.print("=");
  }
  Serial.println("|");
}

а то код не даете, а потом еще и выяснится что вы учили писать код на несуществующем языке…

может это кому то и правда проще, но не мне)))

или вот так

/*
 * Конвертер возраста Земля → Юпитер
 * Автоматический режим - просто вводите возраст
 */

const float JUPITER_YEAR = 11.86;  // 1 год на Юпитере = 11.86 земных лет

String inputString = "";      // Строка для хранения ввода
bool stringComplete = false;  // Флаг завершения ввода

void setup() {
  Serial.begin(9600);
  Serial.println("╔════════════════════════════════╗");
  Serial.println("║ КОНВЕРТЕР ВОЗРАСТА НА ЮПИТЕРЕ ║");
  Serial.println("╚════════════════════════════════╝");
  Serial.println("\n📌 Просто введите любой возраст и нажмите Enter");
  Serial.println("👉 Например: 25, 33.5, 100\n");
  Serial.print("➡️ Ваш возраст на Земле: ");
}

void loop() {
  // Если получена полная строка (до Enter)
  if (stringComplete) {
    convertAge();
    stringComplete = false;
    inputString = "";
    Serial.print("\n➡️ Следующий возраст: ");
  }
}

// Функция конвертации возраста
void convertAge() {
  float earthAge = inputString.toFloat();
  
  // Проверка на корректность
  if (earthAge <= 0 || earthAge > 150) {
    Serial.println("\n❌ Пожалуйста, введите возраст от 1 до 150 лет");
    return;
  }
  
  float jupiterAge = earthAge / JUPITER_YEAR;
  
  // Красивый вывод
  Serial.println("\n┌─────────────────────────────────┐");
  Serial.println("│           РЕЗУЛЬТАТ             │");
  Serial.println("├─────────────────────────────────┤");
  
  // Вывод с выравниванием
  char buffer[50];
  sprintf(buffer, "│ 🌍 Земля: %6.2f лет          │", earthAge);
  Serial.println(buffer);
  
  sprintf(buffer, "│ 🪐 Юпитер: %5.2f лет         │", jupiterAge);
  Serial.println(buffer);
  
  // Визуализация соотношения
  Serial.println("├─────────────────────────────────┤");
  Serial.print("│ Земля ");
  int earthBars = int(earthAge / 3);
  if (earthBars > 15) earthBars = 15;
  for (int i = 0; i < earthBars; i++) Serial.print("█");
  for (int i = earthBars; i < 15; i++) Serial.print("░");
  Serial.println(" │");
  
  Serial.print("│ Юпитер");
  int jupiterBars = int(jupiterAge * 1.5);
  if (jupiterBars > 15) jupiterBars = 15;
  for (int i = 0; i < jupiterBars; i++) Serial.print("█");
  for (int i = jupiterBars; i < 15; i++) Serial.print("░");
  Serial.println(" │");
  
  // Интересные факты для конкретного возраста
  Serial.println("├─────────────────────────────────┤");
  float earthDays = earthAge * 365.25;
  float jupiterDays = jupiterAge * 4333;
  
  sprintf(buffer, "│ Дней на Земле: %8.0f      │", earthDays);
  Serial.println(buffer);
  
  float jupiterBirthdays = earthDays / 4333;
  sprintf(buffer, "│ Дней рожд. на Юпитере: %4.1f   │", jupiterBirthdays);
  Serial.println(buffer);
  
  Serial.println("└─────────────────────────────────┘");
}

// Функция, вызываемая при поступлении данных в Serial
void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    
    // Если нажат Enter - завершаем ввод
    if (inChar == '\n') {
      stringComplete = true;
    } else {
      // Добавляем символ в строку
      inputString += inChar;
    }
  }
}

главное это точно не фейковый язык, м можно объяснить простой запуск)))

Ну ссылку что-ли приложить?

Не открывает.

https//: - тут ошибка.

А так?

В свое время мне рассказали историю, как сажали картошку.

В те воемена сажали практически все и как правило народу было в поле много. Каждый сажал на своём участке, а участки были рядом. Один мужик не знал как сажать её, но знал как сажают деревья. Поэтому он посадил ее на глубину 20см. У всех потом картошка взошла, а у него нет. Ну народ то с юмором и начал подтрунивать - Выкопай и посади, как положено.

Так точно работает: _vk.com/clip-224508715_456244351

Так работает. Оптический обман был.

я писал пятнашки так! на гтк! без генератора. по f4, да. mc - наше все

Блин, мужики! У меня еще 4 вечера, даже Шаббат еще не начался, а вы уже тут все “фгаффно”! Нельзя так! Бухать нужно вдумчиво и с удовольствием. А вы блин, как в последний раз! Не одобряю…

О! Трезвый попался!
Так все писали в эпоху “до” визивиг. И страницы так верстали. Но ведь йожегу понятно, что это очень и очень неудобно. Можно, но неудобно. Можно от Москвы до Сочи дойти пешком? Конечно можно, но затрахаешься :wink:

Сам знаешь, что основному составу, так сказать, на твоё одобрение пофиг ))

Я так постоянно пишу.

Вот такую систему напиши:

_vk.com/clip-224508715_456244320

Тут главное что? VBA или Linux?

сын мой вообще постоянно vim пользует. Поскольку он девопс и куча задач у него в контейнерах, в котором даже mc не установлен. Но по мне - так это мазохизм какой-то! :wink: Я просто ненавижу все эти “хот ки” и прочие извращения. Хотя всю жизнь на Линуксе. Если нет Иксов, то хотя б nano, но не vim!

А мне тоже mc нравилось, на far похожа. А с ним я уже очень много лет ))

mc или far годятся как простенькие ide :).

но топ все-таки Visual Slick Edit. IDE с большой буквы. Образец. Но чтобы его распробовать - нужно время :))))

mc, far, dosnavigator, nortoncommander. Интересно, Нортон запатентовал свой двцхокошечный интерфейс?

Не знаю. Мне нравится. Конечно же сейчас много всяких IDE, а я к FAR’у прикипел когда начинал кодить на php. Потом на эклипс перешли (типа расширились и в ширь и в глубь :smiley: ). Но фар хорошо работает, почему к нему какие-то странные отношения?

Хорош тот инструмент, который ты хорошо знаешь.

Тут где-то год-два назад нужно было «вычистить гадость» из php-скриптов. Так в фаре это всего лишь Alt+F7 и всё - оно всё на ладони. :smiley: