
Контролери Arduino можна використовувати як найпростіший осцилограф, для спостерігання за швидко-змінюваними електричними сигналами.
Завантажуємо програму Processing , після чого її встановлювати не потрібно - вона запускається з EXE-файлу.
Відкриваємо Arduino IDE та вставляємо наступний код:
#define ANALOG_IN 0
void setup() {
Serial.begin(9600);
//Serial.begin(115200);
}
void loop() {
int val = analogRead(ANALOG_IN);
Serial.write( 0xff );
Serial.write( (val >> 8) & 0xff );
Serial.write( val & 0xff );
}
Завантажуємо цей код в контролер Arduino.
Відкриваємо програму Processing та вставляємо в неї наступний код:
import processing.serial.*;
Serial port; // Створення об'єкта класу Serial
int val; // Дані, що отримуються з сом-порта
int[] values;
float zoom;
void setup()
{
size(1280, 480);
// Відкриваємо порт, до якого підключена плата//контролера використовуючи швидкість (9600 bps)
port = new Serial(this, Serial.list()[0], 9600);
values = new int[width];
zoom = 1.0f;
smooth();
}
int getY(int val) {
return (int)(height - val / 1023.0f * (height - 1));
}
int getValue() {
int value = -1;
while (port.available() >= 3) {
if (port.read() == 0xff) {
value = (port.read() << 8) | (port.read());
}
}
return value;
}
void pushValue(int value) {
for (int i=0; i<width-1; i++)
values[i] = values[i+1];
values[width-1] = value;
}
void drawLines() {
stroke(255);
int displayWidth = (int) (width / zoom);
int k = values.length - displayWidth;
int x0 = 0;
int y0 = getY(values[k]);
for (int i=1; i<displayWidth; i++) {
k++;
int x1 = (int) (i * (width-1) / (displayWidth-1));
int y1 = getY(values[k]);
line(x0, y0, x1, y1);
x0 = x1;
y0 = y1;
}
}
void drawGrid() {
stroke(255, 0, 0);
line(0, height/2, width, height/2);
}
void keyReleased() {
switch (key) {
case '+':
zoom *= 2.0f;
println(zoom);
if ( (int) (width / zoom) <= 1 )
zoom /= 2.0f;
break;
case '-':
zoom /= 2.0f;
if (zoom < 1.0f)
zoom *= 2.0f;
break;
}
}
void draw()
{
background(0);
drawGrid();
val = getValue();
if (val != -1) {
pushValue(val);
}
drawLines();
}
Натискаємо кнопку пуск цієї програми та бачимо часовий графік того, що відбувається в нас на аналоговому вході A0 контролера.
Я таким чином, наприклад спостерігав, що на вихід видає модуль вимірювання напруги мережі 220В, так як на нього нема ніякої документації в інтернеті. При цьому я бачив синусоїду, але на цьому графіку нема прив'язок до часової шкали та величини сигналу. Тому важко вимірювати частоту та амплітуду цього сигналу.
Потрібно також відмітити, що COM-порт повинний бути в системі тільки один. Якщо на комп'ютері є фізичний порт COM1, то його потрібно деактивувати в диспетчері пристроїв.
IRF3205 N-канальний силовий MOSFET транзистор
Силовий швидкісний польовий транзистор для комутації високовольтного потужного навантаженняМаксималь..
28.13грн.
Як перевірити дискретний датчик холла
Інколи виникає потреба перевірити наявний магнітний датчик хола на працездатність. Але при цьому ціл..
Модуль 5 — Датчики та модулі: DHT11, LDR і проєкт «Розумна лампа»
Модуль 5 — Датчики та модулі (курс для початківців) Мета модуля: ознайомитися з популярними..
Лінійка розробника друкованих плат PCB
Лінійка PCB для наглядного представлення розмірів посадкових місць різних стандартів поверхневого мо..
64.97грн.
Буфери цифрових сигналів: навіщо потрібні та як правильно обрати мікросхему
Буфери цифрових сигналів: навіщо потрібні та як правильно обрати мікросхему Буфер цифрового с..





