Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 38

4х канальный вольтметр, просьба доработать !

13.02.2016, 22:28. Показов 4658. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые, помогите начинающему пожалуйста !
поставлена задача, сделать четырех канальный вольтметр на ардуино, с выводом данных на монитор компьютера,
с программированием ардуино проблем нет, есть готовый скетч
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#define NUM_SAMPLES 10
#define DIV_1    11.1346
#define DIV_2    11.1969
#define DIV_3    11.0718
#define DIV_4    11.0718
#define V_REF    4.991
 
int sum[4] = {0};                // sums of samples taken
unsigned char sample_count = 0;  // current sample number
float voltage[4] = {0.0};        // calculated voltages
char l_cnt = 0;                  // used in 'for' loops
 
void setup()
{
    Serial.begin(9600);
}
 
void loop()
{
    // take a number of analog samples and add them up
    while (sample_count < NUM_SAMPLES) {
        // sample each channel A2 to A5
        for (l_cnt = 0; l_cnt < 4; l_cnt++) {
            sum[l_cnt] += analogRead(A2 + l_cnt);
        }
        sample_count++;
        delay(10);
    }
    // calculate the voltage for each channel
    for (l_cnt = 0; l_cnt < 4; l_cnt++) {
        voltage[l_cnt] = ((float)sum[l_cnt] / (float)NUM_SAMPLES * V_REF) / 1024.0;
    }
    
    // each voltage is multiplied by the resistor network
    // division factor to calculate the actual voltage
    voltage[0] = voltage[0] * DIV_1;
    voltage[1] = voltage[1] * DIV_2;
    voltage[2] = voltage[2] * DIV_3;
    voltage[3] = voltage[3] * DIV_4;
    
    // send voltages to Processing application via serial port / USB
    // voltage 1 - A (pin A2)
    Serial.print("A ");
    Serial.print(voltage[0], 1);
    Serial.print("V ");
    // voltage 2 - B (pin A3)
    Serial.print("B ");
    Serial.print(voltage[1], 1);
    Serial.print("V ");
    // voltge 3 - C (pin A4)
    Serial.print("C ");
    Serial.print(voltage[2], 1);
    Serial.print("V ");
    // voltage 4 - D (pin A5)
    Serial.print("D ");
    Serial.print(voltage[3], 1);
    Serial.print("V ");
    Serial.println("");
    delay(10);
    // reset count and sums
    sample_count = 0;
    for (l_cnt = 0; l_cnt < 4; l_cnt++) {
        sum[l_cnt] = 0;
    }
}
данные с СОМ порта поступают вот в таком виде, то есть сразу А,В,С,D в одной строке


мне нужно их как то разделить и вывести каждый в своем окне


попытался что то сделать, но кроме создания формы, знаний на большее не хватает
проект на С# VM4ch.rar, может кто поможет доделать данную программку, буду премного благодарен! возможно вознаграждение.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.02.2016, 22:28
Ответы с готовыми решениями:

Большая просьба доработать конфигурацию
Доброго времени суток, просьба проверить конфигурацию на несовместимости и прочие &quot;подводные камни&quot;: Материнская плата:...

P-канальный полевик...
Имеется P-канальный полевой транзистор IRF4905 и МК ATTINY13. Нужно сделать ШИМ на ~ 1 кГц. В вопросах-ответах нашёл схемку, указанную...

2х канальный режим
Есть Процессор AMD FX-6300 OEM и планка Kingston HyperX FURY White Series характеристики процессора характеристики планки на 8 ...

39
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
13.02.2016, 22:53
Цитата Сообщение от AlexZR Посмотреть сообщение
может кто поможет доделать данную программку
Вполне возможно.
Скачайте программу-монитор порта(Hdd Serial Port Monitor), запустите и отсканируйте что приходит.
Посмотрим скан и можно сделать. Без скана неудобно.
Цитата Сообщение от AlexZR Посмотреть сообщение
возможно вознаграждение.
А вот этого не надо. Тут раздел бесплатной помощи, да и задача не так сложна.
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 38
13.02.2016, 23:16  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Вполне возможно.
Скачайте программу-монитор порта(Hdd Serial Port Monitor), запустите и отсканируйте что приходит.
Посмотрим скан и можно сделать. Без скана неудобно.

А вот этого не надо. Тут раздел бесплатной помощи, да и задача не так сложна.
я Вам очень благодарен за ответ !
Hdd Serial Port Monitor не использовал, установил, но что Вам там показать не совсем понял
сделал такой скан, если не такой, то скажите как нужно сделать ?

и такой на всякий случай


да, напряжение пока присутствует только на порту А, на остальных 0
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
13.02.2016, 23:33
Цитата Сообщение от AlexZR Посмотреть сообщение
что Вам там показать не совсем понял
Установите сканер на Запросы, отсканируйте посылки, потом в окне сканера правой кнопкой-Импорт-и импортируйте скан в html файл. И выложите сюда. Мне так проще будет, привык работать с его сканами.
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 38
13.02.2016, 23:49  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Установите сканер на Запросы, отсканируйте посылки, потом в окне сканера правой кнопкой-Импорт-и импортируйте скан в html файл. И выложите сюда. Мне так проще будет, привык работать с его сканами.
мне стыдно признаться, но я не могу понять как это сделать, может Вы мне подскажите как установить сканер на запросы, какие кнопки нажать ?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
13.02.2016, 23:55
AlexZR, да ладно, я вроде бы и так понял структуру. Семь байт на канал, итого выходит 28 байт в пакете. Сейчас что-нибудь придумаю.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
14.02.2016, 01:04
Лучший ответ Сообщение было отмечено edward_freedom как решение

Решение

AlexZR, посмотрите проект в архиве. Скорее всего, придется корректировать, поскольку у вас блоки данных идут сразу после запуска. Я взял за разделитель два байта, они передаются после каждого пакета, вот с ними придется работать, по всей видимости (ожидать их, чтобы точно знать, что это начала пакета данных). Попробуйте.
Вложения
Тип файла: rar AlexZR.rar (47.0 Кб, 7 просмотров)
2
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 38
14.02.2016, 01:13  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
AlexZR, посмотрите проект в архиве. Скорее всего, придется корректировать, поскольку у вас блоки данных идут сразу после запуска. Я взял за разделитель два байта, они передаются после каждого пакета, вот с ними придется работать, по всей видимости (ожидать их, чтобы точно знать, что это начала пакета данных). Попробуйте.
пробую, не работает, и ошибок вроде не выдает, единственное в коде вот такое
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 38
14.02.2016, 01:19  [ТС]
программа запускается, вот с такими ошибками
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
14.02.2016, 01:25
AlexZR,
Это остатки удаленных обработчиков.
Двойным по описанию ошибки переходите к ошибке в файл MainForm.Designer.cs и удаляете или комментите соответствующие строки.
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 38
14.02.2016, 16:05  [ТС]
Цитата Сообщение от Даценд Посмотреть сообщение
AlexZR,
Это остатки удаленных обработчиков.
Двойным по описанию ошибки переходите к ошибке в файл MainForm.Designer.cs и удаляете или комментите соответствующие строки.
за комментировал, ошибок нет, но к сожалению так и не работает
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
14.02.2016, 17:17
Цитата Сообщение от AlexZR Посмотреть сообщение
к сожалению так и не работает
Так я же сказал, это примерный набросок, такого вольтметра у меня нет. Отлаживайте, проходите отладчиком. Без устройства больше я вам вряд ли смогу помочь. И сымитировать такой поток байт тоже пока не знаю как.
1
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 38
14.02.2016, 17:32  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Так я же сказал, это примерный набросок, такого вольтметра у меня нет. Отлаживайте, проходите отладчиком. Без устройства больше я вам вряд ли смогу помочь. И сымитировать такой поток байт тоже пока не знаю как.
а proteus не пользуетесь ? там прекрасная симуляция есть. и по идее в этой программе можно ведь посмотреть данные какие отправляются допустим с любого терминала, но она не отображает их, или что то делаю не так ? например соединяю эту программу с терминалом через виртуальный порт, можно в таком варианте смотреть приход данных ?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
14.02.2016, 17:46
Цитата Сообщение от AlexZR Посмотреть сообщение
proteus не пользуетесь ?
Нет, к сожалению, так с ним и не освоился. Видел, но не было необходимости.
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 38
14.02.2016, 17:50  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Нет, к сожалению, так с ним и не освоился. Видел, но не было необходимости.
жаль, а я к сожалению больше электронщик чем программист, тогда если позволите, еще вопрос,
могу ли я с терминала подавать любые команды на эту программу и их видеть ?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
14.02.2016, 18:56
Цитата Сообщение от AlexZR Посмотреть сообщение
я к сожалению больше электронщик чем программист
Я тоже. Но именно что электронщик, а не разработчик. Больше ремонтирую, чем разрабатываю)))
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 38
14.02.2016, 21:01  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Я тоже. Но именно что электронщик, а не разработчик. Больше ремонтирую, чем разрабатываю)))
понятно, но опыта у Вас явно больше моего
по примерам попытался что то сделать, с СОМ порта все принимает, но принимает в одно окно и все сразу в одну строку


код получился таким, насколько правильно не знаю..
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace serialCOM
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            serialPortRead.Open();
        }
        private static string RxString = "";
        private void DisplayText(object s, EventArgs e)
        {
            readTextBox.AppendText(RxString);
        }
        private void serialPortRead_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            try
            {
                RxString = serialPortRead.ReadExisting();
                this.Invoke(new EventHandler(DisplayText));
            }
            catch (System.TimeoutException) { }
        }
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            serialPortRead.Close();
        }
    }
}
по идее осталось эту строку разделить и разместить по окнам..
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
14.02.2016, 21:07
AlexZR, ну скажем так, вы можете сам скетч изменить и перезалить в Ардуино? Там же простой С, всего несколько строк поменять, и уже проще будет анализировать данные.
0
0 / 0 / 0
Регистрация: 10.02.2016
Сообщений: 38
14.02.2016, 21:09  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
AlexZR, ну скажем так, вы можете сам скетч изменить и перезалить в Ардуино? Там же простой С, всего несколько строк поменять, и уже проще будет анализировать данные.
конечно могу, но что там изменить не знаю, если скажите, то запросто.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
14.02.2016, 21:39
Цитата Сообщение от AlexZR Посмотреть сообщение
что там изменить не знаю
Сформировать более простую последовательность. К примеру, буквы же вам не нужны. Так? Как и имена каналов. Например, два пробела, потом все каналы (каждый через один пробел, и только цифры, зачем нам буквы) потом опять два пробела. Так уже будет проще анализировать. Сами можете придумать такой формат передачи от Ардуино, с которым проще будет работать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.02.2016, 21:39
Помогаю со студенческими работами здесь

Канальный уровень
Доброго времени суток друзья! Начал недавно учить сети, начал с Таненбаума. Прочитал Физический и Канальный уровни, вроде все понял,...

4 канальный ЦАП
Нужен 4 канальный ЦАП c внутренней опоркой 2V. Пока нашел только MCP4728 около 150р штука и 20 дней поставка. Есть что еще дешевле?

Вольтметр
Как найти показание вольтметра по 2 закону Кирхгофа?

Вольтметр
как в данном примере выбираем направление напряжения на вольтметре? Мы же выбираем по направлению тока и в данном случае можно любое...

4х канальный контроллер памяти
4х канальный контроллер памяти это, 4 канала шины памяти и в каждом 64 разряда?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru