командная строка и uno

Тема в разделе "Флудилка", создана пользователем jabazz, 31 дек 2016.

  1. jabazz

    jabazz Нуб

    Здравствуйте, вот у меня сейчас есть код который отправляет значение температуры с командной строки на уно. то есть это значения 3400-3500. я не силен в языке С по этому подскажите как вывести это значение на монитор порта. пожалуйста
     
  2. rkit

    rkit Гуру

    С какой такой командной строки? Значения выводятся с помощью метода Serial.println
     
  3. jabazz

    jabazz Нуб

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

    wmic/namespace:\\root\wmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature > COM4 примерно вот так я отправляю на ардуино мб что-то не правильно
     
  4. rkit

    rkit Гуру

    Читайте документацию по классу Serial
     
  5. jabazz

    jabazz Нуб

    а не подскажите под какой переменной приходят значения в уно?
     
  6. rkit

    rkit Гуру

    Приходит поток. Работа с потоком в классе Serial.
     
  7. mcureenab

    mcureenab Гуру

    И наоборот так же:
    Type com4
     
  8. jabazz

    jabazz Нуб

    в общем ситуация такая есть код :
    int outputPin = 13;
    int x;
    void setup()
    {
    Serial.begin(9600);
    pinMode(outputPin, OUTPUT);

    }

    void loop()
    {
    if (Serial.available() > 0) {
    x = Serial.parseInt();;
    if (x >=3500) {
    digitalWrite(outputPin, HIGH);
    }
    if (x <= 3500) {
    digitalWrite(outputPin, LOW);
    }
    }
    }

    и есть bat файл который каждые 5 секунд меряет температуру и отправляет в уно что-то типа
    "cerrent temperature
    3428"
    и по идее если число меньше 3500 то лампочка должна перестать гореть но на деле лампочка вообще не реагирует больше температура или меньше.
    умные люди помогите пожалуйста
     
    Последнее редактирование: 31 дек 2016
  9. ANV

    ANV Гуру

    Скорость на передачу в компе выставлена верно, как и в скетче?
    Светодиод RX на Уно моргает каждые 5 секунд?
     
  10. jabazz

    jabazz Нуб

    в компе скорость та же а вот вместо rx мигает каждые 5 tx
     
  11. mcureenab

    mcureenab Гуру

    Добавь вывод x :
    Serial.println(x);

    Для теста используй hyperterminal и т.п.
    Руками набирай текст с числом и смотри что Ардуино возвращает. не забудь настроить скорость порта в терминальной программе
     
  12. mcureenab

    mcureenab Гуру

    Ардуино USB кабелем подключена или через UART адаптер? Может rx, TX перепутал?
     
  13. jabazz

    jabazz Нуб

    я сейчас остановился на том, что когда ввожу в монитор порта число в ручную все работает, а когда число идет с cmd то вместе с лампочкой мигает L несколько раз и tx 1 раз в момент передачи данных с cmd. продолжу завтра. С Новым Годом) (подключаю через usb)
     
  14. mcureenab

    mcureenab Гуру

  15. jabazz

    jabazz Нуб

    Состояние устройства COM4:
    -------------------------—
    Скорость: 9600
    Четность: None
    Биты данных: 8
    Стоповые биты: 1
    Таймаут: OFF
    XON/XOFF: OFF
    Синхронизация CTS: OFF
    Синхронизация DSR: OFF
    Чувствительность DSR: OFF
    Цепь DTR: ON
    Цепь RTS: ON
    вот это?
     
    Последнее редактирование: 1 янв 2017
  16. mcureenab

    mcureenab Гуру

    Да. Дефолтные настройки ардуины 8N1.

    Если не в COM4 а в обычный файл или на консоль вывод направить что выходит?
     
  17. jabazz

    jabazz Нуб

    вывод температуры? я тут немног не понял, но если с консоли в файл направить то выводит "CurrentTemperature
    3312"
    P.S. я думаю проблема в том как в адуино приходят данные с консоли. на сколько знаю там по одному символу переведенному в АСКИ. и получается он сравнивает этот каждый символ переведенный в АСКИ со значением в моем случае это 3500. как сделать чтобы моя уно получала не набор цифр типа 51 52 54 50 что в нормальном виде обычное число 3462, а само это число 3462 и уже его сравнивала
     
  18. jabazz

    jabazz Нуб

    сейчас rx горит все время, потом гаснет во время получения данных с cmd мигает светодиод и rx снова загарается
     
  19. mcureenab

    mcureenab Гуру

    Serial.parseInt();
    Читает символы ASCII и конвертирует их в целое число.
    Но есть тонкость, если за время таймаута 1 сек цифры не пришли, функция возвращает 0.
    Есть возможность после значения температуры отправить не цифру, ну его хотя бы точку?
    "CurrentTemperature 3312."
    Понятно, что есть. Строчку
    CurrentTemperature
    3312
    Можно сбросить во временный файл, добавить к нему точку и отправить в com4
     
  20. jabazz

    jabazz Нуб

    если бы я умел это делать...)