Здравствуйте, вот у меня сейчас есть код который отправляет значение температуры с командной строки на уно. то есть это значения 3400-3500. я не силен в языке С по этому подскажите как вывести это значение на монитор порта. пожалуйста
я создал bat файл и отправляю из него на уно. значения температуры вроде приходят на уно, но я не могу это проверить, потому что не знаю как зацепить эти значения, под какой переменной они приходят, чтобы их вывести wmic/namespace:\\root\wmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature > COM4 примерно вот так я отправляю на ардуино мб что-то не правильно
в общем ситуация такая есть код : Спойлер: код 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 то лампочка должна перестать гореть но на деле лампочка вообще не реагирует больше температура или меньше. умные люди помогите пожалуйста
Скорость на передачу в компе выставлена верно, как и в скетче? Светодиод RX на Уно моргает каждые 5 секунд?
Добавь вывод x : Serial.println(x); Для теста используй hyperterminal и т.п. Руками набирай текст с числом и смотри что Ардуино возвращает. не забудь настроить скорость порта в терминальной программе
я сейчас остановился на том, что когда ввожу в монитор порта число в ручную все работает, а когда число идет с cmd то вместе с лампочкой мигает L несколько раз и tx 1 раз в момент передачи данных с cmd. продолжу завтра. С Новым Годом) (подключаю через usb)
Спойлер: состояние COM4 Состояние устройства COM4: -------------------------— Скорость: 9600 Четность: None Биты данных: 8 Стоповые биты: 1 Таймаут: OFF XON/XOFF: OFF Синхронизация CTS: OFF Синхронизация DSR: OFF Чувствительность DSR: OFF Цепь DTR: ON Цепь RTS: ON вот это?
Да. Дефолтные настройки ардуины 8N1. Если не в COM4 а в обычный файл или на консоль вывод направить что выходит?
вывод температуры? я тут немног не понял, но если с консоли в файл направить то выводит "CurrentTemperature 3312" P.S. я думаю проблема в том как в адуино приходят данные с консоли. на сколько знаю там по одному символу переведенному в АСКИ. и получается он сравнивает этот каждый символ переведенный в АСКИ со значением в моем случае это 3500. как сделать чтобы моя уно получала не набор цифр типа 51 52 54 50 что в нормальном виде обычное число 3462, а само это число 3462 и уже его сравнивала
сейчас rx горит все время, потом гаснет во время получения данных с cmd мигает светодиод и rx снова загарается
Serial.parseInt(); Читает символы ASCII и конвертирует их в целое число. Но есть тонкость, если за время таймаута 1 сек цифры не пришли, функция возвращает 0. Есть возможность после значения температуры отправить не цифру, ну его хотя бы точку? "CurrentTemperature 3312." Понятно, что есть. Строчку CurrentTemperature 3312 Можно сбросить во временный файл, добавить к нему точку и отправить в com4