Временная развертка с АЦП
- Войдите на сайт для отправки комментариев
Чт, 26/03/2015 - 20:13
Увожаемые форумчане, прошу вашей объективной помощи :)
Будучи новичком в мире ардуино, решил сразу провернуть проект: вывести временную разверку напряжений, считанных с АЦП на ардуинке
Со считыванием АЦП и построением графиков проблем нет, проблема в передаче данных, сразу привожу ответсвенные участки скетчей:
-Ардуино:
if (Serial.available() > 0) //если есть входные данные, то начать процесс передачи данных
{
byte Data = Serial.read();
int ADC0 = analogRead(A0); // Запись АЦП0
int ADC1 = analogRead(A1); // Запись АЦП1
int ADC2 = analogRead(A2); // Запись АЦП2
float V1 = (ADC0 * (5.0 / 1023.0)); // перевод в В, опорное напряжение 5В
float V2 = (ADC1 * (5.0 / 1023.0));
float V3 = (ADC2 * (5.0 / 1023.0));
Serial.write(ADC0); // Отправка через порт
Serial.write(ADC1);
Serial.write(ADC2);
outled(byte(Data)); //Вывод на цифровой выход принятых данных
}
Пояснялка: Когда приходят внешние данные, опрашиваются АЦП и отправляются в эфир
Пояснялка: Когда приходят внешние данные, опрашиваются АЦП и отправляются в эфир
-Процессинг:
if (millis()%100 <= 20)
{ test++;
COMport.write(test);
delay(5);
adc1 = COMport.read()*5/1023;
delay(5);
adc2 = COMport.read()*5/1023;
delay(5);
adc3 = COMport.read()*5/1023;
delay(5);
}
Пояснялка: Каждые 100мс комп в эфир отправляет данные (test) и спустя небольшую задержку надеется считать из буфера значения АЦП. Переменные adc объявленны, как глобальные, разумеется.
В чем проблема? Сигнал с компьютера доходит до МК (загораются диодики, соответсвующие отправленому коду), а вот считываю с МК я решительно только ноль. Использование на ардуино для отправки print вместо write результатов не дало :(
Сразу хочу извиниться, что не свернул код в {code}
Но в форме форума я не вижу "редактировать" или типо того для первого сообщения темы, так что в другой раз буду внимательнее.. и еще я пару опечаток вижу, но так же исправиться не могу :(
Сам отвечаю на свой вопрос
Помогло шаманство
Было:
Должно быть:
Убрав масштабный коэффициент (перенес *5/1023 на момент построения графиков) и подобрав время задержки для гарантированной передачи даннх, все пошло как по маслу ^^