Працюємо з 09:00 до 19:00 Пн-Сб
Київ біля ТЦ Квадрат бул.Перова


Контролери 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, то його потрібно деактивувати в диспетчері пристроїв.

Також можна збільшувати частоту дискретизації нашого осцилографа, збільшуючи швидкість СОМ-порту в контролері та в програмі Processing.

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Універсальна плата під мікросхеми SOP16 або SSOP16

Універсальна плата під мікросхеми SOP16 або SSOP16

Універсальна монтажна плата, дозволяє проводити монтаж різноманітних мікросхем з поверхневим монтаже..

8.73грн.

Модуль MP3-плеєра з управлінням від контролера

Модуль MP3-плеєра з управлінням від контролера

Модуль MP3-плеєра з управлінням по UARTПідтримує наступні частоти дискретизації (кГц): 8 / 11.0..

83.47грн.

Кроковий двигун 28BYJ-48 з модулем драйвера

Кроковий двигун 28BYJ-48 з модулем драйвера

Кількість фаз 4Робоча напруга 5 ВКоефіцієнт зміни швидкості 1/64Кут повертання мінімальний 5.62..

72.82грн.

Датчик кольору TCS230

Датчик кольору TCS230

Датчик визначення кольору заснований на мікрозбірці TCS230, яка представляє з себе матрицю фотодіоді..

75.38грн.

Транзистор 2N2222 smd

Транзистор 2N2222 smd

n-p-n транзистор в корпусі для поверхневого монтажуКорпус SOT-23..

1.63грн.