Arduino配合电位计和oled液晶屏显示波形 Processing联动

Arduino配合电位计和oled液晶屏显示波形 Processing联动

公众号:STCode

Arduino配合电位计和oled液晶屏显示波形 Processing联动

1)描述

本作品使用Arduino配合电位计和oled液晶显示器显示波形,并且将数据上传至Processing,波形在Processing端也能够实时显示。


2)硬件介绍

①电位计

Arduino配合电位计和oled液晶屏显示波形 Processing联动_第1张图片


②oled液晶显示器

Arduino配合电位计和oled液晶屏显示波形 Processing联动_第2张图片


3)接线说明

Arduino配合电位计和oled液晶屏显示波形 Processing联动_第3张图片

4)示例代码

Arduino部分:

/*-----------------------------
作者:STCode
时间:2021-11-2
公众号:STCode
-----------------------------*/
#include "U8glib.h"

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);

const int WIDTH=128;
const int HEIGHT=64;
const int LENGTH=WIDTH;

const int analogInPin = A0;
int analogInValue = 0;

int x;
int y[LENGTH];

void clearY(){
  for(int i=0; i<LENGTH; i++){
    y[i] = -1;
  }
}

void drawY(){
  u8g.drawPixel(0, y[0]);
  for(int i=1; i<LENGTH; i++){
    if(y[i]!=-1){
      //u8g.drawPixel(i, y[i]);
      
      u8g.drawLine(i-1, y[i-1], i, y[i]);
    }else{
      break;
    }
  }
}

void setup(void) {
  Serial.begin(9600);
  x = 0;
  clearY();
}

void loop(void) {
  
  analogInValue = analogRead(analogInPin);
  
  y[x] = map(analogInValue, 0, 1023, HEIGHT-1, 0);
  Serial.write(y[x]);
  u8g.firstPage();  
  do {
    drawY();
  } while( u8g.nextPage() );
  
  //delay(10);

  x++;
  if(x >= WIDTH){
    x = 0;
    clearY();
  }

}

Processing部分

/*-----------------------------
作者:STCode
时间:2021-11-2
公众号:STCode
-----------------------------*/
import processing.serial.*;
int WIDTH=128;
int HEIGHT=64;
Serial myPort;
int data;
int x;
int i;
int last_x = 0;
int last_y = 0;
int[] y = new int[10000];
int flag = 0;
void setup()
{
  x = 0;
  i = 0;
  myPort =new Serial(this,"COM26",9600);
  size(128,64);
  noStroke();
  background(204);
  myPort.clear();
}

void draw()
{
  strokeWeight(1);
  stroke(0);
  if(myPort.available()>0)
  {
    data=myPort.read();
    println(data);
    flag = 1;
  }
  if(flag == 1)
  {
    y[i] = data;
    if(i!=0)
    {
      line(last_x,last_y,x,y[i]);
    }
    
    last_x = x;
    last_y = y[i];
    x+=1;    
    i++;
    flag = 0;
  }
  
  if(x>=WIDTH)
  {
   x = 0;
   i = 0;
   background(204);
  }
  
 
}

5)效果演示

Arduino配合电位计和oled液晶屏显示波形 Processing联动_第4张图片

你可能感兴趣的:(Arduino,DIY设计,Arduino,arduino)