在Arduino手撸一个波形显示

#include "imagenes.h"
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
Adafruit_SSD1306 display(128,64);//64改为32,画面只显示一半
int anteriorMillis = 0;
int tiempo = 0;
float valorAnalogico = 0;
float voltaje = 0;
float graficaVoltaje = 0;
int x[128];
int y[128];
void setup() {
// put your setup code here, to run once:
delay(100);
display.begin(SSD1306_SWITCHCAPVCC,0x3c);
display.setRotation(0);
display.dim(0);//原值为true,画面不显示
display.setTextColor(WHITE);
display.setTextSize(1);
//显示imagenes.h中的画面
for(int i=0;i<1;i++){
display.clearDisplay();
display.drawBitmap(0,0,imagen,128,64,1);
display.display();
delay(3000);
display.fillRect(0,0,128,64,1);//下半部分黑屏
display.drawBitmap(0,0,imagen,128,64,0);
display.display();
delay(3000);
display.clearDisplay();
}
}
void loop() {
// put your main code here, to run repeatedly:
display.clearDisplay();
display.setCursor(0, 0);
display.print(F("5V"));
display.setCursor(0, 11);
display.print(F("4V"));
display.setCursor(0, 22);
display.print(F("3V"));
display.setCursor(0, 32);
display.print(F("2V"));
display.setCursor(0, 42);
display.print(F("1V"));
display.drawLine(15,0,25,0,WHITE);
display.drawLine(15,11,25,11,WHITE);
display.drawLine(15,22,25,22,WHITE);
display.drawLine(15,32,25,32,WHITE);
display.drawLine(15,43,25,43,WHITE);
display.drawLine(0,53,127,53,WHITE);
display.drawLine(25,53,25,0,WHITE);
valorAnalogico = analogRead(A0);//读取A0口的读数
voltaje=(valorAnalogico*5)/1024;
graficaVoltaje=map(valorAnalogico,0,1023,53,0);
x[127]=graficaVoltaje;
for(int i=127;i>=25;i--){
display.drawPixel(i,x[i],WHITE);
y[i-1]=x[i];
}
display.setCursor(25,57);
display.print(voltaje);
display.print(F("v "));
tiempo = millis()-anteriorMillis;
display.print(tiempo);
anteriorMillis=millis();
display.print(F(" ms"));
display.display();
for(int i=127;i>=0;i--){
x[i]=y[i];
}
}