необходимо получать с соm порта данные с 3 датчиков (либо 1,либо0) и использовать эти данные в программе

ryazancity
Offline
Зарегистрирован: 14.12.2012

Помогите!!!

ryazancity
Offline
Зарегистрирован: 14.12.2012

Очень нужна помощь,я ноль

maksim
Offline
Зарегистрирован: 12.02.2012

А поконкретнее ???

Zaliv
Offline
Зарегистрирован: 05.03.2011

Краткость сестра таланта/лени или конкурс телепатов открыт.

Действовать надо так.

- берете датчики и ищите по форуму или по просторам интернета следующую фразу "название датчика Arduino"

- если повезло и у датчика уровни сигнала 5В, то просто подключаете к цифровому входу Arduino и общей земле

- Идете в раздел Serial и читаете

- Если не поняли как все же через Serial.println() передавать данные, то гуглите по форуму, это регулярно обсуждается.

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Каков вопрос, такой и ответ, со стороны ардуино используйте библиотеку Firmata

ryazancity
Offline
Зарегистрирован: 14.12.2012

Спасибо. Под термином датчики имеется ввиду напряжение с диодов автомобильного радар-детектора,напряжение там более 3 В. Что подконэктить надо к цифровым входам платы я понял, а вот как правильно написать прошиву никак не дойду. Мне нужно что бы значения с этих трех портов читались программой,которая написана в QT,и на основании этого уже выполнялись какие-либо действия.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Вот это уже конкретно. Один из вариантов (цикл в loop):

1. Считываете состояние всех датчиков

2. Выдаете в Serial стартовую последовательность, например:

Serial.write( 0x55 );
Serial.write( 0xAA );

3. Выдаете в Serial данные о состоянии всех датчиков. Либо 3 байта, либо три значения (если они больше байта каждое).

4. Выдаете в Serial последовательность завершения, например:

Serial.write( 0xA5 );

5. Выдерживаете паузу, чтобы не сыпать в порт данные, да это и не нужно.

В QT считываете данные из КОМ порта, ловите стартовую последовательность, данные и последовательность завершения, а дальше у Вас уже есть все три значения датчиков.

Другой вариант, выдаете все данные одной строкой, например:



int value1, value2, value3;

void loop()
{
  value1 = analogRead( pin_d1 );
  value2 = analogRead( pin_d2 );
  value3 = analogRead( pin_d3 );
  Serial.println( "Values: " + String( value1 ) + " " + String( value2 ) + " " + String( value3 ) );
  delay( 1000 );
}

В QT парсите принятую строку (числа разделены пробелами) и получаете данные от датчиков.

Для начала хватит?

Первый вариант более "сложный", возможно даже избыточный для данной задачи, а второй вариант - проще, выбирайте сами.

UPD: по поводу digitalRead - это я загнул, там analogRead нужен :) Исправил текст

 

ryazancity
Offline
Зарегистрирован: 14.12.2012

AnalogRead это аналоговые входы,я правильно понял???

ryazancity
Offline
Зарегистрирован: 14.12.2012

А если мне нужно только 1 или 0 разве не проще через цифровые сделать?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Прошу прошения, я сначала правильно написал, невнимательно прочитал. digitalRead, конечно.
Прогу проверил, на Serial monitor выдает нормально

ryazancity
Offline
Зарегистрирован: 14.12.2012

Спасибо!!!